# ROS (1) 通过 ROS 2 桥接器(用户指南)
本专题介绍如何通过桥接将 ROS (1) 与 PX4 ROS 2.
它概述了 ROS-ROS2-PX4 架构,以及如何安装所有所需软件和构建 ROS (1) 应用程序的说明。它还包括如何同时运行/设置 ROS 2 和 ROS 1 工作区。
备注
一般情况下,您可以使用这种设置,而不是桥接 ROS (1) 与 MAVROS 如果您希望对 PX4 进行比 MAVLink 更深入的访问,或者如果您希望同时使用 ROS2 和 ROS (1) 应用程序。
备注
此设置和这些说明 取决 关于 ROS 2.我们强烈建议您先阅读一下 ROS 2。
备注
PX4 开发团队建议所有用户 升级到 ROS 2.
# 概述
在 ROS 2 上桥接的 ROS (1) 应用程序管道如下所示。
基本上与 ROS 2 相同,只是多了一个 ros1_桥
(打开新窗口) 软件包(由 Open Robotics 提供),可在两个版本之间转换信息。这是因为 ROS 的原始版本不支持 RTPS。
另一个主要区别是 px4_ros_com
和 px4_msgs
包一个单独的 玫瑰1
分支,生成 ROS 消息头和源文件,以便使用 与 的 ros1_桥
.该分支还包括监听器和广告商节点示例。
# 安装和设置
请按照 ROS 2 用户指南> 安装& 设置 安装 ROS 2。
# 构建 ROS (1) 工作区
由于 ROS 需要与 ROS 不同的环境,因此您需要创建一个单独的工作区。这将包括 玫瑰
分支 px4_ros_com
和 px4_msgs
以及 ros1_桥
.
创建和构建工作区:
- 创建 ROS 1 工作区目录:
$ mkdir -p ~/px4_ros_com_ros1/src
- 克隆 ROS 1 桥接软件包
px4_ros_com
和px4_msgs
到/src
目录(该玫瑰1
分支):$ Git clone https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros1/src/px4_ros_com -b ros1 # 克隆 "ros1 "分支 $ Git clone https://github.com/PX4/px4_msgs.git ~/px4_ros_com_ros1/src/px4_msgs -b ros1
- 使用
build_ros1_bridge.bash
脚本来构建 ROS 工作区(包括px4_ros_com
,px4_msgs
和ros1_桥
).$ Git checkout ros1 $ CD 脚本 $ 消息来源 build_ros1_bridge.bash
TIP
您还可以用一个脚本同时构建 ROS (1) 和 ROS 2 工作区:
build_all.bash
.最常见的使用方法是传递 ROS(1) 工作区目录路径和 PX4 自动驾驶仪目录路径:$ 消息来源 build_all.bash --ros1_ws_dir <;path/to/px4_ros_com_ros1/ws>;
# 检查安装是否合理
正如 ROS 2 用户指南 > 正确检查安装 验证安装的一个好方法是通过 PX4 模拟器来测试网桥是否能与 PX4 通信。
使用 ROS (1) 和 ROS 2(您需要同时使用这两项功能!):
设置 PX4 Ubuntu Linux 开发环境 - 根据默认说明获取最新版本的 PX4 源代码并安装所有需要的工具。
在 PX4 自动驾驶仪 项目,然后开始使用 PX4 Gazebo 仿真:
生产 PX4_SITL_RTPS 仿真场景Gazebo
PX4 完全启动后,终端将显示 NuttShell/系统控制台.
在另一个终端上,创建 ROS 2 环境和工作区,并启动
ros1_桥
(这样 ROS 2 和 ROS 节点就能相互通信)。同时设置ROS_MASTER_URI
其中玫瑰核
正在/将要运行:$ 消息来源 /opt/ros/dashing/setup.bash $ 消息来源 ~/px4_ros_com_ros2/install/local_setup.bash $ 出口 ROS_MASTER_URI=http://localhost:11311 $ ros2 run ros1_bridge dynamic_bridge
在另一个终端上,调用 ROS 工作区并启动
综合传感器
监听器节点。由于您是通过玫瑰发射
这也将自动启动玫瑰核
:$ 消息来源 ~/px4_ros_com_ros1/install/setup.bash $ roslaunch px4_ros_com sensor_combined_listener.launch
在另一个终端上,获取 ROS 2 工作区的源代码,然后启动
micrortps_agent
守护进程,以 UDP 作为传输协议:$ 消息来源 ~/px4_ros_com_ros2/install/setup.bash $ micrortps_agent -t UDP
在 NuttShell/系统控制台启动
micrortps_client
守护进程也使用 UDP:>; micrortps_client start -t UDP
如果网桥工作正常,您就可以在启动 ROS 监听器的终端/控制台上看到打印的数据。
传感器接收到的综合数据 ================================ ts: 870938190 陀螺仪[0]: 0.00341645 陀螺仪[1]: 0.00626475 陀螺仪[2]: -0.000515705 gyro_integral_dt: 4739 相对加速度计时间戳: 0 加速度计_m_s2[0]: -0.273381 加速度计_m_s2[1]: 0.0949186 加速度计_m_s2[2]: -9.76044 加速度计积分 dt: 4739
备注
使用时 build_all.bash
脚本,它会自动打开所有需要的终端并为其提供源代码,因此你只需在每个终端运行相应的应用程序即可。
# 创建 ROS (1) 监听器
由于创建 ROS 节点是一个众所周知且有据可查的过程,我们将不在本指南中介绍这部分内容。 综合传感器
消息 玫瑰1
分支机构 px4_ros_com
存储库,路径如下 src/listeners/
.