ROS多机通信时间同步

笔记本电脑和树莓派系统上安装Uuntu18.04系统,通过ROS系统建立局域网实现机器人多机通信,笔记本电脑作为终端对带有树莓派系统的机器人控制,由于没有与外网连接在进行ROS开发的过程中,这两个系统时间不同步带来了很多问题,解决方法是:树莓派断电后没有电池给系统时钟供电,因此将笔记本设置为ntp服务器,树莓派设置为ntp客户端。

下面介绍如何通过ntp来对局域网内的两台电脑进行时间同步。

刚开始没主要两个系统之间的时间差,用ROS系统进行多机通信时出现了如下的错误:

运行卡尔曼滤波融合代码出现如下错误"Could not transform imu message from imu_link to base_footprint. Imu will not be activated yet.":

ROS多机通信时间同步

 1.在树莓派系统和笔记本电脑上安装ntp服务器,笔记本电脑和树莓派系统ntp、ntpdate这两个包是都需要安装

sudo apt-get install ntp
sudo apt-get install ntpdate

 2.在笔记本电脑(服务端)运行sudo gedit /etc/ntp.conf在文件末尾加入如下几行代码:

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10

第一行是为了能让192.168.1.xxx网段上的机器能和本机进行时间同步(具体看你的ip是不是192.168.1.xxx,如果不一样的话,改成你实际的格式),第二行和第三行是为了让本机的硬件时间和本机的ntp服务进行时间同步。

3.在笔记本电脑设置好之后,重启ntp服务

sudo /etc/init.d/ntp restart

 服务器端设置完成,下面开始客户端的设置:

4.在客户端(树莓派)系统上运行sudo gedit /etc/ntp.conf在文件末尾加入一行代码:

server 192.168.1.xxx

 把ip改成服务器端的ip地址即可

5.重启客户端(树莓派)ntp服务

sudo /etc/init.d/ntp restart

笔记本(服务端)的ntp服务器启动完成之后,在启动树莓派(客户端)的ntp服务器,笔记本电脑和树莓派的ntp启动完成之后就时间就会自动同步。

如果时间启动没有成功可以采用如下命令查看ntp的状态:

service ntp status

如果打印出以下信息说明ntp启动成功:

ROS多机通信时间同步

确定启动成功之后在打开ntp服务器,实现多机之间时间同步。

上一篇:centos7 ntp 时间同步


下一篇:时钟同步设备(NTP时间同步)工作模式讲解