l
MIRS1503 ソフトウェア開発完了報告書
MIRS1503 管理台帳へ戻る
名称 |
MIRS1503 ソフトウェア開発完了報告書 |
番号 |
MIRS1503-SOFT-0002
|
ドキュメント内目次
1.目的
本ドキュメントはMIRS1503が開発したオリジナルMIRSにおけるソフトウエアの製作内容と試験結果を示すものである。
2.製作内容・完成度の評価
2.1. ファイル構成
MIRS1503のプログラムファイルの構成を示す。
Table1 ファイル構成
ディレクトリ |
ソースファイル名 |
ルートディレクトリ |
mirs1503.c,sequence.c,patrol.c,tracking.c |
img |
cv_ColorExtraction.c,Image.c,labelling.c |
number |
数字認識は標準プログラムを流用。詳細はMG3Sの管理台帳を参考 |
2.2. 機能統合モジュール/mirs1503
担当:大場
2.2.1. 製作内容
キーボード入力により、実行するモジュールを指定することのできる機能を実装したものである。
モータ、エンコーダ、超音波センサ、IOデバイスモジュールオープンを行う。
2.2.2. 試験内容・結果
モータ、エンコーダ、超音波センサ、IOデバイスモジュールがオープン可能か、モジュールがオープンした際に端末上に文字が出力されるかどうかで確認する。
⇒モータ、エンコーダ、超音波センサ、IOデバイスがオープン可能であることを確認できた。
機能統合モジュール/mirs1503モジュールを実行すると、どのモジュールを実行されるか聞かれる。0が入力したら現場急行モジュール/sequence、1が入力したら巡回モジュール/patrol、2が入力したら捕獲モジュール/trackingが実行されるか確認する。実行される際に、実行されるプログラム名を出力することにより、実行されたか確認する。
⇒trackingを統合,実行するにあたり赤外線センサが必要であったが、時間がなく赤外線センサの感度試験を行うことができなかった。そのため、trackingの単体試験を行うことができず実装することができなかった。
そのほかのsequenceやpatrolはmirs1503より実行することが確認できた。sequenceは返り値で1を返すことでキーボード入力なく、patrolモジュールを実行することができた。
2.3. 現場急行モジュール/sequence
担当:遠藤真、大場、菊地
2.3.1. 製作内容
スタート地点から展示室入り口までの走行を行うモジュールを作成した。
直進と走行、壁に当たった際の回避動作、正体補正、数字認識を行う。
使用するモジュールはnumber,run_ctrl,direction,io,serverである。
本モジュールはmirs1503モジュールに呼び出されて実行される。
2.3.2. 試験内容・結果
指定した距離の走行、回転が正しく行われるか確認する。
⇒実際の走行距離にずれがあったため、run_ctrl.c、hardware.h内のPIDゲイン、調整値を変更した。
しかしゲインを調整し真っ直ぐ進めるようになっても、バッテリーを変えるとまた走行が曲がってしまうということが起きた。
結局、新モータの最高速度(180cm/s)をだすことが無理だと考え、速度を落とすこと(130cm/s)で真っ直ぐ進めるようにした。
走行中に壁にあたった際、タッチセンサが反応するか、反応したときに回避動作を正しく行えるかを確認する。
⇒回避動作の試験を行うつもりだったが、タッチセンサの値が正常でなく壁に当たったこと認識できなくなり、また速度を上げた走行ではMIRS機体が静止した際の慣性でバンパがタッチセンサをおしてしまうことが判明したので、走行中にタッチセンサの値を読み取ることをあきらめ、回避動作は行わないようにした。
走行後の正体補正、数字認識が正しく行い、数字情報の送信ができるか確認する。
⇒走行後の正体補正は正しく行えることを確認した。しかし数字認識は正しく行えず、プログラムの問題ではなくwebカメラの位置などに問題があると考えられたため、数字認識はあきらめ行わないようにした。
2.4. 競技場巡回モジュール/patrol
担当:遠藤真、大場、菊地
2.4.1. 製作内容
mirs1503モジュールに呼び出されて実行される。
展示室内で怪盗を見つけるまで巡回を行うモジュールである。
run_ctrlは直線走行・回転動作、directionは角を2回曲がるごとに行う壁に対しての正体補正に用いる。また、ioはタッチセンサの信号を読み取り、それにより壁に当たった際のコースへの復帰動作を行う。またioでは、怪盗の赤外線信号を受信する。赤外線を受信したらpatrolモジュールを終了し、mirs1503に返り値2(trackingモジュールへ移行するため)を返す。
2.4.2. 試験内容・結果
指定した距離、速度で直進回転走行を行っているか確認する。また、競技場にあわせて走行距離の調整を行う。
⇒sequenceモジュールを実行するにあたって、パラメータ調整済みであったため、ほぼ直進走行をすることが可能であった。しかし、競技場にあわせての走行距離調整を行うことができなかったため、2回目の直進のときに必ず壁に衝突してしまった。原因は距離指定の間違いが考えられる。
2回転するごとに正体補正を行っているか確認する。正体補正の距離は、競技場にあわせて調整を行う。
⇒MCB1つに1つのバッテリーを使用していたため、バッテリーを変更することで直進走行しなくなってしまうことがわかった。バッテリー変更後に、パラメータ調整が終了したのが競技1時間前であり、バッテリーを競技会まで持たせるため正体補正の距離調整を行うことを断念した。また、正体補正はMCBに大きな負荷がかかるため、できる限り使用しないようにすることから、正体補正を行わないことにした。
タッチセンサが反応した際に、反応した場所に応じて回避動作を行っているか確認する。
⇒sequenceと同様にタッチセンサが反応した際の回避動作を行う時間がなかったこととバッテリーの消費を懸念してタッチセンサ反応に応じた動作を行わないことにした。それにより、タッチセンサ押されても直進し続けるプログラムとなった。
赤外線センサが反応が反応したら、patrolモジュールが終了し、返り値に2を返していることを確認する。
⇒赤外線を使用するに当たり、赤外線の光度の確認を行わなくてはならない。しかし、パラメータ調整に時間がかかってしまい、赤外線調整を行う時間がなかったため、赤外線を搭載することができなかった。そのため、怪盗機の存在を認識しないプログラムとなった。
2.5. 怪盗追跡確保モジュール/tracking
担当:菊地
2.5.1. 製作内容
巡回中に怪盗を発見した際に追跡を行うモジュールである。
ioは怪盗機の赤外線信号を受信し方向を推測するために用い、vel_ctrlは機体の速度制御に用いる。
mirs1503モジュールに呼び出されて実行される。
2.5.2. 試験内容・結果
赤外線センサが反応すると、trackingモジュールが呼び出される。赤外線が反応する方向に応じて、8つの動作を行っているか確認する。
競技場に応じたPWM調整を行う。
赤外線センサが反応しなくなった時、5秒間待ちそれでも反応がなかった場合には、trackingを終了し返り値に1を返しているかどうか確認する。
⇒赤外線センサを搭載するために赤外線の感度調整を行わなくてはいけないが、パラメータ調整に時間がかかってしまい、赤外線まで手が回らなかった。そのため、赤外線を搭載することができず、trackingを実行させることができなかった。
2.6. データ送受信プログラム
データ送信プログラムは標準プログラムとして用意されたものをそのまま用いた。
サーバ情報取得プログラムの詳細リンクを以下に示す。
MIRS2015サーバ通信方法
3.使用した競技会プログラム
4.総括
一回目
シーケンスプログラム中、壁に当たってしまいリトライしてしまった。
巡回では壁に当たってはその場からリトライを繰り返してしまった。
偶然にも怪盗機がぶつかり、怪盗機を確保することができた。
二回目
一回で現場急行することができた。
新モーターのゲイン調整、タッチセンサや赤外線センサの調整、直進走行制御、数字認識の原因解明、挙げるときりがなく、これをすべて中途半端にやっていき、結局本番までにほとんど直すことができなかった。
ソフト班としては、思い描いていた動作を何一つすることができず悔しい思い出いっぱいの結果となった。
5.リンク