欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2. ROS的多机通讯的配置

程序员文章站 2022-07-14 22:26:26
...

配置准备

  1. 输入sudo apt-get install ros-kinetic-turtlesim下载安装turtlesim测试包,完成后首先运行roscore
  2. 再打开一个终端输入rosrun turtlesim turtlesim_node,不出意外的话会出现一只乌龟
    2. ROS的多机通讯的配置
  3. 再另外一个终端输入rosrun turtlesim turtle_teleop_key
    可以通过上下左右键控制乌龟运动了

多机通讯

想在PC上直接按键控制树莓派上的乌龟运动,要如何操作呢?
主机与树莓派信息如下:

Item IP Hostname
PC 192.168.31.111 robot-dekstop
树莓派 192.168.31.107 pi-desktop

相互ip可以通,因为未添加hostname ip映射,相互无法通过hostname联系

  1. 在树莓派上运行roscore和启动turtlesim_node
  2. PC上想要与之通讯首先必须设置ROS_MASTER_URI,export ROS_MASTER_URI='http:192.168.31.107:11311'即可,在PC中断输入rostopic
    list即可看到当前的所有topic列表,说明PC已经可以与ROS_MASTER建立通讯了
    2. ROS的多机通讯的配置
  3. 这时PC端启动rosrun turtlesim turtle_teleop_key无法控制乌龟运动,为什么呢?这里明明rostopic明明可以看到/turtle/cmd_vel。 键入rostopic info /turtle/cmd_vel 显示如下
    2. ROS的多机通讯的配置
    这就明显了,主机从master里面取到的node发送/订阅的topic信息,node地址为http://pi-desktop:46395, PC根本不认识pi-desktop为何物,自然无法发送数据。
  4. 如何修改?自然有2个方法:
    • 这个我不认识换个我认识的来,修改树莓派端的ROS_IP环境变量 export ROS_IP=192.168.31.107
      再次查看topic信息,
      2. ROS的多机通讯的配置,现在就认识了,启动rosrun turtlesim turtle_teleop_key节点,发现仍然无法控制。问题是我认识你,可是你不认我啊,所有本地PC也需要export ROS_IP=192.168.31.111,现在就正常了
    • 这个我不认识,我现在认识下不就行了,PC端修改/etc/hosts 添加一个192.168.31.107 pi-desktop,同时树莓派端一样修改/etc/hosts 添加 192.168.31.111 robot-desktop

PIBOT配置

PIBOT相关配置如下

ROS主机(树莓派等)

source /opt/ros/indigo/setup.bash
LOCAL_IP=`hostname -I`
export ROS_IP=`echo $LOCAL_IP`
export ROS_HOSTNAME=`echo $LOCAL_IP`
export PIBOT_MODEL=apollo
export PIBOT_LIDAR=rplidar
export ROS_MASTER_URI=`echo http://$ROS_IP:11311`
source ~/pibot_ros/ros_ws/devel/setup.bash

PC

source /opt/ros/indigo/setup.bash
LOCAL_IP=`hostname -I`
export ROS_IP=`echo $LOCAL_IP`
export ROS_HOSTNAME=`echo $LOCAL_IP`
export PIBOT_MODEL=apollo
export PIBOT_LIDAR=rplidar
export ROS_MASTER_URI=`echo http://xxx.xxx.xx.xx:11311`
source ~/pibot_ros/ros_ws/devel/setup.bash

xxx.xxx.xx.xx为ROS主机IP

总结

多机通讯只能有一个master存在,所有都设置ROS_MASTER_URI为http://MASTER_IP:11311, 各个终端要能相互通讯就必须设置自己的ROS_IP。”

相关标签: ros 树莓派