ARGOS LAB Start with an idea

23 / SHARED PHYSICS · THREE AUTOPILOTS · MEASURED SEPARATION

Three drones.
One physical world.

Three ArduPilot autopilots fly Iris quadrotors in the same Gazebo physics world. A central coordinator assigns six visit-and-hold tasks using nearest-pair greedy matching and executes them with reactive Behavior Trees. Compare normal operation with A1’s controlled withdrawal, then inspect the physical evidence behind the mission.

Predict: does finishing six tasks establish that the drones stayed apart? Does the coordinator know the exact world pose shown by the simulator?

Greedy allocation + reactive BTs + shared Gazebo physics.

Know the methods ↗
Allocation algorithm / variant
Repeated nearest-pair greedy

Choose the shortest available vehicle–task pair from fresh received positions. Reserve one task per idle vehicle. Reconsider pending work as vehicles become available.

Execution / tree semantics
Reactive fallback with priority withdrawal

Each tick checks retirement before normal mission work. Running task execution can be halted; an interrupted task stays reserved until landing is confirmed.

Decision architecture / communication
Central coordinator · three MAVLink routes

The coordinator owns the task ledger and all three trees. Three independent autopilots control aircraft in one physics scene. The coordinator receives each autopilot’s telemetry; it does not consume simulator world truth.

Timing / information
Recorded host ticks · received telemetry

Host receipt time orders decisions and observations; Gazebo simulation time describes physics progress. Simulator poses and contacts are separate evaluator evidence. These clocks are not interchangeable.

Fidelity boundary: one Gazebo world supplies flight dynamics and collision geometry to three ArduPilot instances. Known task coordinates and clear direct legs are supplied; no obstacle planner, ORCA, perception or radio-loss model is added. A1’s retirement is a controlled request, not a detected crash.

ONE WORLD → THREE AIRCRAFT → INDEPENDENT PHYSICAL EVIDENCE

Inspect the mission and the world it flew in.

Loading trace…
ONE GAZEBO WORLD + THREE ARDUPILOT AUTOPILOTSValidating task ownership and recorded execution…

Actual recorded runs. Playback observes their evidence; this page sends no flight commands.

Shared site / world truth + estimates
Preparing aircraft0 / 3 landings confirmed
World truth is evaluator-only.
● A1 / SYS 1● A2 / SYS 2● A3 / SYS 3Solid: world poseDashed: received estimate◇ Visit target

Drag to orbit · scroll to zoom. Select a vehicle and follow its recorded flight.

Gazebo simulation clockNo world sample

Task ownership, flight execution and physical separation are separate pieces of evidence.

Visit-and-hold tasks confirmed0 / 6Each task counts once, from its owner’s fresh position evidence.
Retirement / ownershipNot requestedA canceled attempt does not release its task.
Mission elapsed timeNot startedFrom mission start after takeoff to the sixth confirmed task.
Landing cleanup confirmed0 / 3On-ground and disarmed reports; separate from task completion.

EVALUATOR ONLY / SHARED PHYSICS

Task success and physical evidence.

The coordinator confirms visits from received telemetry. These independent world measurements describe how the aircraft actually moved in Gazebo.

Closest sampled pair so farNo world samplesCenter-to-center distance; not body clearance.
Recorded contact evidenceNo samplesGround contact is separate from unexpected contact.
Selected estimate vs worldNo paired samplesLatest received poses; report ages remain visible.

World poses and pair separation

PairLatest distanceEvidence

Contact observations

Contact evidence comes from the simulator. A contact-free sampled trace is not a collision-avoidance guarantee.

    Raw shared-world evidence at this cursor

    EXCLUSIVE OWNERSHIP / THE HANDOVER RULE

    A task belongs to at most one vehicle.

    The coordinator releases A1’s unfinished reservation after observing fresh landing evidence.

    1. 1 · Withdraw
    2. 2 · Halt attempt
    3. 3 · Confirm landing
    4. 4 · Release task
    5. 5 · Assign new owner

    SHARED COORDINATOR LEDGER

    Six tasks, exclusive ownership.

    Target / ENU mOwnerStatusAttempts

    Pending work is eligible; locked work is not.

    Recorded allocation / task events

    ACTUAL HOST EXECUTOR TICKS

    A1 / reactive Behavior Tree

    Not tickedNo tick at this cursor

    Only visited nodes get a status for this tick. Unticked branches provide no fresh decision.

    Raw tick: visits, statuses and halted actions

    PER-VEHICLE EVIDENCE

    A1 / independent autopilot

    Raw local position and heartbeat
    Configured parameters and frame registration

    REQUESTS / OBSERVED EXECUTION

    A1 / command history

    Request / sent atDestinationACK / observation
    Inspect selected request

    RECORDED MISSION EVENTS

    Decisions and observations at this cursor.

      Recording provenance and completion criteria

      What counts as completion?

      COMPLETE RECORDINGS / COMPARISON

      Same six points, one controlled withdrawal.

      These full-run results are visible independently of the playback cursor. Mission duration starts after all three takeoffs are confirmed; cleanup ends when all vehicles are confirmed landed. The timing difference describes these recordings, not a statistical performance claim.

      Recorded caseTasks / attemptsMission durationFinal landingHandoverShared-world evidence

      KNOW THE METHODS

      The autopilot estimates.
      The simulator measures separately.

      One physics engine, three control loops.

      Each ArduPilot instance receives simulated sensors from its own Iris model and sends actuator output back through the ArduPilot–Gazebo JSON integration. The three bodies and the site’s collision geometry belong to one Gazebo world. Rendering this recording runs no additional flight dynamics.

      World truth is not an agent input.

      The coordinator uses fresh MAVLink estimates to allocate tasks and confirm dwell. Gazebo world poses let the evaluator measure pair distances and compare estimates with physical motion. Turning a layer on does not give its data to the coordinator.

      Separate the clocks and outcomes.

      The replay cursor is host elapsed time: when evidence was received. World observations also carry simulation time. Mission completion, landing cleanup, sampled separation and physical contacts answer different questions. Minimum center distance is not surface clearance or a collision-avoidance proof.

      Nearest-pair greedy is the allocation rule.

      The central coordinator measures horizontal distance from each idle vehicle’s latest fresh registered ENU position to each pending target. It chooses the minimum pair, removes that vehicle and task from the candidates, then repeats. Ties use stable vehicle/task order.

      cost(vehicle, task) = √((Evehicle − Etask)² + (Nvehicle − Ntask)²)

      Greedy matching is simple and inspectable; it does not optimize the complete route, balance future workloads or implement CBBA. Completed work is never assigned again. A reservation locked by retirement is excluded from candidates.

      Reactive Behavior Trees organize execution.

      The root reevaluates higher-priority conditions on every host tick. A withdrawal branch preempts a running visit action and issues LAND once. The vehicle’s unfinished task remains locked while it lands. Release follows confirmed on-ground and disarmed evidence; normal greedy allocation can then pick a new owner.

      A tick returns Success, Failure or Running. These are executor statuses: a successful retirement branch means the vehicle retired, not that its interrupted task succeeded. The inspector shows the traversal actually recorded by the Python coordinator.

      Three separate completion questions.

      1. Was the request admitted?Command messages can receive a COMMAND_ACK. Position setpoints have no such ACK; a sent target alone cannot establish arrival.
      2. Was the assigned task completed?Fresh position and speed evidence must satisfy the declared distance, speed and dwell limits during an active attempt. A canceled attempt cannot later complete its old task.
      3. Was landing completed?A LAND request and an accepted ACK are followed by fresh on-ground and disarmed reports. This evidence permits release of a retiring vehicle’s reservation.

      The two remaining vehicles may finish their current tasks while A1 lands. They wait if only locked work remains. The handover uses a single coordinator and working links; it is not a consensus or network-partition experiment.

      Replay a new local run

      npm run record:shared-world -- --output local/ardupilot-shared-world.json

      The optional Docker runner starts one Gazebo world and three ArduCopter processes per case. Import its JSON above to inspect that recording. Normal browser playback requires neither Docker nor a live autopilot.

      Try these inspections

      1. Select withdrawal, then jump to Task locked. Inspect A1’s tree and the task owner. A halted attempt and a retained reservation should coexist.

      2. Jump to Landed → release, then Reassigned. Find the old and new owner and compare the command timestamps with the recorded task events.

      3. Switch between World + estimates and each pose layer. Inspect the selected vehicle’s error and report ages. Then switch to 2D: the cursor and underlying evidence must remain unchanged.

      4. Jump to Six tasks done. Compare the task count, landing cleanup, smallest sampled separation and contact observations. Which evidence supports each conclusion?

      Primary sources and scope

      Colledanchise & Ögren, Behavior Trees in Robotics and AI explains tree semantics and reactivity. The bounded tree, ownership ledger and greedy policy here are explicit application choices.

      ArduPilot Guided command documentation describes the flight requests. MAVLink command protocol distinguishes command acknowledgement from completed application work. The official ArduPilot–Gazebo integration supplies the shared external physics. See the experiment specification and measured results for the implemented assumptions.