Synchronize linux against PPS clock with Piksi Multi RTK
I would like to sync my Arm computer host clock with the PPS clock from a GPS.
Setup
My host computer is an Nvidia Jetson Xavier and is connected to the Piksi through ethernet using tcp.
I am using Swift Navigation Piksi Multi RTK GPS. It uses SBP (Swift Navigation Binary Protocol) as the communication protocol and I use the ethz_piksi_ros driver to read those SBP msgs and transform them into a ROS message. There is an option to get the GPS time instead of doing ros.Time.Now
and getting the time after processing the message. We also use the Swift Navigation Evaluation board that can be connected to a GPIO on the NVIDIA and read the PPS signal.
Requirements
In order to sync the clock of an ARM host with PPS clock you need 2 things:
- Absolute time
- PPS signal
Current solutions
I have spend a decent amount of time doing some research on syncing the clocks and the typical way to go is use gpsd to read the absolute time from GPS through NMEA protocol using serial communication. Then, it uses this time together with PPS and syncs the clocks using chrony or ntpd.
Needed solution
However, instead of using NMEA I use SBP and rather than serial communication I use ethernet. I have the absolute time in a ROS message that I am hoping I can use somehow rather than having an extra connection to read again the time in a way gpsd supports. Is there any way I can do the clock synchronization with my current setup? Has someone attempted something similar or researched about this?
Thanks so much! Any help is greatly appreciated.