MAVROS
PX4·ArduPilot 자동조종 장치를 위한 공식 MAVLink ↔ ROS / ROS 2 브릿지
라이선스
BSD 3-Clause, GPL 3.0, LGPL 3.0
트리플 라이선스: BSD-3-Clause / GPLv3 / LGPLv3. 사용자는 세 가지 라이선스 중 어느 것이든 선택할 수 있습니다.
개요
MAVROS는 MAVLink 프로토콜을 ROS 생태계에 연결하는 공식 ROS/ROS2 패키지로, ROS 기반 시스템과 PX4, ArduPilot 같은 MAVLink 호환 오토파일럿 간의 통신을 가능하게 합니다. 텔레메트리, 웨이포인트 내비게이션, 파라미터 관리, 액추에이터 제어를 위한 ROS 토픽, 서비스, 액션을 제공합니다. MAVROS는 ROS 기반 드론이나 무인 이동체 프로젝트라면 빠질 수 없는 기반 인프라로, 사실상 자율 비행 소프트웨어와 오토파일럿 하드웨어 사이의 표준 인터페이스 계층입니다.
MAVROS는 MAVLink 기반 오토파일럿을 위한 공식 ROS 통신 노드로, ROS 생태계와 PX4 또는 ArduPilot을 실행하는 비행 컨트롤러 사이의 표준 브리지 역할을 합니다. MAVLink 메시지를 ROS 토픽, 서비스, 액션으로 변환하여 텔레메트리, GPS, IMU, 배터리 상태, 비행 모드에 접근할 수 있게 하고, 시동(arming), 이륙, 웨이포인트 내비게이션, 오프보드 제어 명령을 내릴 수 있게 합니다.
프로젝트는 여러 패키지로 구성됩니다. 핵심 mavros 노드, 비전 기반 포즈 추정과 카메라 제어 같은 추가 플러그인을 담은 mavros_extras, ROS 밖에서 MAVLink 통신을 위한 libmavconn, 메시지와 서비스 정의를 담은 mavros_msgs, SITL 테스트용 test_mavros입니다. 좌표계 변환을 처리하며, 오토파일럿과 ROS 기준 좌표계 간의 정확한 고도 변환을 위해 GeographicLib을 사용합니다.
2014년부터 개발되어 현재 ROS 1과 ROS 2를 모두 지원하는 MAVROS는 드론 커뮤니티에서 가장 널리 쓰이는 MAVLink-ROS 인터페이스입니다. MAVLink 2.0을 지원하고 GPL/LGPL/BSD 삼중 라이선스로 제공되며, 연간 200회 이상의 커밋으로 활발히 유지보수되고 있습니다.
중요한 이유
MAVROS는 ROS 생태계와 MAVLink 기반 오토파일럿을 잇는 표준 브리지로, ROS 기반 인식·계획을 PX4나 ArduPilot 비행 컨트롤러와 결합하는 모든 연구용·상용 드론 시스템의 필수 구성 요소입니다. 10년에 걸친 개발로 ROS 커뮤니티에서 자율 UAV 애플리케이션의 사실상 표준 인터페이스가 되었습니다.
해결하는 문제
자율 드론 시스템은 보통 고수준 인식과 의사결정에는 ROS를 쓰지만, 저수준 비행 제어는 MAVLink 기반 비행 컨트롤러(PX4, ArduPilot)에 의존합니다. MAVROS는 MAVLink 메시지를 ROS 토픽, 서비스, 액션으로 변환하여 이 간극을 메우므로, 별도의 프로토콜 처리 없이 두 생태계가 매끄럽게 통신할 수 있습니다.
핵심 요점
- ROS 1(Noetic)과 ROS 2를 모두 지원하는 공식 MAVLink-ROS 게이트웨이
- 오토파일럿의 텔레메트리, GPS, IMU, 배터리, 상태 데이터를 ROS 토픽으로 제공
- MAVLink 프로토콜을 통해 PX4와 ArduPilot 비행 스택을 모두 지원
- 비전 기반 포즈 추정, 카메라 제어 등 추가 플러그인을 담은 mavros_extras 포함
- GeographicLib을 사용해 AMSL(FCU)과 WGS84(ROS) 좌표계 간 고도를 정확히 변환
대상
- ROS로 자율 드론 시스템을 만드는 UAV 연구자
- 온보드 컴퓨터를 비행 컨트롤러와 통합하는 PX4 및 ArduPilot 개발자
- 드론에 인식 파이프라인을 배포하는 컴퓨터 비전 엔지니어
- 임무 계획과 자율 비행에 ROS를 사용하는 상업용 드론 기업
한계
- MAVLink 프로토콜에 강하게 결합되어 있어 MAVLink를 쓰지 않는 비행 컨트롤러에는 사용할 수 없음
- ROS 2 지원(v2.x)은 비교적 새로워서 ROS 1 버전보다 커뮤니티 자료가 적을 수 있음
- MAVLink 메시지 유형과 좌표계 규약이 많아 설정이 복잡할 수 있음
- 성능이 컴패니언 컴퓨터와 비행 컨트롤러 간 시리얼 또는 UDP 링크 품질에 좌우됨