名称

MIRS0803 関数リファレンス

番号

MIRS0803-SOFT-0003

版 数

最終更新日

作 成

承 認

改 訂 記 事

A01

2008.2.23

鈴木

鈴木

初版

 

 

 

 

 

 

 

1.        関数リファレンス

 

以下にMIRS標準機から追加した関数とその詳しい動作内容を示す

             

                             

int search_error_check( r_value)

                            control_test内に追加した関数

ポストが発見できなかったら(ussの値が9999だったら)r_valueにその数をカウントしていて、r_valueの数値をチェックし、

15以上になったら、中心に戻る。

 

 

int search_error_check2( )

control_test内に追加した関数。

前回のpost_searchの結果と今回のpost_searchの結果を比較し、ポストの位置があまりにも異なっていた場合、

(角度誤差30度以上か距離誤差300以上)post_searchをやり直す。

誤ったcorrect_centerを行うのを防ぐ。

 

 

int post_sort( )

post_search内に追加した関数

post_searchで取得したpost.dis[] post.ang[]を角度順にsortする

 

 

              int post_select(int center_count)

                            main 内に追加した関数

center_countの数を引数にして、近い方からcenter_count 番目のポストの(post.dis,post.ang)配列の添え字を返す。

              つまり、ポストを近いほうから取っていく。

これは2回目の競技のときにも採用しており、currect_centerで角度修正を失敗していたとしても、同じポストに向かう可能性を減らす。

 

int post_select2( )

main 内に追加した関数

post_searchで取得した情報(距離、角度)の配列を距離の近い順にsortして、近い方から2つのポストの配列の添え字を返す。

                            遠いポストを対象にcorrect_centerを行ってしまい、補正ミスを起こすことを防ぐ。(遠いポストは位置の誤差が大きい)

                           

 

              int correct_direction3( target_post)

                            correct_direction1correctdirection2の間の距離の時に行う補正。

correct_direction1, 2, 3 による3段の補正を行っている。

動作は2つの関数と同様であるが、左右の補正量と条件は異なる。

ポストに近づくにつれ補正量は小さく、条件が厳しくなっている。

                            また、ポストの距離を測る際、3uss_getを行い、平均を取ることで誤差を減らしている。

角度の補正を行ったら、その分の補正量をpost.angに加えている。

そのため、大きな角度補正をおこなっても中心に帰る際、誤差が小さくてすむ。

             

              int post_get(int target_post)

                            target_postには次に取るポストの配列の添え字が入る。

タッチセンサーが動作するまで前進し、タッチセンサーがonになったら白線センサーでポスト番号を読み取る。

その後、ギャラクティカドーナツ(GD)を降ろして、絞めて、少し下がり、ポストを獲得。緩めて、GDを戻す。

タッチセンサーをを上下2つ付け、MIRSがポストに接触した際に獲得した場合はGDを動作させないようにしている。

int arm_start( )

                            ISAパスのアドレスH’160’に制御信号を送ることでGDを動作させる。詳しくはエレクトロニクスのドキュメント参照