ETロボットコンテストとは
ETロボットコンテスト(
http://www.etrobo.jp/2012/gaiyou/intro.php)は、組み込み系ソフトウェア開発の教育を目的とした、若手エンジニア向けのコンテストです。コンテストは大きく分けて競技部門とモデル部門の二つに分けられます。競技部門では、右の画像のような2輪のロボットを用いて、指定のコースを走行し、そのタイムを競いあうものです。またモデル部門は、そのロボットを設計する上で生成されたドキュメント(要求分析やクラス図、開発工程など)を競い合うものです。
コンテストの特徴として、若手エンジニア向けに開催されているものなので、ETロボコンに初めて参加するチームが多数います。当然、初めて参加する方にとっては、どのように開発を進めていくべきかが分かりません。そこで我々は、ETロボコンで培われてきた技術やノウハウを半年以上に渡り収集し、パターンランゲージとしてまとめました。(パターンランゲージとは) これらを用いることによって、参加して間もないチームの支援を行えると考えております。
パターンランゲージ一覧
環境
本番のコースと近い環境が整っていないと、思わぬアクシデントに遭遇する。そのため、レプリカのコースを購入し、地面にスタイロフォームを入れる必要がある
コースを購入する等の金銭的余裕がない場合は、他チームから練習台を借りる。
まいまい式がきちんと実装されているか把握できていない場合、プロジェクターや懐中電灯で外乱光を作り出す、もしくは場所を変更させて実装されているか確認する。
会場によっては、外乱光の強いところが存在する。なので、会場の状況を把握する必要がある。
実際に走行させるとキャリブレーション式では対応できない場合がある。なので、キャリブレーション式とまいまい式の2つのプログラムを用意しておき、どちらにも対応しておく。
走行体は電圧による駆動差が出やすい。同じソースコードでも段差を登れない等の問題が発生する。特に本番はフル充電の状態で走行するので、フル充電の電池を確保できるような状況を常に維持するべきである。
走行体が直線的に動かないのは、モータの駆動差によるものである。なので、なるべくモータの駆動差が少ないものを選ぶ、もしくは補正をかけることで直線的な走行を可能とする。
プロセス
チームに経験者と未経験者が混在していると、タスクの分割等、あらゆる問題が発生する。なので、経験者と未経験者チームで分けることにより、開発の効率だけでなく、未経験者の教育にもつながる。
チームメンバーは多すぎても情報共有が難しくなり開発が困難になる。かといって、少なすぎるとタスクが重すぎて実装が疎かになってしまう。ETロボットコンテストの適当な開発メンバーは5人ぐらいである。
目標が明確に定まっていないと、チームのモチベーションや会議の内容も薄くなってしまう。モデル部門と競技部門において、明確な目標を設定することでモチベーションの維持だけでなく、マイルストーンの設定も容易にできる。
チームを形成しても、一人一人の目標を確立しないと、大きな目標や日々の目標が明確にならない。また、個人の目標を明確にすることで、互いの理解を深める結果にも繋がる。
日々のスケジューリング(マイルストーン)を明確にするために、大きな目標を達成するための詳細を日々決定していく。
大会規約は大量に存在するので、すべてを個人が把握するには限界がある。規約が公式に発表されたら、それぞれの規約の担当を決めて、それらをシェアすることで効率よく開発を行える。
コースの提供、情報を共有・入手できるタイミングを逃さないようにするため、他チームとの交流を多く持つことで、コースレンタルや新たな技術の発見が期待できる
並列開発を行うために、走行体を複数所持することで開発効率をあげることができる。
難所の開発を行う際、技術の差はあるもののすべての実装を完璧にこなすことは困難である。なので、コースの順番、ボーナスタイムの順に優先順位をつけて開発を行う。
光センサーの値は、練習と本番の環境では対応できなくなるため、サンプルコースを用意することで、最後にチューンをすることができる
それぞれの値(光センサーやジャイロセンサー)を理解していないと、実装どころかモデル図もかけないため、モデルを書く前に入力の値の確認をする。
モデル
予選突破からチャンピオンシップに向けてモデルの改善を行う必要がある。その場合、予選との差分、ネガティブな意見に対するアンサーを用意する等の対策を行う。
どのようなモデルを評価されるか具体的に把握していないとき。ETロボコンで開催されるワークショップで、モデル審査の評価対象をきちんと記録することが重要。去年度のワークショップに参加していれば、トレンドもわかるので尚よい。
「審査員の好み」同様、評価されるモデルが把握できていない場合は、とりあえず例年の評価されているモデルを真似することが定石である。
他チームに差を付けたいとき。差をつけるためには、ラインから外れたときの解決策の提案や、省電力・研究分野を取り組むとよい。
モデルはチャンピオンシップにおいても変更を余儀なくされる。その場合、トレーサビリティの取れているモデルを初期の段階から作成することで変更を用意にさせることができる。
開発者自身では気づかない問題点やレビューをもらうために、第三者にモデルをチェックしてもらう
「なぜ」その機能が必要なのか、「なぜ」その値を利用するのか、その「なぜ」を繰り返すことで、トレーサビリティの取れたモデルへと進化していく
モデルの内容以外にも、他者から見て理解しやすい内容になっているかも重要である。なので、単語の意味、定義、配色、配置にもきちんとこだわる必要がある。
実装
滑らかな走行でないと、無駄な距離を走行してしまい、結果タイムも遅くなる。なので、PID制御を用いる。
外乱光対策の走行方法。スピードは期待できない。
外乱光対策に対して弱いが、スピードは期待できる。
倒立振子の値を常に考慮すると、スピードに限界がでてしまう。しっぽをはじめから下した状態で走行することで、安定性を増して走行することができ、スピードも出せる。
ライントレースをしないで、曲がる位置、角度を記憶し、正確に実装することで、センサー等を用いずに走行する方法
段差のある難所ポイントを上る際、急発進急停止することで段差を攻略できる。
ライントレースをせずに、直線的に走ることで難所や灰色無視走行を可能とする。ただしモータの性能差があるので、完璧に直線走行することは困難である。
走行体がどこを走っているか把握できないとき。時間とジャイロセンサーを用いることで、どこを走っているか走行体自身が把握することができる。
走行体が難所によって、モードの変化がされてるか確認したいとき。走行体のログで確認する、わざとエラーを発生させるなどの解決策がある。
しっぽ走行をしていると、灰色の検知がうまくできない。なので、自己位置推定とモータの性能差を組み合わせることで、灰色検地をおこなわずに攻略できる。
最終更新:2012年12月20日 16:07