ETロボコン チャンピオンシップ大会出場への道 (2/3)
【ETロボコン チャンピオンシップ大会出場への道 その2 ~2005年度参戦記~】
二つ目の課題は、レースのタイムを大きく左右する近道です。コース上には、途中からラインが点線で設けられている部分があり、そちらを進むことでショートカットでき、時間短縮を図る仕組みになっています。
近道の点線が現れる前には、漆黒線と呼ばれる通常のラインとは別の素材を使用した物が貼り付けられており、これを光センサからの反射光の強度の違いで認識するというテクニックが必要となり難易度が高いところでもあります。
このあたりから、組込の難しさというのがメンバー達にもひしひしと実感できてきたところです。理論では、光センサの値を読み取って判断するということですが、その値は常に一定ではなく、外的要因、たとえば昼と夜で部屋の明るさが異なるといったことや、電池の消耗具合といった些細なことでまったく違う動きをしてしまうところです。コンピュータ上で稼働するビジネス系アプリケーションの開発では体験できない、まさに組込ならではの要因を意識したプログラム作成が必要とされる部分です。これには、メンバーは最後の最後まで(いまでも...?)、苦労させられました。
ひとまず、近道もなんとかクリアしたものの、このあたりからJavaよりもC言語の方が優位になりつつありました。それは、あらかじめ用意されているそれぞれの実装言語のファームフェアの仕様に差異があるためで、例えばモータ速度の調整については、C言語は256段階であるのに対して、Javaは8段階しかなく、細かな調整が困難であるということが浮き彫りになってきました。
●大会仕様発表!!えっ,そんなハード仕様なの?
2月22日、ETロボコン大会実施説明会が開催され、大会仕様や、ロボットのハード仕様についても、公開されました。
すると、光センサが1つ、駆動モータが1つ、ステアリング用モータが1つ、タッチセンサが1つで、ロボットのブロック組み立ては全チーム統一という仕様が公開されたのです。
なんと、私たちはここまで、光センサ2つ、駆動モータが2つで取り組んできたため、まったくと言っていいほど一からの出直しを余儀なくされたのでした。
その後、障害物のまったくないトラック2周を走行するという試走会を社内で実施できたのは、実に2ヶ月後の4月28日のことでした。
また、これまでC言語チームとJavaチームのいずれか1チームが参加するということで競い合ってきましたが、弊社がETロボコンのスポンサになったため、2チーム出場することができるようになり、競争から共同へと心境の変化がでてきたのもこの頃からでした。
●設計ドキュメントを作成。C言語は構造化だからUMLでどう書くの?
大会仕様にもとづいて、実際に走行させるためのプログラムを作成していくわけですが、最初はどのように稼働するかわからないため、一部実装ありきで進めていったところがあります。しかし、このコンテストでは、ただ速く走ればいいというのではなく、開発のプロセスとして、分析設計をしっかり行った上で、実装を行うということも重要な評価ポイントとなります。
コンテスト出場の条件として、分析設計ドキュメントの提出が必須となっています。ドキュメントの記述方法は、UMLやDFDなどが利用できますが、せっかくなのでUMLの勉強も含めて、両チームともUMLで提出することにしました。
Javaはオブジェクト指向言語であるため、なんなくUMLで記述することに抵抗はなかったのですが、C言語が...
構造化であり、オブジェクト指向ではないため、クラスやオブジェクトという考え方が無く、UMLで表記する大半の図が書きづらく、無理矢理UMLで書いてしまったという感はあります。
●ショートカットはなんとか越すが、越すに越されぬオフロード
今年の大会で新たに追加された障害がオフロードです。これもコースとしては、ショートカットになっていますが、ライン上に直径9mmの半円丸太が7本並べられています。これを乗り越えるにはいったいどのようなロジックが必要なのか?ロジックというかパワーと運という気もしないではないですが、何度か試してたまにうまくいくという、非常に不安定要素いっぱいの状況でありました。
はたして、本番でオフロードを攻めるべきなのか?難しいだろうなあ...
(2005年度の参戦記については、富士通ラーニングメディアのHPに掲載されていたものですが、HPリニューアルとともに破棄されたためこちらに再掲します。)