MAVROS 简介
MAVROS 是连接机器人操作系统(ROS)与飞控系统的关键中间件,基于 MAVLink 轻量级通信协议实现双向数据交互。它让开发者无需深入底层飞控协议,即可直接调用 ROS 的工具链(如 RViz、Gazebo、导航栈)来开发无人机任务。
核心功能包括:
- 传感器数据订阅:获取 IMU、GPS、电池状态等并发布至 ROS 话题。
- 指令下发:接收 ROS 服务或动作指令,转换为 MAVLink 消息发送至飞控。
- 多接口支持:适配串口、UDP、TCP 等多种通信方式。

MAVROS 安装
在 Ubuntu Noetic 环境下,安装过程相对直接。
sudo apt-get install ros-noetic-mavros
sudo apt install ros-noetic-mavros-extras
MAVROS 依赖 GeographicLib 库进行高精度地理坐标计算(如经纬度与局部坐标系转换)。若未预装数据集,需手动下载并初始化:
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(东 - 北 - 天),原点为收到里程计信息时飞控的位置。
- 飞控端(PX4/ArduPilot)内部使用 NED(北 - 东 - 地)。
- Body 系:
- ROS 端采用 FLU(前 - 左 - 上),对应
base_link。 - 飞控端采用 FRD(前 - 右 - 下)。
- ROS 端采用 FLU(前 - 左 - 上),对应
实际仿真中,Map 系与 Gazebo 坐标系方向通常一致,机身前方定义为东(Map 系 X 轴正向),此时 ROS 端的 Map 系和 Base_link 系方向基本对齐。

常用话题
/mavros/state
用于监控无人机状态,数据类型为 mavros_msgs/State。
关键字段说明:


