MAVROS 简介
MAVROS是无人机开发中连接机器人操作系统(ROS)与飞控系统的关键中间件,通过标准化通信协议实现 ROS 节点与无人机的交互。它基于**MAVLink(Micro Air Vehicle Link)**轻量级通信协议,为 ROS 生态提供了与飞控(如 Pixhawk、ArduPilot、PX4等)通信的统一接口,使开发者无需深入理解底层飞控协议,即可直接调用 ROS 的丰富工具链(如 RViz 可视化、Gazebo 仿真、导航栈)快速搭建无人机任务,推动了无人机应用的灵活开发与高效迭代。
MAVROS的核心功能包括双向数据传输:一方面,它订阅飞控的传感器数据(如 IMU、GPS、电池状态)并发布至 ROS 话题,供导航、感知等模块使用;另一方面,它接收 ROS 服务或动作指令(如起飞、降落、位姿控制),转换为 MAVLink消息发送至飞控执行。此外,MAVROS支持多种通信接口(串口、UDP、TCP),适配不同硬件场景,并提供参数配置服务,允许动态读写飞控参数(如 PID 调参、飞行模式切换)。

MAVROS 安装
使用以下命令安装 MAVROS:
sudo apt-get install ros-noetic-mavros
sudo apt install ros-noetic-mavros-extras
GeographicLib是一个开源的地理计算库,专门用于处理地球表面的高精度地理坐标计算,例如经纬度与局部坐标系(如北东地坐标系,ENU)的转换、地理坐标系之间的转换(如 WGS84 到 UTM)、地球椭球模型下的距离方位角高程计算以及大地水准面(Geoid)的高度校正。
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 坐标系
MAVROS中涉及到以下坐标系:
global系:一般由 GPS 定义,例如经纬高坐标系(WGS84)local系:- ROS 端:采用
ENU坐标系,一般是由MAVROS发布的map坐标系,其坐标原点是MAVROS收到里程计信息时飞控所在的位置,并规定x轴朝东、y轴朝北、z轴朝天,此时机体方向朝东; - 飞控端:PX4/ArduPilot 等内部使用,采用
NED坐标系;
- ROS 端:采用
body系:




