ARGOS LAB Start with an idea

11 / COOPERATIVE LOCALIZATION · RELATIVE OBSERVATIONS

Locate together.
But relative to what?

Two drones estimate their own positions from noisy motion readings. A joint-state Kalman filter also uses the displacement between them. Their estimates become connected: a position fix for A1 can correct A2, even though A2 receives no absolute fix.

Predict: both position estimates are shifted two meters east. Can observing the other drone reveal that shared mistake without a world reference?

Name the method and the reference frame

Equations and primary source ↗
Algorithm and variant
Joint-state linear Kalman filter

The state is [x₁, y₁, x₂, y₂]. The full 4 × 4 covariance retains cross-covariances between robots. Compare independent filters that omit peer observations.

Estimation architecture
One central reference estimator

The estimator receives both odometry streams, one relative Cartesian observation and available absolute fixes for A1. “Cooperative” describes the information; this is not a distributed implementation.

Timing and sensor model
0.25 s prediction · 1 s observations

Independent Gaussian noise: odometry σ = 0.08 m per axis per interval, relative displacement σ = 0.15 m, A1 fix σ = 0.20 m. Available packets arrive immediately, once, with known robot identities.

Frame, execution and fidelity
Known axes · planar position estimation

Both robots share an exact heading frame. Drone bodies fly at a fixed display height of 2 m; altitude is not estimated. The scene illustrates the same planar run, with no flight physics, avoidance or real positioning hardware.

Truth is for inspection: solid drones and error distances use evaluator truth. The filter sees only its prior and synthetic noisy measurements. Fixed paths do not change with the estimated positions.

TWO ROBOTS · ONE JOINT BELIEF

A relative observation connects two estimates.

Paused
Localization yard / fixed display altitude

Drag to orbit · scroll to zoom · Focus selected drone for a closer view. Solid drone = evaluator truth; dashed marker = estimate. Camera movement never advances the estimator.

● True drone / evaluator◇ Position estimate◯ Marginal 95% ellipse┄ Error / evaluator
MODEL TIME0.00 sPrediction step 0 / 80
POSITION ERROR / EVALUATOR—RMS of the two planar position errors
RELATIVE ERROR / EVALUATOR—Error in estimated displacement A2 − A1
PAIR-CENTER ERROR / EVALUATOR—Error in the estimated midpoint

SENSOR INPUTS / CURRENT INTERVAL

What reaches the estimator?

A1 / evaluator comparison

True position and the true A2 − A1 displacement never enter a filter update. The relative sensor reports a noisy vector in the declared shared world axes. Its arrow is drawn from true A1 for display; only the displacement enters the filter.

ONE JOINT COVARIANCE / M²

The off-diagonal blocks matter.

P₁₂ = 0

Stage selection changes only this inspector. The scene always shows the final belief at the displayed model time.

Order: x₁, y₁, x₂, y₂. Highlighted blocks are robot-to-robot cross-covariances.
P / m²x₁y₁x₂y₂

Inspect H, innovation and Kalman gain

ERROR AND REPORTED UNCERTAINTY

Relative accuracy is not a world reference.

Evaluator history / m

Solid lines show measured error; dashed lines show the filter’s reported RMS uncertainty radius, √trace(P), for the same quantity. These are different statistics, not a confidence bound on every run.

Observation and schedule events

    PREDICT · COMPARE · EXPLAIN

    Who supplies the missing reference?

    Each case starts paused with seed 7. Observe the same sensor samples with and without the relative update. A common offset is a deliberately miscalibrated prior, not extra measurement noise.

    Reproduce the reference comparisons

    Independent copies use seed 7, the declared prior and identical 20-second budgets. This table leaves the active run unchanged. Errors are for one realization and do not establish a universal method ranking.

    Final evaluator errors, in meters. The reference cases include a deliberately shared prior offset.
    CaseMethodPriorPosition RMS errorRelative errorCenter error

    JOINT-STATE KALMAN FILTER

    Measure a difference.
    Update a relationship.

    Workshop 7 fused estimates of one target. Here the state contains two different robot positions. A relative measurement relates those positions and creates statistical dependence between their errors.

    The independent baseline predicts both robots and applies available A1 fixes. It deliberately omits relative observations, so an A1 fix cannot correct A2.

    1 / PREDICT

    Integrate noisy odometry

    Add each robot’s measured displacement to its position estimate. Add the declared motion noise covariance to P. No exact current world position enters this prediction.

    2 / RELATE

    Observe A2 − A1

    Every available observation compares the measured displacement with the displacement predicted by the joint belief. Both positions are corrected and cross-covariances appear.

    3 / ANCHOR

    Fix A1 in the world

    A synthetic absolute position measurement updates A1. After relative updates connect the errors, the Kalman gain can also move A2’s estimate through P₂₁.

    4 / INSPECT

    Keep the missing direction visible

    Add the same vector to both positions: their difference stays unchanged. Relative measurements alone cannot observe that common translation. An initial prior still supplies finite assumed world information.

    x = [x₁, y₁, x₂, y₂]ᵀ
    x⁻ = x + u   ·   P⁻ = P + Q
    zᵣ = Hᵣx + vᵣ   ·   Hᵣ = [−I₂   I₂]
    zₐ = Hₐx + vₐ   ·   Hₐ = [I₂   0₂]
    ν = z − Hx⁻   ·   S = HP⁻Hᵀ + R
    K = P⁻HᵀS⁻¹   ·   x⁺ = x⁻ + Kν
    P⁺ = (I − KH)P⁻(I − KH)ᵀ + KRKᵀ
    u, Q / odometry and its noise
    The four measured displacement coordinates and Q = 0.08² I₄ m² per 0.25-second prediction. Each Gaussian draw is independent.
    Hᵣ, Hₐ / observation matrices
    Relative displacement uses Rᵣ = 0.15² I₂ m²; A1 absolute position uses Rₐ = 0.20² I₂ m². Relative updates run before absolute updates at each available one-second sample.
    ν, S, K / correction
    The innovation ν is measured minus predicted observation; S is its covariance. The Kalman gain K maps those two innovation coordinates into corrections for all four state coordinates.
    P₁₂ / cross-covariance
    The 2 × 2 block between A1 and A2. A1’s absolute observation can update A2 because its gain uses P₂₁. Each displayed ellipse uses its robot’s marginal block and χ²₂(0.95) ≈ 5.991.

    No absolute observation is not no prior

    The calibrated initial error is sampled with the declared covariance. A finite initial prior anchors the estimate statistically. Removing fixes makes the common translation unobservable from new relative measurements; it does not make the stored covariance infinite.

    Shared bias breaks calibration

    The shared-offset case adds [2, −1.5] m to both initial estimates without increasing the assumed covariance. It demonstrates a misspecified common prior. A small ellipse reports the filter’s assumption and cannot certify that this deliberately biased estimate is accurate.

    Primary method context: Roumeliotis and Bekey — Distributed multirobot localization (2002). This workshop implements a central, four-position linear Kalman reference with supplied robot IDs and shared axes. It does not implement that paper’s distributed factorization, unknown heading, bearing/range sensing, GNSS, SLAM or radio propagation.