MAVROS
Puente oficial MAVLink ↔ ROS / ROS 2 para autopilotos PX4 y ArduPilot
Licencia
BSD 3-Clause, GPL 3.0, LGPL 3.0
Triple licencia: BSD-3-Clause / GPLv3 / LGPLv3. Los usuarios pueden elegir cualquiera de las tres licencias.
Resumen
MAVROS es el paquete oficial de ROS/ROS2 que conecta el protocolo MAVLink con el ecosistema ROS y permite la comunicación entre sistemas basados en ROS y autopilotos compatibles con MAVLink como PX4 y ArduPilot. Proporciona topics, servicios y acciones de ROS para telemetría, navegación por waypoints, gestión de parámetros y control de actuadores. MAVROS es infraestructura fundamental para cualquier proyecto de dron o vehículo no tripulado basado en ROS: en esencia, la capa de interfaz estándar entre el software de vuelo autónomo y el hardware del autopiloto.
MAVROS es el nodo de comunicación oficial de ROS para autopilotos basados en MAVLink y sirve de puente estándar entre el ecosistema ROS y los controladores de vuelo con PX4 o ArduPilot. Traduce los mensajes MAVLink a topics, servicios y acciones de ROS, dando acceso a telemetría, GPS, IMU, estado de la batería y modos de vuelo, y permite enviar comandos de armado, despegue, navegación por waypoints y control offboard.
El proyecto consta de varios paquetes: el nodo principal mavros, mavros_extras con plugins adicionales para la estimación de pose por visión y el control de cámara, libmavconn para la comunicación MAVLink fuera de ROS, mavros_msgs con las definiciones de mensajes y servicios, y test_mavros para pruebas en SITL. Gestiona las conversiones entre marcos de coordenadas y usa GeographicLib para transformar correctamente la altitud entre los marcos de referencia del autopiloto y de ROS.
Desarrollado desde 2014 y compatible hoy con ROS 1 y ROS 2, MAVROS es la interfaz MAVLink-ROS más utilizada en la comunidad de drones. Es compatible con MAVLink 2.0, tiene triple licencia GPL/LGPL/BSD y se mantiene activamente, con más de 200 commits al año.
Por qué importa
MAVROS es el puente estándar entre el ecosistema ROS y los autopilotos basados en MAVLink, lo que lo convierte en un componente esencial de cualquier sistema de drones, de investigación o comercial, que combine percepción y planificación basadas en ROS con controladores de vuelo PX4 o ArduPilot. Su década de desarrollo lo ha convertido en la interfaz de facto para aplicaciones de UAV autónomos en la comunidad ROS.
Qué problema resuelve
Los sistemas de drones autónomos suelen usar ROS para la percepción y la toma de decisiones de alto nivel, pero dependen de controladores de vuelo basados en MAVLink (PX4, ArduPilot) para el control de vuelo de bajo nivel. MAVROS cubre esta brecha traduciendo los mensajes MAVLink a topics, servicios y acciones de ROS, lo que permite una comunicación fluida entre ambos ecosistemas sin tener que implementar un manejo de protocolo propio.
Puntos clave
- Pasarela oficial de MAVLink a ROS compatible con ROS 1 (Noetic) y ROS 2
- Proporciona topics de ROS con telemetría, GPS, IMU, batería y datos de estado del autopiloto
- Compatible con los stacks de vuelo PX4 y ArduPilot a través del protocolo MAVLink
- Incluye mavros_extras con plugins adicionales, como la estimación de pose por visión y el control de cámara
- Usa GeographicLib para convertir correctamente la altitud entre los marcos AMSL (FCU) y WGS84 (ROS)
Para quién es
- Investigadores de UAV que construyen sistemas de drones autónomos con ROS
- Desarrolladores de PX4 y ArduPilot que integran ordenadores de a bordo con controladores de vuelo
- Ingenieros de visión artificial que despliegan pipelines de percepción en drones
- Empresas comerciales de drones que usan ROS para la planificación de misiones y la autonomía
Limitaciones
- Estrechamente ligado al protocolo MAVLink: no se puede usar con controladores de vuelo que no sean MAVLink
- El soporte de ROS 2 (v2.x) es más reciente y puede contar con menos recursos de la comunidad que la versión de ROS 1
- La configuración puede ser compleja por la gran cantidad de tipos de mensajes MAVLink y convenciones de marcos de referencia
- El rendimiento depende de la calidad del enlace serie o UDP entre el ordenador de a bordo y el controlador de vuelo