# 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 的架构

基本上与 ROS 2 相同,只是多了一个 ros1_桥 (打开新窗口) 软件包(由 Open Robotics 提供),可在两个版本之间转换信息。这是因为 ROS 的原始版本不支持 RTPS。

另一个主要区别是 px4_ros_compx4_msgs 包一个单独的 玫瑰1 分支,生成 ROS 消息头和源文件,以便使用 ros1_桥.该分支还包括监听器和广告商节点示例。

# 安装和设置

请按照 ROS 2 用户指南> 安装& 设置 安装 ROS 2。

# 构建 ROS (1) 工作区

由于 ROS 需要与 ROS 不同的环境,因此您需要创建一个单独的工作区。这将包括 玫瑰 分支 px4_ros_compx4_msgs以及 ros1_桥.

创建和构建工作区:

  1. 创建 ROS 1 工作区目录:
    $ mkdir -p ~/px4_ros_com_ros1/src
    
  2. 克隆 ROS 1 桥接软件包 px4_ros_compx4_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
    
  3. 使用 build_ros1_bridge.bash 脚本来构建 ROS 工作区(包括 px4_ros_com, px4_msgsros1_桥).
    $ 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(您需要同时使用这两项功能!):

  1. 设置 PX4 Ubuntu Linux 开发环境 - 根据默认说明获取最新版本的 PX4 源代码并安装所有需要的工具。

  2. PX4 自动驾驶仪 项目,然后开始使用 PX4 Gazebo 仿真:

    生产 PX4_SITL_RTPS 仿真场景Gazebo
    

    PX4 完全启动后,终端将显示 NuttShell/系统控制台.

  3. 在另一个终端上,创建 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
    
  4. 在另一个终端上,调用 ROS 工作区并启动 综合传感器 监听器节点。由于您是通过 玫瑰发射这也将自动启动 玫瑰核:

    $ 消息来源 ~/px4_ros_com_ros1/install/setup.bash $ roslaunch px4_ros_com sensor_combined_listener.launch
    
  5. 在另一个终端上,获取 ROS 2 工作区的源代码,然后启动 micrortps_agent 守护进程,以 UDP 作为传输协议:

    $ 消息来源 ~/px4_ros_com_ros2/install/setup.bash $ micrortps_agent -t UDP
    
  6. 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/.