名称 開発完了報告書
番号 MIRS1302-PLAN-0005

最終更新日:2013.01.20

版数 更新日 作成 承認 改訂記事
A01 2013.01.20 全員 大沼 初版

目次


1.はじめに

本ドキュメントは、MIRS1302のMIRS開発の分析と総括を記したものである。

2.開発スケジュール分析

予定していた開発スケジュール

実際の進行

2.1 メカ

 12月13日から各部品を製作する予定だったが実際は設計に少し時間がかかり、冬休みに部品を作成することになった。特にドットマトリクスに関しては設計が終わったのが1月8日で、安定して動作することを確認できたのが競技会の直前だった。全体的に作業が先送りになってしまったので、12月6日から各部品の製作を行えるように設計を早めに終わらせるべきだったと感じる。

2.2 エレキ

前半は元からある基盤を回路を変更して作成しなおした。後半は新しく取り付けたパフォーマンス用ボードに大半の時間を費やしたがその甲斐があり仕様通りの動作をすることができるものを作成することができた。

2.3 ソフト

遅れはあったが、ひとつひとつ着実に進めていくことができた。

3.開発工数分析

 以下に各個人の作業時間の表とグラフ、各分野の割合のグラフを示す。



4.総括

4.1 全体

・競技会
 webカメラは、5つ接続するとCPUが落ちてしまうため、3つのみ使用した。
 競技会の結果は、一回目は0点、二回目は-185点、の計-185点だった。
 一回目は、チェックポイントを3つクリアし、宝を1個破壊、確認1回失敗、メンテナンス一回であった。
 二回目は、チェックポイントを2つクリアし、宝を1個破壊、確認2回失敗、リタイアであった。

 ・一回目の失敗の原因
  スリップのために位置がわからなくなり、巡回ができなくなった。
  実際の競技場では安定化電源の配線が原因になって、小さな段差ができていた。
  事前に体育館で走行したときには安定化電源は設置しておらず、十分に走れていた。
  これがスリップの直接的原因と考えられる。
  直前の準備について、実際の競技場に近い環境でリハーサルができていれば、走行スピードを下げるなど、対策が立てられた。
  設計について、ロータリーエンコーダを重視するような設計だったので、悪路でタイヤがスリップすることをよく考慮すべきだったといえる。

 ・二回目の失敗の原因
  経路を変更したものの、再びスリップして、巡回ができなくなった。
  その後リタイアして、デモンストレーションを行った。

 ・webカメラについて
  設計の時点で、USBハブをバスパワーのものではなく、セルフパワーのものにするべきであった。
作業の終わったメカ班にエレキ班を手伝ってもらう形式にしたことで、仕事のまったくない人はでにくくなっていた。
最初の予定通りとはいかなかったものの、全体的に余裕を持って開発が進められた。
最後の数日は、ソフト班しか仕事がなくなってしまった。

4.2 メカ

 MIRS1302のメカ班として、標準機の形から大きく変えず、機体の軽量化、整備性の向上を目指す方針で設計した。結果としては無事設計、製作を終えることができたが、競技場の仕掛けに使うコードによる盛り上がりによりスリップしたため、サスペンション等による段差対策を施すべきだったと感じる。基盤取り付けラックについては、既存のパーツを有効に活用すれば製作する部品数を減らすことができたと感じる。ドットマトリクスボードについてはメカ班とエレキ班で協力して作成し、接触不良やプログラムのミスによりなかなか思い通りに光らせることができなかったが、競技会では無事光ってよかった。メカ班の仕事が終わった後はエレキ班の作業の手伝い等を積極的に行い、MIRS全体の作業をスムーズに進めることができた。

4.3 エレキ

 1302班のエレキは、既存の基盤をほとんど使わず、自ら基盤を作り直しました。作り直すにあたって、基盤のサイズを小さくし、ジャンパ線による接触不良を少なくするため、なるべくジャンパ線を使わないように基盤を設計しました
。  接触不良を防ぐため接触不良を起こしやすそうなケーブルは作り直しました。
 そのおかげで、I/Oエラーなどの回路が原因の不具合がほとんど起こりませんでした。
 さらに1302班のオリジナル要素を基盤に加えてみました。代表例はパフォーマンス用ボードです。
 パフォーマンス用ボードは64個のLEDを組み合わせたドットマトリックスです。トランジスタアレイの使用上決まった電圧をかけなければLEDがきれいにつかないので、設計仕様通りに動作しましたが、トランジスタアレイの部分をトランジスタを使ったほうが良いと感じました。

4.4 ソフト

画像処理とその他で分けて開発を行った。

自己位置推定・走行は、体験入学の競技会の時点で、ほとんどできていたので調整を行うだけだった。
FPGAについては、デバイスドライバを書くことになったが、規模が小さかったため、数日で完成した。
統合については、一番時間をかけたが、自己位置推定の誤差をカバーできる巡回方法を実装することはできなかった。

画像処理に力を入れていたが、競技本番では、画像処理を行うところまでの移動で失敗して、あまり力を発揮できなかった。
開発の最初の頃は、それぞれの分担で効率よく開発が進められていた。
プログラムが完成してくると、調整・デバッグが実機上で行われるので、分担するのが困難であった。

最後にテストをしていれば、防げたミスがあったので、よく考えてテスト項目を作成しておくべきだった。
テストは、時間があるときに行う詳細なテストと、時間がないときに最低限の動作をチェックするためのテストを別々に設計しておくべきだった。

5.所感

泉谷勇季

MIRS1302ではソフト班、主に画像処理を担当しましたが、あまりチームに貢献できなかったのではないかと感じています。
OpenCVを使った画像処理について勉強し始めたのが遅く、ソフトウェア詳細設計書に載せた3パターンのボール認識プログラムは作りましたが、活躍する場面がほぼ無く、一部のみの採用となってしまいました。もっと早くからOpenCVについて勉強しプログラムの作成に手をつけておくべきだったと反省しています。
ただ、プログラムの作成の中でC/C++の知識が増えたこと、バグの解消の中でも学んだことがあった点については良かったと思っています。
終盤でバグの解消に時間の掛かった配列操作、ポインタ操作については、扱い方の重要さについて再確認するきっかけとなり、今後のプログラム開発の中で意識していこうと思います。 このような長時間にわたるグループの開発を経験することはしばらく無いかもしれませんが、そのような機会があったときは今回の反省を生かし、さらに積極的に動いてチームに貢献できるようにしたいです。

一応ここに、作ったボール認識のプログラムを置いておきます(言語:C++)。


パターン1
2値化 → (輪郭検出による)ラベリング → 広い領域かつ円に近い領域のみ外接矩形でトリミング → ハフ変換による円検出で相対座標計算

パターン2
2値化 → 白いピクセル数(ボールの色と一致した部分のピクセル数)が一定量ある場合のみハフ変換による円検出で相対座標計算

パターン3
2値化 → (輪郭検出による)ラベリング → 広い領域の場合のみ外接矩形を計算 → 外接矩形の中心をボールの中心として、ボールの相対座標を計算

パターン4
2値化 → (輪郭検出による)ラベリング → 広い領域かつ円に近い領域のみ外接矩形でトリミング → 外接矩形の中心をボールの中心として、ボールの相対座標を計算
ソフト詳細設計書には書いていないパターンですが、上3パターンを製作した中で、良い部分を組み合わせて製作したボール認識パターンです。

勝又美佳

 私は、メカとエレキとブログ作成を担当しました。メカでは、基盤収納ラックやバンパー、パフォーマンス用ボードを作成しました。特に苦戦したことは、円筒の材料をコンターマシンで切断することです。どうしても切断する際に材料が滑ってしまうからです。しかし、いろんな道具を使って材料を固定し、滑らないよう切断することができるようになりました。始めは、自分たちが作るオリジナルロボットのイメージがよく湧きませんでしたが、メカ詳細設計作成を通してだんだんとイメージが湧いてきました。エレキでは、回路の設計を理解するまでにとても時間がかかりましたが、ある程度わかるようになり、パフォーマンス用ボードの作成に携わることができました。パフォーマンス用ボードがしっかりと点灯したとき、とても嬉しかったです。ブログ作成では、オリジナルロボットの作成が進むにあって、なるべく更新するように心掛けました。
 1年間を通して2班の皆さんにはとてもお世話になりました。本当にありがとうございました。

川上洸

私はメカとエレキを担当していましたが、特にエレキを作業しました。その中で一番力を入れた作業はパフォーマンス用ボードの作成です。1302班はドットマトリックスを使った回路をMIRSに搭載することになりました。
実際に回路を作成して動作試験をしてみると、思ったとおりに動作せず苦労しました。不具合の原因の多くは接触不良によるものでした。
失敗を繰り返して繰り返して、やっとのことで成功したときは椅子からひっくり返るほど感動しました。(実話)
 次に多く作業したことは基盤を作り直すことです。MIRSの既存の基盤の不具合が多く新しく基盤を作り直しました。それに伴い、既存の回路を変更し回路をよりよくするために設計しなおしました。例えばドーターボードは二枚あったのを一枚にし、ジャンパ線を無くしました。多くの回路を加工したため、基盤加工機の使い方やはんだ付けの技術が向上したと思いました。
電子部品の性能についてデータシートをしっかり理解するのにも苦労しました。電子素子は多くの種類があり、自分たちの理想の設計仕様に一番近い電子素子を選択しなければならず、設計仕様に合わせることを学びました。
失敗したらなぜ失敗したか原因を考え、その対処法を考えたらまた試験をすることの繰り返しにより、MIRSのエレキにおいて多くの失敗と解決法を考えてきました。それによりこの一年で大きく成長出来たと思います。
この経験を今後に活かしていきたいと思います。
1302班のみなさん一年間ありがとうございました。

木口卓巳

 MIRS1302のメカ・エレキ班として一年間頑張りました。自分の作業について振り返ってみると、メカとしての仕事ばかりでエレキらしい仕事としては標準機の基盤製作や、ドットマトリクスの動作試験、プログラム作成くらいしかできませんでした。メカとしての仕事についてはMIRS全体部品の設計、製作を行いました。SolidWorksを使うのはロボコン部以来だったので操作方法を少し忘れていましたが、チュートリアル等を通してすぐに理解することができました。最初は1個の部品を設計するのに時間がかかりましたが、慣れてくると素早く部品を設計できるようになりました。部品製作時は工作室に十分に道具が無かった為思うように製作できませんでしたが、他のメカ班員と協力することで道具を分担して作業することができました。また、他の班に比べて大きく設計変更していないものの、製作する部品が多くて大変でしたが、みんなと協力して無事作業を終えることができてよかったです。

 このMIRS1302の活動で学んだことは人と協力することの大切さです。メカ班が自分一人しかいなかったらこんなに順調に製作することができなかったと思います。MIRS1302の皆にはとても感謝しています。やってほしいことを人にしっかり伝え、人から頼まれたことをしっかりこなすことが大切だと感じました。

瀬戸翔太

正直はじめは不安でいっぱいでした。MIRSで自分にできることはあるのか、むしろチームの邪魔になるのではないかと思っていました。実際にMIRS1302チームに配属され作業を行っていく中でやはり周囲と比べて知識が少なく、てこずってしまうことがたくさんありました。やることをいわれてもどうやっていいのかわからずその度に別の班員にきいて、教えてもらっていました。しかし班員はいくら聞いても怒らず、快く教えてくれました。
この1302のメンバーだからこそ自分はやってこれたと思います。
自分はエレキを担当しました。川上君もエレキで一緒にやってきましたが、川上君がいなかったらエレキとしての仕事は成り立たなかったと思います。本当にたくさん助けてもらいました。わからないことがあって聞くと根気よく教えてくれました。そのおかげで少しはエレキに貢献できたと思います。MIRS本番、今までMIRSを客観的に見てきたときとは見え方が違いました。誰かが作ったものが走るのと自分達で作成したものが走る、この違いだけでとても感じとるものが多くなりました。機体が動作したときの喜び、動作しなかったときの悔しさ、自分達で苦労して作ったものだからこそ湧き上がった感情だと思います。
ものを作ることの喜び、仲間の大切さを学びました。辛く大変なこともありましたが得るものはたくさんありました。 一緒に開発している仲間と大沼先生との中間打ち上げ最高でした!こういうのも大切だと思います。

立川耕平

 私の担当はメカと庶務雑務でした。 当初ずっと、「こんな私にもできることがあるのだろうか」と考えていました。 正直に言えば、私には真っ当なアイデアや、それを実現する為の知識もありません。そこで私にできることは何だろうか、と考えました。 時間だけなら私も同じように持っています。頭が駄目でも、加工や雑用はできるだろう、そう考え、できるだけ時間を使うように頑張ったつもりです。 なるべく顔をだすようにしていたつもりでしたが、やはり中心人物との作業時間の差は歴然で、手伝いたいけれどできない、と歯がゆく思うことが多くもありました。 結局、振り返ってみると、部品を削ったりする以外にはポスターを作ったりパンフレットを作ったり、コードを作ったり高専際でプレゼンしたりと、 雑用、広報、美術担当のような、正直あまり開発には直結しない仕事ばかりとなってしまいましたが、私にもできる仕事を探して、 自分から取り組むという考え方を得ることができたというのは、このMIRS開発でしか得られない大きな収穫だったと感じます。 社会にでてからも、この考え方はとても重要であると思いますし、今後も貫いていけたらいいなと思います。  MIRS開発の副産物として、GIMPであったり、SOLIDWORKSであったり、いくつかのソフトを微妙に使えるようになったので、機会があれば活用したいと思います。 結局はあまり班に貢献できませんでしたが、個人としては多くのものを得ることができました。 最後に、足を引っ張らない程度には知識を蓄えておくべきだったと反省しております。班員の皆様、申し訳ありませんでした。

山田知史

マネージャーとソフトを担当しました。

マネージャとしては、メカ、エレキ、ソフトの進行状況の把握とスケジュール調整をしていました。
設計の時点で、全員に仕事があるように考えていたので、最後の数日以外は、全員に仕事が割り振れたのではないかと思います。
最後の数日に関しては、MIRS本体を使用した調整以外にできることがなくなってしまって、1302班としての仕事はなかったが、CPの手伝いをしていたので良かったと思う。
班員全員がそれぞれの仕事を十分にこなしてくれていたので、自分の作業に集中することができました。

ソフト班としては、自己位置推定・走行、FPGA、統合などを行いました。
今回の開発ではEclipse/Subversionは、使用していませんでした。ファイルを完全に分割しておいて、統合のときに調整するというような形で行ったので、バージョン管理ソフトは使用しませんでした。
最も大きな経験としては、位置推定の難しさを学んだこと、デバイスドライバの書き方を覚えたこと、テストを効率よく(隈なく)進めることの大切さを学んだこと、の3つです。
位置推定については、ハード、ソフトの両面でシビアな調整が必要なことが、よくわかりました。
FPGAのデバイスドライバは、初めて書いたので、良い経験になりました。
テストを効率よく進めることについては、各単体テストをまとめて行えるプログラムを作成したことで、開発効率が上がったので、テストの方法は大事だと感じました。
最終的なプログラム

全体としては、
設計のときにカメラ複数(しかも5個)という奇抜な方向性が決定して、どうなることかと思っていました。
しかし、最後にはなんとか形になって、競技会では、スピードを披露することができたので良かったです。
ドットマトリクスについても、空中配線をすることが決定したときは、正直不安でしたが、実際作ってみると、配線での不具合はなかったので、何事もやってみるものだと思いました。


沼津工業高等専門学校 電子制御工学科