名称 |
MIRS1103 システム開発計画書 |
番号 |
MIRS1103-PLAN-0003 |
最終更新日:2011.7.15
版数 |
更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2011.6.24 |
吉田拓人 |
北川琢真 |
初版 |
A02 |
2011.7.4 |
吉田拓人 |
北川琢真 |
各図の修正およびマルチスレッド図の追加 |
A03 |
2011.7.11 |
吉田拓人 |
北川琢真 |
レビュー後おおまかな部分の改善 |
B01 |
2011.7.15 |
吉田拓人 |
北川琢真 |
細かい部分の改善、機能間の関係を示す表の作成 |
MIRS競技会競技規定
MIRS1103 議事録3
行動戦略
どのように迷路を脱出するか? 行動の重要部分を記述する
・簡単な迷路攻略の概要としては
『難易度を優先的に考えて、簡単な課題を狙う。出来れば近いほうを優先する』
(優先大)ロータリー > 鍵+扉・行き止まり > 小部屋 (優先小)
※DB(T字路)は攻略できて当然なので優先順位以前の問題、そのため省略
全体的な流れ
優先順位のつけ方として、
1、プログラムの長さ(複雑さ)から、短いプログラムになる障害物から優先順位を高くつけた
2、センサ類を多く、または長く使用しなければならない障害物は優先順位を低くした
重要なセンサやプログラム類は多く、超音波センサの動作が不安定なのでセンサ類にこれ以上の損壊がある場合は、開始時点から走行に異常が発生する可能性がある
動作仕様
マルチタスク動作の検討 → 希望としてはマルチスレッドで迷路攻略に挑む
センサ類の優先順位としては
(優先大) 白線(ライト)センサ > タッチセンサ > 超音波センサ (優先小)
優先順位のつけ方
1、超音波センサは動作が不安定(7月4日現在)なので、優先順位を低くした
2、目標としている走行は、壁にぶつかっても白線認識処理にはほとんど無関係である
そして、白線認識処理を行うとそのまま画像認識処理に移行するためタッチセンサより優先順位を高くしなければ
白線認識または画像処理中に動作が変わってしまうと考えたから
機能定義(分割)
MIRS車体を簡易的に下に表す
・数字認識
パターンマッチング法を用い、数字認識を行う。
数字認識を行う際、画像を左右に分割し番号がどちらにあるかを判別しやすくする
・走行制御
直進は番号別行動などで走行距離が定義されていない場合、壁にぶつかるまで行われる
回転は角度指定がない場合、各センサ類から与えられる値をもとに計算し車体中心を軸に回転を行う
周回はロータリー攻略の際にしか使用しない予定なので、ロータリー用の走行プログラムのみを用意する
・各センサの取り付け位置
白線センサは複数配置する場合車体前方へ左右対称に配置し、一つの場合は車体前方中心へ配置する
タッチセンサは車体前方に前方直進方向に垂直に一つ、車体斜め前方へ左右対称に一つずつの計3つを取り付ける
超音波センサは車体前方に左右対称となるように前向きに取り付ける
3つめの超音波センサは上記図のように右側に左向きに取り付ける
※超音波センサを左側へ左向きに配置すると、センサから壁までの距離が20cm未満になりやすくなるので測定ができなくなる
・方向および正対補正
超音波測定を行い、車体と壁(DB)までの距離が40〜50cmに正対するようにその場回転、前進および後退を随時行う
番号別行動を行っていない時に、左右の壁までの距離を測定し方向を定める。予定では50cm走行ごとに左右までの壁の測定を行う
(ただし上記は、超音波センサを車体の左右に向けても配置している時に限る)
テスト仕様
テスト内容はサンプルプログラムを参照する。条件は以下の通りにする
・走行制御
走行制御にはロータリーエンコーダを主に用いる
直進:4m50cmの距離を前後左右が5cm以内に収まるように直進し、補正は50cm走行したたびに行う
回転:90度のその場での回転を基準に±9度以内に収まるように回転する
周回:目標地点の座標まで前後左右が5cm以内に収まるように走行する
(誤差10%以内が目標)
・画像認識
正面に正対したDBにある2つの数字が80%以上認識することができ、「どちら側に何番がある」と判別できるようにする
・超音波測定
50cm、1mまでの距離を±5%以内の差で判別する
・白線認識
白線とその他の床との判別が行え、秒速25cm程度で通過しても白線に反応することができる
エラー時
・数字認識は20%で失敗する、認識失敗をした時次の動作を行う
画像認識を行った場合、DBまで40〜50cmの範囲に居るのでそれ以上に離れてから再び近づき正対、距離の補正を行う。その後、画像認識および処理を行う
この動作は数字が認識されるまで繰り返し行う
数字が両方読めるとは限らず、片方だけ読める場合がある。その時は読めない数字は無視し読むことができた数字から次の動作に移るようにする(片方でも読めたら次へ進む)
・走行において、超音波センサの動作が不安定なので次のように現在地の算出を行うと同時に補正をかける
ロータリーエンコーダの値を読み取り、どのような走行を行ったかを考えプログラムで上記の「走行制御」における条件を満たせるようにする
・白線センサについて
先に記述したとおりに、「白線がある = DBがある」といえるが白線センサに異常が発生し白線がないのに「白線がある」と送られたときにDBがないので数字が取得できず脱出できなくなってしまう
それを回避するべく、超音波センサやタッチセンサを用いて「白線がある+壁の有無の確認」を行うことで異常な動作をしても対応できるようにする
・超音波センサについて
超音波センサは動作が不安定なので正しく距離が測れない場合が多い。なので測定物や測定場所に適したほかのセンサを駆使し補うようにする
壁の有無検知:タッチセンサ
走行方向補正:ロータリーエンコーダ
DB正対補正:白線センサ など
表:機能間の関係
動作名 |
番号 |
機能名 |
説明 |
使用他機能 |
個別機能 |
1-1 |
走行(直進) |
前方へ直進する(後方への走行は使用しない予定) |
-------- |
1-2 |
走行(回転) |
MIRS車体中心を軸に回転する |
-------- |
1-3 |
走行(周回) |
現在地から目的地まで入力された値をもとに円弧を描くように走行する |
-------- |
1-4 |
画像処理 |
webカメラを用いてDBに書いてある数字を認識する |
-------- |
1-5 |
超音波距離測定 |
超音波センサを用いて壁や目的物までの距離を測定する |
-------- |
1-6 |
白線認識 |
ライトセンサを用いて白線(ゴールエリア含む)の有無を判別する |
-------- |
1-7 |
衝突認識 |
タッチセンサを用いてMRIS車体が壁などに衝突しているかの判別をする |
-------- |
エラー回避・補正機能 |
2-1 |
方向補正 |
通路などで正しく走行できているかを判別し補正をかける |
1-1,1-2,1-5 |
2-2 |
正対補正 |
画像認識時などでDBの正面に正対できるように補正する |
1-5 |
2-3 |
通路復帰 |
壁に衝突した時などに通路中央へ戻る |
1-2,1-5,1-7 |
仕掛け |
3-1 |
T字路(DB) |
-------- |
1-1,1-2,1-4,1-5,1-6,2-2 |
3-2 |
鍵+扉 |
-------- |
1-1,1-2,1-7,2-1 |
3-3 |
小部屋 |
-------- |
1-1,1-2,1-5 |
3-4 |
ロータリー |
-------- |
1-2,1-3,1-7,2-1 |
3-5 |
数字取得 |
-------- |
1-4,1-5,1-6,2-2 |
3-6 |
ゴール |
-------- |
1-1,1-6 |
常時おこなう処理 |
4-1 |
直進通路 or L字通路 |
-------- |
1-1,1-2,1-5,1-7,2-1,2-3 |
実践時
・走行
ロータリーエンコーダを用い、走行距離を測定
超音波センサおよびロータリーエンコーダを用い、向きや位置の補正を行う
・曲がり角(L字、T字)
タッチセンサにより前方の壁を認識する
超音波センサ、タッチセンサを用いてどの方向への壁があるのかの検出をする
・鍵+扉
タッチセンサを用い、鍵に触れているかの確認をする
・小部屋
超音波センサによりどの位置から小部屋に侵入しているのかをみる
ロータリーエンコーダを用いて現在の位置(座標)からの移動を見る
・ロータリー
ロータリーエンコーダによりどの位置に居るかの算出
タッチセンサにより侵入時の判断、脱出口の発見を行う
・画像認識
白線センサを用いて、画像取得へのシーケンスに移行を判断
超音波センサの動作は不安定なので、超音波センサの値からの正対補正はあまり行わず白線を認識すると同時に停止+画像取得に移れることが理想
以下、フローチャート
図中、赤はサンプルプログラムを参照および改善することで作成することが可能
緑はサンプルプログラムの参照などができない可能性があるのでオリジナルで作る必要がある
車体左右に超音波センサがない走行
車体左右に超音波センサがある走行
白線認識
画像認識
画像認識・追記
鍵+扉
ロータリー走行
小部屋
以下に上記フローチャートの解説図を示す
超音波センサなし走行例
超音波センサあり走行例
鍵+扉攻略例
ロータリー走行例
小部屋測定例
結合テスト仕様
一つのプログラムでどのような順番で課題の部屋に侵入しても80%以上の確率で攻略できるようにする
開発計画
・開発概要
サンプルプログラムを参考に、上記のフローチャートを元にプログラムファイルを分割して作成に臨む
・開発工程予定表