ステータス:ドラフト(2026-10-18)、実測。 数値はノートPC(Apple M1 Max、macOS 26.5)のPython 3.9.6・numpy 2.0.2で直接計算したシミュレーション値です。この記事における「実物」は物理定数を変更したもう一つのシミュレータであり、実際のロボットではありません(ハードウェア未実測)。原資料とコード:作業ディレクトリ
measure/robot-arm-basics/rl/のttenv.py,ppo.py,exp_rl.py(グループsim2real)、結果out/rl/s2r_*_s{0,1,2}.json。 参考資料は2026-10-18に閲覧しました。作成ルール:実測データを基本とし、測定できなかったものは「未実測」、確認できなかったものは「未確認」と表記します。
目次
1. 直感:シミュレータの隙を学ぶ
強化学習ポリシーは報酬を高めるあらゆる隙を探します(第13回)。シミュレーター内において、その隙には シミュレータが間違っている部分も含まれています。ラケットの反発が実際よりも少し強ければ、ポリシーはその強い反発に合わせて優しく打つ方法を学びます。実世界では、ボールがネットにかかります。
第1〜10回が示した通り、卓球の物理定数は不確実です。文献のマグナス係数は7倍以上の開きがあり(第6回)、反発係数の0.05の差が着地点13 cmの差となり(第7回)、カメラとコントローラーの遅延は数十〜100 msでした(第1回)。シミュレーションから実世界へ移行する問題(sim-to-real、sim2real)に対処する方法は、大きく分けて4つあります。
| 方法 | 考え方 | 代償 |
|---|---|---|
| ドメインランダム化(domain randomization) | 定数をエピソードごとに変動させ、どのような値でも機能するポリシーを学習する | 問題がより難しくなり、より多くの学習が必要になる |
| 遅延・ノイズモデリング | 実際のシステムの遅延とノイズをシミュレータに追加する | 実際の遅延を測定する必要がある |
| システム同定(system identification, real2sim) | 実物から定数を測定してシミュレータに追加する | 測定できないもの(回転効果など)が残る |
| 大規模並列シミュレーション | 上記3つが増大させる学習量を計算によってカバーする | GPU・CPUリソース |
2. 実際の卓球ロボットが行ったこと
- 遅延は測定して組み込む必要があり、間違っていれば破綻します。 D'Ambrosioら 2023は、シミュレーションの遅延をハードウェアで測定した値にした場合、実世界への転移スコアが平均1.83(満点2.0)であり、50%に減らすと1.33に低下し、0%、20%、150%では非常に悪かったと報告しています(III-A2節、図4)。実世界で観測遅延を意図的に増やしたところ、150 msでパフォーマンスが急落しました(III-B節)。
- 反発係数をランダム化しないと14%低下しました。 同論文は、卓球台の反発係数のランダム化を除外するとパフォーマンスが14%減少し、ボールの反発係数を2%上げると25%、卓球台の反発を8%上げると36%減少したと記載しています(III-A5節)。興味深いことに、 測定された反発係数が調整された値よりも悪かったのですが、著者らは、シミュレータが回転を適切にモデル化できておらず、調整された値がそれを補っていたと考えています。
- D'Ambrosioら 2024 は、観測ノイズと遅延をランダム化し、卓球台とラケットの減衰と摩擦をランダム化し、アクチュエータおよび関節ごとにシステム同定を行いました。実世界でトップスピンボールに弱いという問題は、2.8kパラメータの薄いFiLMアダプターを追加して修正し、ラリーを短い区間に分割して毎回のロボットの状態を初期化することが実世界への転移において決定的であったと記載しています(II-E1・II-E2・II-E4節)。基本ポリシーは6,000個の並列シミュレーションワーカーで約24億ステップを学習しました(II-C節)。
- ランダム化の原点。 Tobinら 2017は、レンダリングの質感をランダムに変更してシミュレーションのみで学習した物体位置検出器が、実世界で1.5 cmの精度を達成したと報告し、Pengら 2017は、動力学定数をランダム化して実世界での学習なしにロボットアームで物体を押すポリシーを移行させました(両論文ともアブストラクト)。
3. 実測:振り子ラケットの「実物」
3.1 設定
「実物」は以下の5つの要素を変更したシミュレータです。各数値は第1〜10回で確認した不確実性の大きさに合わせて選定しました。
| 項目 | 公称シミュレーション | 「実物」 | 根拠 |
|---|---|---|---|
| ラケット反発 e_r | 0.80 | 0.72 | 第10回のモデル誤差実験と同じ値 |
| 観測遅延 | 0 | 20 ms(2ステップ) | 第1回:実際のシステムの遅延は数十ms |
| ボール位置ノイズ | 0 | σ 5 mm(速度ノイズはそれに比例) | 第2・6回の補正・観測ノイズの大きさ |
| 抗力 | ×1.0 | ×1.1 | 第6回:文献の C_D 0.37〜0.55 |
| マグナス効果 | ×1.0 | ×1.5 | 第6回:文献値に7倍以上の開きがある |
学習分布は4つです。すべて直接制御、形状報酬、PPOデフォルト設定、ボール19,200個、シード3つであり、評価は学習に使用していないボール1,000個を用いて公称シミュレーションと「実物」でそれぞれ行います。
| 学習分布 | 反発 | 遅延(ステップ) | ノイズ | 抗力倍率 | マグナス倍率 |
|---|---|---|---|---|---|
| ランダム化なし | 0.80 | 0 | 0 | 1.0 | 1.0 |
| 狭いランダム化 | 0.75~0.85 | 0~1 | 0〜3 mm | 0.95~1.05 | 0.8~1.2 |
| 広いランダム化 | 0.65~0.90 | 0~3 | 0〜8 mm | 0.9~1.2 | 0.5~2.0 |
| 同定した値をそのまま使用 | 0.72 | 2 | 5 mm | 1.1 | 1.5 |
狭いランダム化は「実物」を 含みません(反発0.72は範囲外、遅延2ステップも範囲外)。広いランダム化は含みます。最後の行はシステム同定が完全に成功した場合です。
3.2 結果
| 学習分布 | 公称シミュレーション | 「実物」中央値(最小〜最大) | 差(中央値) |
|---|---|---|---|
| ランダム化なし | 82.9% | 72.7% (62.9~80.0) | −10.2%p |
| 狭いランダム化 | 91.2% | 79.5% (70.8~85.2) | −11.7%p |
| 広いランダム化 | 57.4% | 54.7% (52.6~75.4) | −2.7%p |
| 同定した値をそのまま使用 | 79.3% | 74.4% (64.2~80.4) | −4.9%p |
3.3 読み取ったこと
- ランダム化なしで学習したポリシーは、「実物」で10%p低下しました。 反発・遅延・ノイズ・空気抵抗の効果が少しずつ異なるだけで生じた差異です。ラケットに命中した割合も76〜83%と、公称シミュレーション(88〜94%)よりも低くなりました。遅延が20 msあるとボールは約6 cm移動するため、タイミングがずれます。
- 狭いランダム化が「実物」において最も優れた結果となりました(79.5%)。 「実物」を範囲に含めていないにもかかわらず、このような結果になりました。定数が少しずつ変動する世界で学習するだけでも、ポリシーが特定の値に過度に適合するのを防ぐことができると考えられます。公称シミュレーションの成績(91%)もランダム化なし(83%)より高かったのですが、シードが3つのため、この差は確実とは言えません。
- 広いランダム化は差を3%pに縮めましたが、同じ学習量では学習不足となりました。 シミュレーションと「実物」の双方が55%前後であり、学習曲線は300回の反復の最後までゆっくりと上昇していました(1つのシードは82%・75%まで上昇)。ランダム化が広くなるほど問題が難しくなり、より多くのサンプルが必要になります。大規模並列シミュレーションがsim2realとペアを組む理由はここにあります。
- 完全なシステム同定(74.4%)は、狭いランダム化(79.5%)よりも低い結果となりました。 「実物」の値のまま学習を行うと、遅延20 msとノイズ5 mmが最初から存在するため学習がより難しくなり、同じ予算では学習が不十分になりました。同定は出発点を合わせ、ランダム化は残りの不確実性に耐えるようにするものと分けて考えるとわかりやすいです。実際には両者が併用されます(同定された値を中心に据えて狭くランダム化する)。
3.4 観測を変えるアプローチ
ランダム化は「知らないことに耐える」ための手法です。「知らないことを突き止める」手法もあります。同じプロジェクト内で別途進行したMuJocoシミュレータの実験では、古典的なプランナーがボールの軌跡だけで回転を推測する場合と比較して、「上回転・下回転・無回転」の回転の種類を事前に把握し、その種類の平均回転を事前情報として組み込んだ場合、条件に応じて返球率が7〜19%p高かったと報告されています(例:決定時点が打撃の300 ms前で、回転がデータセットのままである場合、77%から94%へ向上)。回転の種類は、相手の姿勢や打球音など、ボールが飛ぶ前のシグナルから把握することができます。D'Ambrosioら 2024も、強い回転を正確に読み取れないことを限界として挙げており、対戦相手がその点を突いてきたと記しています(V節第5項)。ポリシーが認識する情報を増やすことが、ランダム化を広げることよりもコストパフォーマンスが高い場合があります。
4. 制限事項
- 「実物」も同じ方程式に基づくシミュレータです。実際のロボットとの違いは定数だけでなく、モデルの形状(ラバーの回転伝達、減速機のバックラッシュ、カメラのドロップフレーム)にも存在します(未実測)。
- 学習量はすべての設定で同一(ボール19,200個)に設定しました。広いランダム化をより長く学習させると、結果が変わる可能性があります(未実測)。
- シードが3つであるため、設定間の差のほとんどが範囲内で重複しています(第15回)。
- 3.4節の回転の種類に関する実験は他のタスクの結果を流用したものであり、本記事の振り子ラケットの問題では測定していません。
5. まとめ
- シミュレータが間違っている分だけポリシーも間違えます。5つの定数をわずかに変更した「実物」において、ランダム化を行わなかったポリシーは10%p低下しました。
- 今回の予算では、狭いランダム化が最も効果的でした。広いランダム化は差を縮めますが、より多くの学習が必要です。
- システム同定は出発点を調整し、ランダム化は残りの不確実性への耐性を持たせます。これらは組み合わせて使用されます。
- 遅延は必ず測定して組み込む必要があります。Googleの実験では、遅延を半分に誤設定しただけでもスコアが1.83から1.33へと低下しました。
- 次のステップは、同じプロジェクトで進行中のMuJoco卓球アームの強化学習です。その結果が出たら、本シリーズの「実際の学習結果」編として執筆を続けます。
ティティの一言: シミュレータばかり信じていると、本物の卓球台でボールがネットにかかってしまいます。物理法則を少しずつ揺らしながら練習すれば、初めて見る卓球台でも慌てずに済みますよ!
参考文献
すべての資料は2026-10-18に閲覧しました。
- D'Ambrosioほか, Robotic Table Tennis: A Case Study into a High Speed Learning System, arXiv:2309.03315, III-A2・III-A5・III-B節、図4。
- D'Ambrosioほか, Achieving Human Level Competitive Robot Table Tennis, arXiv:2408.03906, II-C・II-E節、V節(制限事項)。
- Tobin 他、「Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World」、 arXiv:1703.06907、アブストラクト。
- Peng、Andrychowicz、Zaremba、Abbeel、「Sim-to-Real Transfer of Robotic Control with Dynamics Randomization」、 arXiv:1710.06537、アブストラクト。
- Rudin 他、 arXiv:2109.11978、アブストラクト。