Online Robot Manipulation Error Detection and Description
CoRL2026
TL;DR We formulate robot failure detection as online video temporal grounding, predicting the temporal boundaries and a cause-and-effect description of each manipulation failure as the video streams.
Prior robot failure detectors either reduce a failure to a per-frame anomaly score or summarize it only once the episode is over. We instead formulate failure detection as online video temporal grounding: as the video streams, STREAM-FAIL emits the temporal boundaries of each failure together with a natural-language cause-and-effect description.
Because general video-language models have little manipulation knowledge, we also build an automatic pipeline that turns unlabeled robot trajectories into temporally grounded annotations for pre-training — worth a 73% relative gain in localization. We release both the generated corpus and DETECT-DROID-FAILURE, a human-annotated benchmark of real-world failures.
A misaligned grasp is not an instantaneous event: it begins with a subtle offset during approach, escalates when the gripper closes on the wrong surface, and ends with the object slipping from the hand. Capturing that span — and explaining it — is what a recovery policy or a human operator actually needs. Prior work gives only an anomaly score, a post-hoc episode summary, or a frame-level label; we answer when a failure occurs and why, in a single streaming pass.
| Method | Domain | Video | Online | TG | Free-form | Cause-effect |
|---|---|---|---|---|---|---|
| TRACE | General | ✓ | ✗ | ✓ | ✓ | ✗ |
| OnVTG | General | ✓ | ✓ | ✓ | ✗ | ✗ |
| REFLECT | Robot | ▲ | ✗ | ▲ | ✓ | ✗ |
| AHA | Robot | ▲ | ✗ | ✗ | ✓ | ✗ |
| RACER | Robot | ✗ | ✓ | ✗ | ✓ | ✗ |
| Ours (STREAM-FAIL) | Robot | ✓ | ✓ | ✓ | ✓ | ✓ |
A general video-language model knows little about manipulation, and no public dataset pairs time intervals with robot-action descriptions. So we generate that supervision: a multi-stage VLM pipeline turns unlabeled DROID episodes into temporally grounded captions for pre-training.
Every stage is verified by a second VLM running on the opposite backbone from the generator (Qwen3.5-VL-122B and Cosmos-Reason2-8B), so the two models cross-check each other. Over the full DROID dataset this processes 95K videos into roughly 950K phase tuples — 1.8 tasks per video, 5.61 phases per task.
Given a stream, the model may condition only on frames up to the current step, and must output a tuple per failure. We build on OnVTG's streaming proposal framework but replace its visual backbone with that of Video-LLaMA3 (VL3) and reuse the paired language model, so the architecture inherits VL3's video understanding and language generation while keeping online grounding. Grounding runs on every incoming chunk for low latency; the language head runs only once an interval is committed, decoding from the localized visual features rather than from boundary tokens.
No existing resource pairs failure boundaries with causal descriptions on real robots, so we annotate one by hand on top of DROID, which holds ~16,000 unsuccessful trajectories. For each event, the start is the earliest moment the cause becomes observable (the gripper making unstable contact with a spoon) and the end is the moment the outcome is apparent (the spoon hitting the floor); each description likewise separates outcome from cause, so the annotations support causal analysis and not just detection.
The held-out split used throughout the results carries 1,212 episodes with 1,466 failure events, plus 180 verified failure-free episodes on which any predicted interval counts as a false positive, and is disjoint by trajectory ID from all training data.
Localization is scored by mean temporal IoU and F1 at IoU thresholds. Description quality is measured only on events localized correctly at IoU 0.7, so a fluent description of a mistimed detection cannot inflate the score.
| Architecture | mIoU ↑ | F1@0.7 ↑ | CIDEr@0.7 ↑ | LLM ↑ |
|---|---|---|---|---|
| OnVTG | 0.201 ± 0.012 | 0.152 ± 0.010 | - | - |
| STREAM-FAIL | 0.228 ± 0.008 | 0.149 ± 0.018 | 0.854 | 2.56 |
| Backbone | Pre-trained | mIoU | F1@0.7 | F1@0.3 | CIDEr@0.7 | LLM |
|---|---|---|---|---|---|---|
| VL3-2B | 0.0464 | 0.0033 | 0.0845 | 0.000 | 1.71 | |
| VL3-2B | ✓ | 0.1140 | 0.0121 | 0.0551 | 0.1902 | 1.67 |
| VL3-7B | 0.0877 | 0.0106 | 0.2430 | 0.000 | 2.03 | |
| VL3-7B | ✓ | 0.1522 | 0.1113 | 0.1910 | 0.745 | 2.65 |
| Cosmos | 0.1265 | 0.0085 | 0.2134 | 0.004 | 1.65 | |
| Cosmos | ✓ | 0.1192 | 0.0091 | 0.2231 | 0.032 | 2.72 |
The corpus also helps once human labels are available: mixing it into the fine-tuning recipe improves every metric on the benchmark (mIoU 0.2365 → 0.2471, CIDEr@0.7 1.006 → 1.182, offline). Human annotation supplies precise boundaries and reference wording; the generated corpus supplies the same kind of supervision at a scale manual effort cannot reach.
Absolute reliability is still modest — mIoU 0.228, 1.44 spurious detections per failure-free episode, a mean judge score of 2.56 out of 5 — so STREAM-FAIL should be treated as an aid that flags and explains candidate failures, not as a safety guarantee. The evaluation also covers only DROID manipulation trajectories, and the benchmark relies on costly human annotation. Closing the loop with a recovery or vision-language-action policy, and a larger real-robot evaluation, are the natural next steps.
@inproceedings{chan2026online,
title={Online Robot Manipulation Error Detection and Description},
author={Chan, Yung-Shun and Saito, Kuniaki and Beltran-Hernandez, Cristian Camilo and Siburian, Jeremy and Hamaya, Masashi and Lee, Chun-Yi},
booktitle={Conference on Robot Learning (CoRL)},
year={2026}
}