エントリポイントは main.py です。実行時は config.yaml 内の agent_mode によって以下へ分岐します。
main.py
└─ main()
├─ parse_args()
├─ agent_mode: baseline
│ └─ run_baseline_agent()
└─ agent_mode: ppo
└─ run_training()
run_training()がenv_configとtraining_configを組み立てるadrl_agent.build_ppo_algorithm()で RLlib PPO を構築adrl_agent.rllib_agentで環境AirSimDroneRacingEnv-v0を登録adrl_env.env_creator()からAirSimDroneRacingEnvを生成- 学習ループで
algorithm.train()を繰り返し、報酬などを表示
関連ファイル:
main.pyrl-airsim/adrl_agent/rllib_agent.pyrl-airsim/adrl_env/airsim_env.py
run_baseline_agent()が AirSim に接続- レベル読み込み、レース開始(wrapper/raw RPC のフォールバックあり)
- ゲート座標を取得して
moveOnSplineAsyncで全ゲート追従
関連ファイル:
main.py
AirSimDroneRacingEnv が Gymnasium 環境として以下を担当します。
reset():- 接続
- レース状態初期化
- 離陸
- ゲート位置取得
step():- 行動適用 (
moveByVelocityAsync) - 観測更新
- 報酬計算(進捗・ゲート通過・衝突・完走)
- 終了判定
- 行動適用 (
関連ファイル:
rl-airsim/adrl_env/airsim_env.py
GateNavigatorRuleControllerがゲート方向へのヒューリスティック行動を生成- 環境側
_mix_with_rule_controller()で RL 行動と混合可能 - 混合率は
config.yamlのrule_assist.rule_mixで指定
関連ファイル:
rl-airsim/adrl_agent/rule_based_controller.pyrl-airsim/adrl_env/airsim_env.py
runtime.sim_launch_mode: nodisplayのときはreference/AirSim-Drone-Racing-Lab/settings/settings_no_view.jsonを参照してViewMode=NoDisplayを適用します。image_benchmark.enable_image_benchmark: trueのとき、AirSimDroneRacingEnv内で画像APIベンチマーク(simGetImage/simGetImages)が有効化されます。
main.py は YAML ファイルを 1 つ受け取って実行します。
python main.py configs/main.sample.yamlTier 1 ルールベース:
python main.py configs/tier1_baseline.yamlTier 1 学習:
python main.py configs/tier1_ppo.yamlTier 2 ルールベース:
python main.py configs/tier2_baseline.yamlTier 2 学習:
python main.py configs/tier2_ppo.yaml