Are there parameters to speed up the simulation?

I want to run a lot of mobile robot tests in isaacsim platform, mainly with wheeled robots. But I found that the running speed in the simulation is slower than the real speed, that is, the simulation time is lagging behind the real time, is there any parameter about the time scale that can make the simulation time exponentially faster, but without affecting the physical simulation.

Do the robots have any sensor, or is just robots?

Thank you for your reply.
The sensors my robot uses are: camera, radar,
imu, and ultrasound,
odom.
Are there any sensors that affect simulation acceleration?

If you have lots of sensors, then you need a powerful GPU in order to have proper fps.

We are using an RTX4090 graphics card, is this configuration not enough?
Besides, there is no parameter or method of controlling the simulation to speed up the simulation is there, the crux of my question is that I want to explore if it is possible to set up a parameter to speed up or slow down the time scale of my simulation, but without affecting the accuracy of the physical simulation.

You can set speed with below python code.
“internal_frame_per_second” is time step in simulation world.
“real_frame_per_second” is update cycle.
If you set “internal_frame_per_second” less than “real_frame_per_second” and the machine performance is enough, you will speed up the simulation.

import sys
import time
import signal
from omni.isaac.kit import SimulationApp

real_frame_per_second = 60.0
internal_frame_per_second = 60.0
kit = None
is_processing = False

def scheduler(signum, frame):
    global kit
    global is_processing
    if is_processing == False:
        is_processing = True
        kit.update()
        is_processing = False


def main():
    global kit

    kit = SimulationApp({"renderer": "RayTracedLighting", "headless": False, "open_usd": usd_path})

    import omni
    from omni.isaac.core import World

    my_world = World(stage_units_in_meters = 1.0, physics_dt = 1.0 / internal_frame_per_second, rendering_dt = 1.0 / internal_frame_per_second)

    # Get stage handle
    stage_handle = omni.usd.get_context().get_stage()

    signal.signal(signal.SIGALRM, scheduler)
    signal.setitimer(signal.ITIMER_REAL, 1/real_frame_per_second, 1/real_frame_per_second)

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        # Shutdown and exit
        omni.timeline.get_timeline_interface().stop()
        kit.close()
    
if __name__ == '__main__':
    main()
1 Like