Synchronize linux against PPS clock with Piksi Multi RTK

asked 2021-02-26 05:23:17 -0500

xaru8145 gravatar image

updated 2021-02-26 05:25:39 -0500

I would like to sync my Arm computer host clock with the PPS clock from a GPS.


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.


In order to sync the clock of an ARM host with PPS clock you need 2 things:

  1. Absolute time
  2. 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?

I have also filed a ticket in Swift Navigation but I am curious if someone has faced a similar issue before or has any suggestion.

Thanks so much! Any help is greatly appreciated.

edit retag flag offensive close merge delete