[ レポート ]
株式会社 オージス総研
組み込みソリューション第一部 松村康弘
組み込みソリューション第二部 森淳郎
ET ロボコンという大会をみなさん、ご存知でしょうか?ロボコンというと、独自に開発したロボットで発想のユニークさや、ロボットの開発技術を競い合うというイメージがあるかもしれませんが、ちょっと違います。
ET ロボコンでは、ハードウェアが全チーム共通で決められているため、ロボット(ハードウェア)自体の開発技術はあまり問われません。代わりに、与えられた同一制約条件下でハードウェアの性能を最大限に引き出す必要があるため、UML 等を用いた モデリングスキル、プログラミングスキルが求められます。
このように、ET ロボコンは組み込みシステムエンジニアに必要な知識・スキルが総合的に求められるため、新人教育のメニューに取り入れている企業が多くあります。弊社オージス総研もその例外ではありません。
本記事は、弊社新人の ET ロボコン 2012 に対する取り組みを「東京地区大会編」「チャンピオンシップ大会編」の 2 部構成でお送りします。
本記事では、ET ロボコン未経験、あるいは経験が浅い方 でも、ET ロボコンの活動の流れ、成功・失敗、試行錯誤が追体験できることを目的として書いています。 そのため、技術的な話は少なく、経験者の方からすると物足りない内容に思えるかもしれません。そんな経験者の方でも、甘酸っぱい、コーヒーの香りが漂う若き日々を思い出して読んでいただければ楽しめるのではないかと思います。
ET ロボコンというイベントについてご存知でない方は、
を併せてご参照ください。チーム構成メンバーは組み込み部に配属された新人 2 名。
ET ロボコンという荒波を乗り切るには微妙に心許無い経歴の 2 人。
そんな不安定な船で出発したプロジェクト。
始まりから終わりまで嵐を抜けることはなかった。
配属(活動開始)から、地区大会、チャンピオンシップ大会終了までの大まかな流れは以下の通り(図 1 )。配属された週に試走会がある、タイトなスケジュールだということがお分かりいただけると思う。
図 1 : 全体スケジュール
プロジェクトを成し遂げるにあたり、仮説検証の繰り返しは重要である。実装の裏付け無しにモデルシートに着手すると、絵に描いた餅が出来上がる......。いつまでもプロトタイプを作っていると、モデルのコンセプトを固めることができず、とりあえず出せば良いやのモデルになってしまう......。
スケジュールの項で触れた通り、モデルシートの提出締切を考えると、プロトタイプを量産している時間はなかった。問題は、どの段階でプロトタイプ作成を切り上げるかということ。そんな葛藤に悩まされ続けた新人 2 人はどのように壁を乗り越えていったのだろうか?
試走会とは、本番と同じコースでロボットを走らせることができるイベントのことである。(特に東京地区大会の試走会は、本番と同じ会場のため、試走会は重要な意味を持つ)
試走会では大抵、本番会場の光の入り具合の調査や、本番コースでちゃんと走るための調整に充てるのだが、芝浦雑伎団の初試走会はサンプルプログラムが動いてキャッキャと歓喜の声をあげている状態だった。
ふと辺りを見渡すと、我々のように産まれたての子鹿のような走りをするチームはほとんど無い。
何なのだ、この絶望的な差は......。
森 「うちのチームと違って、他のチームは滑らかにライントレースするね。」
松村 「あれは PID 制御っていうらしいよ。やり方は分からない。」
森 「他のチームは尻尾パーツに体重を預けてバンバンスピード出しているね。」
松村 「あれは昨年、一世風靡した尻尾走行っていうらしいよ。やり方は分からない。」
ETロボコンはプログラミングスキルを競うだけではない。
しっかりとしたモデルを作成しなければならないのだ。
東京地区では試走会時にモデル相談所というものが開設されており、モデル相談をしているチームがちらほら見受けられた。
やばい!まだ 1 文字も書いていないぞ......。
どうやら、相当なスロースタートを我々は切っているらしい。
ET ロボコン経験者の方には共感してもらえると思うが......初めて書くモデルシートというのは、一体何を書けば良いのかサッパリ分からない。モデルに正解は無いので、当たり前といえば当たり前なのだが......とにかく、私たちは活動開始早々に路頭に迷ってしまったわけである。 そんな中、私たちが取った行動は「とにかく過去の優秀モデルの良い所を盗む」ということだった。
過去の優秀モデルを読み込み、2 人での意見交換・情報共有。 とにかく、この繰り返しだったが、このことは以下のような議論を生み出し、後々、良い形、悪い形の両方がモデルシートに表れることになる。
松村 「文字がごちゃごちゃしているのは、個人的にあんまり好きじゃないなあ。」
森 「グラフや図を使っているところは、出来ている感が素人目にも分かるね。」
松村 「並行性設計は、このチームが記述てんこ盛りで参考になるね。」
森 「全部のクラスを一つのクラス図に書くと逆に読みづらいね。目的別にまとめよう。」
初めは完全に真似することが目的だったが、気がつけば、2 人の間で目指したいモデルの方向性というものがぼんやりと出来上がってきていた。
ところが時間は有限......8 月も終わりに近づき、モデルシートを仕上げにかからなければ間に合わない時期になっていた。そろそろ、一度先輩方に見てもらおう。
ぼんやりと目指したい方向性は見えてきたものの、締切日までにモデルシートが完成していなければ意味が無い。ボコボコに指摘されるのは覚悟で、部の方々に複数回に分けてレビューをお願いして回った。予想以上にボッコボコに指摘が入った。
先輩 A 「要求モデルで論理の飛躍が目立つのだけど......」
松村 「見直してみます......」
先輩 B 「構造だけ唐突に出されても、何を達成したいモデルなのか明示していないと、読み手によって解釈変わっちゃうよ」
森 「仰る通りです......」
先輩 C 「ここでインタフェースを多用している意図を教えて欲しいのだけど」
松村・森 「......」
過去の優秀モデルの良い所を寄せ集めただけのモデルに魂がこもるはずなどなく。 表面的にはモデルは形になってきていたものの、「自分たちは何をしたいのか」「自分たちのアピールポイントは何なのか」という部分が全く伝わらないモデルになっていたのだ。
時間はもう無い......全部直している時間も無いし、全部を直すと何をしたいのかよく分からないモデルになるのは目に見えている ――― 悩んだ結果、先輩方から受けた山のような指摘事項を対応するかどうか、一つ一つ取捨選択していくことにした。
材料は沢山あるが、何が完成形かも分からない状況での組み立て作業。自分たちが目指したい方向性はぼんやりと見えているだけ。
振り返れば、この時期、メンバーの心は折れかけていた。
しかし、窮地に陥るに連れ、メンバーの中にはいつしか、
「実はこのモデル、イケてるのでは?」
「意図が伝わっていないだけなのでは?」
という気持ちが芽生えるようになっていた。確かに優秀モデルから良いトコ取りをして出来上がったモデルだが......ただ真似したワケではない。印刷した紙に穴が開くぐらい見て討論してきたぞ、という気持ちが強かったのだ。
前述の鬼のようなレビューラッシュの中で一つ気がついたことがあった。それは、口頭で補足説明さえできれば、モデルの意図というものは大抵伝わるということ。(そもそも表記法を間違えていないことが前提だが) どこかから借りてきたモデルならともかく、まがりなりにも自分たちで組み立てたモデルなので、意図というものは必ずあるはず。補足説明さえできれば、極論、どんなモデルでも相手に意図は伝わるはずなのだ。
ところが、ET ロボコンのモデル審査では、提出したモデルシートのみで審査員がモデルの良し悪しを判断することになる。
モデルシートの記述のみで審査員にこちらの意図が伝わらなければ意味が無い......どうすれば良いんだ?
解決の糸口は身近なところにあった。レビューでのやりとりだ。
「このモデルはこういう意図で書いていて......」とレビューで自分たちが口にしていたことをそのまま、モデルシートの冒頭で強調すれば良い!
図 2 に示すような補足説明が無いだけで、読み手は書き手の意図と違うモデルの解釈を始めてしまう。単純なことだが、このことに気がつくのに、随分と時間がかかった。
本人たちも二度と出せないと豪語する火事場の馬鹿力で最後は一気に完成させ、後は結果を祈るのみとなった。
東京地区大会で提出したモデルシート(PDF : 約 3.2MB)
ついに迎えてしまった東京地区大会 B ブロック当日......。
提出したモデルシートを見返すと、ところどころガタガタ。競技に至ってはアウトコースを完走した試しが無い。こんな状態で大丈夫か?
.........。
...............。
あれ? おかしいな、何度やってもヘアピンカーブでコースアウトするぞ......。
ピットに戻って 2 人で情報を共有すると、どうも光の影響なのか、各カーブで微妙に膨らんで走行してしまっているらしい。
何が起きているか分かったけど、どう対応すれば良いのか分からない......とりあえず全体的にスピードを落としてみよう。
2 回目の試走時間。
.........。
おお。走った!走った!何故か分からないけど!
とりあえずインコースは機嫌がよければガレージインまで行くし、アウトコースはちょっと怪しいけど、階段までは行くぞ。
そして原因不明の爆弾を抱えたまま迎えた本番競技......。
先にインコースの競技。松村が壇上で「オフィスが品川に移転したから、厳密にいえば今は芝浦雑伎団じゃないんですよ!」と微妙に MC のお姉さんが反応に困るトークに熱を上げる。
走行の方は......順調にベーシックステージをクリアして、ルックアップゲートも難なくクリア。ドリフトターンクリア後にラインに戻れなかったものの、ガレージイン以外は全てクリア!現時点でほぼ満点の出来だ!
ベーシックステージゴールと同時に、何故かレーンを外れてインコースに向かって爆走するロボット。
危ない!インコースのロボットと激突する! リタイアします!リタイアします!!
アウトコースの結果は......Bluetooth スタート、ベーシックステージクリアのみとなった。
俺たちの夏は終わった......。
控え室の端っこで口から魂が抜け出ている芝浦雑伎団のメンバー2 人。
せめて、苦労したモデルで5位に食い込めれば報われるなあ……と既に諦めムードが滲み出ていた。
そんな空気の中、おもむろに始まった表彰式。
「モデル部門 5 位は......」
ありえるならここで呼ばれる......。
しかし、無情にも 5 位......4 位、3 位、2 位と別のチームがコールされていく。
俺たちの夏は終わった......。その時、
「エクセレントモデル......1 位!芝浦雑伎団!!」
!?
訳が分からぬまま、壇上に呼ばれる。 「ありがとうございます」というべきところを、あまりに気が動転し、 「よろしくお願いいたします!」と壇上で口走る松村。
続いて総合順位の発表。どんなにモデルの成績が良くても、ここで呼ばれなければチャンピオンシップ大会には駒を進めることができない。が、ここでもまさかの......
「総合優勝......芝浦雑伎団!!」
!?
俺たちの夏は......終わっていなかった!!
この日は台風の影響で、懇親会・ワークショップともに延期で解散となった。こうして、アルコールはなくともフワフワとした高揚感を残したまま、東京地区大会 B ブロックは幕を閉じた。
地区大会ではスタート位置からゴールまでのモータエンコーダ値( ※ )を頼りに、ストレートやカーブを判断していた。が、エンコーダ値というものは長く走れば走るほど想定よりずれてくる。モータの性能に起因する部分もあるのだが、会場・走行体のコンディションによって、図 3 のようにずれてくる可能性がある。
※ エンコーダ値......モータに組み込まれたロータリーエンコーダによって計測できるモータの回転量のこと。取り付けた車輪の直径から、走行距離を推定することができる。
図 3 : 走行環境によってエンコーダ値はずれてくる
このようにエンコーダ値がずれた結果、アウトコースでは階段にまだ走行体が達していないのに、階段を走破するための行動をしていたのだ。原因は何であるにせよ、エンコーダ値は走れば走るほどずれるものであり、どこかでエンコーダ値を修正するか、走行戦略に冗長性を持たせる必要があるのだ。この 問題はチャンピオンシップに向けて解決していくこととなる。
東京地区大会 B ブロックにてエクセレントモデルという華々しい評価を受けた芝浦雑伎団だったが、まだまだ多くの課題を残していた。その中でも一番悩ましい課題が「オリジナリティ」だった。
以下はモデルシートに対する審査員コメントの一部抜粋である。
「......過去に公開された要素技術の範囲にとどまっているように見受けられます。さらに新たな要素技術の採用にもチャレンジしてみてはいかがでしょうか」
時間との兼ね合いから良いモデルを徹底的に盗むことを念頭に作業していたため、当然といえば当然の結果。チャンピオンシップでは独自性が無ければ上位に食い込めないことが分かっている。チャンピオンシップのモデルシートでは、他チームが提案していないような新たな要素技術を前面に押し出す必要があると理解した。
東京地区大会編、お読みになられていかがでしたでしょうか?後編となる「チャンピオンシップ大会編」では、「東京地区大会編」の反省を踏まえて、 どのように取り組んでいったのか、今回敢えて少なくしている技術的な面も交えて紹介する内容となっております。ここまで読んで興味を持たれた方は、是非、後編もお読みいただければ幸いです!
©2013 OGIS-RI Co., Ltd. |
|