Hi everyone,
I’m running a Jetson AGX Orin as a companion computer connected to a Pixhawk V6X through the micro-XRCE-DDS bridge. I process camera images on the Jetson and need to align them with IMU timestamps coming from PX4.
To calibrate the static timestamping delays, I used the ETH “Kalibr” tool and obtained reasonable, fixed relative offsets for:
- Camera sampling → camera timestamp
- IMU sampling → IMU timestamp
These static offsets are not my issue.
The problem is the relative drift between the Jetson clock and the Pixhawk clock.
What I observe
-
When NTP is enabled on the Jetson, I see sudden jumps in the observed time offset between Jetson ROS time and the incoming IMU timestamps.
I assume these are coming from the NTP syncs right? -
After disabling NTP, the jumps disappear — I now see a slow, constant drift between the two monotonic clocks - which is what I would expect for 2 perfectly monotonic clocks.
-
Now however I see that in some rosbags, the IMU timestamps (converted to rostime using micro-xrce-dds) are newer than the logged current time by up to 20ms which is not physically possible.
-
Across multiple recordings, the IMU-to-Jetson delay varies significantly (from -60 ms down to near +20 ms).
This suggests that:
- The clocks of the Jetson and Pixhawk do not run at exactly the same rate.
- The micro-XRCE-DDS bridge sync is not sufficient to keep them aligned under drift.
- With NTP disabled, both clocks stay monotonic but dds bridge does not do a good job in estimating the correct offset
My question
Is this clock drift a known limitation of the micro-XRCE-DDS bridge time sync?
And if so, what is the recommended way to ensure stable, consistent timestamp alignment between the Jetson and the Pixhawk?
Any suggestions or experiences with similar setups would be very helpful as a 20ms accurate alignment is not an option for my usecase.
Hope I outlined the problem well enough

