シナリオの実行

シナリオを実行するためのシェルスクリプト~/ScenarioExecutor/run.shについて説明します。

#!/bin/bash
source setup.sh
python ScenarioExecutor.py シナリオ(.json) ウェイポイント(.json) [autoware]

setup.shはCARLAのPythonAPIライブラリのパスを設定しています。
ScenarioExecutor.pyの引数は以下の通りです。

  • シナリオ(.json) : シナリオの記述方法のページで説明しているシナリオファイルです。
  • ウェイポイント(.json) : RoadEditorからエクスポートしたファイルです。
  • autoware: 3番目の引数にautowareを指定するとAutowareとros-bridgeを起動します。何も指定しない場合はCARLAの~/carla/PythonAPI/examples/manual_control.pyを起動します。
    autowareを指定した場合、自車両はAutowareによって自動でコントロールされ、指定しない場合はmanual_control.pyを使用して手動で自車両をコントロールします。

3番目の引数にautowareを指定した場合、ScenarioExecutor.pyはプログラム内で~/ScenarioExecutor/garden-autoware-agent/src/garden-autoware/launch/garden-autoware.shを呼び出します。
garden-autoware.sh以降は下記の順序で呼び出しが行われます。

ScenarioExecutor.py
  └── garden-autoware.sh $1 $2 $3
        ├── autoware.sh $1 $2 $3
        │     └── garden-autoware.launch $1 $2 $3
        └── rviz.launch
  • $1 $2 $3は引数です。それぞれ以下の値がセットされます。
    • $1: town:=マップ名
      マップ名はシナリオのmap_idがセットされます。
    • $2: spawn_point:=自車両のスポーン位置
      自車両のスポーン位置はシナリオのscenario:opening_scene:ego:start_position:wp_idwp_idxで指定されたウェイポイントからx,y,z,roll,pitch,yawを取得してセットされます。
    • $3: waypoint:=Autoware用のウェイポイント
      Autoware用のウェイポイントには~/ScenarioExecutor/garden-autoware-agent/src/garden-autoware/config/waypointに格納されているcsvファイルのパスがセットされます。
      ファイル名はscenario:opening_scene:ego:start_position:wp_idから取得します。
  • garden-autoware.launch内で、Autowareとros-bridgeのノード及び自己位置推定ノードを起動しています。
    (自己位置推定ノードはCARLAのOdometryセンサーの情報のみ使用して簡易的に自己位置推定を行うScenarioExecutorが提供するノードです。)
  • rviz.launchはRVizの起動を行います。