Diffusion Policy is a visuomotor robot policy that generates an action sequence by conditional denoising, from Chi et al. (2023). Its extended journal version evaluates 15 tasks and reports a 46.9% average relative improvement in simulation, using the best baseline and backbone per column, multi-human data excludedSource 1.

Six labelled frames of two robot arms hanging a red shirt: initial state, orient shirt, pick hanger, insert right collar, insert left collar and hang on rack.
A diffusion policy hangs a shirt on its own, a long-horizon task with a deformable object and several bimanual stages. Six frames of an autonomous ALOHA Unleashed rollout, from the initial state to the shirt on the rack.
Paper figure: Tony Z. Zhao et al. / arXiv. Licence: CC BY 4.0.

Receding-horizon control

Diffusion Policy executes TaT_a actions of a TpT_p-action prediction, then observes and replans. The CNN configuration executes 8 of 16 on many tasks, and the next inference can warm-start from the previous predictionSource 1.

TaT_a acts like ACT's chunk size: large values give smooth motion that reacts slowly, and small values react fast but resample often, so each sample can switch modeSource 4. At the policy's 10 Hz command rate, Ta=8T_a = 8 commits the robot for 0.8 secondsSource 1. Try “Never rethink”: the dashed tails vanish.

Receding horizon
Plan 1.6 seconds ahead, act on half, then rethink
How often it rethinks
Adjust more
Run the reader to watch each plan cut shortplans 1.6 seconds ahead · acts on 0.8 seconds · rethinks 1.25 times a second

A schematic of the replanning cycle, not a recorded run.

Acting on only the first half of each plan, then replanning, lets the robot react to what it sees while still moving smoothly.
How this was made

This is receding-horizon control. Each plan predicts T_p actions and the robot executes the first T_a before it plans again; the rest of each plan is replaced by the next plan and never executed. The presets use the Diffusion Policy setting, T_p = 16 and T_a = 8 at 10 Hz: 1.25 replans a second and 0.8 s committed per plan. “Never rethink” sets both to 32, so the robot runs each plan open-loop. Now T_p = 16, T_a = 8: 1.25 Hz replan rate, 0.8 s committed per plan.

The bench is a schematic, not a recorded run: one row of tape is one planned step, the hole across a row is where that step moves, and the path the holes follow is made up. Running, it moves three times slower than ten steps a second.

A receding-horizon plan with T_p 16 and T_a 8 issues 4 chunks across the 32-step window, replanning at 1.25 Hz and committing 0.8 s per plan; the inked rows are executed while the unread 8-step tails are thrown away into the bin.

Current receding-horizon plan
T_p
16
T_a
8
chunks
4
replan rate
1.25 Hz
committed
0.8 s
Schematic of the replanning cycle; the preset uses the Diffusion Policy setting: plan 16 steps, act on 8, ten steps a second.

Multimodal demonstrations

When one operator passes an obstacle on the left and another on the right, mean-squared-error regression averages the demonstrations into a collision. Energy-based implicit policies often beat such explicit policiesSource 10, and diffusion models learn an expressive distribution over the joint action spaceSource 11. Pan et al. (2025) contest this motivation: generative policies owe their gains to supervised iterative computation, and a two-step regression policy essentially matches flow policiesSource 12. Fine-tuned OpenVLA-OFT, an L1-regression VLA, beat from-scratch Diffusion Policy and ACT by up to 15 points of average successSource 13.

Denoising in action space

Diffusion policy
From random noise to two good ways to move
Adjust more
pin set to a good movepin still randomthread through the pins: the move

beat 5 / 5 Two random guesses, two good moves · neither hits the bar

Illustrative: a drawn model of the idea, not a trained robot’s output.

Starting from random guesses and cleaning them up step by step lets the robot keep two different good moves instead of blurring them together.
How this was made

In symbols, the policy samples a∼p(a∣o)a \sim p(a \mid o): an action a is drawn from a distribution of actions conditioned on what the robot observes, o. Over the 10 clean-up steps the two guesses’ average distance from the move each lands on falls from 0.87 → 0.00, measured in arch heights.

The guess the scene follows starts 0.82 from its move and ends 0.00 away.

The pin heights come from an illustrative model with fixed random seeds. Each move is 16 planned positions, the prediction horizon of the Diffusion Policy paper (Chi et al., 2023, arXiv 2303.04137); training mixes in noise on improved DDPM's square-cosine schedule, and acting runs the 10 deterministic DDIM steps the paper uses on real robots. The denoiser is the ideal one for a training set of just the two demonstrations, not a trained network’s output.

The drawing is a pin gauge, two of them side by side. Each pin’s height is one planned position, and the thread through the pins is the move. The bar is what the camera sees. A demonstration arches the thread over the bar or sags it under; a thread pulled straight, the average of the two, would run into it. The gauge, the bar and the camera are an illustration.

The five steps, in order:

  1. Demonstrations: people showed the robot two different good ways to make the same move.
  2. In training, random noise is added to every demonstrated move until they all blur into one random cloud.
  3. To act, the robot starts from random guesses and cleans them up in ten small steps, guided by what it sees; follow one guess.
  4. Every guess ends on a good move: in symbols, a move a is drawn to fit what the robot sees, o.
  5. Starting from random guesses and cleaning them up step by step lets the robot keep two different good moves instead of blurring them together.

The policy is a denoising diffusion probabilistic model (DDPM)Source 15 conditioned on recent observations. Where a regression head computes at=fθ(ot)a_t = f_\theta(o_t), Diffusion Policy models p(At∣Ot)p(A_t \mid O_t) over the next TpT_p actions. Inference starts from Gaussian noise and repeatedly subtracts a fraction of the noise that the denoiser ϵθ\epsilon_\theta predicts,

Atk−1=α(Atk−γ ϵθ(Ot,Atk,k)+N(0,σ2I))A_t^{k-1} = \alpha \left( A_t^k - \gamma \, \epsilon_\theta(O_t, A_t^k, k) + \mathcal{N}(0, \sigma^2 I) \right)

until the sample is a valid action chunk. Training uses noise-prediction MSE with improved DDPM's square-cosine scheduleSource 1 Source 16. Real-world runs use DDIM, which keeps DDPM training but samples more efficientlySource 17, with 10 inference iterations and 0.1-second latency on an Nvidia 3080 in the main text and 16 in the appendixSource 1.

2
observations To
CNN Lift/Can/Square simulation rows
16
prediction Tp
predicted actions in those rows
8
execution Ta
executed actions in those rows
10 / 16
DDIM steps
real-world main text / appendix

CNN and transformer variants

The CNN backbone adapts Diffuser's one-dimensional temporal U-Net over state-action trajectoriesSource 3 to model only p(At∣Ot)p(A_t \mid O_t) and predict only actionsSource 1, injecting observations through FiLM's feature-wise affine transformationSource 18:

Backbone variants

CNN (default)
1D temporal U-Net over the action sequence
CNN conditioning
observations injected via FiLM
transformer
time-series diffusion transformer (minGPT-style)
transformer conditioning
observation embedding via cross-attention
visual encoder
ResNet-18 with GroupNorm, trained end-to-end

The CNN is the recommended default and works on most tasks without much tuning. The transformer gives most of the best state-based results, especially with fast action changes, but costs more tuning, and adding layers sometimes hurtsSource 1. ScaleDP confirms the layer problem and scales the transformer from 10 million to 1 billion parametersSource 19.

Variants and scale

DP3 conditions on sparse point clouds and handles most of 72 simulation tasks with 10 demonstrationsSource 20, and Equivariant Diffusion Policy builds in SO(2) symmetry for 21.9% higher average successSource 21. ALOHA Unleashed pairs Diffusion Policies with large-scale ALOHA 2 data for deformable, contact-rich bimanual tasksSource 22, and TRI's Large Behavior Models scale the recipe to approximately 1,700 hours and match from-scratch policies with 3 to 5 times less dataSource 23.

Two photographs: everyday objects on a wooden table with the letters DP3 spelled out, and a Franka arm with an Allegro hand and a RealSense L515 camera above a table.
3D Diffusion Policy swaps images for sparse point clouds from a single depth camera. Left, the everyday objects in its real tasks; right, a Franka arm with an Allegro hand under a RealSense L515.
Paper figure: Yanjie Ze et al. / arXiv. Licence: CC BY 4.0.

Distillation

Iterative denoising is slow for mobile manipulators and quadrotors without high-end GPUs. Consistency models generate in one step by designSource 24, and Consistency Policy distills a Diffusion Policy teacher into one- or three-step generation; on Robomimic Square, three teachers at 0.84 to 0.92 success yielded students at 0.88 to 0.92Source 5.

One-Step Diffusion Policy lifts action prediction from 1.5 Hz to 62 Hz on real Franka tasksSource 6. Drifting Models (Kaiming He and colleagues, February 2026) train a one-step generator without distillation; swapped into Diffusion Policy, one step matched or beat the 100-step original on 10 of 14 simulated task settingsSource 30.

Flow matching

π0 replaced the DDPM with conditional flow matching, which regresses vector fields of fixed conditional probability pathsSource 26, on a straight path as in rectified flowSource 27. It samples noise ε\varepsilon and forms the interpolant

Atτ=τAt+(1−τ)ε,u(Atτ∣At)=At−εA_t^\tau = \tau A_t + (1 - \tau)\varepsilon, \qquad u(A_t^\tau \mid A_t) = A_t - \varepsilon

then trains the network to predict uu, drawing τ\tau from a beta distribution weighted toward the noisy end. Sampling integrates from τ=0\tau = 0 to τ=1\tau = 1 with 10 forward Euler stepsSource 8.

Bilinear Flow Policy (Georgia Tech, University of Washington and Toyota Research Institute, October 5, 2026) targets goals outside the training distribution: across five simulated tasks it reached 2.63 times the out-of-distribution success of a goal-conditioned flow policy, and on two real tasks 50% against 18%Source 31.

Real-time chunking

Real-Time Chunking generates the next chunk while the current one executes, holding average throughput at +100 and +200 ms of injected delay on six real π0.5 tasksSource 9, and training-time RTC removes its inference overheadSource 28.

Limitations

The original paper conditions on observations alone, on single- and multi-task benchmarks and separate UR5 and Franka setupsSource 2; Octo adds language or goal-image conditioningSource 7, and π0 a pretrained vision-language backboneSource 8.

Reactivity is bounded by TaT_a: events inside a committed segment wait for the next inferenceSource 14. Sampling cost remains, though one-step successors such as MP1 cut it to 6.8 msSource 25. With sparse data it acts like an action lookup table, returning training actions even for images of cats and dogsSource 29.