コンテンツにスキップ

シミュレーター

概要

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

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

起動オプション

AWSIMはコマンドライン引数で動作を制御できます。docker composeの環境変数やMakefileの設定を通じて指定します。

レース設定

オプション デフォルト 説明
--timeout float 600.0 セッションのタイムアウト(秒)を設定します。
--endless bool false タイムアウトの有効/無効を設定します。
--laps int/string 6 周回数を設定します。unlimited/inf/0で無制限。
--vehicles int 4 アクティブ車両数(1, 2, 4)を設定します。
--npcs int 0 NPC車両数(0〜3)を設定します。
--boosts int 5 ニトロアイテムの配置数(0〜5)を設定します。
--collisions bool false 車両同士の衝突判定の有効/無効を設定します。
--wall-recovery bool true 壁リカバリー機能の有効/無効を設定します。
--ranking bool false ランキング表示の有効/無効を設定します。

制御・入力設定

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

センサ設定

オプション デフォルト 説明
--camera bool true カメラセンサの有効/無効を設定します。
--lidar bool true 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
ウインカーOFF 4

システム操作

操作 キー
リセット Space
カメラ切り替え C
シナリオエディタ F1
確定(起動画面) Enter
終了 Esc

トピック操作

車両ごとのトピック

各車両のドメインID(N=1〜4)に応じて、/d{N}/プレフィックス付きでPublishされます。domain_bridgeにより各車両ドメインに橋渡しされるため、Autoware側では通常のトピック名(プレフィックスなし)でアクセスできます。

トピック 説明
/awsim/status std_msgs/msg/Float32MultiArray シミュレーションの各種状態を取得します。
/awsim/state std_msgs/msg/String 車両ごとのシミュレーション状態を取得します。

管理用トピック

ドメイン0で動作する管理用トピックです。

トピック 方向 説明
/admin/awsim/state std_msgs/msg/String Publisher シミュレーション全体の状態を配信します。
/admin/awsim/start std_msgs/msg/Bool Subscriber シミュレーション開始を指示します。
/admin/awsim/reset std_msgs/msg/Empty Subscriber シミュレーションをリセットします。

/awsim/status は以下の構造になっています。

インデックス 説明
0 sessionTime 残りセッション時間(秒、カウントダウン)
1 lapCount 現在のラップ数
2 thisLapTime 現在のラップタイム(秒)
3 section 現在のセクション番号
4 timeScale シミュレーションのタイムスケール
5 boostRemaining 残りブースト使用回数
6 isBoosting ブースト中フラグ (1.0=ブースト中 / 0.0)

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

車両は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トピックでカメラ内部パラメータを配信します。

アイテムシステム

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

ニトロブースト

コース上のニトロアイテムを取得すると、一時的に加速性能が向上します。

項目
加速度 1.5 m/s²
持続時間 10 秒
最大速度 55 km/h
最大使用回数 5 回

/awsim/statusのインデックス5(boostRemaining)で残り使用回数を、インデックス6(isBoosting)でブースト中かどうかを確認できます。

修理アイテム

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

壁リカバリー

壁に衝突した際、車両の速度が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: /d{N}/awsim/state: "Start"

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

    AWSIM->>Autoware: /d{N}/awsim/state: "Finish"
    AWSIM->>AWSIM: FinishAll → Terminate

制御モード

本大会では3つの制御モードが用意されています。reference.launch.xmlcontrol_mode引数で切り替えます。

モード パッケージ 説明
rule_based(デフォルト) simple_pure_pursuit Pure Pursuitアルゴリズムによるルールベース制御
e2e tiny_lidar_net_controller LiDARスキャン(1080点)から加速度と操舵角を直接出力するEnd-to-End制御
joycon 手動テレオペ操作