ARGOS LAB Start with an idea

21 / TASK ALLOCATION · TWO AUTOPILOTS · MESSAGE IDENTITY

Two vehicles. One mission.
Every message needs the right owner.

A central dispatcher assigns two inspection points using nearest-pair greedy matching. Two independent ArduPilot vehicles take off and execute the requests. Change one waypoint’s MAVLink target identity, then inspect which task actually finishes.

Predict: if a message sent on A1’s connection names system 2, does A2 receive it? Does landing both vehicles mean both inspection tasks succeeded?

Nearest-pair greedy / centralized dispatch.

Know the method ↗
Allocation algorithm / variant
Nearest-pair greedy matching

Choose the shortest available vehicle–task pair, reserve both, then repeat. One task per vehicle; the same assignment is used in both cases.

Decision architecture / execution
One dispatcher · two autopilots

The dispatcher owns assignments and measures completion. Each ArduCopter controls its own simulated flight. Separate processes do not make allocation decentralized.

Communication / identity
Isolated TCP routes · MAVLink 2

Route A1 reaches only A1; route A2 reaches only A2. This experiment targets component 1. Its nonzero target system must match the vehicle on that route; no router forwards the packet to a peer.

Timing / information
One host clock · received estimates

Both processes run concurrently. The browser replays their received pose and attitude on one timeline. Each autopilot retains its own boot clock and local NED frame.

Fidelity boundary: two independent built-in SITL dynamics, placed in a supplied mission ENU layout. The yard is an illustration, not a shared physics world. There are no inter-vehicle collisions, peer avoidance, radio propagation or independent shared truth measurements.

ASSIGN → ADDRESS → EXECUTE → VERIFY

Track the task, the route and the vehicle.

Loading trace…
TWO CONCURRENT ARDUPILOT SITL PROCESSESValidating command identities and completion evidence…

Actual recorded executions. Controls replay the evidence; the browser sends no flight commands.

Inspection yard / received vehicle estimates
Waiting for evidenceLanding cleanup not observed
● A1 / system 1● A2 / system 2◇ Supplied inspection point· · Assigned route

Drag to orbit · scroll to zoom. Inspect either vehicle and follow its received flight.

Assignment is a decision. Completion needs observed execution.

Visit-and-hold tasks confirmed0 / 2Reached and held the assigned point within the mission window.
Landing cleanup confirmed0 / 2Fresh on-ground and disarmed reports, after the LAND request.
Selected vehicle / modeA1 / —Received source identity remains separate from the requested target.
Mission outcome at cursorNot concludedA complete assignment is not a completed mission.

THE SELECTED WAYPOINT ENVELOPE

No waypoint sent yet

TCP route, target system and received source are three different fields.

OWNER AND COMPLETION EVIDENCE

Two tasks, two independent observations.

Task / mission ENUOwnerState at cursorDistance / dwell

Tasks are supplied points, not camera detections. Inspection is represented by a stable position dwell; no image capture or sensor coverage is measured.

Recorded allocation decision

Waiting for the dispatch decision.
Distance cost / mT1T2
Allocation envelope
null

SELECTED VEHICLE · RECEIVED TELEMETRY

A1 / independent autopilot

Latest local position / source / route
null
Latest vehicle heartbeat / source / route
null

Mission ENU = supplied pad offset + the vehicle’s local NED displacement. That alignment is configured, not estimated cooperatively. Stale samples remain visible with their age.

SEND, ACK AND EXECUTION ARE SEPARATE

A1 requests

RequestRoute → targetAdmission / execution
Inspect a request and its evidence

Select a request row to inspect its original envelope.

null

SET_POSITION_TARGET_LOCAL_NED is a setpoint message. It has no COMMAND_ACK. Silence cannot distinguish rejection, delivery loss or slow execution; inspect the route, target and received motion.

PAST EVIDENCE ONLY

Latest observed events.

    Selected vehicle status messages
    []
    The mission window ends before cleanup finishes. A missed visit-and-hold task stays missed even when both aircraft subsequently land.
    Recording provenance, frame mapping and completion rules

    Measured completion criteria

    Selected vehicle parameters read back

    {}

    No shared collision physics, separation assurance, peer sensing, fleet-wide boot clock or localization ground truth is claimed.

    FULL-RECORD COMPARISON · INCLUDES FUTURE EVENTS

    Successful cleanup can follow an incomplete mission.

    These summaries use each complete recording. The main scene and inspectors above show only evidence received by the cursor.

    Recorded caseAllocationTasks completedLanding cleanupObserved limit

    KNOW THE METHOD

    Keep allocation, identity and execution distinct.

    Nearest-pair greedy matching

    For every available vehicle i and unfinished task j, compute the horizontal Euclidean distance cᵢⱼ = √((Eᵢ − Eⱼ)² + (Nᵢ − Nⱼ)²) in the supplied mission frame. Height is excluded from allocation cost; task execution is evaluated in three dimensions. Choose the smallest pair, reserve its vehicle and task, then repeat.

    This is a simple centralized baseline. It does not guarantee a globally optimal assignment or collision-free trajectories. Here each vehicle receives one task, and both recorded cases retain the same ownership.

    A route is not a MAVLink address

    The dispatcher chooses a TCP connection and fills target_system / target_component. Route A1 connects to autopilot 1. Naming system 2 in that packet does not teleport it to route A2; there is no peer router in this experiment.

    Use the exact request, received source IDs and motion evidence together. The wrong-target comparison changes only A1’s task setpoint target; A2’s own task continues on its separate route.

    1. 1. Allocation / ownershipThe dispatcher records one owner for each task. This is an intention, not execution evidence.
    2. 2. Request / admissionGuided, arm, takeoff and LAND use matching COMMAND_ACK records. Position setpoints do not have an ACK.
    3. 3. Task executionFresh received position and speed must satisfy the arrival tolerance continuously for the configured dwell, before the common deadline.
    4. 4. Cleanup / landed and disarmedFresh vehicle state confirms landing separately. It cannot turn a missed inspection into completed work.

    Reproduce the evidence

    npm run record:fleet runs two isolated local SITL processes per case and writes a trace. npm run compare:fleet reads the bundled recording. Replaying this page needs only the static browser app.

    MAVLink routing and target fields ↗ · ArduPilot Guided movement requests ↗ · Experiment specification ↗

    Try it, then explain what happened.

    Compare: replay both cases at the dispatch point. Select A1, inspect the route and target, then select A2. Which field changed?

    Predict: pause before the deadline. Which task will remain incomplete, and what evidence would be needed to say otherwise?

    Separate outcomes: jump to both landed. Explain why the mission outcome and cleanup count are different measurements.