跳到主要内容

MAVROS2安装

MAVROS

用于 ROS2 的 MAVLink 可扩展通信节点。

ROS API 文档已移至 wiki.ros.org

特征

  • 通过串行端口、UDP 或 TCP 与自动驾驶仪通信(例如 PX4 ProArduPilot
  • 地面控制站的内部代理(串行、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_msgsNatSatFix.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://@

安装

必需的依赖项

大多数 ROS 依赖项都由 支持和安装 rosdep ,包括 Eigen 和 Boost 等外部库。

GeographicLib 可以通过以下方式安装 apt-get ,它已包含在 MAVROS 软件包的 rosdep 中。也可以从 src 编译并安装,但建议使用与安装目录相同的正确安装目录 apt-get ,以确保 FindGeographicLib.cmake 找到所需的共享库( libGeographic.so )。

由于 GeographicLib 需要某些数据集 (主要是大地水准面数据集)才能完成某些计算,因此用户需要使用 手动安装这些数据集 geographiclib-tools ,Debian 系统中可以通过 进行安装 apt-get 。为了加快安装速度,只需 运行“mavros/scripts”文件夹中的脚本即可。 install_geographiclib_datasets.sh 即可。

请注意,如果您使用的是旧版 MAVROS 发行版源安装,并且想要更新到新版本,请记住 rosdep update 在运行 之前 rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO} ,使用 ROS_WORKSPACE catkin 工作区的 src 文件夹运行 。这将允许 rosdep 在发布 时更新列表并安装所需的依赖项 rosdep install

‼️ 为了遵循 ROS msg API,大地水准面数据集是必需的,以便进行高程转换。如果没有可用的数据集,系统将关闭 mavros_node ‼️

❗运行 install_geographiclib_datasets.sh 安装所有数据集或 geographiclib-datasets-download egm96_5Debian 7Ubuntu 14.04,14.10 ) , ( Debian 8Fedora 22Ubuntu 15.04或更高 版本 )仅安装大地水准面数据集:heavy_exclamation_mark: geographiclib-get-geoids egm96-5

二进制安装(deb)

ROS 仓库包含适用于 Ubuntu x86、amd64 (x86_64) 和 armhf (ARMv7) 的二进制软件包。Kinetic 还支持 Debian Jessie amd64 和 arm64 (ARMv8)。

只需用于 apt 安装:

sudo apt install ros-foxy-mavros

然后通过运行 install_geographiclib_datasets.sh 脚本安装 GeographicLib 数据集:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

源码安装

使用 vcs 实用程序检索源并 colcon 使用工具进行构建。

注意:源安装说明适用于 ROS Foxy 版本。

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
# we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
# Else ros2 run can't find nodes from this workspace.
source install/setup.bash

构建错误 。如果出现缺失错误 mavlink* ,则需要更新 mavlink 包。您可以从 ros-shadow-fixed (二进制安装)更新,或重做脚本步骤 2 和 4。

注意 :自 MAVLink 2.0 (0.18) 合并以来,所有方言均由同一二进制文件支持。遗憾的是,v1.0 消息 ID 的重叠尚未完全处理,因此第一个加载的消息禁止进一步更改。加载顺序始终为:

  1. 常见的
  2. ardupilotmega
  3. 按字母顺序排列的列表
  4. ...

注意MAVLINK_DIALECT 不再使用。

故障排除

错误:serial0:接收:文件结束

该问题应该在 mavros v0.23.2 中得到解决,它被发现是 Boost.ASIO 错误,应该在版本 > v1.12.0(>Boost 1.66)中修复。

贡献

请参阅 CONTRIBUTING.md

词汇表

  • GCS :地面控制站
  • FCU — 飞行控制单元(又名 FC
  • OBC — 车载计算机(您的 odroid 或 raspberry)

链接

  • MAVLink—— 无人机的通信协议,由飞行控制器、地面控制站和外围设备使用
  • mavlink_ros—— 原始 ROS 节点(少量消息,无代理)
  • Pixhawk—— 无人机硬件的开放标准
  • PX4 AutoPilot ——支持大多数车辆类型和强化/测试 MAVROS 支持的飞行控制器
  • ArduPilot—— 经过测试的自动驾驶仪 APM:Plane(默认命令集)
  • QGroundControl ——MAVLink 自动驾驶仪的地面控制站,已测试支持 Android、iOS、Mac OS、Linux 和 Windows
  • mavros_extras -- mavros 的额外插件和节点

更多信息

请参考mavros官方链接 https://github.com/mavlink/mavros/blob/ros2/mavros/README.md#installation