Skip to main content

Simulation Container

docker pull bedrockdynamics/substrate-sim:ardupilot-gazebo
The container bundles ArduPilot SITL, Gazebo Harmonic, and the MAVLink gRPC bridge.
PortProtocolPurpose
9090gRPCros2-bridge (telemetry streaming + MAVLink command relay)

Differences from PX4

ArduPilot and PX4 are both MAVLink-based autopilots, but they differ in several ways that affect the bridge implementation:
AspectPX4ArduPilot
Velocity control modeOFFBOARDGUIDED
Mode switchingCOMMAND_LONG with MAV_CMD_DO_SET_MODESET_MODE message with ArduPilot mode numbers
MAVLink dialectStandard MAVLink 2ardupilotmega dialect with extra messages
Setpoint messageSET_POSITION_TARGET_LOCAL_NEDSET_POSITION_TARGET_LOCAL_NED (same)
ArmingCOMMAND_LONG with MAV_CMD_COMPONENT_ARM_DISARMSame, but may require arming checks to be disabled in SITL
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)

IndexNameUnitLimits
0body/velocity.xm/s-5.0 to 5.0
1body/velocity.ym/s-5.0 to 5.0
2body/velocity.zm/s-3.0 to 3.0
3body/yaw_raterad/s-pi/2 to pi/2

State Channels (4)

IndexNameUnitType
0body/position.xmPosition
1body/position.ymPosition
2body/position.zmPosition
3body/yawradPosition
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