Genesis 入門 (12) - 強化学習によるドローンホバリングポリシーの学習
「Genesis」の強化学習によるドローンホバリングポリシーの学習についてまとめました。
前回
1. 強化学習によるドローンのホバリングの学習
「Genesis」は並列シミュレーションをサポートしており、「強化学習」のドローンホバリングポリシーを効率的に学習することもできます。このチュートリアルでは、ランダムに生成されたターゲットポイントに到達することで安定したホバリング位置を維持する基本的なホバリングポリシーを取得するための学習を紹介します。
このチュートリアルは、「Champion-level drone racing using deep reinforcement learning」(Nature 2023) から着想を得て、そのアイデアを活用しています。
2. 環境
Gymスタイルの環境を作成します。
2-1. 初期化
__init__ () では、シミュレーション環境を設定します。
(1) 制御周波数
シミュレーションは 100 Hz で動作し、ドローンに高周波制御ループを提供します。
(2) シーンの作成
ドローンと静的平面を含むシミュレーションシーンを作成します。
(3) ターゲットの初期化
ドローンが到達しようとするランダムなターゲットポイントを初期化します。
(4) 報酬の登録
ポリシーを導くために、あらかじめ定義された報酬関数を登録します。これらの関数は「報酬」のセクションで説明します。
(5) バッファの初期化
環境状態、観測、報酬を格納するためのバッファを初期化します。
2-2. リセット
reset_idx () では、指定した環境の初期姿勢および状態バッファをリセットします。
2-3. ステップ
step () では、行動を実行して新しい観測と報酬を返します。
(1) 行動の実行
入力された行動をクリップし、再スケールして、デフォルトのホバリングプロペラ RPM に調整として適用します。
(2) 状態の更新
ドローンの状態(位置、姿勢、速度など)を取得してバッファに格納します。
(3) 終了条件のチェック
終了した環境は自動的にリセットされます。以下の条件を満たす場合、環境は終了されます。
・エピソードの長さが最大許容値を超える。
・ドローンのピッチ角またはロール角が指定された閾値を超える。
・ドローンの位置が指定された境界を超える。
・ドローンが地面に近すぎる。
(4) 報酬の計算
ドローンがターゲットポイントに到達し、安定性を維持するパフォーマンスに基づいて報酬を計算します。
(5) 観測の計算
観測値は正規化され、ポリシーに返されます。トレーニングに使用される観測値には、ドローンの位置、姿勢(四元数)、機体の線速度、機体の角速度、過去の行動が含まれます。
3. 学習
「rsl-rl」での学習手順は、次のとおりです。
(1) パッケージのインストール。
git clone https://github.com/leggedrobotics/rsl_rl
cd rsl_rl && git checkout v1.0.2 && pip install -e .
cd ..
pip install tensorboard自分の環境では「open3d」も必要でした。
pip install open3d(2) 学習の実行。
python examples/drone/hover_train.py -e drone-hovering -B 8192 --max_iterations 500・-e drone-hovering : 実験名
・-B 8192 : 並列トレーニングの環境数
・--max_iterations 500 : 最大学習反復回数
(3) 学習プロセスを「TensorBoard」で確認。
tensorboard --logdir logs
4. 評価
評価の実行手順は、次のとおりです。
(1) 評価の実行。
python examples/drone/hover_eval.py -e drone-hovering --ckpt 500 --record・-e drone-hovering : 実験名
・--ckpt 500 : チェックポイント
・--record : 評価をビデオに保存
ドローンがランダムターゲットに移動する様子を確認できます。
Genesisの強化学習によるドローンホバリングポリシーの学習をおためし pic.twitter.com/k7pBvmZExb
— 布留川英一 / Hidekazu Furukawa (@npaka123) January 7, 2025
