はじめに
ロボティクスにおける強化学習(RL)では、実機でのデータ収集コストや安全性の問題から、シミュレータ(Sim)で方策を学習してから実機(Real)に転移するSim2Real transfer(sim to real gap)が標準的なアプローチです。
しかし、SimとRealの間には必ず乖離(ギャップ)が存在し、Simで高性能だった方策がRealで全く機能しないという問題がしばしば起きます。
本記事では、この強化学習におけるSim2Real Gapを3種類に分類し、それぞれの原因・具体的な発生事象・対策を体系的に整理します。
本記事は、出典の2件のサーベイ論文をもとに説明します。
生成AIモデル(VLA/VLM/World Model)固有のギャップについては別記事で扱います。
強化学習におけるSim2real gapの概要
Sim2Realギャップを強化学習(RL)の学習ループから分類すると、わかりやすいです。
まずRLの学習サイクルは以下の構造を持ちます。
観測(o) → 方策π → アクション(a) → ダイナミクスf → 次状態(s')
↓
報酬 r(s,a)
Sim2Realギャップは、このサイクルのどこ(発生個所)で乖離が生じるかによって自然に3種類に分類できます。
| ギャップの種類 | サイクル上の位置 | 乖離の主体 |
|---|---|---|
| 観測ギャップ | 状態s → 観測o の変換 | センサモデル |
| ダイナミクスギャップ | アクションa → 次状態s' の遷移 | 物理モデル |
| 報酬ギャップ | 状態s, アクションa → 報酬r | 報酬関数設計 |
3つは独立ではなく段階的に関係します。
①ダイナミクスギャップ
↓ 物理が違うと
②観測ギャップが増大(同じセンサでも異なる状態になる)
↓ 観測が違うと
③報酬ギャップが増大(報酬の計算ベースがずれる)
対策の優先順位は一般的に ①ダイナミクス → ②観測 → ③報酬 の順になります。
① ダイナミクスギャップ(Dynamics Gap)
背景
物理シミュレータ(MuJoCo、Isaac Sim、PyBulletなど)は現実の連続的・確率的なダイナミクスを離散化・近似したものです。どれだけ精密なシミュレータでも、以下の要素は必ず誤差を持ちます。
原因と事象
(a) 接触モデルの誤差
Simの接触計算は剛体と単純化した摩擦モデル(クーロン摩擦)に基づきます。Realの接触は非剛体変形・粘着・スリップが混在しており、この近似が大きな乖離を生みます。
- 発生事象:把持時の物体スリップ、平地のはずが滑って転倒
(b) アクチュエータモデルの誤差
Simは理想的なトルク出力を仮定しますが、Realのサーボモータには以下が存在します。
-
制御遅延(通常 10〜30ms)
-
バックラッシュ(ギアの遊び)
-
温度依存の特性変化
-
発生事象:アクション不安定化(高周波振動・転倒)。Simでは収束していた歩容がRealで発散する
(c) 質量・慣性パラメータの誤差
CADデータから計算した質量・慣性テンソルは実物と数%〜数十%ずれます。バッテリー残量による重心変化も非考慮です。
- 発生事象:バランス崩壊。特に高速動作で顕著
(d) 剛性・減衰の誤差
関節の弾性・減衰特性がSimで単純化されています。
- 発生事象:着地衝撃の吸収挙動が異なり、跳ね返りや振動が発生
対策
ダイナミクスギャップへの対策は「Simをより正確にする」か「方策をギャップにロバスト化する」かの二択です。
System Identification(SysID)
Realデータからシミュレータパラメータを同定してSim精度を向上させます。ただし同定できるパラメータには限界があります。
Domain Randomization(DR)
摩擦・質量・遅延をランダム化して、広いダイナミクス分布に対して動く方策を学習します。Simを一点に固定するのではなく、パラメータの分布を広げることでRealをその分布内に含ませるという考え方です。
# Domain Randomizationの対象パラメータ例
- 摩擦係数: U(0.4, 1.0)
- ロボット質量: 公称値 ± 15%
- アクチュエータ遅延: U(0ms, 30ms)
- 外力擾乱: N(0, 5N) を周期的に印加
OpenAI(2019)はAutomatic Domain Randomization(ADR)を提案し、方策の習熟度に応じてランダム化の幅を自動で拡張するカリキュラム的アプローチを実証しています[^1]。
Adaptive Methods(RMA等)
方策自体がオンラインでReal環境のダイナミクスを推定し適応します。Kumar et al.(2021)のRapid Motor Adaptation(RMA)は数秒以内に新しいダイナミクスへ適応できることを示しました[^2]。
Multi-Modal Delay Randomization(MMDR)
アクチュエータ遅延だけでなく、視覚・固有感覚など複数モダリティの遅延をそれぞれランダム化します。Unitree A1四足歩行ロボットでゼロショットReal転移を実証しています(arXiv:2109.14549)。
② 観測ギャップ(Observation Gap)
背景
方策はSimで「理想的なセンサ入力」を前提に学習します。Realのセンサはノイズ・欠損・遅延・キャリブレーション誤差を持つため、方策への入力分布がSim時と異なります。
原因と事象
(a) 視覚センサのギャップ
Simのレンダリングは照明・テクスチャ・影が理想的です。Realにはレンズ歪み・モーションブラー・照明変動が存在します。
- 発生事象:物体検出の失敗、深度推定誤差による把持位置ずれ
(b) 固有感覚センサのギャップ
関節角度センサ(エンコーダ)はRealでは量子化誤差・バックラッシュによるヒステリシスを持ちます。SimのIMUは理想的ですが、RealのIMUにはドリフト・振動ノイズが存在します。
- 発生事象:自己位置・姿勢推定の累積誤差
(c) 力・触覚センサのギャップ
SimではF/Tセンサを完全観測と仮定しますが、Realでは温度ドリフト・電気ノイズ・センサ設置の機械的誤差があります。
- 発生事象:接触力推定のずれにより把持力制御が失敗
(d) 部分観測性(Partial Observability)
Simでは状態sを完全に観測できることが多い(真の位置・速度・接触状態など)ですが、Realでは観測oは状態sの不完全な射影です。
- 発生事象:Simでは成功するが、Realでは観測から状態を復元できず動作失敗
対策
センサノイズ付加(Observation Noise Randomization)
Sim訓練時に観測にノイズを乗せて、Real観測の分布に近づけます。ガウスノイズ・欠損・遅延をランダム化するのが一般的です。
Privileged Information / Teacher-Student学習
Sim2Realにおける観測ギャップへの最も体系的な解法です。
- 教師フェーズ:Sim完全状態(接触力・地形プロファイル・摩擦係数など)にアクセスできる教師方策をSimでRLにより訓練
- 生徒フェーズ:実センサ観測(IMU・関節角度など)のみを使う生徒方策が教師方策を模倣
Lee et al.(2020)がこの手法を四足歩行ロボットに適用し、Self Roboticsで発表しています[^3]。教師が特権情報(privileged information)にアクセスできることから「Privileged Learning」と呼ばれます。Chen et al.(2020)が自律走行の文脈で提案した「Learning by Cheating」が原典です[^4]。
[教師ネットワーク]
入力: 完全状態 (接触力, 地形, 摩擦係数, ...) → RL訓練
↓ 行動模倣(蒸留)
[生徒ネットワーク]
入力: IMU + 関節角度のみ → デプロイ時に使用
状態推定器の独立設計
センサ融合で状態を推定する層(EKFやRNN)を方策から分離し、その層だけRealデータでファインチューニングします。方策全体の再訓練が不要なため実用的です。
③ 報酬ギャップ(Reward Gap)
背景
報酬関数はSimの状態空間に基づいて設計されます。Realでは「Simで有効だった報酬シグナル」が計測できない、あるいは設計者が意図しない最適化が起きるという問題があります。
原因と事象
(a) 報酬ハッキング(Reward Hacking)
Sim固有の物理誤差を悪用した抜け穴行動を学習します。
-
床との摩擦がゼロに近いSimで「滑って高速移動する」行動が高報酬を得る
-
関節振動でセンサ値を周期的に騙す行動
-
SimのCollisionモデルの隙間を抜ける行動
-
発生事象:Simで高スコアだがRealでは全く機能しない方策
(b) Realで計測できない量を報酬に使っている
Simでは真の関節トルク・接触力・物体速度が直接報酬に使えますが、Realでは計測できない量を報酬に使っていると転移できません。
- 発生事象:報酬関数自体がRealで機能しない
(c) 成功基準のSim/Realミスマッチ
「タスク成功/失敗」のバイナリ報酬において、Simでの成功判定とRealでの成功基準がずれます。
- 発生事象:Simでの「成功」とRealでの「成功」が別の状態を指す
対策
報酬シェーピングの慎重設計
Realで計測可能な量のみを報酬に使うという原則が最も重要です。
# NG: Simでしか取れない真の接触力を使用
reward = -torch.abs(true_contact_force - target_force)
# OK: 関節電流(Real計測可能)を代理指標として使用
reward = -torch.abs(joint_current - target_current)
また、物理的に意味のある補助報酬(トルク制限・スムーズネス項・エネルギー消費)を加えることで、抜け穴行動を抑制できます。
Imitation Learning / Behavior Cloning との組み合わせ
Realのデモンストレーション(teleoperation)データから事前に方策を初期化し、RL最適化をReal分布の近傍でスタートさせます。報酬ハッキングの探索空間を縮小する効果があります。
Realでの報酬再定義(RLHF等)
人間のフィードバックや実際のタスク成功シグナルを使ってReal側で報酬を定義します。特にタスクの成功基準が曖昧な場合に有効です。
3種類のギャップの対策マトリクス
実務的には、以下の表をみながらより上流側から(ダイナミクスー>観測ー>報酬)対応していきます。
| 対策手法 | ダイナミクス | 観測 | 報酬 | 主要文献 |
|---|---|---|---|---|
| Domain Randomization(DR) | ◎ | ○ | — | Tobin et al., IROS 2017 |
| System Identification | ◎ | — | — | — |
| Automatic DR(ADR) | ◎ | — | — | OpenAI 2019, IJRR |
| Multi-Modal Delay Randomization | ◎ | ○ | — | arXiv:2109.14549 |
| Rapid Motor Adaptation(RMA) | ◎ | — | — | Kumar et al., RSS 2021 |
| Observation Noise Randomization | — | ◎ | — | Peng et al., ICRA 2018 |
| Privileged Learning | — | ◎ | — | Lee et al., Sci.Rob. 2020 |
| 状態推定器の独立設計 | — | ◎ | — | — |
| 報酬シェーピング慎重設計 | — | — | ◎ | — |
| Imitation Learning 初期化 | — | ○ | ◎ | — |
| RLHF | — | — | ◎ | — |
◎ = 主要な対策,○ = 副次的な効果
実践上の優先順位
実務上の対策の検討は、以下の順序が考えられます。
Step 1. ダイナミクスギャップを対処する
└─ SysIDでパラメータ同定 → シミュレータで精度確認
└─ Domain Randomization(摩擦・質量・遅延)
Step 2. 観測ギャップを対処する
└─ センサノイズ付加
└─ Privileged Learning(観測不完全性が大きい場合)
Step 3. 報酬ギャップを設計する
└─ Realで計測可能な量のみで報酬構成
└─ teleopデモで補助
出典
[1]Wenshuai Zhao, Jorge Peña Queralta, Tomi Westerlund, "Sim-to-Real Transfer in Deep Reinforcement Learning for Robotics: a Survey," arXiv:2009.13303, 2020.
[2]Longchao Da, Justin Turnau, Thirulogasankar Pranav Kutralingam, Alvaro Velasquez, Paulo Shakarian, Hua Wei, "A Survey of Sim-to-Real Methods in RL: Progress, Prospects and Challenges with Foundation Models",arXiv:2502.13187, 2025.