題名どおりなのですが、まずは出来上がったロボットの動きを見てください。私の大好きなサカナクションのMV「バッハの旋律を夜に聴いたせいです。」で、山口一郎さんが踊っている動きをロボットで実行させています。
何をやったか
NVIDIAが昨年公開していた、GR00T-WholeBodyControlというソフトウェアを試してみました。人間らしい動作を簡単に実現することができます。これは本当に驚異的です。
このGR00T-WholeBodyControlは、下半身を強化学習、上半身を逆運動学(IK)で制御する分離型コントローラです。Isaac Labで強化学習を行っています。モデルも公開されていて、Unitree G1を手軽に安定して歩行させることができます。
GitHub - NVlabs/GR00T-WholeBodyControl: Welcome to GR00T Whole-Body Control (WBC)! This is a unified platform for developing and deploying advanced humanoid controllers. This includes: Decoupled WBC models used in NVIDIA Isaac-Gr00t, Gr00t N1.5 and N1.6 a
GEAR-SONICは、大量の人間のモーションキャプチャデータから汎用ヒューマノイド行動基盤モデルで、歩行・這う・走る・遠隔操作など多
様な全身動作を単一ポリシーで実現するためのプロジェクト、なのだそうです。

SONIC: Supersizing Motion Tracking for Natural Humanoid Whole-Body Control
動画から人間の動きをデータ化する(モーションキャプチャ)には、これもNVIDIAのGEMを使うことができます。
やり方
手順としては、以下のような感じです。
- GR00T-WholeBodyControlをインストール
- GEMでMVからモーションキャプチャデータを取り出す
- モーションをコントローラに送り込んで動作させる
今回使用したPCのスペックは以下です。
- CPU: AMD Ryzen 7 7700
- Memory: 32GB
- GPU: NVIDIA GeForce RTX 5060 Ti(VRAM 16 GB / Blackwell世代)
- OS: Ubuntu 24.04.4 LTS (noble) / Kernel 6.17.0-22-generic
- NVIDIA Driver: 580.126.09(CUDA 13.0 対応)
GR00T-WholeBodyControlをインストール
ここは丁寧にドキュメント化されているので、それに従えば特にハマることはないと思います。ちなみに今は、AIに相談するとだいたい勝手にやってくれます。
最初に、TensorRTをインストールする必要があります。WBCはUnitreeG1のロボット上にあるJetson Orinで動かす前提なので、モデルサイズを圧縮する必要があるからです。シミュレーションでも実機でも同じモデルを使うので、シミュレーションで試すだけの場合にも必要のようです。
最新のドキュメントに従って、バージョンは必ず指定のものを入れるようにしてください。今回入れたのはTensorRT 10.13.3 GAのtar版です。
その後、ビルドが終わったら、学習済みの重みをダウンロードして、シミュレーション(Mujoco)で動作確認しましょう。重みのダウンロードにはHugging Faceのアカウントが必要です。
シミュレーションを実行できれば色々動かして遊べるようになります。
Mujocoの中で歩かせたり踊らせたりできる
MVからモーションキャプチャデータを取り出す
ロボットを踊らせるには、ロボットに与える関節角指令値の時系列データが必要です。その動作データを作り出すためのモーションキャプチャソフトウェアとしてGEMをインストールします。ちなみにGEMは単なるモーションキャプチャのソフトではなく、動画、テキスト、音楽などの入力から動作データを作り出す生成AIです。
GitHub - NVlabs/GENMO
こちらは、README.mdのインストールの記述がすこし抜けているようで、GVHMRというモジュールもインストールしないと動作しませんでした。また、BlackwellのGPUだと、INSTALL.mdに書いてあるpytorchのバージョンでは動かないので、新しいバージョンを入れる必要がありました。あと、実行するために必要なSMPLX(人体モデル)のファイルは、ダウンロードのためにユーザー登録とライセンス(商用利用不可)への同意が必要です。
あとはこれを、MV動画に適用するだけ…なのですが、大きな問題があります。GEMのデモスクリプトがモーションキャプチャデータを抽出するには、基本的に一人だけの人が全身が写った動画が前提です。ダンスが主体の動画ならともかく、MVは普通そんな撮り方はしないですよね。
そのまま入力するとフレームごとに認識する人が違ってしまう
なので、動画編集ソフトを使って「5人で踊っている山口一郎さん」の真ん中の本物だけをクロップする、という謎の作業が必要でした。また、踊っている際に全身が写っている時間が微妙に足りなかったので、別のカットから切ったり貼ったりして、なんとか踊っている動画をまとめてつくりました。それをGEMに入力して、動作データが生成されます。
正直、この作業が一番大変だった…
最後に、生成されたデータ(smpl_param.pt)を読んで、GEAR-SONICのZMQのサーバーに送信するスクリプトを書いて、実行させます。このスクリプトはClaudeくんがサクッと書いてくれました。
Mujocoで動作確認するのですが、そのままだと自分の足を蹴ったり踏んだりしてしまうので、両足の距離があまり近くなりすぎないように少しだけ調整しました。
実機でやる前にMujocoで確認、調整
分かったこと
すごく簡単
このWhole Body Contollerは実は20年以上前に、私がヒューマノイドロボットの研究をしていたときにメインのテーマにしていたものでした。その時は、やらせたいロボットの動きと動的なバランスをいかにとるか、数式や制御を使った問題としていかにして解くか、というのが主流の方法でした。
今日、強化学習を使ったWBCがこんなに手軽に試せて、しかも実機でもそのまま実行できることに興奮しています。
ロボットがたくさん欲しくなる
私達はUnitree G1を1台だけ保有していますが、腕をふりまわしたり、ジャンプしたり、膝やおしりをついたり、といった全身動作を実機でやらせるのは非常に勇気が要ることが分かりました… 壊したときのことを考えると、とても気軽にはできない。2,3台はほしいところです。あと、広い空間も。
サカナクションは最高
5台あったら、横に並べてバッハダンスを再現できるんだよなあ…