ObjectSquare [2005 年 8 月号]

[レポート]


ETロボコン参戦記

夢考房.NET


1.参加動機

金沢工業大学 夢考房 ソフトウェアモデリングプロジェクトの活動はソフトウェア開発の一連の流れを経験し、今後必要となるであろうUMLによって分析、設計を行うことです。

自分たちではモデルを客観的に評価することができないので、ETロボコンに参加することでモデルを評価していただき、自分たちのスキルアップを目指します。

2.メンバーの紹介

メンバーはリーダーの福澤(3年)、高井(4年)、飯島(1年)、大島(1年)、下條(1年)の5名で活動しています。

3.ETロボコンの参加までの過程

初心者ばかりの開発だったため予定通りに作業が進まなかったのですが、モデルが妥当であるかを考えるために、モデリングを2回行いました[表1]。

活動時間は平日17時から21時までで、基本的に土曜、日曜は活動していません。

表1 モデリングの過程
表1 モデリングの過程

5月17日 モデリングの開始、ユースケースについて検討を始めました。
5月19日 チーム「ムンムン」と合同でオブジェクト指向についての勉強会を行いました。
6月3日 日経バイトの取材の日。クラス図に動的なアクティビティ図やステートチャート図が混じっていたなどのエピソードを記者さんに伝えました。
6月5日 第1回試走会。時間ぎりぎりでプログラムが完成、遅いが完走できました。
6月8日 1回目のモデリングを終了。カーブという状態をはっきりさせるためにカーブで停止するプログラムを作成しました。
6月9日 1回目を踏まえて2回目のモデリングを開始。1回目のユースケース記述では表面の部分しか見えていなかったため具体的なものを作れなかったことを踏まえてよりハードウェアに近い部分まで書くことを意識して作成しました。
6月19日 第2回試走会に参加。ステアリングの制御が遅くなり、コースをまともに走らなくなり、制御が速くなるようになるべくプログラムの軽量化を行いました。
6月21日 提出書類完成。書類送ってまずは一安心、あとはプログラミング地獄…。

4.モデルの説明

ユースケース図

確実に走ることを目標にコースアウトしそうな場所を考えました。コースアウトすると思われる場所は下り坂とカーブであったので、目標達成のため危険な場所では減速してコースを攻略することにしました[図1]。

図1 ユースケース図
図1 ユースケース図

クラス図

ユースケース記述を基にクラス名とメソッドになりえるものを抽出して、抽出したクラス名とメソッドをアプリケーション・メカニズム・ハードウェアに分類し、それを基にクラス図を作成しました[図2]。ドメインをハードウェア、メカニズム、アプリケーションに分け、それぞれを赤、緑、青と色づけました。また、このシステムでは、どこのポートを使用しても動作するような初期設定ができる機能を追加しました。

コースの色クラスで、光センサーから取得したデータと閾値から、コースの色を決定します。コースの形状クラスでは、タッチセンサーが触れているかによってカーブか直線を判断し、またバッテリーの電圧値で平坦であるか下り坂であるかの判断をします。これらを基にコース情報クラスがコースの情報を決定します。走り方クラスではコース情報によって走り方を変更します。前進後退クラスで変更した走り方からモーターの速度と向きを設定し、右折左折クラスで変更した走り方からモーターの速度と向きを設定します。モータークラスはそれを実際に実行し、モーターを動かします。

図2 クラス図
図2 クラス図
<クリックすると拡大して表示します>

動作のシーケンス図

初期設定が終了した後、このシーケンス図の通りにライントレースを行います[図3]。光センサーの値からコースの色を決定し、タッチセンサー、電圧値からコースの形状を決定します。コースの色・形状からコース情報を決定します。

コース情報を基に各モーターの向き・速度を設定し、それに従いモーターが動作します。

図3 動作のシーケンス図
図3 動作のシーケンス図
<クリックすると拡大して表示します>

「走り方」のアクティビティ図

走り方を変更するときの動作を詳しく表したアクティビティ図です[図4]。コースの色を認識して、左右モーターの向きを決定し、速度を決めます。またコースの形状を認識して、カーブと直線を判断する。直線の場合下り坂かどうかを判断し、形状に適した速度を決め、前後モーターの向きを決定します。

図4 走り方のアクティビティ図
図4 走り方のアクティビティ図
<クリックすると拡大して表示します>

5.ETロボコンを終えての感想

1年生(飯島)の感想

私はETロボコンがなかったらUMLにおもしろさを見出せなかったと思います。なぜなら最初私はUMLどころかC言語すらわからない状態からのスタートだったからです。C言語はプログラミングを勉強したくて夢考房のプロジェクトに参加したので楽しかったのですが、UMLは1年生にとって完全に未知の領域だったのでいまいちUMLの主旨を理解できずにいました。よって、ただずっと図を書き続けているだけで全然楽しくなかったです。しかしETロボコンで他のチームのモデル図をみると度肝を抜かれました。他のチームのモデル図は色とりどりでとても見やすく、何より見ていてかなりおもしろかったです。それで私たちは「UMLってこんなにおもしろいのか!」と、感動しました。すると同時に自分たちの力不足を特に(モデル図において)痛感しました。僕たちのモデル図を他のモデル図と比べると私たちのモデルは単純に完走することが目的なのでとても走行戦略が薄くなってしまいました。それに比べて他のチームはとても様々な戦略で巧妙なものから大胆なものまで、見ていて飽きないものばかりでした。力不足な点はそれだけでなくおもしろみが足りないと思いました。他のチームはメタファをうまく使い、人の目を引きつけていてそのような所も少し足りないと思いました。

今回のロボコンはたくさん勉強になりました。UMLの有用性、おもしろさ、奥の深さなど色々なことを知りました。来年のロボコンはもっとおもしろく、内容の濃いモデルにしたいです。そしてそれを完璧に実装できるようにしたいです!!

リーダー(福澤)の感想

夢考房.NETチームは初心者が多く、リーダーである私もUMLはあまり勉強していないので理解がなく、スケジュール管理をするのも初めてで全てが手探りの状態でした。無理に詰め込んだスケジュールはどんどん遅れ、モデルの提出日に満足いくモデルが提出することができるか不安でした。しかし、みんながスケジュールの遅れを取り戻そうと必死にがんばったおかげでモデルの提出日には遅れることがなく、無事提出できました。

大会ではたくさんのモデルを見ることができ、そしていろいろな方とお話することで良い刺激となりました。競技部門では当初の目標である完走は達成することができてよかったと思います。(モデルは勉強不足でした・・・)

大会が終わり、思ったことはメンバーの力量不足を感じる前に私の力量不足を感じることが多く、メンバーにはかなりの迷惑をかけました。また、あまり良い指導もできず、大会までついてきてくれたメンバーには感謝の言葉しかありません。今後の課題は第一に私がたくさんの勉強をしなくてはいけません。言語(今回はC言語でしたが他の言語も)、オブジェクト指向とUMLの理解を深めることと、無理のないスケジュールを組めるようにすることです。

夢考房.NETメンバー
夢考房.NETメンバー


©2005 OGIS-RI Co., Ltd.
Prev Index Prev
Prev. Index Next