@Ossama_Ahmed @toni.sm While I run the OmniGraph node(On Tick) in the Omniverse Isaac Sim, the node output of system simulation delta time is around 0.01s(about 100Hz frequency), but I want to run some custom nodes which need more high frequency for sampling prim content attribute(eg. velocity) in stage, so what could I do? Or is there some simulator settings for more high frequency? And then could I fix the delta time for action graph?
I really appreciate for getting a reply or some advices.
Hi @jade.cong - The frequency at which the On Tick node in Omnigraph runs is determined by the simulation step size, which is set in the Physics settings in Isaac Sim. By default, this is set to 60Hz, but you can increase it to achieve a higher frequency. However, keep in mind that increasing the simulation frequency will also increase the computational load, which might impact performance.
To change the simulation step size, you can go to the Physics settings in Isaac Sim and adjust the ‘Step Size’ parameter. This parameter determines the time interval for each simulation step, so a smaller step size will result in a higher simulation frequency.
As for fixing the delta time for the action graph, the delta time is determined by the simulation step size and cannot be set independently. However, you can control the execution of specific nodes in the action graph using the On Impulse Event node. This node allows you to trigger the execution of other nodes based on specific events or conditions, which can be useful for controlling the timing of certain operations in your action graph.
Well, thanks so much for your replies~ @rthaker
But I’m still confused about some concepts(eg. time step/substep/frame rate) and settings(Time Steps Per Second/Min Simulation Frame Rate/Time Codes Per Second/UI FPS Limit/Use Fixed Time Stepping/Frame Rate(Movie Capture)) in Omniverse Isaac Sim. And some settings are as following pictures.
According to omniverse docs(physics-scene and physics-settings), I got the following explanation about the two key settings(Time Steps Per Second/Min Simulation Frame Rate) for simulation control.
Based on the explanation in the two web links, I draw the graph about the workflow of omniverse simulation below, so could you check whether I’m right and correct my understanding about the concepts?
In regard to the workflow graph, what I learned from the omniverse official docs and forums are listed below:
(1) Time Steps Per Second is the setting for physics engine(PhysX) update frequency of simulation scene contents(kinematics and dynamics, eg. collisions) and the update frequency keeps up with the clock real time line.
(2) Min Simulation Frame Rate is the setting for rendering update frequency of simulation scene contents and every frame may consumes the specified(Time Steps Per Second divided by Min Simulation Frame Rate) time steps at most. And setting Min Simulation Frame Rate equals to Time Steps Per Second will make simulation rendering synchronizes with physics engine stepping with same update frequency.
(3) Delta time is coming from every time step of physics engine, and the delta time is variable(about equals to 1 divied by Time Steps Per Second) due to the realtime payload of physics engine as well as simulation content complexity. But the setting can be fixed in rendering setting(Use Fixed Time Stepping).
So am I right?
Then what I’m working on is motor and driver simulation like MATLAB Simulink, the simulation scheme is shown in following picture.
Isaac Sim Stage and OmniGraph node are posted below.
And I need to increase the update frequency of OmniGraph node(MaxonMotorModel and MaxonMotoerDriver) to 200KHz for the simulation, but the node inputs(motor velocity) update only about 100Hz coming from physics engine updating(Time Steps Per Second) even if node updating frequency could reach 200KHz with inner for loop.
What can I do to achieve 200KHz as higher as possible and accomplish the simulation? As far as I know, something could be done for the goal as following:
(1) Set the Time Steps Per Second as higher as possible for reaching 200KHz, but I’m not sure whether this setting could work and something strange will happen. If this could work, so how to configure the simulation settings?
(2) According to some posts in the Nvidia forums put, running in headless mode or multi-thread with GPUs may work. Is this a right way?
(3) Also another post reviews and feedbacks from nvidia official employe which provide the USDRT API for high update frequency, but I have no idea about this method and whether it’s a feasible way.
I’m greatly appreciated and expectant for your reply~
Hi @rthaker , I’m confused about the above questions and I cant go forward for the simulation. May I have your answer for my questions? Or your colleagues could also give me some advices when they are not busy. @Ossama_Ahmed @toni.sm If so, I really appreciate your relpy~
I am also a bit confused about the timing and would appreciate an update on @jade.cong s question.
@rthaker you stated the following:
This does not seem right. I have set the “Min Simulation Frame Rate” in the Physics Settings to 60, but the On Tick is updated with a different (variable) frequency.
My use-case is a bit different from the one in the original question here, but still similar. I would like to trigger a function in an extension periodically with a fixed frequency. I stumbled across the timeline event stream, which I think gives the same timing as the On Tick Omnigraph node:
timeline_events = omni.timeline.get_timeline_interface().get_timeline_event_stream()
self.timeline_event_sub = timeline_events.create_subscription_to_pop(self.on_timeline_event)
However, this is not really what I need. Is it somehow possible to trigger a function in an extension periodically with a constant frequency, e.g. 10 Hz?
Hi @clemens.linnhoff1 - Someone from our dev team will reach out and answer the timeline questions.
May I have your answers for my confusion? Thank you so much.
Hi @jade.cong - Devs are currently busy working on the upcoming release (coming by end of this month). I will put this on their radar after that.
Thank you for your patience.
Appreciate that greatly~
Since it has been some time since the Isaac Sim release, is there any update on this topic?
Hello @rthaker, I am facing something similar. I want to keep ticking the omnigraph at a constant frequency. Can we have an update on the topic?
Hi @rthaker , just bumping this please. Thanks!
Hi @ajong - We have included simulation timeline section in recent 4.0 release, does that help answer your question?
https://docs.omniverse.nvidia.com/isaacsim/latest/simulation_fundamentals.html#simulation-timeline