MAVROS2安装
MAVROS
用于 ROS2 的 MAVLink 可扩展通信节点。
ROS API 文档已移至 wiki.ros.org 。
特征
- 通过串行端口、UDP 或 TCP 与自动驾驶仪通信(例如 PX4 Pro 或 ArduPilot )
- 地面控制站的内部代理(串行、UDP、TCP)
- ROS-MAVLink 翻译插件系统
- 参数操作工具
- 航点操作工具
- PX4Flow 支持(由 mavros_extras 提供)
- OFFBOARD 模式支持
- 地理坐标转换。
限制
仅适用于 Linux。
此软件包依赖于 ros-*-mavlink 构建,该构建来自 mavlink-gbp-release 。它位于 ROS 软件包索引中,通常每月更新。
连接地址
连接由 URL 定义,您可以使用 FCU 和 GCS 支持的任何类型。
支持的架构:
- 序列号:
/path/to/serial/device[:baudrate]
- 序列号:
serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
- 具有硬件流控制的串行:
serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
- UDP:
udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
- UDP 广播直到 GCS 发现:
udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
- UDP广播(永久):
udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
- TCP 客户端:
tcp://[server_host][:port][/?ids=sysid,compid]
- TCP 服务器:
tcp-l://[bind_host][:port][/?ids=sysid,compid]
说明:
- URL 中的 ID 会覆盖 system_id 和 component_id 参数给出的值。
- bind_host - 默认
0.0.0.0
- 即 IP4 ANY - UDP 默认端口:14555 @ 14550
- 每次绑定端口上的传入数据包都会更新 UDP 远程地址。
- TCP默认端口:5760
坐标系
MAVROS 可以将 FCU 中使用的航空航天 NED 坐标系转换为 ROS ENU 坐标系,反之亦然。对于与机身相关的数据,我们只需绕 ROLL (X) 轴旋转 180°。对于本地数据,我们绕 ROLL (X) 轴旋转 180°,绕 YAW (Z) 轴旋转 90°。有关更多信息,请参阅问题 #473 中的文档。
所有转换分别在 src/lib/ftf_frame_conversions.cpp
和中处理并在 和中 src/lib/ftf_quaternion_utils.cpp
测试 。 test/test_frame_conversions.cpp
test/test_quaternion_utils.cpp
相关问题: #49(过时) 、 #216(过时) 、 #317(过时) 、 #319(过时) 、 #321(过时) 、 #473 。文档: 坐标系转换 、 Mavlink 坐标系 。
MAVROS 还允许通过GeographicLib 转换大地坐标和地心坐标, 因为:
geographic_msgs
并NatSatFix.msg
要求 LLA 字段必须使用 WGS-84 基准,这意味着高度应为 WGS-84 椭球面以上的高度。为此,已提供从大地水准面以上高度(AMSL,考虑 egm96 大地水准面模型)到 WGS-84 椭球面以上高度的转换,反之亦然,此转换已在多个插件中使用;- 根据 ROS REP 105,
earth
坐标系应在 ECEF(地心、地固)局部坐标系中传播。为此,需要使用 GeographicLib 的功能,以便将大地坐标转换为地心坐标。 - 从 GPS 坐标到本地地心坐标的转换需要在坐标系上定义一个本地原点
map
(ECEF),并计算与该原点的偏移量(ENU)。所有转换均由 GeographicLib 类和方法支持,并在global_position
插件中实现。
组件节点
另请参阅: https://docs.ros.org/en/foxy/Tutorials/Composition.html
mavros::router::Router
这是支持与飞行控制单元 (FCU)、地面控制站 (GCS) 和无人机系统 (UAS) 节点连接所需的路由器节点。路由器允许您在不重启节点的情况下动态添加/删除端点。
mavros::uas::UAS
此节点是一个插件容器,用于管理所有协议插件。每个插件都是此节点的一个子节点。
程序
mavros_node -- all-in-one container
这是一个预配置的组件节点容器,提供与 ROS1 mavros_node 类似的参数。该容器加载路由器、UAS 并配置它们协同工作(设置 uas_link 等)。
主节点。允许通过设置空 URL 来禁用 GCS 代理。
ros2 run mavros mavros_node --ros-args --params-file params.yaml
启动文件
XXX 待办事项 !#1564
提供的启动文件可用于常见的 FCU,特别是 Pixhawk :
- px4.launch—— 用于 PX4 自动驾驶仪(用于垂直起降、多旋翼飞行器和飞机)
- apm.launch—— 用于 APM 飞行堆栈(例如,所有版本的 ArduPlane、ArduCopter 等)
例子:
roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@