Applies to v0.1.0.
Frames & time
The simulator publishes a full TF tree and, when you ask for it, a simulation clock. This page is the reference for the frame names, where each one sits, and the one case where you need /clock.
The frame tree
Unity publishes every transform on /tfat 30 Hz. Everything hangs off a single fixed frame, odom:
| Frame | Parent | Where it is |
|---|---|---|
odom | — | The fixed world frame. It never moves; the car moves within it. Use this as the fixed frame in rviz and Foxglove. |
base_link | odom | The car body. Its origin is the mid-wheelbase ground point — halfway between the axles, on the floor. |
laser | base_link | The LiDAR, at the pose you gave it in Sensor Setup. |
imu_link | base_link | The IMU. |
gnss_link | base_link | The GNSS antenna — the point its fix reports. |
{camera}_link | base_link | Each camera, named from the sensor in Sensor Setup. |
The sensor frames sit at the Extrinsics you set in the Sensor Setup panel, so moving a sensor on the car moves its frame here too. The ego pose in /ego/odom is the transform from odom to base_link.
Simulation time: /clock
By default the simulator runs in step with the wall clock, and /clock ships disabled. In that mode your nodes use their own system time, exactly as they would against real hardware, with nothing to configure.
Enable /clock in the Network panel only when you set time_scale ≠ 1 , that is, when the simulation runs faster or slower than real time. Then tell your nodes to follow it:
# ROS 2 — per node
ros2 run <pkg> <node> --ros-args -p use_sim_time:=trueWith use_sim_time set, timestamps and TF stay consistent even when a second of simulation is not a second on your watch. At time_scale = 1 it is unnecessary. Leave the clock off.