トピックハブ

シミュレーションとデジタルツイン

ロボットシミュレータの選び方と、実機でも通用する結果を得る方法。物理エンジンと接触、各シミュレータの得意分野と対応プラットフォーム、sim-to-realギャップ、ランダム化、デジタルツインを扱います。

更新 2026年11月14日 · シミュレーション、物理エンジン、接触、Gazebo、Isaac Sim、MuJoCo、PyBullet、Webots、Drake、sim-to-real、ドメインランダム化、システム同定、デジタルツイン

概要

シミュレータを使えば、ハードウェアが完成する前にソフトウェアをテストできます。一晩で数千回の試行を回し、学習ベースの方策を訓練し、継続的インテグレーションで退行を検出することもできます。ただし、シミュレータが実機と完全に一致することはありません。重要なのは、どの差異がタスクにとって問題になるかを見極め、その差異を埋めることです。デジタルツインはさらに一歩進んだもので、特定の1つの設備を表すシミュレーションモデルです。実システムと同期させ続け、計画・立ち上げ・監視に使います。このハブは、シミュレータを選ぼうとしているエンジニアや、シミュレーションでうまく動いたコントローラが実験台で失敗する理由を知りたいエンジニアに向けたものです。

重要な考え方

ロボットシミュレータが計算するもの

ロボットシミュレータは剛体動力学を積分し、接触を解き、センサをモデル化し、通常は画像もレンダリングします。ロボットはURDF、SDF、MJCFなどのファイル形式で記述します。難しいのは接触です。エンジンごとに接触の検出方法、摩擦のモデル化、接触力の求め方が異なり、結果は時間刻みやソルバの設定によっても変わります。あるエンジンで保持できた把持が、別のエンジンでは滑ることがあります。カメラ画像を認識モデルに入力する場合はレンダリングが重要です。力・衝撃・バランスが成否を決める場合は物理が重要です。両方に優れたツールは少なく、チームが複数のツールを併用することが多いのはこのためです。

シミュレータの選び方とMacで動くもの

用途で選びます。GazeboはROS 2のディストリビューションと組み合わせて使われるシミュレータで(LyricalはGazebo Jettyを挙げています)、シミュレートしたセンサを含むROS 2システム全体のテストに向きます。Isaac SimはRTXレンダリングと合成データ生成を備え、学習フレームワークのIsaac Labをその上で動かせます。MuJoCoはモデルベース制御のために作られ、制御や強化学習の作業に向きます。Drakeは自らをモデルベース設計と検証のためのツールボックスと説明しています。PyBulletは軽量なPythonの選択肢です。Webotsはグラフィカルインターフェースを備えた完結したデスクトップアプリケーションです。

対応プラットフォームはツールごとに異なり、各プロジェクトのドキュメントに明記されています。Isaac Simの動作要件ページには、x86-64上のUbuntu 22.04・24.04とWindows 11、さらにNVIDIA DGX Spark上のDGX OSが記載されています。macOSは記載されておらず、RTコアを持たないGPUにも対応していません。Gazebo Jettyが公式にサポートするのは、amd64上のUbuntu NobleとUbuntu Resoluteのみです。インストールページでは、macOS・Windows・armはベストエフォート扱いとされています。MuJoCoはx86-64とarm64向けにmacOS用のビルド済みバイナリを配布しています。Drakeはarm64のmacOSに対応し、Webotsはシステム要件にmacOSのリリースを挙げており、BulletのREADMEにはmacOSでテスト済みと書かれています。Macでは、MuJoCo・Drake・PyBullet・Webotsをネイティブで使い、Isaac SimはRTX GPUを搭載したLinuxまたはWindowsマシンで動かしてください。

sim-to-realギャップ

実機ログ、ステップ試験システム同定質量・摩擦を推定シミュレータモデル + アクチュエータ学習と評価ランダム化エピソードコントローラまたは方策データパラメータランダム化:摩擦、遅延最良実機へ展開ギャップを測定
sim-to-realギャップを埋める流れ。実機の計測データを使い、システム同定でシミュレータを調整する。チームが特定しきれないパラメータは学習中にランダム化し、実機での結果から次に取り組むべきギャップを見極める。

sim-to-realギャップには、よくある原因がいくつかあります。最大の原因はアクチュエータです。モータのトルク制限、減速機の摩擦、バックラッシ、コンプライアンス、通信遅延がモデルから抜けていることがよくあります。接触と摩擦のパラメータは不確かで、摩耗や汚れによって変化します。センサはノイズや遅延が異なり、カメラの場合は見た目も異なります。ギャップを埋める手段は2つあります。システム同定は、実機から記録したデータにモデルのパラメータを当てはめます。ドメインランダム化は、特定しきれないものを変動させ、コントローラがある範囲の変動に対処できるよう学習させます。Tobin et al.(2017)は、ランダムで非現実的なテクスチャを貼った画像だけで物体検出器を訓練し、著者らによれば実画像で1.5 cmの精度に達しました。Peng et al.(2018)は押し動作のタスクで動力学をランダム化し、追加の学習なしで方策を実機のアームへ移行しました。Tan et al.(2018)は四脚ロボットの歩容で両者を組み合わせ、同定したアクチュエータモデル、シミュレートした遅延、ランダム化した物理を用いました。

デジタルツイン

デジタルツインは、特定の1つのシステムをモデル化したものです。たとえば、ロボット・治具・コンベア・制御ロジックを含むワークセルがこれに当たります。エンジニアはデジタルツインを使って、設置前にリーチとサイクルタイムを確認し、仮想セルに対してロボットプログラムやPLCロジックの立ち上げを行い、故障を再現します。その価値は、モデルを実際のセルとどれだけ密接に同期させ続けるかで決まります。設計時に一度作ったきり更新しないものは、ツインではなく単なるシミュレーションです。

どこから始めるか

MuJoCoでアームをシミュレートするでは、インラインのMJCFモデルを読み込み、ビューアなしでステップ実行します。2リンクアームのプロジェクトとPyBulletのピックアンドプレースのプロジェクトでは、シミュレーション上で完結したタスクを作ります。URDFとMJCFのリファレンスは両形式を扱い、ソフトウェア比較表はツールを比較しています。MuJoCoのプラットフォームページとNVIDIAのプラットフォームページでは、それぞれのエコシステムをさらに詳しく扱います。

ツールとプラットフォーム

シミュレータ 得意分野 ライセンス macOS
Gazebo シミュレートしたセンサを含むROS 2システム全体。Jettyは現行の長期サポート版で、2031年5月までサポート Apache-2.0 ベストエフォートのみ
Isaac Sim RTXレンダリングと合成データ オープンソースのコードはApache-2.0、NVIDIAライセンスのコンポーネントを含む 非対応
MuJoCo 高速な接触動力学、制御、強化学習 Apache-2.0 対応(x86-64・arm64)
Drake モデルベース設計、最適化、多体動力学 BSD-3-Clause 対応(arm64)
PyBullet URDFからの軽量なPythonシミュレーション zlib 対応
Webots グラフィカルインターフェースを備えたデスクトップシミュレータ Apache-2.0 対応

よくある間違い

  • 摩擦・減衰・関節リミットのデフォルト値をそのまま信用する。計測するか、少なくともランダム化する。
  • モータを理想的なトルク源としてモデル化する。トルク制限、速度依存のトルク曲線、遅延を加える。
  • 計算速度を優先して大きな時間刻みを使い、その時間刻みが原因の接触のばたつき(チャタリング)をデバッグする羽目になる。
  • 1つのシナリオだけでシミュレータを比較する。タスクが依存する挙動を確認する。
  • 完璧にレンダリングされた画像で学習し、ぼけ・グレア・ホワイトバランスの違いがあるカメラに展開する。
  • Macで作業するチームに、実行用のLinuxマシンを用意せずにRTX専用のシミュレータを導入する。

さらに深く