Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ヒューマノイド ウォーカーの学習

この例では、Simscape Multibody™ を使用してヒューマノイド ロボットをモデル化し、遺伝的アルゴリズム (Global Optimization Toolboxのライセンスが必要) または強化学習 (Deep Learning Toolbox™ およびReinforcement Learning Toolbox™ のライセンスが必要) を使用して学習させる方法を説明します。

ヒューマノイド ウォーカー モデル

ヒューマノイド ウォーカー モデルは、URDF のヒューマノイド モデルのインポートの例に基づいています。それぞれの脚には、冠状面の臀部、膝、足首に、トルクによって作動する回転ジョイントがあります。それぞれの腕には、冠状面と矢状面の肩に 2 つの受動回転ジョイントがあります。接触力、胴部の位置と向き、ジョイントの状態、および前進方向は、すべてシステムによって検知されます。

接触のモデル化

Spatial Contact Forces ブロックを使用して、足と地面の間の接触をモデル化します。接触は簡易化され、足の形状と一致する 6 つの球面接触点としてモデル化されます。

ジョイント コントローラー

剛性ベースのフィードバック コントローラーを使用して、各ジョイントを制御します [1]。ジョイントは、剛性 (K) と減衰 (B) が関連付けられた 1 次システムとして扱われ、ジョイントの動作が臨界減衰となるように設定することができます。その結果、設定点 θ0 が現在のジョイント位置 θ と異なる場合に課されるトルクは、次のようになります。

T=Bθ+K(θ0-θ)

バネの設定点 θ0 をフィードバック応答を引き出すように変更して、ジョイントを動かすことができます。これは、Simulink で以下のように実装できます。

ヒューマノイド ウォーカーの学習

さまざまな方法を使用してヒューマノイドに歩行を学習させることができます。

歩行の目的関数

目的関数を使用して、さまざまな歩行スタイルを評価します。タイム ステップごとに、以下の要因に基づいて報酬 (rt) が与えられます。

  1. 前進速度 (vy) には報酬が与えられる。

  2. 転倒しないと報酬が与えられる。

  3. 電力消費 (p) にはペナルティが与えられる。

  4. 垂直変位 (Δz) にはペナルティが与えられる。

  5. 横方向変位 (Δx) にはペナルティが与えられる。

各タイム ステップでの合計報酬は次のとおりです。

rt=w1vy+w2ts-w3p-w4Δz-w5Δx

ここで、w1,...,5 は、報酬関数での各項の相対的重要度を表す重みです。よって、歩行試行の合計報酬 (R) は次のようになります。

R=t=0Trt

ここで、T はシミュレーションの終了時間です。報酬の重みは、sm_humanoid_walker_rl_parameters スクリプトで変更できます。シミュレーション時間に達するか、またはロボットが転倒すると、シミュレーションは終了します。転倒は次のように定義されます。

  1. ロボットの高さが 0.5 m 未満になる。

  2. ロボットの横方向の動きが 1 m を超える。

  3. ロボットの胴部の回転が 30 度を超える。

遺伝的アルゴリズムでの学習

歩行を最適化するために、遺伝的アルゴリズムを使用することができます。詳細については、ga (Global Optimization Toolbox)(Global Optimization Toolbox) を参照してください。これは、生物学的進化を模倣した自然淘汰プロセスに基づいて最適化問題を解決します。遺伝的アルゴリズムは、目的関数が不連続、微分不可能、確率的、または高度に非線形である場合の問題に特に適しています。

各ジョイントの角度要求は、自然界で見られる中枢パターン発生器と類似した反復パターンに設定されています [2]。これは開ループのコントローラーです。これらの信号の周期性は歩行周期であり、完全な 1 歩を完了するための所要時間です。各歩行周期の間に、信号は異なった角度要求値に切り替わります。ヒューマノイド ロボットは、左右対称に歩行するのが理想です。したがって、右脚の各ジョイントの制御パターンは、歩行周期半分の遅延で、左脚の対応するジョイントに伝達されます。パターン発生器の目的は、各ジョイントに最適な制御パターンを特定し、歩行の目的関数を最大化することです。

遺伝的アルゴリズムを使用して学習させるには、sm_humanoid_walker_ga_train スクリプトを開きます。この例では、事前学習済みのヒューマノイド ウォーカーを既定で使用します。ヒューマノイド ウォーカーに学習させるには、trainWalkertrue に設定します。

強化学習による学習

Deep Deterministic Policy Gradient (DDPG) 強化学習エージェントを使用して学習させることもできます。DDPG エージェントは、長期的な報酬を最大化する最適なポリシーを計算する、アクタークリティックの強化学習エージェントです。DDPG は、連続的なアクションと状態をもつシステムで使用できます。DDPG エージェントの詳細については、rlDDPGAgent (Reinforcement Learning Toolbox)をクリックしてください。

強化学習を使用して学習させるには、sm_humanoid_walker_rl_train スクリプトを開きます。この例では、事前学習済みのヒューマノイド ウォーカーを既定で使用します。ヒューマノイド ウォーカーに学習させるには、trainWalkertrue に設定します。

参考文献

[1] Kalveram, Karl T., Thomas Schinauer, Steffen Beirle, Stefanie Richter, and Petra Jansen-Osmann. "Threading Neural Feedforward into a Mechanical Spring: How Biology Exploits Physics in Limb Control." Biological Cybernetics 92, no. 4 (April 2005): 229–40. https://doi.org/10.1007/s00422-005-0542-6.

[2] Jiang Shan, Cheng Junshi, and Chen Jiapin. "Design of Central Pattern Generator for Humanoid Robot Walking Based on Multi-Objective GA." In Proceedings. 2000 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2000) (Cat. No.00CH37113), 3:1930–35. Takamatsu, Japan: IEEE, 2000. https://doi.org/10.1109/IROS.2000.895253.

関連するトピック