저번까지는 PX4를 설치했었습니다. 정말 고생하셨어요.
이번 시간에는 MAVROS를 설치하여 ROS2와 PX4-Autopilot을 연결시켜보는 과정을 진행해보겠습니다.
MAVROS는 PX4 드론과 ROS2 Humble 간 MAVLink bridge로, 드론의 상태를 ROS topic으로 변환하고, 제어 명령을 MAVLink로 전달합니다.
MAVLink protocol에 대해 살펴보겠습니다. MAVLink (Micro Air Vehicle Link)는 드론, 지상국, 온보드 컴퓨터 간 가벼운 binary messaging protocolㄹ, heartbeat, attitude, GPS, 모터 명령 등을 정의합니다.
MAVROS는 PX4에서 ROS2로 /mavros/state, /mavros/local_position/pose, /mavros/imu/data 등 topic으로 상태를 구독할 수 있도록 합니다. 또, MAVROS는 반대로 ROS2에서 PX4로 /mavros/setpoint_position/local, /mavros/setpoint_velocity/cmd_vel 등으로 위치 및 속도에 대한 명령을 발행할 수 있도록 합니다. 기본 14540/14557 port의 UDP MAVLink로 SITL과 연결합니다.
GeographicLib는 MAVROS의 GPS 좌표 변환 즉 LLA 및 ECEF간 좌표 변환에 필요한 지오이드 모델 dataset입니다.
FCU URL은 Flight Control Unit 연결 주소로, SITL 기준 udp://:[email protected]:14557로 MAVROS는 listen, PX4로 send합니다. 즉, udp://:[email protected]:14557는 MAVROS가 localhost의 14540번 UDP port에서 MAVLink packet을 listen하고, PX4 SITL이 send하는 127.0.0.1:14557 port로 연결하여 양방향 통신을 하는 주소입니다. 즉, PX4 SITL은 14557 port에 binding되어있고, 14540으로 Heartbeat/IMU 데이터를 보내며, MAVROS는 14540에서 이것들을 받아 ROS 토픽으로 변환하고, 응답을 14557로 돌려보냅니다.
| 토픽 명칭 | 설명 |
|---|---|
| /mavros/state | 연결, armed 상태, flight mode |
| /mavros/local_position/pose | 로컬 위치 (x, y, z), quaternion 자세 |
| /mavros/imu/data | IMU 센서 원시 데이터 (accel, gyro) |
이제 MAVROS 관련 셋업을 진행해봅시다
sudo apt update
sudo apt install -y ros-humble-mavros ros-humble-mavros-extras ros-humble-mavros-msgs
먼저, 위 터미널 코드를 통해 PX4와 ROS2 간 통신 브릿지의 역할을 해주는 MAVROS를 설치합니다. 이는 MAVLink 메세지를 ROS2 topic으로 변환해주는 패키지입니다.
sudo /opt/ros/humble/lib/mavros/install_geographiclib_datasets.sh
그런 다음, 위 터미널 코드를 통해 GPS 좌표 계산에 필요한 지형에 관한 dataset을 설치합니다.
이 셋업까지 완료되면, 이제 연결 test를 해보겠습니다.
터미널은 총 3개 필요합니다.
먼저 첫 번째 터미널에서 아래 터미널코드를 입력해주세요.