wikillm

Concept · 1 paper · updated 2026-11-01

Continuous-time state estimation

Estimates a state that is defined at every time instant, not only at sensor timestamps, so it can be queried between samples. A sliding window of recent time steps keeps the cost bounded for live use. One paper so far: a 0.1 s window on a continuum robot matched or beat a 10 s batch smoother on all five trajectories, at 8.7 to 10.2 ms per step (author-reported).

state-estimationcontinuum-robotssliding-windowfactor-graph

Markdown4 min read

AI-compiled overview, updated 2026-11-01, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

Overview

The problem is to estimate a state that changes over time when sensors report at irregular times and the estimate must be available live. The state in 2510.26623 §3.1 is defined for every time t and every arc length s along a continuum robot. The estimate can therefore be read at any time, not only at a sensor timestamp. The sensors in that paper are asynchronous 2510.26623 §3.4.2.

The invariant that the variants share is the model and the measurements. The state is a pose, a velocity and a strain, and each measurement adds a factor to a maximum a posteriori problem 2510.26623 §3.1. The variants differ only in how much past data stays in that problem. The paper frames the one-step filter, a sliding window and a full batch as points on one scale of window length 2510.26623 §3.3.4.

The paper's motivation is the gap between two existing options. Filters run live but linearise at each step, which can bias nonlinear problems. Batch smoothers are more accurate but cannot run online 2510.26623 §1.

All evidence so far comes from one paper: one tendon-driven robot, one sensor set, and five 10 s trajectories. The authors state that only one robot and one sensor configuration were tested 2510.26623 §5. Timings are author-reported on one CPU 2510.26623 §3.4.1.

Variants

All three variants below appear in one paper's experiments. They differ by window length. Card for all three: the paper's card.

One-step filter (window of 0 s)

The state is re-estimated from each new measurement using one time node. The paper calls this the 0 s window 2510.26623 §3.3.4 §4. It is the cheapest option, at 4.0 to 4.4 ms per step on the paper's hardware 2510.26623 tab. 1. The paper's stated concern is that linearising at each step can bias the posterior for nonlinear systems 2510.26623 §1.

Sliding window (the paper's 0.1 s SWF)

A window of recent time steps is re-solved each time a measurement arrives. The oldest state is folded into a prior with a Schur complement, so the problem size stays fixed 2510.26623 §3.3.2. The paper's main configuration uses a 0.1 s window 2510.26623 §4. It runs at 8.7 to 10.2 ms per step 2510.26623 tab. 1.

The reported state is read from the back of the window. That state includes all measurements in the window but lags by up to the window length 2510.26623 §3.3.3. The paper also describes reading from the front, which is live, but reports no accuracy gain for it 2510.26623 §5.

Batch continuous-time smoother (window of 10 s)

The whole recording is solved at once. It is the accuracy reference in the paper's table 2510.26623 §4. It takes about 1.36 s per step on the paper's machine, so it is offline only 2510.26623 tab. 1.

When to use which

The choice depends on the per-step time budget, whether the estimate must run live, and how much accuracy the application needs. The numbers are the paper's, for one robot and one sensor set.

SituationUseWhy
Live, with a few ms per step and small accuracy loss acceptableOne-step filter4.0 to 4.4 ms per step. Its position RMSE was higher than the window on four of five trajectories, and tied on one 2510.26623 tab. 1 §4.
Live at 30 Hz, accuracy close to the batchSliding window, 0.1 sUnder the 33.3 ms budget at 30 Hz. Matched the batch on three trajectories and was within 0.01 points on a fourth 2510.26623 §4 tab. 1.
Offline analysis, no latency limitBatch smootherBest reference for accuracy. Too slow to run live 2510.26623 tab. 1 §4.
Noisier or slower sensors (lower rate, larger noise)Larger windowThe authors expect larger windows to help with lower-rate, noisier sensors 2510.26623 §5.
Covariance needed between samples after the factWindow greater than one stepThe one-step filter does not allow continuous-time covariance queries. Larger windows do 2510.26623 §3.3.4.
Control loop that cannot tolerate lagFilter or front-read estimateThe window's back-read estimate lags by up to the window length 2510.26623 §3.3.3.
Small per-step budget, no continuous covariance neededDrop the continuous covarianceThe paper reports a variant under 5 ms per step, over 200 Hz 2510.26623 §5.

Larger windows do not always help. On the Out-of-Bounds trajectory, position error rose at larger windows, and the authors suspect the pose sensor's boundary measurements, which the batch then overfits. This is a hypothesis the paper did not test 2510.26623 §4 §5.

Implementation sketch

The loop below is the common core of the sliding-window variant. Where the one-step filter differs, set the window length to one time step. Where the batch differs, never marginalise. The paper's own algorithm is 2510.26623 alg. 1.

Pseudocode
# Sliding-window estimator, common core  [arxiv:2510.26623 §3.2] [§3.3]
# Input:  prior on the first state, window length w (seconds), measurements
# Output: one state estimate per new measurement

def sliding_window(prior, w, measurements):
    # Start with the prior as the only factor and an empty window  [§3.2]
    factors = [prior]
    nodes = []
    for m in measurements:
        # Add time nodes until the window covers the new measurement time [§3.3.1]
        nodes = extend_nodes(nodes, m.time)
        # Add motion, spatial, boundary and measurement factors  [§3.2]
        factors = add_factors(factors, nodes, m)
        # Re-solve the MAP problem over the window  [§3.1]
        nodes = gauss_newton(factors, nodes)
        # Read the state from the back of the window, which lags  [§3.3.3]
        yield nodes.back
        # Fold the oldest state into a prior when the window is too long [§3.3.2]
        if nodes.span > w:
            factors = marginalise_oldest(factors, nodes)
            nodes = drop_oldest(nodes)

The loop does not stop Gauss-Newton on its own. The paper gives no stopping rule, and the shipped code uses a step-size threshold with an iteration cap 2510.26623 §3.1. Choose and test both on your own data.

Contradictions

None known. This page cites one paper so far.

Papers

  • Sliding-window filter for continuum robots: a sliding-window factor-graph estimator for a continuum robot's pose, velocity and strain, compared with a one-step filter and a 10 s batch smoother on five trajectories.

Source and license

Compiled from the papers listed on this page, all published under CC BY, CC BY-SA or CC0, with citations. See each paper's page for its authors and license.