两台具有Internet连接的Ubuntu 16.04台式机之间的时间同步

两台具有Internet连接的Ubuntu 16.04台式机之间的时间同步,ubuntu,synchronization,ubuntu-16.04,ros,unix-timestamp,Ubuntu,Synchronization,Ubuntu 16.04,Ros,Unix Timestamp,我有两台Ubuntu 16.04台式机,它们都安装了ROS。我正在发布使用其中一台计算机的数据,并在另一台计算机上订阅该数据。我已经编写了一个计算延迟的小脚本。脚本使用与数据关联的Unix时间戳测量当前Unix时间。但是,我得到了负延迟(即,我在数据发布之前接收数据),这是没有意义的 这两台机器之间显然存在时间同步问题。我的假设是,连接到互联网的Ubuntu系统已经同步。我们不需要执行任何其他同步。我的假设错了吗?我需要在两台机器之间执行某种同步吗 谢谢大家! 是的,当在多台机器上运行ROS时,

我有两台Ubuntu 16.04台式机,它们都安装了ROS。我正在发布使用其中一台计算机的数据,并在另一台计算机上订阅该数据。我已经编写了一个计算延迟的小脚本。脚本使用与数据关联的Unix时间戳测量当前Unix时间。但是,我得到了负延迟(即,我在数据发布之前接收数据),这是没有意义的

这两台机器之间显然存在时间同步问题。我的假设是,连接到互联网的Ubuntu系统已经同步。我们不需要执行任何其他同步。我的假设错了吗?我需要在两台机器之间执行某种同步吗


谢谢大家!

是的,当在多台机器上运行ROS时,您肯定会遇到计时问题。你通常看到的差异有多大

ROS推荐的解决方案是使用名为的包。您可以使用它专门同步两台机器上的时钟。在同一局域网上,它们应该同步到至少微秒。它可以通过apt安装

sudo apt install chrony

然后,您只需将一台计算机设置为
主机
,并使其与NTP服务器同步,另一台计算机将其时间与
主机
同步

您无法通过从internet同步两台计算机的时钟并使用系统时钟计算差异来获得内部网络的准确延迟,至少不是直接的。你至少要计算出两台计算机之间的时差。更合理的方法可能是用PTP而不是NTP同步计算机。大多数现代网卡都支持PTP。此外,不确定您为什么需要知道延迟,如果您正在做一些非常时间关键的事情(比两台电脑之间的NTP时间同步差更时间关键),那么您可能需要将您的电脑与PTP同步以获得更高的准确性。如果时间不是那么关键,那么为什么不使用ping等标准工具获取两台PC之间的延迟呢。我想我想说的是,最好给你的问题添加一些上下文,比如你想用同步解决什么问题。@Falcon先生谢谢你的回答。我想根据收到的视频信息实时控制车辆。当车辆移动时,我需要找到接收图像的时间延迟。这将有助于我分析在不发生碰撞的情况下可以达到的最大速度。@doggie_breath的解决方案对于您的用例来说非常准确。据我所知,使用chrony的syncinc将使您的时钟在数百微秒之内。使用PTP可以实现亚微秒级的同步。但是,在teleop设置*IMO中,即使是毫秒的差异也不会有什么影响。无论如何,如果您想尝试PTP是一个教程链接,它是基于fedora的,因此您可能需要调整它。