ロボットシミュレータを用いた最終課題

目的

ここまでに学んだ技術を駆使して,難易度の高い課題にトライします.課題を分析し,戦略を立て,与えられた期間で課題に取り組みましょう.課題は競技形式となっており,より高い得点を得られるロボットアプリケーションを開発した人が勝ちとなります.

最終課題

テーマ:お掃除ロボットの開発

ロボットシミュレータstageを用いて擬似的なお掃除ロボットのアプリケーションを開発します.制限時間内にロボットスタート地点からゴール地点まで走行するアプリケーションを作成します.ゴール地点に早くたどり着くほど高い得点を得ることができます.また,2種類の通過ポイントを通過することで,より高い得点を稼ぐことができます.

基本ルール

  • 制限時間は180秒,早くゴール地点に到達するほど高いスコアが得られる
  • スタート地点は固定(マップについては下記の図を参照)
  • マップでロボットが観測できるのはカラーブロックのみ,ゴール地点や通過ポイント1,2はカメラで観測することはできない
  • ゴール地点の候補は3箇所あり,ノード起動時にランダムで1箇所が決定する.ゴール地点の座標はトピック「/goal_point」を購読することで確認できる
  • ゴール座標から半径1[m]以内の領域に侵入した場合にゴール地点に到達したと判定.競技は終了する
  • 通過ポイント1の候補は4箇所あり,ノード起動時にランダムで2箇所が決定する
  • 通過ポイント1から半径1[m]以内の領域に侵入した場合に到達したと判定し,スコアが加算される
  • 通過ポイント1の座標は,座標配信エリアに侵入し,トピック「/check_point」を購読することで近くの通過ポイント1の座標を確認できる
  • 通過ポイント2の候補は7箇所あり,ノード起動時にランダムで4箇所が決定する
  • 通過ポイント2から半径1[m]以内の領域に侵入しトピック「/check_signal」を用いて「1(True)」を配信することでスコアが加算される
  • 通過ポイント2から離れた位置において,トピック「/check_signal」を用いて「1(True)」を配信するとスコアが減点される.ただし,ランダムで選択されなかった3箇所の通過ポイント2付近においてはスコアを減点しない.
  • 通過ポイント2付近には,ランドマークとなる赤色のカラーブロックが存在する(下記の図を参照)
  • 競技前にマップを作成してもよい

競技に使用するマップは20×20[m]です.マップは上記を参考にしてください.

上記に通過ポイント2付近に存在するカラーブロックの例を示します.ロボットに搭載されているカメラでカラーブロックと通過ポイント2の位置関係を把握することが必要です.

ロボットの仕様

2輪走行ロボット

  • ロボットのサイズ:0.75 x 0.75 [m]
  • 駆動方式:対向2輪駆動型

搭載センサ

  • 可視光カメラ
    • 解像度:320 x 240 [画素]
    • FOV(視野):40 x 70 [°]
    • トピック名:/image
  • 距離画像カメラ
    • 解像度:320 x 240 [画素]
    • FOV(視野):40 x 70 [°]
    • トピック名:/depth
  • レーザーレンジセンサ
    • 測定レンジ:0.0 ~ 20.0 [m]
    • 視野角:270.25 [度]
    • トピック名:/base_scan

スコア
各タスクは下記の通りです.

タスク 配点 注意事項
ゴール到達 100
ゴール到達時間 競技残り時間 / 2 ゴール到達時のみスコアに加算される.
通過ポイント1 20
通過ポイント2 50 間違ったシグナルを配信した場合には-10

各タスクの合計を争います.

パッケージ

本競技に必要なパッケージstage_robot_vacuumについてはリンク先を参照してください.パッケージの説明に関してはREADME.mdファイルに記載してます.

禁止事項

  • マップの改変は認めない
  • stage_manager_node.pyの改変は認めない
  • ロボットの並進最高速度は0.5とする
  • マップの改変は禁止する
  • 人手によるロボットの操縦は認めない
  • ゴール座標毎に異なるプログラムを用意する