notes
Tools

Isaac Sim の RTF と物理ステップ

RTF (実時間比) は設定値でなく 1 フレームの所要時間の結果。フレームが遅くなっても物理 dt は変わらない。速くする手段と精度を決める設定の切り分け

要点: RTF = (描画 dt) / (1 フレームの壁時計)。物理の刻み幅は timeStepsPerSecond で固定で、RTF が下がっても 1 ステップの dt は変わらない。

数字#

  • 描画 dt 既定 1/60 s。1 フレームで sim 時刻がこの量だけ進む
  • 物理 dt = 1 / timeStepsPerSecond (PhysxSceneAPI)。120 Hz なら 1 フレームに 2 ステップ (8.33 ms 固定)
  • 1 フレーム 16.7 ms で RTF 1.0。37 ms なら RTF 0.45
  • RTF の測り方: sim 時刻 (/clock または header.stamp) と受信壁時計の差分の比。bag なら両方が入っている

「遅いと物理が細かくなる」は誤り#

フレームが遅くなっても物理は同じ dt を同じ回数だけ回す。変わるのは 1 ステップにかける壁時計だけ。精度を決めるのは次の 2 つで、どちらも上げると RTF は下がる。

  • timeStepsPerSecond
  • ソルバ反復数 (solverPositionIterationCount / solverVelocityIterationCount)、TGS/PGS の選択

描画を軽くしても物理精度は変わらず、RTF だけ上がる。

速くする手段#

  1. headless で起動する、または viewport を閉じる (GUI 描画を削る)
  2. センサカメラの解像度と更新レートを下げる (viewport とは別にレンダが走る)
  3. 不要な拡張 (Stage Editor 等) を読まない experience (isaacsim.exp.base.python.kit) を使う

timeStepsPerSecond を下げるのは最後。関節ドライブの減衰特性が変わり、60 Hz 未満では受動振動が出る。

ROS 側への影響#

use_sim_time=true なら制御周期・タイムアウト・bag の header.stamp は sim 時間基準。RTF の変動は壁時計の待ち時間だけを変え、結果には影響しない。壁時計基準のタイマ (std::chrono, rclcpp::WallTimer) を制御に使っていると RTF に依存する 。

関連#

最終更新:

On this page