名称
|
MIRS2002 ソフト設計完了報告書
|
番号
|
MIRS2002-SOFT-0002
|
版数 |
最終更新日 |
作成者 |
承認者 |
改訂記事 |
A01 |
2020/01/20
|
鈴木・坪井 |
香川先生 |
初版 |
1.ドキュメント概要
本ドキュメントはMIRS2002のソフトウェアに置いての開発完了報告書である。
2.内容評価
- 2.1 走行プログラム
担当:坪井
ソースコード(C言語|zipファイル)
超音波センサのセットアップとプロセス間通信のセットアップを完了させた後、switch文で作成したステートマシンをwhikeループで繰り返すプログラムになっている。
switch文のステートには①ボール探知モード②回避行動モード③コーン探知モード④カラーコーンに帰還するモード⑤ボールが取られるまで待機するモードの5つがある。
前方障害物探知は超音波センサを用いている。障害物を人か体育館の壁かを判断するのも超音波センサがになっている。機体前方に障害物が3秒以上あった場合後進し回避行動を行う。
回収したボールの個数はリフト内のタッチセンサで行う。回収したボールの所持状態は荷台に設置した超音波センサで行う。
- 2.2 画像認識プログラム
担当:坪井
ソースコード(python|zipファイル)
ボールを認識するプログラムはOpenCVで作成した画像分類器を使用した。分類器の作成にはバスケットボールの写真827枚、不正解画像1825枚を使用した。
ボールを認識する精度は体育館内とラボ内どちらも実用に耐えうるレベルだった。画像認識プログラム用と走行プログラム用でRasPiを分けたことにより遅延も1秒ほどで済んだ。フレームレートは約1.5F/Sだった。
カラーコーンを認識するプログラムにはカメラの画角内にある最も大きな赤い物体を検知するプログラムを使用した。体育館内でカラーコーンを認識できる範囲は半径5メートル、バスケットボールを認識できる範囲は半径6.5メートルだった。
- 2.3 プロセス間通信
担当:坪井
ソースコード(python,C言語|zipファイル)
2.1,2.2内のzipに入っているプログラムと同じものになる。牛丸先生のプロセス間通信プログラムを変更して作成したプログラムになる。ボールとカラーコーンの認識状態に応じて走行プログラムに返す値を変更している。
プロセス間通信で送られる信号との対応表を表.1に示す。
表.1 プロセス間通信で送られる信号
ボール認識状況 |
カラーコーン認識状況 |
画像認識プログラムから走行プログラムに送られる数値 |
〇 |
× |
1 |
× |
× |
2 |
× |
〇 |
3 |
〇 |
〇 |
4 |
走行プログラムに送られる情報は文字型配列の0要素めに数値が入っているため、走行プログラム内でint型にキャストする必要がある。
- 2.4 昇降用プログラム
担当:鈴木
ソースコード(Arduino言語|zipファイル)
標準プログラムをベースにリフトを昇降するためのモータの制御するプログラムを作成した。
test_request.c ,request.c ,request.hに昇降動作モードである"LIF"の動作プログラムを追記し、
Raspberry Pi側からの指令に応じた昇降動作を実現した。
指令が送られた際にSlaveでcase4を実行した際に昇降用モータ一定値上昇したのち降下する。
実行中はロータリエンコーダの値を取得し続けることでリフトの位置制御を実現した。
- 2.5 回収用プログラム
collect.hを新規追加した。
前方にてボールを回収するモータの制御を行うプログラムを作成した。
Arduinoのセットアップでモータドライバの信号入力に繋がれた45,46のピンをHIGHにする記述を追加し、
前方の回収用モータが本体起動時に回転する仕様を実現した。
3.総括
ボール回収ロボットとして自分たちが目指していた機体の機能は実現できた。しかし、画像認識の精度上げやArduinoでのモード追加にかかる時間を見誤り、当初予定していた計画からだいぶ遅れが出てしまった。
全体の開発を終えて今まで経験したことないチーム開発などを行えたのでとてもよい経験になった。将来この経験を活かしていきたい。
4.各パートへのリンク
以下に各パートの完了報告書のリンクを示す。
エレクトロニクス完了報告書
メカニクス完了報告書
MIRS DATABASE