笔记本电脑和树莓派系统上安装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.":
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启动成功:
确定启动成功之后在打开ntp服务器,实现多机之间时间同步。