メインコンテンツへスキップ
見出し画像

Genesis 入門 (9) - 強化学習 による移動ポリシーの学習

    「Genesis」の「強化学習」による移動ポリシーの学習についてまとめました。

    ・Training Locomotion Policies with RL

    前回

    1. 強化学習 による移動ポリシーの学習

    「Genesis」は並列シミュレーションをサポートしており、「強化学習」(RL) で移動ポリシーを効率的に学習するのに最適です。今回は、「Unitree Go2」が歩行できるようにする基本的な移動ポリシーを取得するための完全な学習例を説明します。「Genesis」を使用すると、実世界で展開可能な移動ポリシーを26秒未満で学習できます (RTX 4090 でベンチマーク)。

    このチュートリアルは、「Legged Gym」のいくつかの基本概念に触発され、それを基に構築されています。

    2. 環境

    Gymスタイルの環境を作成します。

    2-1. 初期化

    init() は、シミュレーション環境のセットアップを行います。

    ・制御周波数
    シミュレーションは実際のロボットの制御周波数と同じ50Hzで実行します。sim2real のギャップをさらに埋めるため、実際のロボットに発生する行動遅延 (約20ミリ秒、1dt) も手動でシミュレートします。

    ・シーンの作成
    ロボットと静的平面を含むシーンを作成します。

    ・PDコントローラのセットアップ
    最初にモーターが名前に基づいて識別します。次に、各モーターの剛性と減衰が設定します。

    ・報酬の登録
    ポリシーをガイドするために、コンフィグで定義された報酬関数を登録します。

    ・バッファの初期化
    バッファは、環境の状態・観測・報酬を格納するために初期化します。

    2-2. リセット

    reset_idx()は、指定環境の初期ポーズと状態バッファをリセットします。これにより、ロボットが事前定義された構成から開始されることが保証され、一貫した学習に不可欠なものとなります。

    2-3. ステップ

    step()は、行動を受け取り、新しい観測値と報酬を返します。

    ・行動実行
    入力された行動は切り取り、再スケールし、、デフォルトのモーター位置の上に追加します。目標関節位置を示す変換した行動は、1ステップ実行のためにロボットコントローラに送信します。

    ・状態更新
    関節位置や速度などのロボット状態を取得し、バッファに保存します。

    ・終了チェック
    環境は、「エピソード長が最大許容値を超える場合」、「ロボットのボディ方向が大幅に逸脱した場合」に終了します。終了した環境は自動的にリセットされます。

    ・報酬計算

    ・観測計算

    学習に使用される観測には、基本角速度・投影された重力・命令・自由度位置・自由度速度・以前の行動が含まれます。

    2-4. 報酬

    報酬関数はポリシーガイダンスにとって重要です。
    今回は、次のものを使用します。

    ・tracking_lin_vel : 直線速度命令の追従(xy軸)
    ・tracking_ang_vel : 角速度命令の追従(yaw)
    ・lin_vel_z : z軸方向の線形速度のペナルティ化
    ・action_rate : 行動の変化率のペナルティ化
    ・base_height : ベース高さが目標値から外れた場合のペナルティ化
    ・similar_to_default : 姿勢がデフォルトから大きく外れた場合のペナルティ化

    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

    (2) 学習の実行。

    python examples/locomotion/go2_train.py

    (3) 学習プロセスを「TensorBoard」で確認。

    tensorboard --logdir logs
    画像

    4. 評価

    評価の実行手順は、次のとおりです。

    (1) 評価の実行。

    python examples/locomotion/go2_eval.py

    4足歩行ロボットが歩いてる様子を確認できます。

    画像

    実際のロボットを持っている場合は、ポリシーを展開することもできます。

    画像

    関連

    次回



     
     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ