在实际开发中遇到需要 ROS1 与 ROS2 通讯的场景,查阅资料发现可以通过 ros1_bridge 这个包解决。
我的环境
- Ubuntu 20.04
- ros1 noetic
- ros2 foxy
安装 ros1_bridge
source /opt/ros/foxy/setup.bash
sudo apt install ros-foxy-ros1-bridge
问题
查阅相关教程均告知,在分别运行 ROS1 与 ROS2 的节点之后,再新开一个终端,在该终端中同时刷新 ROS1 与 ROS2 环境变量,并运行 ros1_bridge 即可,如下
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
ros2 run ros1_bridge dynamic_bridge
看其他人说可以进行通讯,但我的没有成功,在 ROS2 中没有读取到 ROS1 的话题。
解决办法
ROS2 官网教程
通过查询 ROS2 官网教程最终找到解决办法,如下:
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
在最后一条命令添加 –bridge-all-topics 这一参数,最终成功实现 ROS1 与 ROS2 通信。