ヒューマノイド ウォーカーの学習
この例では、Simscape Multibodyを使用してヒューマノイド ロボットをモデル化し、遺伝的アルゴリズム (Global Optimization Toolboxのライセンスが必要) または強化学習 (Deep Learning ToolboxおよびReinforcement Learning Toolboxのライセンスが必要) を使用して学習させる方法を説明します。
ヒューマノイド ウォーカー モデル
この例はヒューマノイド ロボット モデルに基づいています。MATLAB® コマンド プロンプトで「openExample("sm/ImportedURDFExample")
」と入力すると、モデルを開くことができます。ロボットのそれぞれの脚には、冠状面の臀部、膝、足首に、トルクによって作動する回転ジョイントがあります。それぞれの腕には、冠状面と矢状面の肩に 2 つの受動回転ジョイントがあります。シミュレーション中、モデルは接触力、胴部の位置と向き、ジョイントの状態、および前進方向を検知します。次の図に、Simscape™ Multibody™ モデルをさまざまなレベルで示します。
接触のモデル化
モデルではSpatial Contact Forceブロックを使用して足と地面の接触をシミュレートします。接触を単純化してシミュレーションを高速化するため、赤い球体を使用してロボットの足の裏が表現されています。詳細については、接触プロキシを使用した接触のシミュレートを参照してください。
ジョイント コントローラー
モデルは剛性ベースのフィードバック コントローラーを使用して各ジョイントを制御します [1]。ジョイントは、剛性 (K) と減衰 (B) が関連付けられた 1 次システムとしてモデル化し、ジョイントの動作が臨界減衰となるように設定することができます。トルクは、設定点 が現在のジョイント位置 と異なる場合に課されます。
.
バネの設定点 をフィードバック応答を引き出すように変更して、ジョイントを動かすことができます。次の図は、コントローラーの Simulink® モデルを示しています。
ヒューマノイド ウォーカーの学習
この例の目標は、ヒューマノイド ロボットに歩行を学習させることです。さまざまな方法を使用してロボットに学習させることができます。例においては、遺伝的アルゴリズムと強化学習の方法を示します。
歩行の目的関数
この例では目的関数を使用して、さまざまな歩行スタイルを評価します。モデルは各タイム ステップで報酬 () を付与します。
ここで、
— 前進速度 (報酬)
— 電力消費 (ペナルティ)
— 垂直変位 (ペナルティ)
— 横方向変位 (ペナルティ)
:報酬関数での各項の相対的重要度を表す重み
また、転倒しないと報酬が与えられます。
よって、歩行試行の合計報酬 () は次のようになります。
ここで、 はシミュレーションの終了する時間です。報酬の重みは、sm_humanoid_walker_rl_parameters
スクリプトで変更できます。シミュレーション時間に達するか、またはロボットが転倒すると、シミュレーションは終了します。転倒は次のように定義されます。
ロボットの高さが 0.5 m 未満になる。
ロボットの横方向の動きが 1 m を超える。
ロボットの胴部の回転が 30 度を超える。
遺伝的アルゴリズムによる学習
ロボットの歩行を最適化するために、遺伝的アルゴリズムを使用することができます。遺伝的アルゴリズムは、生物学的進化を模倣した自然淘汰プロセスに基づいて最適化問題を解決します。遺伝的アルゴリズムは、目的関数が不連続、微分不可能、確率的、または高度に非線形である場合の問題に特に適しています。詳細については、ga
(Global Optimization Toolbox)を参照してください。
モデルは各ジョイントの角度要求を、自然界で見られる中枢パターン発生器と類似した反復パターンに設定します [2]。この反復パターンにより、開ループ コントローラーが生成されます。信号の周期性は歩行周期であり、これは完全な 1 歩を完了するための所要時間です。各歩行周期の間に、信号は異なった角度要求値に切り替わります。ヒューマノイド ロボットは左右対称に歩行するのが理想的であり、右脚の各ジョイントの制御パターンは、歩行周期半分の遅延で、左脚の対応するジョイントに伝達されます。パターン発生器の目的は、各ジョイントに最適な制御パターンを特定し、歩行の目的関数を最大化することです。
遺伝的アルゴリズムを使用してロボットに学習させるには、sm_humanoid_walker_ga_train
スクリプトを開きます。この例では、事前学習済みのヒューマノイド ウォーカーを既定で使用します。ヒューマノイド ウォーカーに学習させるには、trainWalker
を true
に設定します。
強化学習による学習
別の方法として、Deep Deterministic Policy Gradient (DDPG) 強化学習エージェントを使用してロボットに学習させることもできます。DDPG エージェントは、長期的な報酬を最大化する最適なポリシーを計算する、アクタークリティックの強化学習エージェントです。DDPG エージェントは、連続的なアクションと状態をもつシステムで使用できます。DDPG エージェントの詳細については、rlDDPGAgent
(Reinforcement Learning Toolbox)を参照してください。
強化学習を使用してロボットに学習させるには、sm_humanoid_walker_rl_train
スクリプトを開きます。この例では、事前学習済みのヒューマノイド ウォーカーを既定で使用します。ヒューマノイド ウォーカーに学習させるには、trainWalker
を true
に設定します。
参考文献
[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.
参考
Point | Point Cloud | Spatial Contact Force