合宿から帰ってきました。
3泊4日の合宿から無事生還。
お金やら、保険やら、時間やら、予約やらと色々心配しなくてはいけないことから解放。
やっと一息といった感じですね。
で、合宿はどうだったかというと、
【一日目】合宿地へ移動→合宿課題発表
【二日目】遠足
【三日目】課題
【四日目】課題締めくくり→帰還
といった感じでした。
合宿の課題は、途中で少々変更になったけれども、最終的には
「指定されたフィールド内の赤いポール(一本しかない)の周りを一周回ってもとの位置に出来るだけ早く戻って来るロボットを作れ」
というものでした。
ポイントは、
- 指定されたフィールドというのが白い壁に覆われた一辺2〜3mの正方形の中。
- 指定された大きさの指定された赤い色のポールを発見して一周する。
- 出発地と同じ場所に帰ってくる。(目印は作られる「予定」)
の3つかな。
これだけ限定された条件なのに出来上がったロボットは十人十色。
人によっては環境が多少変化しても良いように(ポールの太さやフィールドの大きさ)といった感じでプログラムを組んでいる人もいたけれど、自分はプログラミング能力が高くないので利用できる条件はすべて利用する方向で開発開始。
というわけで開発のポイントは
- 探索領域は限定的でいい(ポールが見えないほど遠くにあることは無い & 障害物は無い)
- ポールの大きさと色は指定されている(色やポールのサイズはスタート前に分かっている)
- ポールと自分の位置関係が分かればそれ以上の状況把握の必要は無い。
- 出発場所にもどる必要がある(まだ目印は無い)
- 「ポールを発見」、「一周」、「戻ってくる」が絶対条件。どれか一つが欠けても駄目。
- 時間内(合宿中)に開発を終える
というわけで、ロボットに状況を判断させなくてはならないのは、
- ポールと自分の位置関係
- 自分がスタートした場所
- 発見すべき色(ポール)
だけと決定。
で、作ったロボットの行動は
- その場で旋回し、赤色(ポール)を探す。
- ポールの付近まで移動(移動した距離を覚える)
- ポールの周りを一周(指定された動作)
- 移動した距離分戻る
でした。
一応調整を重ねた結果、なんとか動くようにはなった。
が、もっとスムーズに動いたりしているロボットも多かった。(というか動いたロボット全部?)