如何测试ROS1(Melodic)包API与自研ROS2包的兼容性?
ROS1包与自研ROS2包API协同测试方法
要让你的ROS1包和自研ROS2包的API协同工作,核心依赖是ros1_bridge工具,它能实现ROS1与ROS2之间话题、服务、动作的跨版本通信。以下是具体操作步骤:
1. 环境准备
确保Ubuntu18.04系统上同时安装:
- ROS1 Melodic(已完成你的ROS1包测试)
- ROS2 Eloquent(适配Ubuntu18.04的LTS版本,与Melodic兼容性最佳)
安装ROS2后,先加载其环境变量:
source /opt/ros/eloquent/setup.bash
2. 构建ros1_bridge
ros1_bridge需要在同时兼容ROS1和ROS2的混合工作空间中构建:
# 创建混合工作空间 mkdir -p ~/ros1_ros2_ws/src cd ~/ros1_ros2_ws/src # 克隆适配ROS2 Eloquent版本的ros1_bridge源码 git clone https://github.com/ros2/ros1_bridge.git -b eloquent # 安装依赖 sudo apt update rosdep install --from-paths src --ignore-src -r -y # 同时加载ROS1和ROS2环境后构建 source /opt/ros/melodic/setup.bash source /opt/ros/eloquent/setup.bash colcon build --symlink-install --packages-select ros1_bridge
3. 准备ROS1与ROS2工作空间
- 你的ROS1包保持在原
~/catkin_ws,确保已构建并加载环境:
cd ~/catkin_ws catkin build source devel/setup.bash
- 将自研ROS2包放入ROS2工作空间(如
~/colcon_ws/src),构建并加载环境:
cd ~/colcon_ws colcon build source install/setup.bash
4. 启动桥接并测试API协同
步骤1:启动ROS1核心
打开第一个终端:
source /opt/ros/melodic/setup.bash roscore
步骤2:启动ros1_bridge
打开第二个终端,加载所有必要环境变量后启动动态桥接:
source /opt/ros/melodic/setup.bash source /opt/ros/eloquent/setup.bash source ~/ros1_ros2_ws/install/setup.bash source ~/catkin_ws/devel/setup.bash source ~/colcon_ws/install/setup.bash # 动态桥接会自动识别跨版本的话题/服务/动作 ros2 run ros1_bridge dynamic_bridge
步骤3:测试API交互
根据你的ROS1包API类型,选择对应测试方式:
- 话题通信:启动ROS1节点发布话题,用ROS2节点订阅,或反向操作,验证数据是否正常传输;
- 服务调用:用ROS2客户端调用ROS1包提供的服务,或用ROS1客户端调用ROS2包的服务,检查请求响应是否正常;
- 动作通信:测试ROS1动作服务器与ROS2动作客户端的交互,或反向测试,确认目标执行、反馈、结果的传递是否无误。
如果需要针对特定API做性能更优的静态桥接,可以参考ros1_bridge的官方文档生成对应桥接代码后重新构建。
内容的提问来源于stack exchange,提问作者Bob9710
相关产品推荐
相关产品推荐

