MAVROS
Gateway ROS per autopiloti compatibili con MAVLink (PX4, ArduPilot)
Licenza
BSD 3-Clause, GPL 3.0, LGPL 3.0
Tripla licenza: BSD-3-Clause / GPLv3 / LGPLv3. Gli utenti possono scegliere una qualsiasi delle tre licenze.
Panoramica
MAVROS è il pacchetto ufficiale ROS/ROS2 che collega il protocollo MAVLink all'ecosistema ROS, consentendo la comunicazione tra sistemi basati su ROS e autopiloti compatibili con MAVLink come PX4 e ArduPilot. Fornisce topic, servizi e azioni ROS per telemetria, navigazione per waypoint, gestione dei parametri e controllo degli attuatori. MAVROS è un'infrastruttura fondamentale per qualsiasi progetto di drone o veicolo senza pilota basato su ROS: in sostanza lo strato di interfaccia standard tra il software di volo autonomo e l'hardware dell'autopilota.
MAVROS è il nodo di comunicazione ROS ufficiale per gli autopiloti basati su MAVLink e funge da ponte standard tra l'ecosistema ROS e i controller di volo che eseguono PX4 o ArduPilot. Traduce i messaggi MAVLink in topic, servizi e azioni ROS, dando accesso a telemetria, GPS, unità di misura inerziale (IMU), stato della batteria e modalità di volo, e consente comandi per armamento, decollo, navigazione per waypoint e controllo offboard.
Il progetto è composto da diversi pacchetti: il nodo principale mavros, mavros_extras con plugin aggiuntivi per la stima della posa tramite visione e il controllo della telecamera, libmavconn per la comunicazione MAVLink al di fuori di ROS, mavros_msgs per le definizioni di messaggi e servizi, e test_mavros per i test SITL. Gestisce le conversioni tra sistemi di coordinate e usa GeographicLib per trasformazioni corrette dell'altitudine tra i sistemi di riferimento dell'autopilota e di ROS.
Sviluppato dal 2014 e oggi compatibile sia con ROS 1 sia con ROS 2, MAVROS è l'interfaccia MAVLink-ROS più usata nella comunità dei droni. Supporta MAVLink 2.0, ha una tripla licenza GPL/LGPL/BSD ed è mantenuto attivamente, con oltre 200 commit all'anno.
Perché è importante
MAVROS è il ponte standard tra l'ecosistema ROS e gli autopiloti basati su MAVLink, ed è quindi un componente essenziale per qualsiasi sistema di droni, di ricerca o commerciale, che combini percezione e pianificazione basate su ROS con controller di volo PX4 o ArduPilot. Dieci anni di sviluppo ne hanno fatto l'interfaccia di fatto per le applicazioni di droni autonomi nella comunità ROS.
Il problema che risolve
I sistemi di droni autonomi usano in genere ROS per la percezione e le decisioni di alto livello, ma si affidano a controller di volo basati su MAVLink (PX4, ArduPilot) per il controllo di volo di basso livello. MAVROS colma questo divario traducendo i messaggi MAVLink in topic, servizi e azioni ROS, e consente una comunicazione fluida tra i due ecosistemi senza dover gestire il protocollo con codice su misura.
Punti chiave
- Gateway ufficiale da MAVLink a ROS, compatibile sia con ROS 1 (Noetic) sia con ROS 2
- Fornisce topic ROS per telemetria, GPS, IMU, batteria e dati di stato provenienti dall'autopilota
- Supporta sia lo stack di volo PX4 sia ArduPilot tramite il protocollo MAVLink
- Include mavros_extras con plugin aggiuntivi come la stima della posa tramite visione e il controllo della telecamera
- Usa GeographicLib per una conversione corretta dell'altitudine tra i sistemi di riferimento AMSL (FCU) e WGS84 (ROS)
A chi si rivolge
- Ricercatori che costruiscono sistemi di droni autonomi con ROS
- Sviluppatori PX4 e ArduPilot che integrano computer di bordo con i controller di volo
- Ingegneri di visione artificiale che portano pipeline di percezione sui droni
- Aziende di droni commerciali che usano ROS per la pianificazione delle missioni e l'autonomia
Limiti
- Strettamente legato al protocollo MAVLink: non utilizzabile con controller di volo non MAVLink
- Il supporto per ROS 2 (v2.x) è più recente e può contare su meno risorse della comunità rispetto alla versione ROS 1
- La configurazione può essere complessa per via dei molti tipi di messaggi MAVLink e delle convenzioni sui sistemi di riferimento
- Le prestazioni dipendono dalla qualità del collegamento seriale o UDP tra il computer di bordo e il controller di volo