ARGOS LAB Start with an idea

10 / MISSION EXECUTION · REACTIVITY AND MEMORY

Behavior Trees.
When the plan gets interrupted.

A drone takes off, inspects a station, returns and lands. The assignment stays fixed. Compare a Behavior Tree (BT) with a finite-state machine (FSM), then change the tree’s memory semantics. Follow the decision that actually reaches the action.

Predict: the drone is partway through an inspection when a hold request arrives. Does the controller check that request again—or remember its earlier decision?

Name the controller and its assumptions

Control flow and primary source ↗
Algorithm and variant
Reactive BT / guarded FSM / memory BT

The first two implement the same interruption policy. The third changes only the root fallback’s memory: a Running mission can skip the higher-priority hold check.

Architecture and local inputs
One onboard executor

One assigned mission; known waypoints, exact own position, service progress, an ideal hold-request input and a sensor-failure flag. No allocator or peer network is involved.

Timing and action semantics
Tick every 0.25 simulated seconds

A selected action advances for 0.25 s at 1.5 m/s; the final decision tick adds no interval. Inspection needs 3 uninterrupted seconds. Halting it discards partial service; completed actions stay complete.

Execution and fidelity
3D kinematics / one browser

Altitude is modeled during takeoff and landing. Both views observe the same position. Drone meshes and the inspection yard illustrate it; aerodynamics, collision avoidance and battery dynamics are absent.

A fair comparison: the reactive BT and FSM share actions, inputs and guard priority. A tree is not automatically safer or more capable. Memory and interruption semantics determine the behavior.

ONE ASSIGNMENT · THREE EXECUTION POLICIES

Inspect. Interrupt. Follow the tick.

Paused
Inspection yard / kinematic flight

Drag to orbit · scroll to zoom · Focus drone for a closer view. Dashed lines show the fixed route; the vertical guide shows altitude. Camera movement never advances the mission.

MODEL TIME0.00 sControl tick 0 · command interval 0.25 s
APPLIED ACTIONIdleAltitude 0.00 m
INSPECTION0.00 / 3 s0.00 s of partial service discarded
HOLD IGNORED0.00 sEvaluator: motion or service while hold requested

EXECUTION LOGIC / LATEST TICK

Reactive Behavior Tree

Not ticked

✓ Success× Failure● Running— Not ticked⊘ Halted

Select a node to inspect its semantics.

LOCAL OBSERVATIONS / ACTION STATE

What did the executor know?

Uninterrupted inspection0%

Only a completed inspection counts. A hold discards partial progress; after release, inspection starts again at zero.

Inspect the latest action ticks
Applied intervals of this run. Opening this history does not tick the controller.
TimeActionPosition (x, y, z) m

EVENT HISTORY / THIS RUN

Separate an interruption from an outcome.

    Mission completion requires a successful inspection and landing at home. An aborted mission can return and land while still failing the inspection objective. With the reactive BT or guarded FSM, a permanent hold reaches the time budget without completing.

    PREDICT · COMPARE · EXPLAIN

    The same mission, a different decision.

    Load a paused case, jump to the event boundary, then step once. Inspect which nodes were visited and which action was halted.

    Reproduce the reference comparisons

    Independent copies use identical initial conditions and action primitives, up to the same 30-second budget. Opening this table never changes your active experiment. “Completed” measures the mission objective; hold violations remain visible separately.

    These comparisons describe the declared controller variants, not a general ranking of Behavior Trees and finite-state machines.
    EventControllerOutcomeTimeHold ignoredService discarded

    THE RULE BEHIND THE REACTION

    A tick is a question.
    A status is an answer.

    A Behavior Tree passes a tick through its control nodes. Each visited child returns Success, Failure or Running. The return status determines which child gets ticked next.

    A finite-state machine instead stores the current execution state and follows explicit transitions. With the same guards and action semantics, it can produce the same trajectory and outcomes.

    →

    Sequence

    Tick children in order. Continue after Success; return at the first Running or Failure. Return Success when every child succeeds.

    ?

    Fallback / selector

    Try children in priority order. Continue after Failure; return at the first Running or Success. Return Failure if every child fails.

    ↻

    Reactive reevaluation

    Start at the first child on every tick. Here, the root checks the hold branch before the mission. A newly Running hold halts the previously active mission action.

    M

    Memory while Running

    Resume at the remembered Running child. Here, only the root fallback has memory. Once execution is Running, the root skips the hold branch until execution returns.

    Move: p′ = p + min(vΔt, ‖g − p‖) · (g − p) / ‖g − p‖
    Inspect: q′ = min(3 s, q + Δt)
    Halt Inspect before completion: q′ = 0
    p, g / position and target
    Three-dimensional vectors in meters. Motion clamps at the target, with no acceleration or overshoot; the zero-distance case stays still.
    v and Δt
    Speed is 1.5 m/s; each model interval lasts 0.25 s. Playback speed changes wall-clock pacing, not these values.
    q / inspection progress
    Uninterrupted service time. A completed action is latched for the run; an incomplete inspection resets when halted.
    Idle / Halted in the display
    Idle means the node was not visited in the latest tick, not a fourth return status. Halt is cancellation of an earlier Running action, shown separately.

    Failure is not a hold request

    The inspection action itself returns Failure when its sensor has failed. The execution fallback then selects an abort return and landing. The memory-root variant can still observe that action failure even though it skips the higher-priority hold condition.

    A diagram does not guarantee a policy

    The FSM uses the same top-priority hold guard as the reactive tree. A hold maintains the current position. The memory-root variant deliberately demonstrates a skipped guard; production controllers need explicit interruption and safety contracts.

    Primary vocabulary and control-flow source: Colledanchise and Ögren — Behavior Trees in Robotics and AI: An Introduction. Modern reference vocabulary: Fallback nodes and Sequence nodes in BehaviorTree.CPP. The three small executors, action latching and interruption policy are declared educational implementations, not a flight-control stack.