TEAMZ
← 技術記事一覧

技術記事 · 2026.09.13 · シミュレーションによる試作

G1で「こちらへどうぞ」を表現する。

人の所作をロボットへ移す試み

来客に向き合い、一礼して、行き先を手で示す。そんな「迎える動き」を、G1で形にしたいと考えました。

企業の受付やショールームを想定した試作です。身体の向き、礼をする間、手の差し出し方まで含めて、案内の意図が伝わるかを確かめます。

「あなたに向けた動作」と伝わる向き。

実現したかった接客の流れの概念図です。機構や動作の精度を示すシミュレーションではありません。
01

人の動きを、そのまま移せる?

映像から人体の動きを捉え、G1の身体に合わせて変換し、物理シミュレーションで確かめました。

1人の実演動きのお手本
2人体CG・骨格SAM 3D Bodyで推定
3G1の動作身体の構造に合わせる
4物理試験バランスも確かめる
開発の大まかな流れ。元YouTubeの映像・音声は掲載していません。

人体では自然でも、G1にすると違って見える。

体格や関節構造が違うため、腕の位置だけが近くても、掌・指・顔の向きがずれることがありました。途中では3つを並べて見比べています。

途中経過:人体CG → 骨格 → G1。G1はこの段階の物理試験の記録です。最後の完成映像とは調整状態・画角が異なります。

02

倒れずに動かすために、何をしたか

今回の動作制御に、強化学習は使っていません。

人体の推定には学習済みAIを使用。G1の身体は、力学モデルに基づく「全身制御」で動かしています。

まずは、作った一礼・案内の動作を、限定したシミュレーション条件で成立させることを優先しました。強化学習との比較で優劣を決めたわけではなく、多様な条件で動作を学習・検証する段階にはまだ進んでいません。

今回の動作制御

いまの姿勢を見て、次の力を決める

1目標と現在を比較

目指す姿勢・動きと、
現在の身体の状態

2全身制御で計算

接地・摩擦・力の制限を
考慮して指令を決める

3身体を動かす

関節トルクを与え、
物理シミュレーションを進める

身体:モデルベースの全身制御指:別の追従制御
情報の循環を表した模式アニメーションです。実際の更新速度や計算結果を再生したものではありません。動きを減らす端末設定にも対応しています。

目標姿勢との差を縮めながら、足の接地や摩擦、関節が出せる力も考慮して指令を更新します。終了時は姿勢を保持し、揺れを抑えるよう調整しました。

技術補足:全身制御と強化学習の違い

今回の身体制御は、逆動力学と二次計画法(QP)を使い、現在の姿勢・速度と目標動作から関節トルクを計算します。指には別の追従制御を使っています。報酬を通じてロボットの制御方策を学習する構成ではありません。

物理試験では重力と床接触の下で指令を与えています。動作中に胴体を毎フレーム目標位置へ置き直して立たせた試験ではありません。掲載用映像は、その試験記録を再描画しています。

今回の条件で一礼・案内を転倒せずに実行し、終了後も姿勢を保持できました。条件を変えたときの成立範囲や、実機での実行は未検証です。

03

小さな姿勢の違いも、印象を変える

同じカメラで比較した待機姿勢。調整前は腕が前に曲がり、調整後は体側に下がる
確認映像からの切り出し。撮影用の姿勢調整であり、物理的な改善を証明する比較ではありません。

待っている姿勢から、見直しました。

腕を前へ曲げたままだと、何かを構えているように見えます。体側へ下ろした姿勢を作り、そこから案内開始姿勢へつなげました。

この待機姿勢とつなぎは撮影用の調整で、物理再検証は行っていません。

04

条件が変わったら、どうなる?

今回できたのは、特定の条件での動作です。次は、次の4つを確かめる必要があります。

床が滑りやすい

想定した摩擦と違うと、足の接地や追従が崩れる可能性。

重さ・応答が違う

ハンドの質量、実機のセンサー誤差や制御の遅れ。

横から押される

足を踏み出して立て直す機能は、今回未実装。

所作を変える

礼の深さ・速さ・案内方向を変えたら、再評価が必要。

実機へ進むには、強化学習が必要?

実機や条件変更に対応するには、制御をさらに作り込む必要があります。ただし、必ず強化学習で新しいモデルを作るとは限りません。進め方には、次の3つがあります。

全身制御を発展

実機の質量やモーター応答にモデルを合わせ、状態推定や踏み直しを追加する。

強化学習を活用

摩擦・質量・遅延・外力を変えながら、所作への追従とバランス維持を学ぶ。

両方を組み合わせる

学習した動作や補正と、モデルに基づく制御を組み合わせる。

モデルに基づく制御を実機へ適用した全身MPCの研究もあります。ただし、その成果が今回のG1の制御にそのまま当てはまるわけではありません。

今回の到達点は、限定条件での動作成立です。条件が変わっても自然な所作を維持するために、強化学習による動作追従は、次に検討する有力な選択肢です。

今後、強化学習を使うとしたら?

学ぶ対象は、静止姿勢だけではありません。「現在の身体の状態と目標動作から、次の指令を決める制御方策」です。摩擦・質量・遅延・外力などを変えた環境で、動作追従や立て直しを学ぶことが候補です。条件を変えて学ぶ仕組みはIsaac Labの公式資料でも紹介されています。

ゼロから新規学習するか、既存のG1向け方策を利用・追加学習するかは、ハンドを含む機体構成や制御インターフェースとの適合を調べて判断します。利用できる既存方策の選定は、まだ行っていません。

強化学習でも、学習外の条件や実機との差への検証は必要です。来客に合わせた向き・タイミングの変更には、認識と動作選択も別途必要です。

05

今回の到達点を、映像に

一礼と案内を、来客を迎える場面としてまとめました。オフィスで来客を迎えるシーンを構成し、最後はG1へ寄って動きを見せています。

確認できたこと今回の物理試験条件で、一礼・案内を完遂し、終了後の姿勢を保持。
残っていること顔・腰・指の再現差。実機での検証。「自然に迎えられた」と感じるかの評価。

ここまでを最初の試作として一区切りにしました。来客を認識し、反応を見て接客する機能は、今回の実装には含まれていません。

今回の完成映像・約16秒。案内動作は物理試験の記録を再描画。冒頭の待機・人物の動きは撮影用の構成です。実機や自律接客の実証映像ではありません。

06

G1実機で動かす前に、確認したいこと

今回の動作は実機未検証です。シミュレーションの関節角や制御設定をそのまま送るのではなく、次の点を実機に合わせて確認する必要があります。以下は今回の構成から考えられる検証項目で、実機で確認済みの手順ではありません。

CHECK 01

機体とハンドの違い

G1の仕様・腰のロック状態・手首の自由度・開発用APIを確認。ハンドの取付角、質量・重心、配線や可動範囲もモデルに反映します。

CHECK 02

誰が全身を制御するか

標準の運動制御と独自の全身制御の役割を明確にし、指令の競合を防ぎます。標準制御が自動で転倒を防いでくれるとは想定しません。

CHECK 03

遅延と実機の応答

関節の軸・符号・ゼロ点を合わせ、姿勢推定、通信遅延、計算周期、モーター応答を確認。状態更新や計算が途絶えた場合の処理も必要です。

CHECK 04

一礼の深さと連続運転

低速でも重心が支持範囲を外れれば倒れます。床の摩擦、足の滑り、関節の力・速度・温度を調べ、繰り返し動かす条件でも確認します。

CHECK 05

開始・終了・異常時

待機から案内への移行、終了後の保持、制御の切替まで含めて検証。停止指令だけで直立を保てるとは限らず、転倒を想定した停止・保護方法が必要です。

CHECK 06

来客との距離

腕が通る範囲だけでなく、転倒時に届く範囲も考慮。手指の挟み込みを避け、立ち入り管理と監視・停止の担当を決めます。人物検知は今回未実装です。

保護された試験環境から、段階的に。

機体に適した転倒防止設備と監視体制の下で、待機・浅い一礼・案内・一連の動作を順に確認します。支持装置で支えた試験と、自立した状態の試験は区別し、来客を入れる前に成立範囲と中止条件を確かめます。

仕様確認の参考:Unitree G1公式仕様公式SDKの低レベル制御例。SDK例にも仕様による関節の違いと制御モードの扱いが示されています。操作・停止方法は、使用する機体とファームウェアに対応したメーカー資料で確認します。

お問い合わせ