Synchronization

Parallelism needs synchronization.

Avoid Data Race.

Synchronization methods

Time Synchronization

Time synchronization done using NTP Server.

This is actually a very real problem back in the old days?

The actual time is defined by the revolutions of the earth around the sun.

if you know your time, and the location of the sun, you can figure out your position exactly. Use that for navigation.

The difficulty with time synchronization is that a bunch of regions work in different timezones. Just think Daylight savings time.

The Problem with Time & Timezones - Computerphile - YouTube

Error at Enlighted

At Enlighted, I was working on a Create3 which was connected to a Raspberry Pi. Here, there is a time synchronization problem because there are actually 2 clocks being used:

  1. The Create3 has its own clock, which is the time that the sensors use
  2. The Rasperry Pi has its own system clock

Because of this, if you start up something like Rviz or Nav2 on the Raspberry Pi side, it will use Raspberry Pi’s time. However, the sensors are stamped with the Create3 time.

It seems that things are done over wire, but there were still latency issues.

At NVIDIA

This is even more important at NVIDIA, since we LOVE making things run FAST here. So every millisecond counts. If you look at the way we do this:

“Argus provides multi-camera frame synchronization”.

Ashwin explained to me how there are 2 ways:

  1. You can have a physical wire that forces the hardware to synchronize, called a Hardware Trigger
  2. You have some sort of software fix to account for the time offset