ヒューマノイドの全身バランスを、URDF を読み込むだけでその機体に合わせるオートバランサーです。寸法・質量・慣性・関節の可動域・衝突形状は URDF から取ります。両手と両足のリンクを指定すると、同じアルゴリズムと同じ判定基準で、歩行・運搬・着座のバランスを解きます。
ここに書く数値と映像は、すべて計算機シミュレーションの結果です。体格の異なる 3 機種で、歩行・4kg の運搬・体育座りの往復が、停止や姿勢保持なしで完走しました。実機での実測値ではありません。判定は幾何と重心にもとづく準静的なもので、すべての体格での成立を保証するものでもありません。
紹介映像
URDF を読むと、その機体のバランスになる
表示・運動学・重心・姿勢計算・干渉判定は、URDF から作った 1 つのモデルを共有します。機体ごとの設定ファイルや、モデルの二重管理はありません。
URDF からそのまま使う値は、次のとおりです。
- リンク寸法・関節の原点 ― 骨格の長さと取り付け位置
- 関節軸・可動域 ― 軸と上限、速度の上限を制約に使う
- 質量・重心・慣性 ― 各リンクの inertial から全身重心を出す
- 衝突形状 ― 自己干渉と床への干渉
- 足裏の支持形状 ― 足リンクの底面から自動で抽出
- 外観メッシュ ― STL / OBJ / DAE を表示に使う
導入は 3 手順です。URDF(メッシュ付き ZIP も可)を読み、両手・両足の 4 リンクを選び、動作を実行します。リンク名の命名規則は不要で、役割の候補は自動で出します。編集したモデルは URDF とメッシュ一式の ZIP で書き出し、そのまま読み直せます。
バランス機能そのものは、両手・両足を指定した任意構成の URDF に適用できます。起立の保持、手先の位置と姿勢、片脚支持、2 歩の踏み出し、両手で持ったままの運搬、重心の移動と前方へのリーチがここです。6 歩の歩行、把持から設置までの運搬、しゃがみ・着座・体育座りの往復のように段取りを含む動作は、標準骨格の関節構成に対応付けた URDF で使います。寸法と質量は、読み込んだ URDF の値で計算します。
読める形式は、URDF とメッシュ付き ZIP、関節は revolute / continuous / prismatic / fixed / mimic、メッシュは STL / OBJ / DAE です。Xacro は事前に URDF へ展開します。floating / planar 関節と、外部 URL 参照のメッシュは対象外で、読込時にその旨を出します。
体格が違っても、同じ基準で完走した
同じアルゴリズム、同じ判定基準のまま、体格の異なる 3 機種で全動作が完走しました。脚の寸法と関節位置は、各 URDF から測って計画に使います。
リンク 31・関節 29・42kg の、構成が違う別モデルでも、汎用のバランス機能 8 種が完走しました。これはシミュレーション上の準静的な判定による結果です。
行動とバランスを、全身で同時に解く
歩行・運搬・着座のあいだも、足の配置・手先・腰の高さと、バランスの条件を 一つの計算で同時に満たします。全身の関節を協調させます。把持物の質量は各リンクの質量に足して全身重心を求め、支持多角形の内側に余裕を確保します。
約 20ms の周期ごとに、次を繰り返します。
- 行動の段取り ― 歩行・運搬・着座の時刻ごとの手順
- 目標 ― 足の位置と向き、手先、腰の高さ、重心
- 全身の姿勢 ― 標準モデルでは 182 自由度を同時に算出
- 成立判定 ― 支持余裕、推定 ZMP / CP、干渉、速度
物理的な成立(足・重心・接触・干渉)を先に満たし、そのうえで上体の鉛直や膝の余裕といった姿勢の質を選びます。
成立した姿勢だけを指令にする
動作中は、次の基準を常時適用します。荷物の揺れの上限などは、運用に合わせて変えられます。
| 項目 | 基準 | 見ているもの |
|---|---|---|
| 支持余裕 | 12mm 以上 | 重心の真下から支持多角形の縁まで |
| 推定 ZMP / CP | 2mm 以上 | 踏ん張り点・踏み出し点が支持範囲内か |
| 重心の追従 | 0.3mm 以下 | 計画した重心との差 |
| 足先 | 位置 1.5mm 未満、向き 0.7° 未満 | 滑り・浮きを許容しない |
| 自己干渉 | 3mm 以上 | 腕と胴、脚同士などの間隔 |
| 床へのめり込み | 1mm 未満 | 床との干渉 |
| 関節の指令速度 | 90°/s 以下 | 腰 0.2m/s、上体 60°/s 以下 |
| 荷物の揺れ | 加速度 2m/s² 以下 | ジャーク 20m/s³ 以下(初期値) |
ZMP は足裏にかかる力の合力の作用点、CP(キャプチャポイント)はそこへ足を出せば止まれる点です。どちらも支持範囲の内側にあることを見ます。
基準を満たした姿勢だけを指令にします。満たさないときは基準を緩めず、速度を 1/2、1/4、1/10 と落として計算し直し、直前の成立姿勢を保持し、60 回連続で不成立なら理由を出して停止します。
歩行、運搬、体育座り
3 事例は、20ms 刻み、標準体格(URDF・45kg)、各動作の初期設定です。いずれも停止・姿勢保持は 0 回です。
| 基準 | 歩行(6 歩) | 運搬(4kg) | 体育座りの往復 | |
|---|---|---|---|---|
| 結果 | ― | 完走(26 秒) | 完走(37 秒) | 往復を完走(100 秒) |
| 最小支持余裕 | 12mm 以上 | 45.0mm | 45.0mm | 23.8mm |
| 推定 ZMP 余裕 | 2mm 以上 | 24.4mm | 24.6mm | 23.1mm |
| 推定 CP 余裕 | 2mm 以上 | 25.4mm | 25.6mm | 23.8mm |
| 上体の傾き | ― | 0.32° | 0.65°(反り 0.93°) | 座る動作のため対象外 |
| 停止・保持 | ― | 0 回 | 0 回 | 0 回 |
歩幅 18cm、1.5 倍速の運搬条件でも完走しています。紹介映像の事例 3 は、シミュレーション時間の 2 倍速で再生しています。
確認した範囲と、実機の前に残ること
自動テスト 123 件が合格しています。URDF の読込・書き出し・再読込、3 機種の脚動作、読み込んだ URDF の運動学と重心で全動作が動くこと、10〜50ms の不規則な刻みと再生速度の変更、全フレームで上の判定基準を満たすこと、を見ています。資料と映像の数値は、ブラウザ上の実行と同じ 20ms 刻みです。
シミュレーションで確認できていることは、次のとおりです。
- URDF を読むだけで、寸法と質量の異なる機体に同じオートバランサーを適用できる
- 3 機種すべてで、歩行・運搬・床座りの往復が判定基準を満たして完走する
- 成立しない動作を、動作の前または途中で判定して停止する
- 荷物の質量、揺れの上限、手先の許容幅を条件として扱える
- 約 20ms の周期で計算が成立する
実機に載せる前には、別の確認が残っています。お客様の機体 URDF での評価、実機の質量・慣性・関節特性の同定と URDF への反映、トルクやアクチュエーターの遅れ・センサー誤差を含めた評価、外乱への応答、より速い動的歩行、そして実機計測による性能値の確認です。現状の判定は、準静的な幾何と重心によるものです。
まとめ
- 読み込むだけ ― URDF の寸法・質量・可動域・衝突形状で、全身バランスを機体に合わせる。リンク名の規則は不要。
- 全身で同時に解く ― 歩行・運搬・着座の目標と、支持余裕 12mm 以上などの条件を、同じ周期で満たす。
- 安全側 ― 基準を満たした姿勢だけを指令にする。満たさないときは減速、保持、停止。基準は自動で緩めない。
- 3 機種で完走 ― 45 / 31 / 58kg。歩行・4kg 運搬・体育座りの往復は、停止・保持 0 回。
- シミュレーション ― 準静的な判定の結果であり、実機の実測ではありません。
デモやご相談を承っています。
