[ros2实操]2-ros2的消息和ros1的消息转换

记录一下ros2和ros1消息互传的操作

!!!需要注意的是,只有ros1订阅了相关ros2的消息时,ros1_bridge节点才会转发相关消息.

参考链接

1,docker镜像链接:待定
2,github教程:Bridge communication between ROS 1 and ROS 2

一.准备步骤

为在自己原来的系统ubuntu1804上同时安装了ros1和ros2,但是不知道为什么ros2不能正常使用,所以我就用docker创建了一个ubuntu1804的容器,接下来的操作都是在容器里面做的.在容器里面安装ros1和ros2.

操作具体见:[ros2实操]1-ros2的安装(ubuntu1804)与运行

二.ros2与ros1消息互转实例

这里就用一个例子说明,整个过程需要开启四个终端.并且,ros1运行在我的主机里面,ros2运行在docker容器里面.采用主从通信的方式.

第一个终端:roscore

在主机开一个终端,设置ROS环境变量,然后运行roscore.
docker_host和master_host和对应的ip我们已经提前写到/etc/hosts里面了.

export ROS_HOSTNAME=master_host
export ROS_MASTER_URI=http://master_host:11311
source /opt/ros/melodic/setup.bash
roscore

在这里插入图片描述

第二个终端:ros1_bridge

我们在ros2的容器环境中启动ros1_bridge.
(容器中ros的host和ip我们也已经在/etc/hosts中配置好了.)
此时需要同时source ros1和ros2的环境

export ROS_HOSTNAME=docker_host
export ROS_MASTER_URI=http://master_host:11311
source /opt/ros/melodic/setup.bash
source /opt/ros/eloquent/setup.bash
ros2 run ros1_bridge dynamic_bridge

在这里插入图片描述

第三个终端: talker

在ros2容器环境下运行talker节点

export ROS_HOSTNAME=docker_host
export ROS_MASTER_URI=http://master_host:11311
source /opt/ros/eloquent/setup.bash
ros2 run demo_nodes_py talker

运行后会不断发布helloworld的消息
在这里插入图片描述

第四个终端:listener

在主机ros1环境下,运行listener节点.

export ROS_HOSTNAME=master_host
export ROS_MASTER_URI=http://master_host:11311
source /opt/ros/melodic/setup.bash
rosrun roscpp_tutorials listener

可以看到已经成功接受到来自ros2转换后消息
在这里插入图片描述
为了每次不用反复的输入环境变量,我们在主机端~/.bashrc目录下加入:

export ROS_HOSTNAME=master_host
export ROS_MASTER_URI=http://master_host:11311

在容器端~/.bashrc目录下加入:

export ROS_HOSTNAME=docker_host
export ROS_MASTER_URI=http://master_host:11311

这样每次启动终端就自动设置ROS的环境变量了.

三.其他例子

我们再搞一个小乌龟的例子.

  • 第一个终端:roscore
    ros1环境下启动roscore
source /opt/ros/melodic/setup.bash
roscore

在这里插入图片描述

  • 第2个终端:ros1_bridge
    ros2环境下启动ros1_bridge
source /opt/ros/melodic/setup.bash
source /opt/ros/eloquent/setup.bash
ros2 run ros1_bridge dynamic_bridge

在这里插入图片描述

  • 第3个终端:ros2 turtlesim_node
    ros2环境下启动乌龟仿真器
source /opt/ros/eloquent/setup.bash
ros2 run turtlesim turtlesim_node

在这里插入图片描述
第四个终端:ros2 turtle_teleop_key

source /opt/ros/eloquent/setup.bash
ros2 run turtlesim turtle_teleop_key

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值