完了報告書 |
MIRS0601-DSGN-0004 |
版数 |
最終更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2007.2.22 |
伊井・石本・植松・杉山・芹沢・角田・平口 |
平口 |
初版 |
|
|
|
|
|
|
|
|
|
|
1. はじめに
2. 開発計画と実際の開発経過の比較
3. 作業工数分析
4. 問題点およびそれへの対応
5. 競技会結果
6. 総括
1.
はじめに
本ドキュメントはこれまでのMIRS開発経過についてのまとめおよびその反省を述べるものである。
2.
開発計画と実際の開発経過の比較
区分 月 |
メカニクス (計画) |
メカニクス (実際の経過) |
エレクトロニクス (計画) |
エレクトロニクス (実際の経過) |
ソフトウェア (計画) |
ソフトウェア (実際の経過) |
5 |
分解 |
分解 |
FPGA回路の解読 |
FPGA回路の解読 |
動作について話し合い |
|
6 |
標準MIRS組み立て |
標準MIRS組み立て |
FPGAの変更点について話し合い |
FPGAの変更点について話し合い |
過去のプログラムの解読 |
|
7 |
コンベアの構想・話し合い |
コンベアの構想・話し合い |
CMCボードの構想 |
CMCボードの構想 |
過去のプログラムの解読 |
|
8 |
コンベア製造 |
なし |
CMCボード作成 |
なし |
構想 |
|
9 |
コンベア製造 |
コンベア製造 |
CMCボード完成 |
CMCボード作成 |
MIRS0601独自の動作部分の作成 |
|
10 |
コンベア完成 |
コンベア製造 |
コンベア動作確認 |
CMCボード作成 |
MIRS0601独自の動作部分の作成 |
|
11 |
改良 |
コンベア完成 |
センサ類チェック |
CMCボード作成 FPGA回路変更 |
MIRS0601独自の動作部分の作成 |
|
12 |
作業終了・改善へ |
センサ類修理 |
各ボードのチェック・修理 |
CMCボード作成 各センサチェック |
実装・動作試験 |
|
1 |
改善 |
コンベアの改善 バッファロー製造 予備のコード作成 |
各センサ・ボード最終調整 |
CMCボード完成 FPGAの変更完成 コンベア完成 各センサ・ボード最終調整 |
改善・例外処理 |
|
2 |
競技会 |
競技会 |
競技会 |
競技会 |
競技会 |
競技会 |
3.
作業工数分析
名前 |
伊井彰宏 |
平口祐一 |
植松裕介 |
角田雅知 |
石本拓也 |
杉山清隆 |
芹沢武 |
合計 |
001:技術調査 |
43.9 |
32.75 |
151.5 |
34.5 |
29.5 |
57 |
32.25 |
381.4 |
002:システム提案 |
2.2 |
2.25 |
0 |
10.5 |
6.5 |
7 |
5 |
33.45 |
003:基本設計 |
9.6 |
6 |
0 |
0 |
11.5 |
6 |
2 |
35.1 |
004:M詳細設計 |
15 |
0 |
0 |
0 |
17 |
0 |
0 |
32 |
004:E詳細設計 |
0 |
5.5 |
0 |
0 |
0 |
0 |
0 |
5.5 |
004:S詳細設計 |
0 |
0 |
0 |
0 |
0 |
8.5 |
6 |
14.5 |
005:製造 |
28 |
0 |
0 |
2 |
0 |
0 |
0 |
30 |
005:M製造 |
8.8 |
0 |
0 |
56 |
9.5 |
0 |
0 |
74.3 |
005:E製造 |
26.5 |
35 |
0 |
0 |
0 |
0 |
0 |
61.5 |
005:S製造 |
0 |
0 |
0 |
0 |
0 |
66 |
41 |
107 |
006:サブシステム試験 |
0 |
0 |
0 |
0 |
0 |
6 |
6 |
12 |
006:Mサブシステム試験 |
0 |
0 |
0 |
15 |
0 |
0 |
0 |
15 |
006:Eサブシステム試験 |
0 |
4 |
0 |
0 |
0 |
0 |
0 |
4 |
006:Sサブシステム試験 |
4 |
0 |
0 |
0 |
0 |
2.5 |
0 |
6.5 |
007:システム試験 |
19.5 |
0 |
0 |
10.5 |
0 |
8 |
8 |
46 |
008:改善設計 |
11.5 |
0 |
0 |
0 |
0 |
93.5 |
45 |
150 |
009:ドキュメント整備 |
9 |
5.5 |
0 |
0 |
0 |
0 |
3 |
17.5 |
010:ミーティング |
0 |
0 |
0 |
0 |
7.5 |
0 |
0 |
7.5 |
011:その他 |
0 |
31.5 |
0 |
9 |
62.5 |
0 |
0 |
103 |
合計 |
178 |
122.5 |
151.5 |
137.5 |
144 |
254.5 |
148.25 |
|
4.
問題点およびそれへの対応
T.メカニクス
問題点 |
原因 |
対応・解決策 |
頻繁に電源が落ちる |
本体各部の導通 |
基盤と本体の間にはスペーサを入れ、スペーサを入れることができないところはガムテープで絶縁した。 |
〃 |
電源コードの接触不良、バッテリ電圧の低下 |
コードの接触はコードを新しく作り直し丈夫にした。バッテリ電圧は特にボード電源のほうが低下が著しいので、こまめに取り替え、常に予備を充電して使いまわす。 |
コンベアが回らない |
ベルトの張りが強すぎる 電池の電圧低下 |
ベルトの張りの微調整ができるようコンベア機構を工夫した。 電池ははじめ1.5V以上あっても使っていると意外とどんどん低下してくることがわかった。これもこまめに交換する。 |
コンベアのベルトが回っているうちに左右にずれる |
ベルトの不均一さ タイヤの微妙な傾き |
上部のローラーにだけ両側に壁を作り、外に行き過ぎないようにした |
かなり正確に正面を向いてポストにぶつからないと判別ができない |
動作誤差の範囲で、仕方がない |
バッファロー機構を追加した。バッファローゲームにヒントを得て開発。二つのタッチセンサでちょうど正面であることを確認できる。どちらが押されているかで左右の傾きも感知できる。 |
正面の赤外線センサが取り付けられない |
正面にコンベアをつけたため |
上部シャーシの下側に取り付けなおした。バンパに穴を開け、問題なく赤外線を感知できる。 |
U.エレクトロニクス
問題点 |
原因 |
対応・解決策 |
FPGA回路の変更に時間がかかってしまった |
MAXPLUSIIでのFPGA回路作成の理解が浅かったため |
特になし |
赤外線センサの不調(常に“1”になる場合) |
ドーターボードの導通等。 |
赤外線センサの回路は非常に単純であるし、素子も壊れにくいものなので、ドーターボードを注意深く見直してみるのがよい。 |
超音波センサの不調(203、205などの値から動かない場合) |
送信部からの振動が基盤を伝って直接受信部に届いている。 基盤の導通。 |
前者は、送信部のスピーカを基盤から少し離してハンダ付けする。 導通の場合は根気強く危ないところを探す |
超音波センサの不調(999の値から動かない場合) |
可変抵抗の値がおかしい。 基盤の導通 |
可変抵抗の値をいじって試す。導通については上に同じ。 |
V.ソフトウェア
問題点 |
原因 |
対応・解決策 |
白線を感知せずに競技場外に飛び出す |
MIRSの速度が速く、感知できなかった。 WSの感度が悪い。 処理がたてこんでいてプログラム中で感知していない。 |
ある程度直進したら速度を遅くする。 |
USSの値がおかしい |
プログラム中でUSSにより値を読む処理の間のsleep時間が短いと思われる。 |
USSにより値を読むときに一定時間以上のsleepを入れる。 |
ポストの獲得時にIRSの手前部分で停止する |
USS同様、早いタイミングで感知してしまう |
筒をつけたが、出っぱっていて邪魔だったので発見してから少しsleepを入れた。 |
コンベアが正常に回転しない |
Sleep時間が短く処理が正常に行われていなかった。 |
Sleep時間を長めに入れて、引っかかりそうな配線を無くした。 |
コンベアをループで同じ時間回しているが、元の位置に戻ってこない。 |
Forループ中にsleepを入れて同じ回数、時間にしていたのだが、実際の原因はわからない。おそらくタイミングや、コンベアが回りだす瞬間の力の大きさが違うからではないかと思われる。 |
少し長めに回転させ、メカのほうで止まる機構にした。 少し力任せな制御だったのでまだ改良できる点だといえる。 |
白線トレースがうまくいかない |
直進走行精度の悪さ、同一のループで、WSとUSSなどを同時に監視していたのが原因。 |
パラメータを再測定した。 処理が重なるので、白線で90度回転するのを完璧にして白線の内側をトレースせずに行うようにした。 |
ポストの外周を正常に回らない |
MIRS標準機のプログラムを使用していたのでMIRS本体にかかわる定数 USS12_DIFFなどを変更していなかったため正常な位置まで前進しなかった。 |
各値を測定し、defineで定義しなおした。 |
ポスト獲得後に白線まで復帰するとき斜めに進入する |
ポストの周りを正確に360度回れていない。 |
回転の誤差は絶対にあるし、ポスト接近時にも誤差が生じると思ったので後退動作をするback関数で常に白線に対してMIRSが直角になるように補正動作を入れた。 |
角ではないのに角と判断し、90度曲がる |
MIRSが右側に移動し前のWSが白線を感知するので角と判断してしまう。 |
直進のときのエンコーダの値を変数にいれ、ある値以上進まないと角の処理に入らないようにした。 それ以外の場合は左側に補正するような動作をいれた。 |
ポストに対して正確に正対補正動作しない |
USSが9999を返すときが度々あった、USSの値が右と左で実際の距離とかなりずれていた。 |
Sleepを長めにいれなるべくちゃんとした値を返すようにした。USSの値の差を測り、プログラム中で改善した。 |
5.
競技会結果
試技 |
競技1回目 |
競技2回目 |
1point |
1Point |
0Point |
競技会で使用したプログラムを示す。
http://www2.denshi.numazu-ct.ac.jp/~kiyotaka/mirs_0601.zip
6.
総括
伊井
石本
植松
杉山
ソフトウェアとしては結果から言ってしまえば非常に悔いが残る結果となってしまった。原因は上記にあげたようなこともあるが、牛丸先生も始めに言っていた通りマンパワーの配分や、個人のすべき役割がしっかりできていなかったところにあるだろう。
また、事前の準備が全体的にしっかり出来ていないことを強く感じた。開発途中で牛丸先生に怒られた正確な寸法を決めず設計書無しで作ったコンベアについてもそうであるし、「こんな感じにしよう」というレベルで止まっていることが多かったと思う。構想の段階ですべてを明確に決定し、それについての下調べや実際に実現可能かという部分である。このことをしっかりやっておいて、班員との話し合いでもっと詳細な部分も決定できていたら競技での結果ももう少し良かったと思う。夏休みや冬休みといったまとまった期間に作業ができなかったせいもあると思う。
個人的なことについて言えば、自分はソフトウェアに関しては自信が無かった。授業中に理解しているかといわれたら全然理解していなかった。しかしMIRSを通じてかなり進歩したと思う。マルチタスクについての理解はまだまだだと思うが、分割して動作ごとにプログラムを作ってみてコンパイルやデバッグなどの作業をしたという経験は大きい。自分に足りていない面も見えてきて、新たに課題も見つけることが出来たので良かったとは思う。
最後に、長澤先生は“10回に1回にでる、そのバグが本番で起きる”というのを痛感した。すべての不具合を直さなければ意味がないということが良く分かった。それをするためにはまだまだ時間が足りなかっただろう。
芹沢
角田
平口