目次
1. 本ドキュメントについて2. プログラム説明
3. 関数
4. 問題点
1. 本ドキュメントについて
- 本ドキュメントでは、小部屋走行プログラム(cosmo.c)についての説明を行う。
このプログラムの基本的な構成は次のようになっている。
- @小部屋での走行開始、準備モード
- A出口探索モード
- B出口発見後の通路進入モード
2. プログラム説明
- 最初に、小部屋プログラムはMIRSが完全に小部屋に入っている状態で開始されることを想定している。
<プログラム@>
- プログラム開始時は、まず超音波センサを用いて自分の位置の把握を行う。
<プログラムA>
- 小部屋内を壁沿いに走りながら出口を探す。
MIRS左に取り付けた超音波センサによって出口の探索を行う。
<プログラムB>
- 出口発見後の動作、小部屋から通路へと向かう
- 正面の壁までの距離を元に自分の位置を把握
- 通路へ入る途中に壁にぶつからないように位置補正(タッチセンサか超音波センサを使う)
- 90°回転し通路へ侵入動作
- 途中壁に当たった場合の位置補正動作
- 通路に完全に入ったことを左右の超音波を使って判断しプログラム終了
主な動作
3. 関数
- このプログラムで使用した関数について説明する。
関数名 | 引数 | 説明 |
cosmo(void) | なし | |
cosmo_start(void) | なし |
4. 問題点
- 小部屋走行プログラムを開発するうえで次のような点が問題になった。
- 走行中に壁から離れてしまい、出口まで到達していないのに、出口を見つけたと誤認識してしまう
- 小部屋から通路に正確に侵入できない。また、その時に正面から壁にぶつかってしまうと右左どちらに進路を修正すべきかわからなくなってしまう
- 小部屋をクリアするのに時間がかかってしまう。
- 壁沿いに走行するため、時間がかかる。
- 超音波の変化量を常に計算し、壁から離れていることを判断する。
- 出口の方を向く前に、正面の壁までの距離を測定し壁から一定距離をとることで精度を上げることができた。
- 走行速度を最大にし、さらに壁との接触をなるべく避ける(超音波センサ使用)ことによって大幅に短縮できた。
解決策
小部屋走行プログラムcosmo.c