The control loop is where commands turn into motion. It’s the layer that takes a high-level decision (“fly to x=2, y=3, hold altitude 1.5 m”) and translates it into a stream of MAVLink messages the flight controller actually understands. This section covers four things: how ROS 2 talks to ArduPilot, how the loop stays stable in the face of latency and jitter, how SLAM and Nav2 fit into the planning side, and the specific gotchas that took us several iterations to discover the hard way.
The single most important page here is MAVROS theory — if you’ve never worked with MAVLink before, that’s the place to start. From there, setpoint vs takeoff is a four-rule cheatsheet that condenses about a week of debugging into something you can read in five minutes; we paid for those rules in disarm-on-arm loops and we’d rather you not pay again.
For the planning-side stack, the relevant pages are 2D SLAM (slam_toolbox vs Cartographer), frontier exploration alternatives, Nav2 for drones, and ROS 2 latency tuning. These are research-grade comparison docs — they exist to justify why we made specific choices (slam_toolbox over Cartographer, our own WFD over m-explore-ros2) rather than just claiming we did.
Contents
Auto-generated from child entries during build (update-indexes.mjs).