ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The primary ROS tutorials do not mention time as they make the assumption that your hosts have synchronized walltime. This is discussed in: http://wiki.ros.org/Clock

The most standard way to synchronize over the network is using the chrony ntp agent (Your #3) . During PR2 development we spent a lot of time figuring out how to coordinate effectively and we found nothing that out performed chrony's ntp agent. To get the best results you can set it up in a higherarchical manner if you have a group of machines on an internal robot network which is then connected over wifi to a larger network (your #2). Chrony has a lot of logic for detecting and measuring network latency and network drops while making it's estimates which is why it out performs most other agents.

I have not personally used the TimeReference plus ntpd_driver packages. This his highly dependent on your time source and locality of that time source. For latency purposes that topic is likely only best used in localhost or very well connected networks. This mechanism is best used when you have an accurate hardware clock locally connected such as a GPS device. This can be very powerful in an autonomous car use case such as autoware, with one or more high precision GPS devices and very low latency networks locally. However, if it's just a raspberry pi on the network I would strongly suggest going with the simpler solution. NTP via Chrony was good enough for the PR2 to leverage it's actively tilting laser and moving arms simultaneously from different computers.