[ros2实操]2-ros2的消息和ros1的消息转换
创始人
2024-02-09 02:37:33
0

记录一下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

相关内容

热门资讯

昆虫记主要内容的介绍 昆虫记主要内容的介绍  昆虫记又称《昆虫世界》《昆虫物语》《昆虫学札记》或《昆虫故事》,是法国昆虫学...
中国名人小故事 中国名人小故事一:苏洵发愤  苏洵是宋朝著名的文学家,唐宋八大家之一。他小时候很贪玩,直到二十七岁才...
非主流伤感唯美的句子 非主流伤感唯美的句子  1、习惯难受,习惯思念,习惯等你,可是却一直没有习惯看不到你,非主流伤感唯美...
聚会年会团建互动小游戏 聚会年会团建互动小游戏  一、游戏的发展演变  游戏,伴动物而生。在动物世界里,游戏是各种动物熟悉生...
关羽温酒斩华雄的故事 关于关羽温酒斩华雄的故事  故事在现实认知观的基础上,对其描写成非常态性现象。是文学体裁的一种,侧重...
《三字经》里的11个小故事 关于《三字经》里的11个小故事  故事是在现实认知观的基础上,对其描写成非常态性现象。是文学体裁的一...
姜子牙的故事 姜子牙的故事  姜子牙,姜姓,吕氏,名望,字子牙,也称吕尚、姜尚俗称姜子牙商朝未年人相传姜子牙的先祖...
爱情的童话故事 浪漫的爱情短句推荐度:形容爱情的成语推荐度:小动物的童话故事推荐度:爱情的英文诗句推荐度:爱情的英语...
《伤仲永》原文及翻译 导语:讲述了一个江西金溪人名叫“方仲永”的神童因后天父亲不让其学习而被当作“造钱工具”而沦落到一个普...
《皇帝的新装》说课稿 《皇帝的新装》说课稿  《皇帝的新装》是一个寓言故事,相信很多小朋友都听过,《皇帝的新装》说课稿。小...
安徒生的童话故事:《昆虫失踪... 安徒生的童话故事:《昆虫失踪记》  黑猫警长是动物王国里的一位神探。  有一天,黑猫警长接到了一个案...
我与宪法的故事的演讲稿 我与宪法的故事的演讲稿(精选10篇)  俗话说得好:国有国法,家有家规一个良好、安定的的国家,肯定需...
戴嵩画牛寓言故事 戴嵩画牛寓言故事(精选18篇)  在平日的学习、工作和生活里,大家对寓言故事都不陌生吧,寓言多用借喻...
安徒生童话《癞蛤蟆》 安徒生童话故事推荐度:《安徒生童话》读后感推荐度:《安徒生童话》读后感推荐度:《安徒生童话》读后感推...
《海底两万里》读书笔记手抄报...   最近,老师叫我们写海底两万里的读书笔记,我只好去买了这本书来看,一开始我只是打算随便看看的,可当...
清廉家风故事征文 清廉家风故事征文  家风,又称“门风”,是家庭或家族的传统风尚,清廉家风故事征文。任何家庭成员的“一...
大唐荣耀剧情全集介绍 大唐荣耀剧情全集介绍  剧情介绍 ,电视剧情介绍,电影剧情介绍 ,指一个故事(电视,电影)的大概戏剧...
成语故事:邯郸学步 -小学生...   相传在两千年前,燕国寿陵地方有一位少年,不知道姓啥叫啥,就叫他寿陵少年吧!这位寿陵少年不愁吃不愁...
乌龟的智慧寓言故事 乌龟的智慧寓言故事  从前有一只乌龟,想要独占全世界的智慧,做世界上最聪明的动物。它想让所有人,无论...
经典搞笑的童话故事 经典搞笑的童话故事  童话是一种小说题材的通俗文学作品,通常是写给孩子看的。  杰克与豌豆  从前,...