There are two main methods of communication bewteen PX4 and ROS
- MAVROS
- uXRCE-DDS
WE are going to use MAVROS
🔹 What MAVROS does
- PX4 speaks MAVLink out of the box (that’s what QGroundControl, Mission Planner, etc. use).
- MAVROS is a ROS node that:
- Subscribes to MAVLink messages from PX4, turns them into ROS topics/services/actions.
- Publishes ROS messages back as MAVLink commands to PX4.
So MAVROS is essentially:
PX4 (uORB) → MAVLink → MAVROS → ROS
and the reverse on commands.
That extra “MAVLink layer” is what makes it more universal (any MAVLink autopilot, not just PX4) but also a bit slower and less “ROS-native.”
What MAVROS is (MAVROS는 system-wide ROS 패키지이다, 한 번 깔면 어느 workspace에도 쓸 수 있음!! 추가로 ROS패지키라서 ROS2 humble source해줘야 사용가능)
- MAVROS = MAVLink + ROS
- It’s a ROS node (or set of nodes/plugins) that acts as a bridge between MAVLink-based flight stacks (PX4, ArduPilot) and the ROS ecosystem.
- It lets you subscribe/publish to standard ROS topics instead of dealing with raw MAVLink messages.
🔹 What uXRCE-DDS does (지금은 일단 패스…)
- PX4 runs a uXRCE-DDS client directly inside the flight stack.
- This client publishes and subscribes to PX4’s uORB messages as ROS 2 DDS topics.