Simulation Container
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 sameChannelManifest::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.”
Source Code
- Channel manifest:
crates/roz-core/src/channels.rs(ChannelManifest::quadcopter()) - MAVLink bridge:
crates/roz-worker/