第3回 UMLロボットコンテスト
第2回 UMLロボットコンテスト参戦記
これは調子のって 「第2回 UMLロボットコンテスト」に挑戦し、 思わぬ好成績を残してしまった、とある社会人チームの記録です。
2月24日
この日午後、部長からの内線電話がことの始まりです。
部長 | :「いきなりで悪いんだけど、明日ヒマある?」 |
私 | :「はぁ?」 |
部長 | :「忙しいよね?」 |
私 | :「だから、何ですって?」 |
部長 | :「○○社から、LEGOのマインドストームっていうおもちゃを使ったUMLロボットコンテストっていうイベントの案内が来ていて、その説明会が明日あるんだけど行ける?」 |
私 | :「また急ですね(^^;」 |
部長 | :「コンテスト自体に出場できるかは別にして、○○社とのつき合いもあるから誰か聞いてみてきて欲しいんだよなぁ...」 |
私 | :「分かりました、じゃあ私が行ってきます。」 |
部長 | :「じゃあ案内のメール転送しておくから!」 |
こんな感じのやりとりの後、実施説明会参加の申し込みをしたのでした。
2月25日
説明を一通り聞いたこの時の感想としては、「UMLってまだ実際の業務では使ったことないけど、 講習会もあることだから、これなら何とかできそ~ジャン♪」と軽~く 思ってしまいました。しかし「参加するとなると、その費用はどこが出してくれるんだろう!?」 と現実的な問題も、一応は頭の片隅には過ぎりました。
2月26日
部長、支社長と実施説明会の報告と参加についての相談をしました。
相談の結果、以下の条件で参加が決定しました。
- コンテスト参加により、UMLの技術を身につけ、理解を深めることを目的とする。
- 参加は自主参加とし、支社内で公募して集める。
- 活動は基本的に定時間後に実施する 。
→ただし、定時間内にあるイベント(技術説明会等)の参加は、業務に支障のない範囲で認める。 - 参加費や必要な機材の購入費用は会社が負担する。
3月5日
チーム名「LEGOでレっつゴー」でショートトラック部門に参加申し込み。
3月8日
「レゴ マインドストーム」購入
3月10日
第1回チームミーティング
これまでメンバの業務都合があわず、やっとチームミーティングを開くことができました。
集まったメンバは、公募で集まった者と技術習得を目的に参加を呼びかけて同意した
若手、
それに私を加えて5名です。この日はコンテストに向けての活動方針と今後のスケジュールの
確認が主な内容です。またこの時に行った目標の設定は、以下の通りです。
モデル部門 | :入賞 |
タイムトライアル競技部門 | :完走 |
作業を進めるに当たり、メンバはこれまでモデリングという作業は
全くやったことがないので、
モデルの大枠(「ユースケース図」と「クラス図」くらい!?)が決まるまでは
ブレーンストーミング形式のミーティングをしていくことにしました。
とはいっても、一からミーティングで作るのは効率的ではないので、
次回のミーティングまでに自分なりのユースケースを考えて、
それをたたき台に次回のミーティングを進めることにして、
この日のミーティングは終了しました。
実際のところ、この時点でコンテスト当日まであと1ヶ月
くらいしかありません。こんな調子で本当に大丈夫なのか、不安だらけの実質的なスタートです。
3月14日
これまでUML
について、本を読んだことがある程度のレベルしか
持ち合わせていなかったメンバですが、今回の説明会に参加したことで、
なんとなくモデリングのことを理解した気
になれました。
また説明会では、今回のレベルであれば「アクティビティ図」を作れば、
設計までできてしまうかもしれない。しかしUMLのダイアグラム全てを使う
必要はないが、「ユースケース図」と「クラス図」
くらいはどのチームも出して欲しいとの極秘情報を
入手できました。
3月17日
第2回チームミーティング
メンバなりのモデリングを期待していたのですが、なかなか作業が進まないようです。
そこで、個々で悩んでいても仕方が無いので、
競技規約と走行体について、再確認するための緊急ミーティングを行いました。
こんな状態で作業が進むわけもなく、結局この日はモデリングの成果物を確認しただけで散会です。
3月24日
今回の技術説明会では、実装を意識した設計まで説明していただき、大変勉強になりました。
またこの日はオフィシャル・バッテリーが配布されました。
ありがたく使わせていただきます(感謝)。
3月25日
第3回チームミーティング
この日は私が所用で外出していたため、残ったメンバには、
「最低限ユースケースくらいは、決定しておいてね(^^;」
と言い残して行ったのですが、ミーティングは順調に行われていたのでしょうか!?
その結果は…
3月26日
第4回チームミーティング
前日のメンバの成果は、
ボツ!!
というより、何もできていませんでした(泣)。
そこで改めて、各自が持ち寄ったユースケース図やクラス図を元に、
チームとしてのモデルを考えようと作業のやり直しです。
しかしミーティングが始まると、題材自体がすぐ目に見えて直接的であるため、
物事の全体を抽象的に捉えることに、
逆に苦労しました。これまでの業務経験(!?)から、
すぐに具象的な話になってしまいます。
3月27日
第5回チームミーティング
モデルも何とかそれっぽい形になりつつあります。
とりあえず、あともう一歩といった感じです!?
3月28日
第6回チームミーティング
やっとの思いで、モデルの大枠が決定!!
3月31日
この日からの作業は手分けして行うことにしました。
モデル図を清書する人と、実装を行う人…
実はこの時点で、まだ使用するOSの動作確認を行っていませんでした。コーティングにいたっては、1行すら
していません。
あっ!、モデル図は英語版も作らないと…。
まだまだやるべきことがたくさんあるなぁ(泣)。
こんな調子で、週末の「試走会」に間に合うのでしょうか?
4月1日
この日も手分けしてモデル図の清書と、OSの動作確認です。
4月2日
モデル図(初版)完成!!
他部署にはモデリング経験者がいるので、その人にチェックしてもらおうと、
できあがったものをメールで送り付けました。
できあがったモデル図(初版) ※クリックしても大きくなりません(^^; |
チェックを頼んだ人からは、
あまりにもモデルが稚拙でコメントに値しなかったのか、
何の反応もありませんでした。
(後日話を聞いたところ、その人はその頃は忙しくて自分のことで手一杯だったそうです(ホッ)。)
4月3日
提出用のモデル図に若干手直しが発生しましたが完成し、一通りコーディングも終了したのですが、
リンクができません!!
サンプルプログラムとかは問題なくリンクできているので、makefileの
記述に問題があるとは思うのですが、どうにも解決しません。
それなのに明日は朝一から試走会です。さて、どうしたものか…(泣)
4月4日
動かせるモノができていないのに、試走会に参加してしまいました(^^;
この日の目的はただ一つ。コースに関するデータ収集です。
OSに付属のサンプルプログラムを使って、
コース上の輝度の差や坂を上るときに必要なパワーを検討していました。
もちろんデータ収集のかたわら、試走会の会場でシコシコとリンク作業をしています。
試走会の時間内にリンクは完了したのですが、
実際に走らせようとしたときにタイムアップとなりました。
人数の関係で試走に来られなくて会社に残ったメンバには、 提出ドキュメントの発送手配をお願いしていました。
提出したモデル図
※これももちろんクリックしても大きくなりません(^^;
さぁ、帰社したら今日からは本格的な動作の調整開始です!!
4月7日
動かせるモノができれば、どうにか形にはなるものです(^^; マインドストームに 付属しているオーバルコースは、わりとすぐに一周できるときがあるようになりました。
ただこのときの一周の走破タイムが約30秒で、
これでは全く勝負になりません(泣)。
この頃から、モデル図も提出してしまったのでUMLのことは
どこかにいってしまい、もう速く走らせることしか
頭になくなっていたと思います。
4月8日
なんとかオーバルコースを一周走れることに気をよくしたメンバは、 早速本番コースに似せたテストコースを走らせる準備に取り掛かったのでした。
テストコース作成中の様子
4月9日(本番一週間前)
テストコース(約5m/周)が一応完成しました。
4月10日
運がよければ、テストコースを一周約30秒で走ることはできるようになりましたが、 それでもこのままだと本番では時間制限に引っかかってしまうようなタイムだと思われます。
- <参考>
- 本番コース:約20m
- テストコース:約5m
- 本番コース:約20m
明日は朝一から2回目の試走会ですが、問題山積み!!
4月11日
1回くらいはコースを完走するんではないかと臨んだ、2回目の試走会ですが、
結局この日もコースを完走することはできませんでした(大泣)
しかしコースを走らせて分かった、速く走らせるためのヒントがいくつかありました。
帰社したら早速試さなければ(^^)。
4月14日(本番二日前!)
この日、ついに現状のレベルではほぼ納得できる動きをするようになりました。
テストコースでの結果ですが、コースアウトすることもなくなり、走破タイムも
7~8秒になりました。
そこで本番コースでの走破タイムを計算すると、単純にテストコースの
約4倍の長さだから30秒くらいとなり、これなら
「三位くらいなら狙えるかな?」
と欲が出てきました(^^;
4月15日(本番前日!)
本番を明日に控え、ソフトは昨日までの調整のままとし、もういじらないことにしました。
4月16日(本番☆彡)
この日の練習走行の1回目で、初めてコースを
完走できました。その時のタイムは
ほぼ予想通りの30秒くらいだったと思います。しかしこの時点でまわりから
聞こえてくる声は20秒台ばかりだったので、これでは上位入賞は
まず無理だと思われました。
スピード制御については既にストレートは限界の調整だったので、
『カーブで転倒しないギリギリのスピードを見つけよう』
ということになり、それを見つけるために時間ギリギリまで試行錯誤でカーブスピードの調整を行いました。
しかし、走行スピードが高速になるにつれ、ソフトウェアとはまったく次元の違う問題が発生しました。
車体の強度がスピードに耐えられなかったのです。
この対策には粘着テープで車体を作っているブロックのつなぎ目を補強しました
。
レース前の車検を済ませ、いよいよ本番です。
一本目:一本目はインコースからのスタートです。
途中アウトコースの相手と接触しかかったところもありましたが、
最終コーナーの手前でコースアウトしてしまった相手を置き去りにして、
無事ゴールすることができました。
タイムは、な、なんと、24秒18!!
この時点で暫定の第一位を記録しました。
一本目の全てのレース終了後の成績は第三位でした。 冗談のつもりで言った上位入賞が、予想以上の好記録が出て 現実のものになりかけています。この時ばかりはメンバ全員が驚き、 私いたっては慣れないポジションにいることで胃が痛くなっていたのでした。
二本目:
今度はアウトコースです。それまでの二本目のレースを見ていたら、
アウトコースの方がタイムがよくなる傾向があるようで、
我々のチームの記録も自ずと期待が膨らみます。
スタートも決まり、順調に走れば更に好記録を期待できそうです。
結果は、23秒50!!
またまた暫定第一位をGetです!!
レースは後の組のチームに一位の座を明け渡し、最終的には第二位となりました。
我々のチームは、レースでは第二位という好成績を残せましたが、
肝心のモデルの方の成績はどうだったのでしょう?
上位3チームしか発表がありませんでしたから、我々のモデルがどの様に
評価されていたのかは不明です。
少なくともモデル審査員からの
「よいモデルはよいレース結果であったか?」
の問いに対して、
「たいしたモデルでなくても速く走れる」
という、あまり嬉しくない結果は提供できたと思います(^^;
しかしソフトウェアは、やはり動いてナンボの世界であるのも事実で、
美しいモデルができてもプログラムにして動かした時に目的を達成しなければ
意味がないといった面もあると思います。
よって我々のチームは、実を得ることはできましたが質が伴っていなかったと言えます。
今後は、
目指せ 日本最強の組込みエンジニア
を目標に、質・実ともにレベルアップに取り組んでいきます。