Skip to main content

Simulation Container

The container bundles ArduPilot SITL, Gazebo Harmonic, and the MAVLink gRPC bridge.

Differences from PX4

ArduPilot and PX4 are both MAVLink-based autopilots, but they differ in several ways that affect the bridge implementation: The flight sequence is similar but uses GUIDED mode instead of OFFBOARD:
1

ARM

Send the arm command. ArduPilot enables the motors.
2

TAKEOFF

Command takeoff. ArduPilot handles the climb in its current mode.
3

GUIDED

Switch to GUIDED mode. ArduPilot accepts external velocity setpoints.
4

Velocity Control

WASM controllers write body velocity commands at 100Hz. The bridge relays these as MAVLink setpoint messages.
5

LAND

Switch to LAND mode. ArduPilot handles descent and motor disarm.

WASM Channels

ArduPilot drones use the same ChannelManifest::quadcopter() manifest as PX4 drones — 4 body velocity command channels and 4 position state channels at 100Hz.

Command Channels (4)

State Channels (4)

The NED frame negation applies here too — the bridge negates vz so that positive values in the WASM controller mean “go up.”
ArduPilot support is less tested than PX4. The SITL simulation and bridge integration have had less validation. If you encounter issues, please report them at github.com/BedrockDynamics/roz-oss.

Source Code