シミュレーション上の成功が実機で崩れるとき、物理モデルだけを疑う前に、ログと時間の整合性を確認したくなります。
先に結論
Sim-to-Realで性能が落ちたとき、いきなり摩擦や質量を調整するのは得策ではありません。まず単位、座標系、アクションスケール、時刻、制御周期などのインターフェースを確認し、次にセンサーと遅延、アクチュエータと低レベル制御、剛体・運動学、接触・環境の順で補正します。その後、残る不確実性に対してダイナミクスランダム化、実機データによる分布更新、オンライン適応、方策の再調整を検討します。
この順序は、すべてのロボットやタスクで保証された標準手順ではありません。各段階で学習に使っていない実機ログを検証し、残差のパターンが変わったかを確認することが前提です。
なぜ原因分解が必要か
実機で方策が失敗すると、物理モデルが間違っていると考えがちです。しかし性能差は、観測・レンダリング、時間同期と通信遅延、アクチュエータと低レベル制御、剛体・接触ダイナミクス、環境分布、方策の汎化誤差に分かれます。複数の要因が同じ軌道誤差を生むこともあるため、単一種類のログだけではパラメータを一意に決められない場合があります。
たとえば、定常的な位置や角度のずれはゼロ点や座標系、位相遅れはタイムスタンプ・通信・制御遅延、自由空間での振幅差はゲイン・摩擦・慣性を優先的に疑います。接触時の衝撃や滑りは摩擦、剛性、接触形状の不一致と結び付きやすく、視覚入力時だけ失敗するならカメラやレンダリング分布の差を調べます。
まず確認する用語
システム同定は、実機の入力と状態のログから、質量、摩擦、遅延などのモデルパラメータを推定する考え方です。ダイナミクスランダム化は、質量、摩擦、モーター出力などをエピソードごとに変化させ、単一モデルへの過適合を避ける方法です。視覚系ではテクスチャ、照明、カメラ姿勢、背景、オブジェクト配置などを変化させます。
オンライン適応は、実機の履歴から環境やダイナミクスの潜在状態を推定し、方策を適応させる方法です。固定パラメータの精密化だけでは扱いにくい、時間変化する差への選択肢になります。
実機データでの補正手順
1. ログとインターフェースを監査する
最初に、単位、座標系、アクションのスケール、飽和処理、ログ時刻、制御周期をそろえます。センサー、制御入力、状態推定、時刻情報は同一試験単位で保存し、後から再生できる形にします。ROS 2ではros2 bagに指定トピックを記録・再生できます。
ここが崩れていると、後段で物理パラメータを調整しても、入力と観測の対応がずれたままになります。まず再生ログとシミュレーションの入出力インターフェースが一致するかを確認します。
2. センサー、座標系、時間を合わせる
センサーのバイアス、ゼロ点、外部パラメータ、ノイズ、観測遅延を調べます。視覚入力を使う場合は、テクスチャ、照明、カメラ姿勢、背景、物体配置の差も対象です。実機画像に近い観測分布を作るだけでなく、視覚以外の状態推定値についても、シミュレーションと同じ前処理になっているか確認します。
3. アクチュエータと低レベル制御を合わせる
指令値が同じでも、モーターの応答、トルク制限、内部制御器、フィルタ、遅れによって実際の運動は変わります。脚ロボットなどでは、アクチュエータモデルをシミュレーションに含めることが、剛体パラメータを合わせることとは別の補正対象になります。
4. 剛体・運動学を調整する
質量、重心、慣性、関節減衰などを確認します。重力姿勢や自由空間の運動を使い、剛体モデルと運動学の誤差を切り分けます。MuJoCoのモデル定義では、ボディ、関節、アクチュエータ、センサー、接触・摩擦関連の要素を個別に設定でき、パラメータをカテゴリ別に管理する際の参照になります。
5. 接触と環境を調整する
接触時だけ残差が増える場合は、摩擦、接触剛性、反発、接触形状、床など環境側の条件を調べます。自由空間の運動が合っていても、接触ダイナミクスがずれていれば、滑りや衝撃を再現できません。
flowchart LR A["実機で性能劣化"] --> B["残差パターンを観測"] B --> C["定常的な位置・角度オフセット"] B --> D["位相遅れ"] B --> E["自由空間での振幅差"] B --> F["接触時の衝撃・滑り"] B --> G["視覚入力時だけの失敗"] B --> H["時間変化する差"] C --> C1["ゼロ点・座標系・初期姿勢"] D --> D1["時刻・通信・制御遅延"] E --> E1["ゲイン・摩擦・慣性・アクチュエータ"] F --> F1["摩擦・剛性・接触形状・環境"] G --> G1["カメラ・レンダリング分布・前処理"] H --> H1["オンライン適応・履歴からの状態推定"]
6. 不確実性と方策を扱う
点推定したモデルで実機を再現できない場合は、同定値の周囲に不確実性を持たせたダイナミクスランダム化を行います。実機ロールアウトとシミュレーション軌道の差を使い、ランダム化分布やシミュレーションパラメータを更新する方法もあります。それでも時間変化する差が残るなら、オンライン適応や残差方策を追加し、最後に方策自体を再調整します。
残差パターンからの切り分け
| 残差のパターン | 優先して疑う対象 | 主な確認内容 |
|---|---|---|
| 定常的な位置・角度オフセット | ゼロ点、座標系 | センサー校正、フレーム変換、初期姿勢 |
| 位相遅れ | 時刻・通信・制御遅延 | タイムスタンプ、周期、指令と応答のずれ |
| 自由空間での振幅差 | ゲイン、摩擦、慣性、アクチュエータ | ステップ、ランプ、正弦波への応答 |
| 接触時の衝撃・滑り | 摩擦、剛性、接触形状 | 接触条件を変えた試験と接触状態 |
| 視覚入力時だけの失敗 | カメラ、レンダリング分布 | 照明、背景、姿勢、配置、前処理 |
試験を分けて識別する
実機データは、静止・低速試験、自由空間でのステップ・ランプ・正弦波などの励振、接触試験、閉ループ走行に分けます。静止・低速ではバイアスやゼロ点、自由空間ではゲイン・遅延・摩擦、接触試験では摩擦や剛性、閉ループでは総合的な転移性能を確認します。各試験で目的に合うパラメータだけを推定すると、タスク成功率だけを直接最適化するより原因を識別しやすくなります。
flowchart TD
A["ログ契約とインターフェース監査\n単位・座標系・アクションスケール・時刻・制御周期"] --> B["センサー・座標系・時間を合わせる\nバイアス・外部パラメータ・ノイズ・観測遅延"]
B --> C["アクチュエータと低レベル制御を合わせる\n応答・制限・内部制御器・フィルタ・遅れ"]
C --> D["剛体・運動学を調整する\n質量・重心・慣性・関節減衰"]
D --> E["接触と環境を調整する\n摩擦・剛性・反発・接触形状・床"]
E --> F["不確実性を扱う\nダイナミクスランダム化・実機データによる分布更新"]
F --> G["時間変化する差へ対応\nオンライン適応・残差方策・方策再調整"]
A --> V["未使用ログによるホールドアウト検証"]
B --> V
C --> V
D --> V
E --> V
F --> V
G --> V
V --> Q{"残差パターンが改善したか"}
Q -->|"いいえ"| N["次の原因カテゴリまたは試験条件を再検討"]
N --> B
Q -->|"はい"| R["未使用軌道・速度域・接触条件・制約違反・成功率を確認"]補正方法の選び方
| 方法 | 向いている状況 | 長所 | 制約 |
|---|---|---|---|
| 点推定によるシステム同定 | 差が比較的固定している | モデルの原因を直接調べやすい | 複数パラメータが同じ誤差を生むと一意に決まらない |
| ダイナミクスランダム化 | パラメータの不確実性が大きい | 単一モデルへの過適合を抑えられる | 範囲が広すぎると学習対象が難しくなり得る |
| 実機データによる分布更新 | 実機ロールアウトが得られる | 実世界に合わせてシミュレーションを校正できる | ログの質と試験条件に依存する |
| オンライン適応 | 未知または時間変化する差がある | 固定モデルに残る変動へ対応できる | 履歴から状態を推定する仕組みが必要 |
校正の判定基準と制約
学習に使ったログへの適合だけで校正完了と判断してはいけません。未使用の軌道、速度域、接触条件に対する一ステップ予測、短ホライズン軌道誤差、残差分布、制約違反を確認し、その後にタスク成功率を見ます。ランダム化幅、許容誤差、成功率の改善量、オンライン適応への切り替えに、汎用的な数値閾値はありません。
また、対象ロボットの駆動方式、タスク、接触や視覚入力の有無によって最適な順序は変わります。単一ログでパラメータを決めず、励振条件や観測対象を変えたデータとホールドアウト検証を組み合わせます。
まとめ
Sim-to-Realの性能劣化は、物理パラメータだけでなく、観測、時刻、遅延、アクチュエータ、接触、環境、方策の差として分解します。実務上の初期手順は、インターフェース監査、センサーと遅延、アクチュエータ・制御、剛体・運動学、接触・環境、不確実性、オンライン適応・方策再調整の順です。ただしこれは推奨される診断の出発点であり、未使用ログによる検証で順序と対象を更新する必要があります。
参考情報
- Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World
- Sim-to-Real Transfer of Robotic Control with Dynamics Randomization
- Learning agile and dynamic motor skills for legged robots
- Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience
- SimOpt: Learning Simulation Parameters from Real World Data
- RMA: Rapid Motor Adaptation for Legged Robots
- ROS 2 Jazzy: Recording a bag from the command line
- MuJoCo Documentation: XML Reference
補正の順番を固定するより、残差の形と未使用ログを手掛かりに次の仮説を選ぶことが、再現性のある診断につながります。
AI利用に関する注記
本サイトの記事は、複数のAIエージェントによる調査・執筆・レビューを経て公開しています。正確性と品質の向上に努めていますが、内容については必ず一次情報をご確認ください。