ROS多机通信时间同步

13 篇文章 0 订阅

笔记本电脑和树莓派系统上安装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和ntpdate程序在树莓派安装完成并且设置完成之后,接下去就可以实现系统间同步。

1、笔记本电脑(服务器端)开机之后会自动启动ntp服务器,如果不确定笔记本电脑端是否启动ntp服务可输入如下命令查看是否有启动ntp服务。这边需要注意的是:如果重启ntp守护进程后,服务器端有可能无法立即更新时间,这是因为每次重启ntp服务器之后大约要3-5分钟客户端才能与服务器建立正常的通讯连接,客服端需要等待3-5分钟左右再发送命令更新即可。

service ntp status

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

2、关闭树莓派的ntp服务,只需打开服务器的ntp服务即可,如果没有把树莓派ntp关闭则会出现冲突

sudo /etc/init.d/ntp stop

3、在树莓派端输入如下命令实现树莓派系统与服务器端的时间同步

sudo ntpdate 192.168.1.xxx

启动192.168.1.xxx为服务器的IP,如果输入该命令之后出现如下错误提示

提示错误“no server suitable for synchronization found”,出现这种错误提示一般是服务器的ntp服务没打开或者是等待的时间不够长(服务端ntp需要启动5分钟左右才能进行时间同步)

时间同步成功如下所示:

在终端输入date命令可以查看系统当前时间

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值