4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):
Operating System
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):
GPU Information
Model: A40-48Q
Driver Version: 550.127.05
Topic Description
Detailed Description
I want my simulation to take place in real-world scenarios where a realistic concept of time is relevant. For example, the simulation should start at a certain point in time, like 23nd January 2020, 9:45:34.1234. I would use a ROS publisher to publish camera images while the simulation runs. My expectation is that the ROS message contain timestamps representing the real time in unix time. The recommended way to set up ROS publishing for images is to use an OmniGraph with a ROS Camera Helper Node, like described here:
Unfortunately, the SDG pipeline generated by the helper node uses the “Isaac Read Simulation Time” node that does not provide any control over the simulation start time. So it will provide timestamps starting with 0 and not with my desired simulation start timestamp.
How can I approach this issue? Any help appreciated!
I can use set_start_time and set_end_time to set start and end of the simulation using unix timestamps. The timeline will properly provide the correct simulation time during simulation run, but the SDGPipeline does not use the timeline time as the ROS timestamp, but instead the time provided by “Isaac Read Simulation Time” which completely ignores my start and end time settings on the timeline.
I do not want the current system time to be used as a ROS message timestamp.
Let us assume I run a simulation today. My goal is to produce a simulation that represents something happening in the last year. The simulation time should start counting at 15th January 2024 11:00 GMT for example. This means I need a way to set the start timestamp to 1705312800. Unfortunately the graph set up by the ROS2 Camera Helper node does not support setting a user defined start timestamp and the start time of the omni.timeline interface is ignored.
Could you elaborate on why you need the simulation to start at a specific point in time? What are the primary use cases or scenarios where this custom start time is essential?
we use Isaac Sim in the context of automated trains. In order to train and validate onboard AI, we need realistic synthetic data, including sensor data (camera, lidar, radar), and annotations. The systems under test consume data encoded in ROS messages and they rely also on correctness of timestamps. The timestamps from the ROS messages are interpreted like Unix time. When I feed a message from Isaac Sim into such a system that contains a timestamp of 0 or close to 0, it would be interpreted as a date of 1st January 1970, which would be unusable for our testing purposes.
I need control over the timestamps published via the Isaac Sim publishers.
An internal ticket has been created to request support for this feature in the “ROS2 Camera Helper” node. We will update you here as soon as there is progress or any updates regarding this feature request.
In the meantime, you can work around this limitation by post-processing the ROS message timestamps. Specifically, you can modify the timestamps of each received ROS message by adding a calculated offset that corresponds to your desired simulation start time. This can be achieved using a custom ROS node or script that listens to the topic, adjusts the timestamps, and republishes them.