MIRS2009 システム基本設計書

MIRS0901-DSGN-0002

 

 版数

最終更新日

作成

承認

改訂記事

A01

2009/9/29

坂代

武藤

初版

A02

2009/10/5

坂代

武藤

センサー配置図、問題点の追加

 

 

 

 

 

 


目次

1.        本ドキュメントについて

2.        システム概要

3.        システムの詳細

3.1    ハードウェア

3.2    ソフトウェア


1.        本ドキュメントについて

本ドキュメントは開発提案書とシステム提案のプレゼン資料を基に、MIRS0901の概要についてまとめたものである。

 

 

2.        システム概要

MIRS0901では、超音波センサーの機能を重点的に用いて各仕掛けを突破するようなシステムを設計する。

以上の要求を満たすために以下の機能を追加する。

 

              ハードウェア

     MG3の上段シャーシに搭載されているCPUボード、ドータボード、FPGAボードを下段に収納し、上段の使えるスペースを増やす。

     超音波センサーを計3(正面と左右側面)に取り付け、距離計測の効率化を目指す。

     電子コンパスを用いて、より確実な直進動作、補正動作を実現する。

     超音波センサーにホーンを取り付ける

     白線センサーを計3つ用いる

 

ソフトウェア

     DBを読み取り、各仕掛け専用のプログラムに切り替え、攻略を目指す

     超音波センサーによる値の読み取りにはマルチスレッドは用いていない(現段階では)

 

 

3.        システムの詳細

 

3.1    ハードウェア

 

電子コンパスの使用

                これにより、DBによる画像認識の前、直進動作中、各種旋回中に角度補正をかける際に、その補正をより正確に行える。

                使用する電子コンパスでは、角度が0.1度刻みで測れるので、かなり正確な補正動作、直進動作が行えるものと予想される。

                CPUと電子コンパスではシリアル通信を行う。その中継にレベル変換ICPICを用いる。

                CPUからのRS232C形式の信号をCMOS,TTLレベルに変換し、その信号をPICI2C形式に変換して電子コンパスとの通信を行う。

 

 

上段シャーシの各部品の下段シャーシへの移動

        これにより、上段シャーシに自由に各種センサーを配置することができ、より効率の良い競技ができることになるだろう。

        また、下段を重くすることで、シーソーやステップ通過時の安定性の上昇が期待できる。

 

        超音波センサーを3つ用いる

右側面と左側面と正面の3つを同時に計測することが可能になるので、方向転換をせずに知りたい方向の距離計測ができる。

 

        超音波センサーにホーンを取り付ける

                                          指向性を高めるために、超音波センサの送受信部にホーンを取り付ける。

                        そのとき送信部と受信部の距離が近く、ホーンを取り付けるときに互いに干渉しあう恐れがあるので、

互いに距離を離すか、間に仕切りをおく必要がある。MIRS0901は送受信部の距離を離す方法をとるので、ハードウェアの面で改善する。 

 

              白線センサーを3つ用いる

                                          白線センサーを下段シャーシ底面の前方に二個、底面の後方に一個の合計3個用いる。

これにより、前方と後方にセンサーがあることで、DB近くにある白線か、ゴールにある白エリアなのかを判別することができる。

                                          前方に白線センサーを進行方向と垂直に並べて設置することにより、DBでの数字認識において重要な、DBとの角度を平行に保つ為の正対補正をかけることが可能である。

 

  

     各種センサ

 

センサ名

用途

配置

 

白線センサー

DBの近くに来たという判別

 

底面の前方に二個、底面の後方に一個設置する

ゴールに到着したという判別

 

超音波センサー

壁があるかないかを判断することによる、曲がり角・各種仕掛けの出口の発見

超音波がシャーシに跳ね返らないように上段中央に発信部の位置を高くする台を設けその正面に一個、側面に二個設置する。センサーがなるべく中央に集まるように台の縦と横の大きさはなるべく小さくする。

赤外線センサー

仕掛け「鍵と扉」攻略のため

正面に一個設置する。

タッチセンサー

壁に接触したかの判断

標準機と同様に配置する

 

電子コンパス(方位センサー)

 

直進通行するための基準

 

 

MG3上面の中央に設置する。

正対補正をするための基準

 

 


                         (a)上段                                                      (b)下段

 

fig1 センサー配置図

 

 

3.2    ソフトウェア

 

駆動系

 

(以下、画像数の多さの関係で、gifアニメーションを用いて図を示している)

 

通路通過プログラム

 

   以下のような流れで通過を目指す

 

1, 正面の超音波センサーで常に壁を探索

 

2, 壁を検知するまで直進を続ける

 

3, 壁を検知したら、減速を行う

 

4, タッチセンサーが衝突を検知するまで直進

 

5, ある程度まで後退

 

6, 側面の超音波センサーを起動し、どちらが通過できるか検知

 

7, 進行方向へ90度回転

 

8, 再び正面の超音波センサーを起動させながら直進を開始


 

 

小部屋通過プログラム

 

   以下のような流れで通過を目指す

                                                                                              1, すべての超音波センサーを起動させながら移動

        正面に壁有り & タッチセンサーが反応 ----->曲がり角

        正面に壁なし & 左右どちらかに壁が無い--->小部屋

 

2, 左右どちらかに90度回転

 

3, 1マス分(50cm)だけ直進

 

4, 側面の超音波センサーによる道の検知

 

5, 道を検知できないならば、90度回転

 

6, 側面の超音波センサーによる壁の検知

 

7, 道を検知するまで小部屋の変に沿って移動を続ける

 

8, 道を検知したならばその方向へ90度回転

 

                                                                                         9, 検知した道への直進を開始

                                                                                          (以降、通路の直進動作へと戻る)

 

 

 

fig..2        小部屋の判別・通過のフローチャート

 

 

ロータリー通過プログラム

 

   以下のような流れで通過を目指す

                                                                                             1, タッチセンサーで衝突を検知するまで直進

2, 壁への衝突を検知したらある程度後退

 

3, 側面の超音波センサーを起動し、壁が有無を検知

(有無により、ロータリーか曲がり角かを判断)

 

4, 左右どちらかに90度回転

(方向はあらかじめ決めておく)

 

5, 1/4円弧だけ移動

 

6, 側面の超音波センサーにより、どちらかに道が無いかを判断

 

7, 道が無いなら更に1/4円弧移動

 

8, 側面の超音波センサーによる道の有無の判断

 

9, 道を検知したら、その道の方向へ90度回転

 

 10, 検知した道の直進を開始

                                  (以降、通路の通過動作へと戻る)

 

 

 

              fig.3       ロータリー判断・通過のフローチャート

 

              自作するプログラム

      各パターン毎の通過プログラム

     DBによる行動分岐プログラム

     電子コンパス用デバイスドライバ

     走行制御用プログラム(自分達が使いやすいように改良する)

     数字認識アルゴリズムの改良

 

 

 

画像処理系

 

現段階ではDBによる数字認識のみ。今後、実際にMG3を走らせて、その際どれだけカメラが有用かを試す。その結果によっては今以上に活用の場面が出ることになるかも知れない。

 

ARToolKitを用いて画像処理を実現しようと考えたが、ARToolKitの場合、普通にOpenCVを用いた場合よりも、CPU負荷が大きく、現在のCPUでは十分なパフォーマンスができないと判断した。

それにより、ARToolKitを用いた画像処理を断念した。

 

DBでの数字認識において、角度が悪いと失敗する可能性が高い。ソフトウェア的にその問題を解決できるようにアルゴリズムなどを考えていく予定

 

 

現段階での問題点

 

自分が今50cmのブロックのどの地点にいるのかが正確に捉えられない。

回転中、何かにぶつかった場合の例外動作をまだ考えていない。

ステップ・シーソー通過の具体的な機構は現段階では考えていない。