コンテンツにスキップ

シミュレーター

概要

このページではAIチャレンジで使用されるシミュレーターの仕様について説明します。

シミュレーターは、Autowareのためのオープンソース自動運転シミュレーター「AWSIM」をベースとして作成されています。

起動方法

make dev などでシミュレーターはAutowareと一緒に自動的に起動します。シミュレーターを単体で起動したい場合は make simulator を使用します。

起動モード

用途ごとに起動モードが用意されており、実体は aichallenge/simulator_scripts/<モード名>.sh です。起動引数の正本は各スクリプトなので、設定を変えたいときはこのファイルを直接編集してください。

  • make simulator-<モード名> … AWSIM のみ起動します(例: make simulator-e2e-final
  • make dev / make e2e / make eval / make gate1gate3 … AWSIM と Autoware をまとめて起動します
モード 起動コマンド 用途 主な設定
dev make devdev2dev4 で複数台) 開発 / S2R 練習 1台(引数で N 台)・周回/時間 無制限・カメラ/LiDAR off
e2e make e2e E2E 練習(提出前の確認もこれ) 1台 + NPC 2台・6周・タイムアウト実質なし・カメラ/LiDAR cpu
e2e-final make simulator-e2e-final E2E 決勝 4台・6周・420秒・sync開始・ハンディキャップ/ランキング on・エンジン音 on
s2r-final make simulator-s2r-final S2R 決勝 4台・6周・420秒・sync開始・ハンディキャップ/ランキング on・エンジン音 on
eval make eval 評価(提出時と同じ条件) 1台・6周・600秒・sync開始
parallel make simulator-parallel 複数台レース 3台・6周・600秒・sync開始
gate make gate1make gate3 セーフティゲートのテスト 1台・シナリオ別
multiplay-host / multiplay-client make simulator-multiplay-host など 通信対戦(Multiplay -
simulator(既定) make simulator 引数なしの素起動 起動時UIで設定を選択

部門ごとのモード(E2E / S2R)

部門ごとに 練習 → 決勝 の2モードがあり、違いはセンサー構成と、車両数・ハンディキャップ・ランキングだけです。

E2E 部門 S2R 部門
課題 End-to-End(カメラ・LiDAR から直接制御) Sim-to-Real(実車移行を前提)
カメラ / LiDAR cpu(有効) off
IMU / GNSS / V2X off(明示的に無効化) 有効
練習 e2e dev
決勝 e2e-final s2r-final
  • センサーの on/off がそのまま部門の違いです。E2E 部門ではカメラ・LiDAR 以外の情報を使わないため、e2e.sh / e2e-final.sh では --imu off --gnss off --v2x off を明示しています。
  • S2R の練習には dev をそのまま使います。練習に必要な条件(カメラ・LiDAR off、ハンディキャップ・ランキング off、無制限走行)を dev が満たしているため、S2R 専用の練習モードはありません。
  • E2E の練習と提出前の確認も e2e の1モードにまとめています。提出物の評価そのものは make evaleval モード)と同じ条件で行われます。
  • 練習モードは周回数・タイムアウトを無制限(e2e--timeout 10000000.0dev はさらに --laps unlimited)にしてあり、途中で止まらずに走り続けられます。時間制限つきで確認したい場合は決勝モードか make eval を使ってください。
  • 練習は count 開始(全車が接地してから自動でカウントダウン。e2e はカウント0秒で即スタート)、決勝は sync 開始(/admin/awsim/start を待って一斉スタート)です。
  • e2e--start-random on で開始位置が毎回変わるため、特定のスタート位置に依存しない挙動を確認できます。決勝は公平性のため固定です。
  • エンジン音(--sound)は決勝の2モードのみ on です。練習モードや評価(make eval)では off にしてあります。

画面説明

make simulator で起動した場合、設定画面が表示されます。後述の起動オプション相当の設定をGUIで行うことが可能です。設定が出来たら「Start」をクリックします。

awsim-top.png

make dev で起動した場合、AutowareとともにAWSIMが起動して直接シミュレーション画面が表示されます。

  • 画面左上のA/Mボタンをクリックするとモード切替ができます(自動/手動)
    • 手動モード中は、後述のキーボード操作によって運転が可能です
  • 画面左上のD/Rボタンをクリックするとギア切替ができます(前進/後進)
  • 画面左上のBボタンをクリックするとターボブーストがかかります。Bの後ろの数値は残りのターボブースト数です
  • 画面右上のTOPボタンをクリックすると設定画面が表示されます

awsim-button.png

起動オプション

AWSIMはコマンドライン引数で動作を制御でき、起動スクリプト(simulator_scripts/dev.sh など)内で指定しています。AWSIMの設定は起動オプションの他、GUI画面からも変更可能です。

ここではシミュレーター単体の起動オプションを記載しています。実際の大会・開発環境での設定値は、起動スクリプトや運営発表のルールを参照してください。なお、ここでは実際の大会・開発環境では未使用のオプションも含んでいます。

レース設定

オプション デフォルト 説明
--timeout float 600.0 セッションのタイムアウト(秒)を設定します。
--laps int/string 6 周回数を設定します。unlimited/inf/0で無制限。
--vehicles int 4 アクティブ車両数(1, 2, 4)を設定します。
--npcs int 0 NPC車両数(0〜3)を設定します。
--boosts int 5 加速アイテムの使用可能数(0〜無限)を設定します。
--collisions bool false 車両同士の衝突判定の有効/無効を設定します。
--wall-recovery bool true 壁リカバリー機能の有効/無効を設定します。
--ranking bool false ランキング表示の有効/無効を設定します。
--handicap bool false 順位に応じたハンディキャップの有効/無効を設定します。
--start-random bool false 開始位置のランダム化の有効/無効を設定します。

制御・入力設定

オプション デフォルト 説明
--steer-source string ackermann 操舵入力方式。ackermann/actuation/actuation-longitudinal-only
--control-mode string ackermann --steer-sourceのエイリアス。
--start-mode string off 開始方式。off/sync/count
--start-count-seconds int 10 カウントダウン開始時間(秒、0〜10)。

センサ設定

オプション デフォルト 説明
--camera off/cpu/gpu gpu カメラセンサ。gpu/cpu で有効化、off で無効化します。
--lidar off/cpu/gpu cpu LiDARセンサ。gpu/cpu で有効化、off で無効化します。
--imu bool on IMU(/sensing/imu/imu_raw)の有効/無効を設定します。
--gnss bool on GNSS(/sensing/gnss/nav_sat_fix)の有効/無効を設定します。off の車両は /v2x/vehicle_positions からも消えます。
--v2x bool on V2X車両位置共有(/v2x/vehicle_positions)の有効/無効を設定します。
-headless フラグ (未指定) Unity標準のヘッドレス起動フラグ(シングルダッシュ)。指定するとカメラ・LiDARセンサを無効化し、描画なしで軽量に実行します。

シナリオ・リプレイ

オプション デフォルト 説明
--scenario string シナリオファイル(YAML)を指定します。
--vehicle-poses string 車両配置のYAMLファイルを指定します。
--replay0 string 以前の走行ログを読み込み別車両として再生します。
--json_path string JSON設定ファイルのパスを指定します。

リプレイのログには result-details.json を使用します。また、リプレイは --replay0 から --replay9 まで10台の車両に対応しています。

マルチプレイ

オプション デフォルト 説明
--multiplay string マルチプレイモード。server/client/host
--multiplay-address string localhost 接続先サーバーアドレス。
--multiplay-port int 50051 通信ポート番号。
--multiplay-name string プレイヤー名。
--multiplay-send-hz float 50.0 送信更新頻度(Hz)。

オーディオ

オプション デフォルト 説明
--sound bool true エンジンサウンドの有効/無効を設定します。

真偽値オプション

真偽値オプションは 1/true/on/enable/enabled または 0/false/off/disable/disabled を受け付けます。

キーボード操作

操作 キー
アクセル Arrow Up
ブレーキ Arrow Down
ステアリング Arrow Left, Right
ギア (D/R/N/P) D / R / N / P
ターボブースト 1 / 2 / 3 / 4

ターボブーストは、車両番号に対応する数字キー(1〜4)で操作します。

トピック操作

自動運転プログラムからAWSIMとやり取りするためにはトピックを使います。トピック仕様はインターフェースをご参考ください。

車両(レーシングカート)

車両はAWSIMにおける[EGO Vehicle]の仕様に準拠しており、実際のレーシングカートに近いスペックで作成されています。

vehicle-appearance

パラメータ

車両のパラメータを以下の表にまとめています。

項目
車両重量 160 kg
全長 200 cm
全幅 145 cm
ホイールベース 108.7 cm
前輪タイヤ直径 24 cm
前輪タイヤ幅 13 cm
前輪ホイールトレッド 93 cm
後輪タイヤ直径 24 cm
後輪タイヤ幅 18 cm
後輪ホイールトレッド 112 cm
最大ステアリング転舵角 80 °
駆動時最大加速度 3.2 m/s^2

Vehicleコンポーネント

Vehicleコンポーネントの設定内容を以下の表にまとめています。

項目
Use Inertia Off
Physics Settings (experimental)
Sleep Velocity Threshold 0.02
Sleep Time Threshold 0
Skidding Cancel Rate 0.236
Input Settings
Max Steer Angle Input 30
Max Acceleration Input 1.5

Rigidbodyコンポーネント

Rigidbodyコンポーネントの設定内容を以下の表にまとめています。

項目
Mass 160
Drag 0
Angular Drag 0

CoM位置

CoM(Center of Mass)は、車両Rigidbodyの質量中心です。CoM位置は、車両の中心かつ車輪軸の高さに設定されています。

側面図: side-view-of-com

上面図: top-view-of-com

車両コライダー

車両コライダーは、車両と他オブジェクトやチェックポイントとの接触判定に利用されます。車両コライダーは車両オブジェクトのメッシュをベースとして作成されています。

body-collider

ホイールコライダー

車両には各車輪に1つずつ、合計4つのホイールコライダーが設定されており、等価二輪モデルではなく四輪モデルでの車両シミュレーションが行われています。

wheel-collider

ホイールコライダーは以下のように設定されています。

項目
Mass 1
Radius 0.12
Wheel Damping Rate 0.25
Suspension Distance 0.001
Suspension Spring
Spring (N/m) 35000
Damper (N*s/m) 3500
Target Position 0.01

センサ構成

GNSS

GNSSは車両のベースリンクに対して以下の位置に取り付けられています。

項目
x 0.0 m
y 0.0 m
z 0.0 m
roll 0.0 rad
pitch 0.0 rad
yaw 0.0 rad

IMU

IMUは車両のベースリンクに対して以下の位置に取り付けられています。

項目
x 0.0 m
y 0.0 m
z 0.0 m
roll 0.0 rad
pitch 0.0 rad
yaw 0.0 rad

LiDAR

2D LiDARセンサが車両に搭載されています。/sensing/lidar/scanトピックでsensor_msgs/msg/LaserScan型のデータを配信します。

項目
スキャン点数 1080点
最大検出距離 30 m
2D LaserScan

カメラ

RGBカメラが車両に搭載されています。/sensing/camera/image_rawトピックで画像データを、/sensing/camera/camera_infoトピックでカメラ内部パラメータを配信します。

アイテムシステム

シミュレータにはレースを戦略的にするためのアイテムシステムが実装されています。

ブースト

一時的に加速性能が向上するアイテムを使用可能です。 実機決勝大会では出てこない想定ですが、シミュレーションでは様々な環境で試行錯誤していただきたいため、導入しております。

項目
加速度 0.5 m/s²
持続時間 10 秒

なお、実機では柵を越えないよう安全対策として電圧を下げております。 電圧下げを解除するためのアイテムとしての位置づけです。

修理アイテム

コース上の修理アイテムを取得すると、車両のCondition値が40回復します。2026年は未実装です。

壁リカバリー

壁に衝突した際、車両の速度が0.5m/sを超えている場合に自動で方向修正が行われます。

項目
発動条件 壁衝突時かつ速度 > 0.5 m/s
修正時間 1 秒
修正角速度 180 °/s

シミュレーションのライフサイクル

sequenceDiagram
    participant User as ユーザー
    participant AWSIM as AWSIM
    participant Autoware as Autoware

    User->>AWSIM: make dev / make eval
    AWSIM->>AWSIM: SelectMode
    AWSIM->>AWSIM: PlayStart
    AWSIM->>Autoware: /admin/awsim/state: "Ready"
    Autoware->>AWSIM: /admin/awsim/start: true
    AWSIM->>AWSIM: WaitStart → Start
    AWSIM->>Autoware: /awsim/state: "Start"

    loop 各ラップ
        Autoware->>AWSIM: /control/command/control_cmd
        AWSIM->>Autoware: /awsim/status (7フィールド)
        AWSIM->>AWSIM: LapComplete
    end

    AWSIM->>Autoware: /awsim/state: "Finish"
    AWSIM->>AWSIM: FinishAll → Terminate

シナリオエディタ

  • シナリオエディタでは、コース上に様々な障害物を配置することが出来ます。これによって、多様なシーンを再現することが出来ます。シナリオエディタを開くためには、設定画面上で右下の「Scenario Editor」をクリックします。
  • 障害物の配置が完了したら、「Save & Start」で作成したシナリオ上で走行が可能です。
  • yamlファイルとして保存して、後ほど設定画面から読み込むことも可能です。
  • 操作:
    • 移動:キーボード(ASDW)
    • 視点切り替え:マウス右ドラッグ、スクロール
    • オブジェクト操作:マウス左クリック

awsim-scenario.png