# ROS 2 用户指南
ROS 2-PX4 架构提供了 ROS 2 和 PX4 之间的深度集成,允许 ROS 2 订阅者或发布者节点与 PX4 uORB 主题直接对接。
本主题概述了体系结构和应用管道,并介绍了如何设置和使用带有 PX4 的 ROS 2。
备注
从 PX4 v1.14 开始,ROS 2 使用 uXRCE-DDS 中间件,取代 FastRTPS 中间件(1.13 版不支持 uXRCE-DDS)。
迁移指南 解释了将 ROS 2 应用程序从 PX4 v1.13 移植到 PX4 v1.14 所需的步骤。
如果您仍在使用 PX4 v1.13,请按照以下说明进行操作 PX4 v1.13 文档 (打开新窗口).
# 概述
ROS 2 的应用管道非常简单,这要归功于使用了 uXRCE-DDS 通信中间件。
uXRCE-DDS 中间件包括在 PX4 上运行的客户端和在配套计算机上运行的代理,两者之间通过串行、UDP、TCP 或自定义链路进行双向数据交换。代理作为客户端的代理,负责发布和订阅全球 DDS 数据空间中的主题。
PX4 uxrce_dds_client 在构建时生成,并默认包含在 PX4 固件中。它包括通用微型 XRCE-DDS 客户端代码和 PX4 专用翻译代码,用于发布到 uORB 主题或从 uORB 主题发布。生成到客户端的 uORB 消息子集列于 PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.yaml (打开新窗口).生成器使用源代码树中的 uORB 报文定义: PX4-Autopilot/msg (打开新窗口) 来创建发送 ROS 2 消息的代码。
ROS 2 应用程序需要在具有 一样 用于在 PX4 固件中创建 uXRCE-DDS 客户端模块的消息定义。您可以通过克隆接口包来包含这些定义 PX4/px4_msgs (打开新窗口) 到您的 ROS 2 工作区中(版本库中的分支与不同 PX4 版本的信息相对应)。
请注意,微型 XRCE-DDS 代理人 本身不依赖客户端代码。它可以从 消息来源 (打开新窗口) 它可以独立运行,也可以作为 ROS 构建的一部分,或者作为快照安装。
请注意,uXRCE-DDS 客户端默认内置在固件中,但除模拟器构建外不会自动启动。
备注
在 PX4v1.13 和更早的版本中,ROS 2 取决于以下定义 px4_ros_com (打开新窗口).该 repo 已不再需要,但包含有用的示例。
# 安装和设置
支持 PX4 开发的 ROS 2 平台是 Ubuntu 22.04 上的 ROS 2 "Humble"和 Ubuntu 20.04 上的 ROS 2 "Foxy"。
推荐使用 ROS 2 "Humble",因为它是当前的 ROS 2 LTS 发行版。ROS 2 "Foxy"已于 2023 年 5 月到期,但仍然稳定,可与 PX4 一起使用。
备注
PX4 在 Ubuntu 22.04 上的测试情况不如在 Ubuntu 20.04 上那么好(在撰写本文时)。 经典仿真场景Gazebo.
设置 ROS 2 以与 PX4 配合使用:
- 安装 PX4 (使用 PX4 模拟器)
- 安装 ROS 2
- 设置 Micro XRCE-DDS 代理和客户端
- 构建 & 运行 ROS 2 工作区
自动安装的其他架构依赖项,如 快速 DDS不包括在内。
# 安装 PX4
您需要安装 PX4 开发工具链才能使用模拟器。
备注
ROS 2 对 PX4 的唯一依赖是一组信息定义,它从 px4_msgs (打开新窗口).只有在需要模拟器(如本指南中的情况)或创建可发布自定义 uORB 主题的构建时,才需要安装 PX4。
按常规方法在 Ubuntu 上建立 PX4 开发环境:
CD
Git 克隆 https://github.com/PX4/PX4-Autopilot.git --recursive
敲击 ./PX4-Autopilot/Tools/setup/ubuntu.sh
CD PX4-Autopilot/
生产 px4_sitl
请注意,上述命令将为您的 Ubuntu 版本安装推荐的模拟器。如果您想安装 PX4 但保留现有的模拟器安装,请运行 ubuntu.sh
上面有 --无模拟工具
旗子
有关更多信息和故障排除,请参阅: Ubuntu 开发环境 和 下载 PX4 信号源.
# 安装 ROS 2
安装 ROS 2 及其依赖项:
安装 ROS 2.
还必须安装一些 Python 依赖项(使用
核心
或适切
):核心 安装 --user -U empy pyros-genmsg setuptools
# 设置 Micro XRCE-DDS 代理和客户端
为了让 ROS 2 与 PX4 通信、 uXRCE-DDS 客户端 必须在 PX4 上运行,并连接到配套计算机上运行的微型 XRCE-DDS 代理。
# 设置代理
该代理可安装在配套计算机的 途径.下面我们将展示如何从源代码中构建独立代理,并连接到在 PX4 模拟器上运行的客户端。
设置并启动代理:
打开终端。
输入以下命令,从源代码中获取并构建代理:
Git 克隆 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git CD Micro-XRCE-DDS-Agent mkdir 构建 CD 构建 cmake .. 生产 苏都 生产 安装 苏都 ldconfig /usr/local/lib/
启动代理,设置连接到模拟器上运行的 uXRCE-DDS 客户端:
MicroXRCEAgent udp4 -p 8888
代理已开始运行,但在启动 PX4(下一步)之前不会有太大变化。
备注
您可以让代理在此终端中运行!请注意,每个连接通道只允许使用一个代理。
# 启动客户端
PX4 模拟器会自动启动 uXRCE-DDS 客户端,连接到本地主机的 UDP 端口 8888。
启动模拟器(和客户端):
在 PX4 自动驾驶仪 的 repo。
代理和客户端现在正在运行,应该可以连接。
PX4 终端显示 NuttShell/PX4 系统控制台 PX4 启动和运行时的输出。一旦代理连接,输出应包括 信息
显示创建数据写入器的信息:
...INFO [uxrce_dds_client]已与时间偏移 1675929429203524us 同步 INFO [uxrce_dds_client]成功创建了 rt/fmu/out/failsafe_flags 数据写入器,主题 id:83 INFO [uxrce_dds_client]成功创建 rt/fmu/out/sensor_combined 数据写入器,主题 id:168 INFO [uxrce_dds_client]成功创建 rt/fmu/out/timesync_status 数据写入器,主题 id:188 ...
微型 XRCE-DDS 代理终端也应开始显示输出,因为在 DDS 网络中创建了等效主题:
...[1675929445.268957] info | ProxyClient.cpp | create_publisher | 已创建发布者 | client_key: 0x00000001, publisher_id:0x0DA(3), participant_id:0x001(1) [1675929445.269521] info | ProxyClient.cpp | create_datawriter | 创建数据写入器 | client_key: 0x00000001, datawriter_id:0x0DA(5), publisher_id:0x0DA(3) [1675929445.270412] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x00000001, topic_id:0x0DF(2), participant_id:0x001(1) ...
# 构建 ROS 2 工作区
本节介绍如何在主目录下创建 ROS 2 工作区(根据需要修改命令,将源代码放在其他地方)。
px4_ros_com (打开新窗口) 和 px4_msgs (打开新窗口) 软件包克隆到工作区文件夹中,然后将 胶管
工具来构建工作区。运行示例时使用 ros2 启动
.
备注
该示例构建了 ROS 2 监听器 示例应用程序,位于 px4_ros_com (打开新窗口). px4_msgs (打开新窗口) 这样,示例才能解释 PX4 ROS 2 的主题。
# 构建工作空间
创建和构建工作区:
打开一个新终端。
创建并导航到一个新的工作区目录:
mkdir -p ~/ws_sensor_combined/src/ CD ~/ws_sensor_combined/src/
备注
工作区文件夹的命名规范可以简化工作区的管理。
克隆示例资源库并 px4_msgs (打开新窗口) 到
/src
目录(该主要
分支是默认克隆的,与我们运行的 PX4 版本一致):Git 克隆 https://github.com/PX4/px4_msgs.git Git 克隆 https://github.com/PX4/px4_ros_com.git
将 ROS 2 开发环境的源代码导入当前终端,并使用以下命令编译工作区
胶管
:这将生成
/src
使用源工具链。
# 运行示例
要运行刚刚构建的可执行文件,需要将源代码 local_setup.bash
.这样就可以访问当前工作区的环境钩子。换句话说,它可以在当前终端中使用刚刚创建的可执行文件。
备注
ROS2 入门教程 (打开新窗口) 建议您 新建终端 用于运行可执行文件。
新航站楼
导航到工作区目录的顶层,并获取 ROS 2 环境的源代码(本例中为 "Humble"):
资料来源
local_setup.bash
.消息来源 install/local_setup.bash
现在启动示例。注意这里我们使用
ros2 启动
具体说明如下。ros2 launch px4_ros_com sensor_combined_listener.launch.py
如果运行正常,您就可以在启动 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
# 控制载具
控制应用程序,ROS 2 应用程序:
- 订阅(收听)PX4 发布的遥测主题
- 发布到导致 PX4 执行某些操作的主题。
您可以使用的主题在 dds_topics.yaml (打开新窗口)您可以在 uORB 信息参考.例如 载具全球位置 可用于获取载具的全局位置,而 载具指令 可用于指挥起飞和着陆等操作。
ROS 2 应用实例 下面的示例提供了如何使用这些主题的具体例子。
# 兼容性问题
本节包含的信息可能会影响您编写 ROS 代码的方式。
# ROS 2 用户服务质量设置
订阅 PX4 发布的主题的 ROS 2 代码 必须 指定适当(兼容)的 QoS 设置,以便监听主题。具体来说,节点应使用 ROS 2 预定义的 QoS 传感器数据(来自 监听器示例源代码):
...
rmw_qos_profile_t qos_profile = rmw_qos_profile_sensor_data;
汽车 优先权 = rclcpp::服务质量(rclcpp::QoS 初始化(qos_profile.历史, 5), qos_profile);
订阅_ = 此->;创建订阅<;px4_msgs::信息::传感器组合>;("/fmu/out/sensor_combined";, 优先权,
...
之所以需要这样做,是因为 ROS 2 默认 服务质量 (QoS) 设置 (打开新窗口) 与 PX4 使用的设置不同。并不是所有的发布者-订阅者组合都能在 PX4 中使用。 可进行 Qos 设置 (打开新窗口),结果发现 ROS 2 的订阅默认设置并非如此!请注意,ROS 代码在发布时不必设置 QoS 设置(在这种情况下,PX4 设置与 ROS 默认设置兼容)。
# ROS 2 & PX4 框架约定
ROS 和 PX4 使用的本地/世界和主体框架是不同的。
框架 | PX4 | ROS |
---|---|---|
身体 | FRD (X Forward,Y R右,Z D拥有) | FLU (X Forward,Y Lft,Z Up) |
世界 | FRD 或 NED(X North, Y East,Z D拥有) | FLU 或 ENU(X EY North, Z Up) |
TIP
参见 REP105:移动平台的坐标框架 (打开新窗口) 了解有关 ROS 框架的更多信息。
下图显示了这两个框架(左侧为 FRD,右侧为 FLU)。
通过 FRD(NED)公约的日期是 一应俱全 除非在相关的报文定义中明确指定,否则 PX4 主题无法与 ROS 2 接口。因此,希望与 PX4 接口的 ROS 2 节点必须遵守帧约定。
要将一个向量从 ENU 旋转到 NED,必须进行两个基本旋转:
- 先绕
Z
-轴(向上)、 - 然后围绕
X
-轴(旧东/新北)。
- 先绕
要将一个向量从 NED 旋转到 ENU,必须进行两个基本旋转:
- 先绕
Z
-轴(向下)、 - 然后围绕
X
-轴(旧北/新东)。请注意,这两种操作在数学上是等价的。
- 先绕
要将矢量从 FLU 旋转到 FRD,需要绕着
X
-轴(前)即可。要将一个矢量从 FRD 旋转到 FLU,需要绕着
X
-轴(前)即可。
需要旋转的矢量举例如下:
与矢量类似,代表载具(车身框架)相对于世界框架的姿态的量词也需要进行转换。
PX4/px4_ros_com (打开新窗口) 提供共享库 帧变换 (打开新窗口) 以轻松进行此类转换。
# ROS 2 应用实例
# ROS 2 监听器
ROS 2 听众示例 (打开新窗口) 在 px4_ros_com (打开新窗口) repo 演示了如何编写 ROS 节点来监听 PX4 发布的主题。
在此,我们考虑 sensor_combined_listener.cpp (打开新窗口) 节点下 px4_ros_com/src/examples/listeners
,它订阅了 传感器组合 留言
备注
构建 ROS 2 工作区 演示了如何构建和运行这个示例。
代码首先导入了与 ROS 2 中间件连接所需的 C++ 库,并导入了 传感器组合
节点订阅的消息:
#包括 <rclcpp/rclcpp.hpp>;
#包括 <px4_msgs/msg/sensor_combined.hpp>;
然后创建一个 传感器组合监听器
类的子类。 rclcpp::Node
基类。
/** * @brief 传感器组合 uORB 主题数据回调 */
类 传感器组合监听器 : 公 rclcpp::节点
{
会创建一个回调函数,当 传感器组合
接收 uORB 信息(现在是微型 XRCE-DDS 信息),并在每次接收信息时输出信息字段的内容。
公:
不含糊 传感器组合监听器() : 节点("sensor_combined_listener";)
{
rmw_qos_profile_t qos_profile = rmw_qos_profile_sensor_data;
汽车 优先权 = rclcpp::服务质量(rclcpp::QoS 初始化(qos_profile.历史, 5), qos_profile);
订阅_ = 此->;创建订阅<;px4_msgs::信息::传感器组合>;("/fmu/out/sensor_combined";, 优先权,
[此](缢 px4_msgs::信息::传感器组合::UniquePtr msg) {
标准::cout <<; "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
标准::cout <<; "接收到的传感器综合数据"; <<; 标准::endl;
标准::cout <<; "=============================" <<; 标准::endl;
标准::cout <<; ts: "; <<; 信息->;时戳 <<; 标准::endl;
标准::cout <<; "gyro_rad[0]:"; <<; 信息->;陀螺仪[0] <<; 标准::endl;
标准::cout <<; "gyro_rad[1]: "; <<; 信息->;陀螺仪[1] <<; 标准::endl;
标准::cout <<; "gyro_rad[2]: "; <<; 信息->;陀螺仪[2] <<; 标准::endl;
标准::cout <<; "gyro_integral_dt: "; <<; 信息->;陀螺积分 <<; 标准::endl;
标准::cout <<; "accelerometer_timestamp_relative: "; <<; 信息->;相对加速度计时间戳 <<; 标准::endl;
标准::cout <<; "accelerometer_m_s2[0]: "; <<; 信息->;加速度计_m_s2[0] <<; 标准::endl;
标准::cout <<; "加速度计_m_s2[1]: "; <<; 信息->;加速度计_m_s2[1] <<; 标准::endl;
标准::cout <<; "accelerometer_m_s2[2]: "; <<; 信息->;加速度计_m_s2[2] <<; 标准::endl;
标准::cout <<; "accelerometer_integral_dt: "; <<; 信息->;加速度计积分 <<; 标准::endl;
});
}
备注
订阅根据以下条件设置 QoS 配置文件 rmw_qos_profile_sensor_data
.之所以需要这样做,是因为用户的默认 ROS 2 QoS 配置文件与发布商的 PX4 配置文件不兼容。更多信息请参阅 ROS 2 用户服务质量设置,
下面几行为 传感器组合
uORB 主题,它可以与一个或多个兼容的 ROS 2 订阅者相匹配。 FMU/SENSOR_COMBED/UT
ROS 2 专题。
私人:
rclcpp::订阅<;px4_msgs::信息::传感器组合>;::SharedPtr subscription_;
};
的实例化 传感器组合监听器
类作为 ROS 节点是在 主要
功能。
int 主要(int 参数, 烧焦 *参数[])
{
标准::cout <<; "Starting sensor_combined listener node..."; <<; 标准::endl;
setvbuf(数据输出, NULL, _IONBF, BUFSIZ);
rclcpp::启动(参数, 参数);
rclcpp::后旋(标准::共享<;传感器组合监听器>;());
rclcpp::关闭();
返回 0;
}
该示例的相关启动文件位于 launch/sensor_combined_listener.launch.py (打开新窗口).这样就可以使用 ros2 启动
指挥。
# ROS 2 广告商
ROS 2 广告节点向 DDS/RTPS 网络(也就是 PX4 自动驾驶仪)发布数据。
例如 debug_vect_advertiser.cpp
根据 px4_ros_com/src/advertisers
首先,我们导入所需的头文件,包括 debug_vect
msg 标头。
#包括 时间顺序<chrono>;
#包括 <rclcpp/rclcpp.hpp>;
#包括 <px4_msgs/msg/debug_vect.hpp>;
使用 命名空间 标准::计时器;
然后,代码会创建一个 DebugVectAdvertiser
类的子类。 rclcpp::Node
基类。
类 DebugVectAdvertiser : 公 rclcpp::节点
{
下面的代码为何时发送信息创建了一个函数。信息根据定时回调发送,该回调根据定时器每秒发送两条信息。
公:
DebugVectAdvertiser() : 节点("debug_vect_advertiser";) {
出版商_ = 此->;创建出版商<;px4_msgs::信息::调试向量>;("fmu/debug_vect/in";, 10);
汽车 定时器回调 =
[此]()->;空白 {
汽车 debug_vect = px4_msgs::信息::调试向量();
debug_vect.时戳 = 标准::计时器::时间点播报<;标准::计时器::微秒>;(标准::计时器::稳定时钟::现在()).自时间起().计数();
标准::字符串名称 = "测试";;
标准::抄袭(名字.兴办(), 名字.最后(), debug_vect.名字.兴办());
debug_vect.x = 1.0;
debug_vect.y = 2.0;
debug_vect.z = 3.0;
RCLCPP_INFO(此->;get_logger(), "\033[97m Publishing debug_vect: time: %llu x: %f y: %f z: %f \033[0m";,
debug_vect.时戳, debug_vect.x, debug_vect.y, debug_vect.z);
此->;出版商_->;发布(debug_vect);
};
定时器 = 此->;创建隔离墙计时器(500毫秒, 定时器回调);
}
私人:
rclcpp::定时器基数::SharedPtr timer_;
rclcpp::出版商<;px4_msgs::信息::调试向量>;::SharedPtr publisher_;
};
的实例化 DebugVectAdvertiser
类作为 ROS 节点是在 主要
功能。
int 主要(int 参数, 烧焦 *参数[])
{
标准::cout <<; "Starting debug_vect advertiser node..."; <<; 标准::endl;
setvbuf(数据输出, NULL, _IONBF, BUFSIZ);
rclcpp::启动(参数, 参数);
rclcpp::后旋(标准::共享<;DebugVectAdvertiser>;());
rclcpp::关闭();
返回 0;
}
# 机外控制
有关如何在 PX4 上使用板外控制的完整参考示例,请参阅: ROS 2 机外控制示例.
# 使用飞行控制器硬件
在飞行控制器上使用 PX4 运行 ROS 2 与在模拟器上使用 PX4 几乎是一样的。唯一不同的是,您需要同时启动代理 和客户,并根据通信信道进行适当设置。
更多信息,请参见 启动 uXRCE-DDS.
# 自定义 uORB 主题
ROS 2 需要具备 一样 信息定义用于在 PX4 固件中创建 uXRCE-DDS 客户端模块,以便解释信息。这些定义存储在 ROS 2 接口包中 PX4/px4_msgs (打开新窗口) 并通过 CI 在 主要
和发布分支。请注意,PX4 源代码中的所有信息都存在于版本库中,但只有在 dds_topics.yaml
将作为 ROS 2 的主题提供。因此
如果您使用的是 PX4 主版本或发布版本,可以通过克隆接口软件包来获取报文定义 PX4/px4_msgs (打开新窗口) 进入你的工作空间。
如果要创建或修改 uORB 信息,必须从 PX4 源代码树中手动更新工作区中的信息。一般来说,这意味着你要更新 dds_topics.yaml (打开新窗口),克隆接口包,然后通过将新的/修改过的报文定义从 PX4-Autopilot/msg (打开新窗口) 到其
信息
文件夹假设 PX4-Autopilot 位于您的主目录中~
而px4_msgs
在~/px4_ros_com/src/
那么命令可能是rm ~/px4_ros_com/src/px4_msgs/msg/*.msg cp ~/PX4-Autopilot/mgs/*.msg ~/px4_ros_com/src/px4_msgs/msg/
备注
从技术上讲 dds_topics.yaml (打开新窗口) 完全定义了 PX4 uORB 主题和 ROS 2 信息之间的关系。更多信息请参见 uXRCE-DDS > DDS 主题 YAML.
# 自定义主题名称空间
自定义主题名称空间可在构建时应用(更改 dds_topics.yaml (打开新窗口))或运行时(对多车运行有用):
- 一种可能性是使用
-n
选项时启动 uxrce_dds_client 命令行。这种技术既可用于模拟,也可用于实际载具。 - 通过设置环境变量
px4_uxrce_dds_ns
然后再开始模拟。
备注
在运行时更改命名空间会将所需的命名空间作为前缀附加到所有 主题
中的字段 dds_topics.yaml (打开新窗口).因此,类似这样的命令
uxrce_dds_client start -n uav_1
或
px4_uxrce_dds_ns=uav_1 生产 PX4_SITL GZ_X500
将在命名空间下生成主题:
/uav_1/fmu/in/ # 为订阅者
/uav_1/fmu/out/ # 为出版商
# ros2 CLI
ros2 CLI (打开新窗口) 是使用 ROS 的有用工具。例如,您可以用它来快速检查主题是否正在发布,如果有的话,还可以详细检查它们。 px4_msg
工作区中的该命令还能让你通过启动文件启动更复杂的 ROS 系统。下面演示了几种可能性。
# ros2 主题列表
使用 ros2 主题列表
列出 ROS 2 可见的主题:
ros2 主题列表
如果 PX4 已连接到代理,结果将是主题类型列表:
/fmu/in/obstacle_distance /fmu/in/offboard_control_mode /fmu/in/onboard_computer_status ...
请注意,工作区不需要使用 px4_msgs
主题类型信息是报文有效载荷的一部分。
# ros2 主题回声
使用 ros2 主题回声
以显示特定主题的细节。
与 ros2 主题列表
要使其正常工作,您必须在工作区中构建了 px4_msgs
和来源 local_setup.bash
以便 ROS 可以解读这些信息。
ros2主题 回响 /fmu/out/vehicle_status
该命令将在主题更新时回传主题详细信息。
--- timestamp:1675931593364359 armed_time: 0 takeoff_time: 0 arming_state:1 latest_arming_reason: 0 latest_disarming_reason: 0 nav_state_timestamp:3296000 nav_state_user_intention:4 nav_state:4 failure_detector_status:0 hil_state:0 ...---
# ros2 主题 hz
您可以使用 ros2 主题 hz
.例如,要获取 传感器组合
:
ros2 主题 hz /fmu/out/sensor_combined
输出结果如下
平均率: 248.187
分钟 0最多 0.000 秒: 0.012s std dev: 0.00147 秒窗口: 2724
平均率: 248.006
分钟 0最多 0.000 秒: 0.012s std dev: 0.00147 秒窗口: 2972
平均率: 247.330
分钟 0最多 0.000 秒: 0.012s std dev: 0.00148s 窗口: 3212
平均率: 247.497
分钟 0最多 0.000 秒: 0.012s std dev: 0.00149 秒窗口: 3464
平均率: 247.458
分钟 0最多 0.000 秒: 0.012s std dev: 0.00149 秒窗口: 3712
平均率: 247.485
分钟 0最多 0.000 秒: 0.012s std dev: 0.00148s 窗口: 3960
# ros2 启动
ros2 启动
命令用于启动 ROS 2 启动文件。例如,上面我们使用 ros2 launch px4_ros_com sensor_combined_listener.launch.py
来启动监听器示例。
你不需要启动文件,但如果你有一个复杂的 ROS 2 系统,需要启动多个组件,启动文件就非常有用了。
有关启动文件的信息,请参阅 ROS 2 教程 > 创建启动文件 (打开新窗口)
# 故障排除
# 缺失的依赖项
标准安装应包括 ROS 2 所需的所有工具。
如果有遗漏,可单独添加:
胶管
构建工具应位于开发工具中。可以通过以下方式安装苏都 适切 安装 python3-colcon-common-extensions
转换库使用的 Eigen3 库应包含在桌面软件包和基础软件包中。安装方法如图所示:
# 其他信息
- PX4 中的 ROS 2:向 XRCE-DDS 无缝过渡的技术细节 (打开新窗口) - 巴勃罗-加里多 & 努诺-马克斯(youtube)
- DDS 和 ROS 中间件实施 (打开新窗口)