Static In, Dynamic Out:
Counterfactual Action Augmentation for Moving Object Manipulation

Static In, Dynamic Out (SIDO). A policy trained only on static-object demonstrations grasps a moving object at deployment, by reaching for its predicted future pose.

Overview

A policy trained on static-object demonstrations fails on moving objects. It reaches for where the object was, not where it will be. SIDO closes this gap with no moving-object data, using counterfactual action augmentation to turn each static demonstration into motion-anticipating supervision. SIDO splits the task into two modules: 1) a goal-conditioned policy trained on the augmented data, and 2) an object-pose predictor that forecasts the object's future position.

Method

SIDO method overview

For each static demonstration, SIDO samples an object displacement δ, writes the virtually displaced future position into the policy's pose channel, and morphs the action chunk to keep the hand–object relative pose fixed at the displaced target. H-SIDO uses a heuristic ramp, while DynaSIDO refines the counterfactual action chunk with MPPI under a learned dynamics model so the executed trajectory reaches the target. At deployment, any object-pose predictor supplies the future object position.

Experiments

Object motion patterns across simulation and real-world tasks

We test SIDO in simulation (Mug, Square, Stack across five motion patterns) and on two real-world platforms (Gantry, Peachtree), under static and dynamic conditions, 20 rollouts each. To probe policy-agnosticism we apply SIDO to two policy classes, Diffusion Policy (DP) and Equivariant Diffusion Policy (EquiDP). To probe plug-and-play, we swap the deployment object-pose predictor among a finite-difference rule, an MLP, and a flow-equivariant recurrent network (FERNN). Baselines handle motion with the object's current pose (cur. pose) or a test-time action-compensation shift (AC), while SIDO bakes the future displacement into training.

Results

Result 1: SIDO improves moving-object success while preserving static-object performance

Method Mug Square Stack
staticxycircrand staticxycircrand staticxycircrand
DP (cur. pose)0.200.100.000.150.150.600.000.200.150.201.000.150.400.350.65
DP + AC0.000.100.100.100.300.000.350.200.150.300.400.60
DP + SIDO0.250.350.200.200.300.600.500.400.400.550.950.900.650.650.95
EquiDP (cur. pose)0.350.350.050.050.150.600.100.050.050.100.950.350.550.250.65
EquiDP + AC0.350.050.050.150.050.000.050.200.350.550.650.90
EquiDP + SIDO0.500.100.050.000.000.600.200.100.200.200.950.700.700.750.95

Simulation success rate (↑) on three MimicGen tasks under five motion patterns, 20 rollouts per cell.

Methodx-axisy-axisrandom
staticdynstaticdynstaticdyn
DP0.900.100.850.350.800.15
DP (cur. pose)0.800.350.950.500.900.20
DP + AC0.000.300.00
DP + SIDO0.800.550.950.651.000.25

Real-world Gantry success rate (↑), 20 rollouts per cell.

Methodstaticdynamic
DP0.650.30
DP (cur. pose)0.900.45
DP + AC0.30
DP + SIDO0.750.60

Real-world Peachtree success rate (↑), 20 rollouts per cell.

Result 2: SIDO's gripper tracks the moving object and stays in-distribution

Commanded gripper tracks the object under SIDO

SIDO's commanded gripper sweeps with the moving object, while the baselines lag behind.

t-SNE of pre-grasp wrist frames

SIDO's wrist views stay within the static training distribution, while the baselines drift away and miss.

Result 3: SIDO transfers across policy classes and swappable predictors

PredictorSR ↑FDE (cm) ↓
Finite difference0.252.97
MLP0.252.21
FERNN0.401.77

Predictor swap on Gantry (random), policy held fixed.

SIDO is policy-agnostic: it improves moving-object success regardless of the policy class (DP, EquiDP). It is also plug-and-play in the predictor: holding the policy fixed and swapping only the deployment predictor, lower forecast error (FDE) gives higher success, and FERNN performs best.

Rollouts

Simulation

Mug

static

x-axis

y-axis

circular

random

Square

static

x-axis

y-axis

circular

random

Stack

static

x-axis

y-axis

circular

random

Real-world Gantry

x-axis

static

dynamic

y-axis

static

dynamic

random

static

dynamic

Real-world Peachtree

static

dynamic

Extending to varying speed

Object-pose predictor forecasts on Gantry random: FERNN lands closest to the ground-truth future pose

predictor forecasts (FERNN closest to ground truth)

rollout under changing speed

SIDO also extends to object velocity that changes during a rollout. FERNN forecasts the future object pose accurately as the speed varies (left), so a policy trained over a range of displacement magnitudes reaches for the right target throughout (right).

BibTeX

@inproceedings{anonymous2026sido,
  title  = {Static In, Dynamic Out: Counterfactual Action Augmentation for Moving Object Manipulation},
  author = {Anonymous Author(s)},
  note   = {Under review},
  year   = {2026}
}