初めに
本記事では、弊社で実際に、Unitree Go1 を用いて、Isaac Lab で深層強化学習をしたという内容になります。
学習結果となる歩容を、MujocoというIsaacSimとは別のシミュレーション環境で行ったsim to simと、実機Go1について行ったsim to realも行いました。
※ 弊社作成資料
- プレゼン発表スライドのPDF: 深層強化学習発表スライド
- 今回の記事の詳細内容: TechShare深層強化学習Guide – go1 ver-
環境
環境は、次のようなものを想定しています。
ハードウェア項目 | 推奨要件 |
---|---|
プロセッサ(CPU) | インテル® Core™ i9 14900F |
グラフィックスカード(GPU) | NVIDIA® GeForce RTX™ 4080 SUPER / 4090 |
ロボット | UnitreeGo1(実機) |
1.深層強化学習の結果
Isaac Lab とは、シミュレーション環境である Issac Sim と、深層強化学習のフレームワークがセットになったものです。
下記のように複数台のロボットを、同時に学習させることができます。
実際に弊社で、IssacLabを用いて、深層強化学習を行いました。
深層強化学習のアルゴリズムとしては、actor-critic PPOを採用しました。
以下は、開発初期の頃の様子です。シミュレーション上では歩けてはいたのですが、実機ではうまく行きませんでした。
その後、かなりいろいろな試行錯誤を行い、最終的に、actor-critic PPOに加え、実機でも動作できるように、Domain Randamization と Teacher Student PPOを採用しました。
パラメーターもいろいろなものを試しました。
最終的に獲得した歩容を実機で試してみた結果が以下の動画です。Unitree Go1が歩けるとともに、多少押しても耐えるようなロバスト性を獲得できていることが分かると思います。
2.他のパラメーターでの結果
深層強化学習は、報酬設定がとても重要です。
下記は、報酬設定を変更して学習をし直してみたものです。
なお、Mujocoとは、Issac Simとは異なるシミュレーション環境です。IssacLabで学習した歩容を直接実機に持ち込むのではなく一旦シミュレーション環境で確認することで、より安全かつ効率よく開発を進めるために使用しています。
2−1.足同士の接触の禁止
Isaac Labを用いた深層強化学習では、いろいろな報酬を設定できます。
下記の結果は、Go1の足同士がぶつかってしまったときに通常よりもかなり大きなペナルティを与えるようにしたものです。
これら結果(学習結果、sim to sim、sim to real)のうち、シミュレーションの結果はきれいですが、実機で行ってみるとやや外股気味に歩いているように感じられます。
Isaac Labにおける、学習結果:
Mujocoにおける、学習結果の使用:
実機Go1における、学習結果の使用:
2−2.足の滞空時間の増加
すり足になりすぎないように、足を高く上げることに報酬を与え、下記の結果では、足の滞空時間に応じた報酬を通常よりもより大きな報酬を与えるようにしたものです。
これら結果(学習結果、sim to sim、sim to real)のうち、シミュレーションの結果は比較的きれいではあるものの、実機で行ってみると明らかに片足だけを上げて歩いています。深層強化学習では、人間が期待した動作ではなく、「ズル」のような方法に辿り着くこともあります。
Isaac Labにおける、学習結果:
Mujocoにおける、学習結果の使用:
実機Go1における、学習結果の使用:
3.詳細について
詳細については、下記のドキュメントを作成しましたので、気になる方はご確認ください。
本記事に関連する弊社作成資料:
- プレゼン発表スライドのPDF: 深層強化学習発表スライド
- 今回の記事の詳細内容: TechShare深層強化学習Guide – go1 ver-
4.Go2について
本記事の内容をGo2で使ってみたいという方がいれば、弊社で「Go2実機+深層強化学習用コンピューター+学習環境+サンプル歩容がすべてセットアップ済みの有料トレーニング」も対応可能ですので、個別に連絡いただければ対応いたします。
おわりに
本記事では、弊社で実際に、Unitree Go1 を用いて、Isaac Lab で深層強化学習をしたという内容になります。
学習結果となる歩容を、MujocoというIsaacSimとは別のシミュレーション環境で行ったsim to simと、実機Go1について行ったsim to realも行いました。
この記事が少しでも役に立てたのなら幸いです。