MAVROS 简介
MAVROS 是无人机开发中连接机器人操作系统(ROS)与飞控系统的关键中间件。它基于 MAVLink 轻量级通信协议,为 ROS 生态提供了与 Pixhawk、ArduPilot、PX4 等飞控通信的统一接口。开发者无需深入底层飞控协议,即可直接调用 RViz 可视化、Gazebo 仿真及导航栈等 ROS 工具链,快速搭建任务。
其核心功能在于双向数据传输:一方面订阅飞控的 IMU、GPS、电池状态等传感器数据并发布至 ROS 话题;另一方面接收 ROS 指令(如起飞、降落),转换为 MAVLink 消息发送至飞控执行。此外,MAVROS 支持串口、UDP、TCP 等多种通信接口,并提供参数配置服务,允许动态读写飞控参数。

MAVROS 安装
在 Ubuntu 环境下,通过以下命令安装基础包和扩展包:
sudo apt-get install ros-noetic-mavros
sudo apt install ros-noetic-mavros-extras
地理计算库 GeographicLib 用于处理高精度地理坐标转换(如 WGS84 到 ENU)。MAVROS 依赖此库进行导航解算,需手动下载数据集:
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod +x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
MAVROS 基础知识
坐标系说明
MAVROS 涉及多个坐标系,理解它们对调试至关重要:
- global 系:通常由 GPS 定义,即经纬高坐标系(WGS84)。
- local 系:
- ROS 端:采用 ENU 坐标系(东 - 北 - 天),原点通常是 MAVROS 首次收到里程计信息时飞控的位置。x 轴朝东,y 轴朝北,z 轴朝天。
- 飞控端:PX4/ArduPilot 内部常用 NED 坐标系(北 - 东 - 地)。
- body 系:
- ROS 端:FLU 坐标系(前 - 左 - 上),对应
base_link。 - 飞控端:FRD 坐标系(前 - 右 - 下)。
- ROS 端:FLU 坐标系(前 - 左 - 上),对应
实际场景中,map 系与 Gazebo 坐标系方向一致。机身前方定义为东,即 map 系的 x 轴正方向,此时 ROS 端的 map 系与 base_link 系方向基本对齐。

常用话题
/mavros/state
订阅 MAVROS 的状态数据,包括连接状态、是否解锁及当前模式。
connected:物理连接状态。- :电机是否解锁(true 表示可飞行)。


