6_在ROS下配置多机通信方法2——使用zeroconf

1.安装软件包并配置zeroconf   

        在ROS网络中,由于tf转换和很多消息类型都被标上了时间戳,机器之间的时间同步就非常重要了,一种使各计算机保持时间同步状态的方法就是在各计算机上安装chrony和ntpdate软件包,该软件包会保持计算机的时钟与网络上时间服务器的时钟一致,我们使各计算机的时间与时间服务器时间同步来达到各计算机时间同步的目的,使用如下命令来安装chrony和ntpdate:

在PC 和 TX2 nvidia板子 分别安装

sudo apt-get install -y chrony ntpdate

    

当安装好软件后就可以来进行时间同步了,时间同步命令如下:

sudo ntpdate -u cn.ntp.org.cn

   

2.使用Zeroconf配置ROS主机间通信

在经常使用的Linux系统上,如ubuntu系统使用avahi来实现zeroconf,avahi 是Zeroconf规范的开源实现,其包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现。Avahi允许程序在不需要进行手动网络配置的情况下,在一个本地网络中发布和获知各种服务和主机。例如,当某用户把他的计算机接入到某个局域网时,如果他的机器运行有Avahi服务,则Avahi程式自动广播,从而发现网络中可用的打印机、共享文件和可相互聊天的其他用户。这有点象他正在接收局域网中的各种网络广告一样。Linux下系统实际启动的进程名,是avahi-daemon,通过以下命令可以查看当前系统上是否启动了avahi-daemon守护进程:

ps aux|grep avahi

   

        分别在PC和TX2 nvidia 板子home目录下的.bashrc文件,在这里我们把robot作为ROS master主机,所以ROS_MASTER_URI指向的是自己robot.local.

PC ycy:
#config multi-machine ROS communication zeroconf
#export ROS_IP=192.168.31.76
export ROS_HOSTNAME=ycy-robot.local
export ROS_MASTER_URI=http://tegra-ubuntu.local:11311

robot nvidia:
#config multi-machine ROS communication zeroconf
export ROS_IP=192.168.31.76
export ROS_HOSTNAME=tegra-ubuntu.local
export ROS_MASTER_URI=http://tegra-ubuntu.local:11311

   3. 试ROS主从机之间的通信

  • 在TX2 nvidia 启动roscore后,还需要启动turtlesim一个仿真小乌龟的节点:

    rosrun turtlesim turtlesim_node

  • 在台式机上运行键盘遥控小乌龟移动的节点:

    rosrun turtlesim turtle_teleop_key



    

猜你喜欢

转载自blog.csdn.net/ycy_dy/article/details/80250863
今日推荐