It's well-known that robotics data is messy. For the data to be suitable for training, several unstable input streams must be well-formed and perfectly in sync. Many different data corruption errors, ranging from very obvious to very subtle, can silently damage training runs and raise the noise floor. Without clean underlying data, strong model architectures can fail to outperform weaker, but more noise-resistant ones.
We looked at several major open-source UMI and teleoperated bimanual 6-DOF arm + 1-DOF gripper datasets to diagnose and correct issues. We're releasing per-episode manifests for these datasets:
- IPEC-COMMUNITY/FastUMI_100k_lerobot
- allenai/MolmoAct2-BimanualYAM-Dataset
- genrobot2025/10Kh-RealOmin-OpenData
- XDOF/ABC-130k
We also inspected and cite examples from:
- WorldEngineAI/WEB-Dataset
- simple-world-lab/HiFi-UMI-2K
- agibot-world/AgiBotWorld-Beta
- RealSourceData/RealSource-World
- BitRobot/HIW-500-LeRobot
- tencent/Hy-Embodied-0.5-VLA-Data
- x-humanoid-robomind/RoboMIND
- RogersPyke/Galaxea-Open-World-Dataset_10K_20260123
Preprocessing and Unified Episode Schema
To make the process of diagnosis and cleaning tractable over many varying datasets, we adapt every dataset into a unified “episode” struct. We do so by writing dataset-specific adapters which are cognisant of each dataset's quirks (e.g. the number of cameras and their types, video resolutions, the structure and file format of the dataset, etc). For our purposes, we also downscale and center-crop all cameras to a 224p square. Some datasets contain stereo egocentric cameras or multiple cameras per wrist; in these cases, we drop additional cameras and limit each episode to at most one overhead view and one view per wrist. The episode struct below is illustrative.
Unified episode structexpand
episode
├── episode_id: string
├── source_dataset: string
├── task_description: string
├── duration_s: float64
├── num_frames: int64
├── fps: float64
├── cameras[]
│ ├── name: string
│ ├── role: {left_wrist, right_wrist, overhead}
│ ├── video: encoded bytes[num_frames, 224, 224, 3]
│ └── frame_timestamps_ns: int64[num_frames]
└── robot_states
│ ├── states: float32[num_frames, 14]
│ └── state_timestamps_ns: int64[num_frames]
└── robot_actions
├── actions_local: float32[num_frames-1, 14]
├── actions_global: float32[num_frames-1, 14]
└── action_timestamps_ns: int64[num_frames-1]For actions, we convert everything to relative end-effector delta transformations 1. This requires some care since states cannot be naively subtracted to find deltas; they must be treated as SE(3) group operations.1 In current UMI data, the consensus default for the “action” taken at a frame is the next state achieved. We want our action data to be in terms of frame-to-frame state deltas, consistent with the signals we would send to a robot.
We additionally trim all episodes such that every episode has precisely T states and T-1 actions, and such that every video and action stream in an episode has the same number of states and actions respectively. This is straightforward since each frame has a globally-synced timestamp.
At this normalization phase, we already find many malformed episodes with either non-overlapping video streams, large numbers of missing frames, or extremely short malformed episodes.
Visualization and Filtering
We can now visualize the data and start filtering for issues. Our methodology is essentially the following loop:
- Establish a prior about how well-formed data should look, either from existing knowledge or spot checks of randomly sampled episodes. For example, “episodes where the gripper speed exceeds some threshold are likely to contain action errors” or “motion seen by the cameras should match motion taken by the end effectors.”
- Express the prior as an explicit programmatic flag condition.
- Run our flag condition on all episodes and spot check episodes that fail it.
- Determine the severity (as bad as a total reject and as good as a false positive) of the flag.
To visualize the data, we use a dashboard that shows synced camera views, action graphs, and 3D reconstructions of end effector trajectories for each episode. We add features to this dashboard as necessary for each new prior and spot check. Our visualizations in this article are derived from this dashboard.
Our priors are biased towards those which would impact world and world action models the most, with de-emphasis on VLA-based or behavior cloning-based policies. In the next section, we use “world modeling” to mean both action-conditioned “world models” and state-conditioned “world action models”. Our process quickly uncovered a lot of data anomalies; we give examples of the most interesting and important ones we found below.
Anomalies
Camera disconnection
- Issue
- One of the wrist cameras fully disconnects during the episode, causing its feed to stop updating while the other camera streams normally.
- Detection
- We flag sustained periods in which consecutive frames from a camera feed show little or no visual change.
- Downstream Impact
- The disconnected camera feed damages world modeling objectives as it no longer reflects the robot's motion.
Camera freeze and non-uniform brightness changes
- Issue
- This time the camera freezes without disconnecting. We can see the arm is moving from the other wrist camera. We also note that in this and some other datasets, the frame-by-frame camera brightness difference is spiky, indicating that the camera does not record frames at uniform intervals (despite the native timestamps being at uniform intervals). This is clearer in the full episode brightness graph.
- Detection
- Camera freezes and disconnections are both flagged by long stretches of no change in frame. We don't explicitly flag the brightness change spikes, as they appear uniformly in certain datasets.
- Downstream Impact
- Camera freezes damage world modeling, like disconnects. Non-uniform frame intervals would add some noise to world modeling, though it may be avoidable/negligible over chunks with smooth ground truth actions. They can also be avoided by downsampling the FPS.
Cuts in the footage
- Issue
- The footage shows clear cuts in the episode.
- Detection
- The cuts can be detected through both state change spikes and, in cases like this where the ground truth gripper positions are correct, action change spikes.
- Downstream Impact
- Windows placed over these cuts would be discontinuous and highly unusual in a training distribution.
Episode missing small chunks, appearing as fast forward
- Issue
- The episode drops several short segments, causing the footage to briefly appear fast-forwarded.
- Detection
- The missing segments create action discontinuities. We note that the state changes are smoother due to the fast forward effect, so they do not spike as strongly as in the case of cuts in the footage.
- Downstream Impact
- These sections are essentially noisier, higher fps data which would be out of distribution for world model training.
One gripper is pixelated in the other wrist camera
- Issue
- One gripper becomes visibly pixelated in the other gripper's wrist camera.
- Detection
- We found this from manual inspection and don't have an automatic flag for it. It seems to appear consistently in HiFi-UMI-2K.
- Downstream Impact
- This penalizes world models for predicting the view of the other gripper accurately when it blurs in the footage.
Camera views are too dark
- Issue
- Both wrist camera streams are too underexposed to clearly see the manipulation.
- Detection
- We flag sustained periods of extreme darkness.
- Downstream Impact
- Since there's too little state information to make reasonable predictions, this example would have high noise in world modeling.
Covered camera
- Issue
- One of the cameras is covered by a cloth during the episode.
- Detection
- Same as frozen/disconnected camera.
- Downstream Impact
- Same as frozen/disconnected camera, though slightly different since this can happen during a well-formed real-world deployment without a hardware failure. It's possible that such data is useful for learning the connection between overhead and wrist cameras.
Auto exposure causes significant visual change without action
- Issue
- A change in scene causes auto exposure to adjust image brightness when the robot isn't moving.
- Detection
- This triggers our 'visual change unexplained by action magnitude' check. We note that this check has a high false positive rate because small actions can drastically change the pixels in the wrist camera's view during close manipulation.
- Downstream Impact
- These exposure shifts are a form of visual change that is unrelated to the recorded actions, contributing to noise in world model training.
Actions shifted by several frames
- Issue
- Stored gripper open/close actions begin roughly two frames before the gripper visibly moves. Position and rotation actions are correctly aligned.
- Detection
- We manually spot check episodes looking for action errors.
- Downstream Impact
- This would trick world models into predicting states and actions too early or too late.
Action spike with no visual analogue
- Issue
- One gripper registers an action that is not reflected in the camera footage. In this case, the left gripper action has a 10.46 cm translation in one 50 ms interval, even though the left wrist camera doesn't show any motion.
- Detection
- We flag high action acceleration and large actions that correspond to very little state change (and vice versa).
- Downstream Impact
- A large action with no state change would directly poison any world modeling objective, since the causal relationship between action and state change is disrupted.
Actions stopped recording
- Issue
- Actions are recorded for a few seconds, then stop while the episode continues.
- Detection
- This triggers our flag for state change and action correlation falling below a correlation of .04. We note that this is a manually selected threshold; in this example, only one of the two wrists triggers it.
- Downstream Impact
- The recorded actions do not correspond to the observed state transitions, introducing significant noise into world model training objectives.
A gripper didn't record open/close actions
- Issue
- Video footage shows a gripper taking open/close actions, but they are missing from the action data.
- Detection
- We filter for all episodes where either gripper takes no actions. Although this catches a gripper disconnection, it also flags any episode where a gripper validly did not take open/close actions (though this also constitutes a dataset bias; we expect bimanual data to use both end effectors for manipulation). In our current iteration, we do not separate these false positives from the genuine gripper disconnections. We have also found episodes where the gripper does not record actions for part of an episode, but these are much harder to filter for efficiently.
- Downstream Impact
- This would directly damage any world modeling objective.
Spiky actions
- Issue
- The frame-by-frame actions exhibit an unusual spiky pattern.
- Detection
- We identified this by spot checking action graphs; it appears uniformly in some datasets.
- Downstream Impact
- These actions may introduce unintended biases into world model training and cause issues. We observe similar nonuniformity in the state-to-state camera observation differences when episodes are played back at low fps, suggesting that affected datasets may require a deeper correction or downsampling to fully adjust for this issue.
Spiky gripper actions
- Issue
- Gripper actions show a spiky pattern, similar to the spiky actions seen earlier.
- Detection
- This occurs on a per-dataset basis like spiky movement actions, but occurs independently of those.
- Downstream Impact
- Same impact as spiky actions.
Extremely slow actions
- Issue
- Part of the task is performed much slower than a human would. The slowness is not uniform within the task.
- Detection
- Identified during manual inspection.
- Downstream Impact
- These segments are not strictly harmful for world modeling, but introduce another bias that we should be cognisant of generally.
Long actionless tail
- Issue
- The episode continues for an extended period after the task is complete.
- Detection
- We flag long prefixes or suffixes with action magnitudes substantially lower than the episode average. These segments can then be masked or clipped.
- Downstream Impact
- This would inject an unwanted bias toward training on no-op states and actions in our task, though damage may be low as we'd expect models to learn such transitions early. They can also obscure the true task endpoint, making it harder to extract goal frames for goal image latent-conditioned value functions or planners.
Unnecessary handoffs
- Issue
- The right gripper hands off flower stems to the left gripper despite being able to place the stem directly in the vase (which it sometimes does directly).
- Detection
- Identified during manual inspection; hard to filter for automatically.
- Downstream Impact
- Not strictly harmful for world modeling, but suboptimal for behavior cloning and good to be aware of as a dataset bias.
Nonuniform task descriptions
- Issue
- Task labels range from terse class names to procedural bilingual transcripts with metadata mixed into the same field.
- Detection
- Manual inspection of task descriptions.
- Downstream Impact
- Unnormalized task descriptions could make it difficult to learn any sort of text-conditioned model over multiple datasets.
Close the left gripper, press the button to open the rice cooker; take a wooden spoon from the chopstick holder with the right hand, scoop a spoonful of rice and pour it into the rice cooker, then put the wooden spoon back into the chopstick holder.
IPEC-COMMUNITY/FastUMI_100k_lerobotAdd_Rice_to_Rice_Cooker / episode_002602
Fold the gray pants neatly on the table.
allenai/MolmoAct2-BimanualYAM-Datasetepisode 10018
Clutter Tidy-Up [Stage2]
genrobot2025/10Kh-RealOmin-OpenDataClutter Tidy-Up [Stage2] / 00001 / 01706
Take the disposable food container out of the microwave.
simple-world-lab/HiFi-UMI-2Kchunk-0000 / part-0000 / 0
Open the fridge to get food. | A robot is placed in front of the refrigerator, with the refrigerator door closed.
agibot-world/AgiBotWorld-Betatask_352 / episode_000000
Arrange the cups | Left arm picks up the stack of cups from the center of the plate; right arm separates the two cups; right arm places the cup on the right side of the plate; left arm places the cup on the left side of the plate.
RealSourceData/RealSource-WorldArrange_the_cups / episode_000192
arrange the flowers into the vase
XDOF/ABC-130karrange_the_flowers_into_the_vase / episode_7607cfd9-2660-4e61-944f-065cb7c87b92
clothes washing
BitRobot/HIW-500-LeRobotepisode 13116
将手机壳放入收纳盒
tencent/Hy-Embodied-0.5-VLA-Datatable_000 / episode_000000
fold clothes
x-humanoid-robomind/RoboMINDfold_clothes / 2024_12_23-10_46_54-173639055863363776.00
右手推动矿泉水使它靠紧墙壁@Push the water bottle with the right hand to make it flush against the wall.; 右手拿起从左往右数的第四瓶矿泉水,右手把矿泉水放到洗菜槽左侧@Pick up the fourth bottle of mineral water from the left with your right hand, then place it to the left of the vegetable sink with your right hand.; 左手拿起从左往右数的第一瓶矿泉水,左手把矿泉水放到第二瓶矿泉水左侧@Pick up the first bottle of mineral water from the left with your left hand, then place it to the left of the second bottle with your left hand.; qualified; 右手拿起从左往右数的第二瓶矿泉水,右手把矿泉水放到第三瓶矿泉水左侧@Pick up the second bottle of mineral water from the left with your right hand, then place it to the left of the third bottle of mineral water using your right hand.; 左手推动矿泉水使它靠紧墙壁@Push the mineral water bottle with your left hand to press it against the wall.; 右手拿起从左往右数的第三瓶矿泉水,右手把矿泉水放到第四瓶矿泉水左侧@Pick up the third bottle of mineral water from the left with your right hand, then place it to the left of the fourth bottle with your right hand.; arrange mineral water bottles on the desk; 右手推动矿泉水使它靠紧墙壁@Push the mineral water bottle with the right hand to press it against the wall.
RogersPyke/Galaxea-Open-World-Dataset_10K_20260123arrange mineral water bottles on the desk / episode 0
We note that many of the flags we apply require setting an arbitrary threshold. For example, how fast is too fast for an end effector? How little motion in the overhead view is too little before we flag a frozen camera? Because of this, our filtering flags catch a fair number of false positives and may produce some false negatives, depending on the flag. We occasionally see a false positive for the “visual change unexplained by action” flag when an object is dropped or very close to a wrist camera, since a small action causes a large visual change.
We also note that some of our examples are not automatically detectable and/or point to a source of bias rather than an indisputable error, like slow actions and unnecessary handoffs. We give these only as additional examples of situations to look out for in datasets, as we don't explicitly flag them with static checks.
Finally, we note one video issue we don't illustrate above, which is missing frames. A large number of episodes have intermittent gaps in state timesteps or action timesteps, in particular in XDOF/ABC-130k. It also impacts a smaller but significant chunk of genrobot2025/10Kh-RealOmin-OpenData. If only a few frames are missing, as is the case with most of our quarantined ABC-130k and GenRobot episodes with this flag, this issue is relatively benign and can be patched over, but the fix is somewhat opinionated so we only flag the episodes and provide the missing frame indices in our manifests.
Action Processing and Smoothing
To verify our SE(3)-based action conversion, we draw the original ground truth states as a trajectory in 3D space and compare it against the same trajectory written as an SE(3)-cumulative sum of actions. In other words, we convert original states to relative actions and then convert back to absolute states, and we verify that the round trip preserves the original trajectory.
We generally prefer robot actions with small and bounded accelerations, where velocity increases and decreases smoothly. Not only are these actions safer to execute, they're also more natural and easier for policies to predict since the variance of the distribution of actions is much lower. Raw robotics data, especially UMI data (which is not bound by robot arm kinematics) is full of abrupt spikes and jerky motions, so this requires careful post-processing.
To obtain an ideal medium between staying true to the ground truth and smoothing out jerky motions, we apply smoothing in a way that penalizes sharp accelerations while requiring that the SE(3)-based trajectory through space is minimally altered end-to-end. To do this, we minimize the sum of two loss terms that act in opposition: one that penalizes high acceleration and one that penalizes deviation from the global trajectory. This allows us to compute much smoother trajectories while avoiding compounding global error from smoothness operations; they may not be as perfectly accurate as the original state data on a frame-by-frame basis, but have significantly lower variance on short horizons of multiple actions in a chunk.
An example of our smoothing is shown below. It is particularly necessary for episodes with spiky actions since such actions would be strange and difficult to handle both as input (for world modeling) and output (for world action modeling).
Beyond Our Current Static Checks
Our automatic checks catch and filter a large portion of the most severe dataset issues, but data quality issues have a long and infinitely subtle tail. As noted, we expect a fair share of false positives and false negatives due to thresholds that may vary significantly in optimal value for each dataset or task. By checking state and action correlation, we can catch mismatched cameras and actions in episodes, but datasets containing many examples of the same trajectory could slip through this check if each trajectory is similar enough. Other issues like action misalignment or partial-episode disabled grippers can occur on an episode-by-episode basis and are difficult to catch with weaker static checks; the presence of gripper action errors in some datasets warrants a dedicated per-dataset extraction policy that can somewhat deterministically verify that the gripper video is consistent with open/close actions.
As mentioned before, issues like unnecessary handoffs are higher-level opinionated issues and are much harder to check without either a human annotator or a sophisticated VLM-based pipeline (which we are exploring).
As a more general technique, a small (or large) IDM could be fitted to all datasets, or each dataset individually, to identify extremely strange actions which are difficult for a small policy to predict. This would be a smarter version of our state delta vs action delta correlation check. We are exploring this approach internally as it is a promising data quality filter, but do not speculate further on this approach here as it would be significantly more opinionated than our other standard static checks.
Credits
This project and writeup were undertaken by Sambhav Gupta. We thank XK Lu, Jenna Hong, Jannik Schilling, and Kunvar Thaman for edits and suggestions.
For past work, we broadly searched for citations of anomalies like the ones we found, but did not find major examples pointing to the same specific errors. Please reach out if you know of or produced any such work so we can cite and link it here.
If you are interested in a data-related collaboration or have any questions or comments, please contact us at data@pantheon.inc.
Open-source release
We've released a per-episode manifest of our findings for FastUMI_100k_lerobot, MolmoAct2-BimanualYAM-Dataset, 10Kh-RealOmin-OpenData, and ABC-130k. In these manifests, for each episode, we assign a list of flags for the issues we encountered. In the case that the flag is assignable at a frame level, we include a boolean mask. We also include our raw and smoothed frame-to-frame action data.
Dataset citations
- AgiBot World Colosseum Contributors. “AgiBot World Colosseum.” 2024.
- Allshire, Arthur, et al. “Scalable Behavior Cloning with Open Data, Training, and Evaluation.” arXiv, 2026.
- BitRobot, Unitree, and Hugging Face. “HIW-500: Humanoids In-the-Wild Dataset for Robot Learning.” 2026.
- Fang, Haoquan, et al. “MolmoAct2: Action Reasoning Models for Real-world Deployment.” arXiv, 2026.
- Galaxea Team. “Galaxea G0: Open-World Dataset and Dual-System VLA Model.” arXiv, 2025.
- GenRobot. “10Kh-RealOmin-OpenData.” Hugging Face, 2025.
- Hou, Chengkai, et al. “RoboMIND 2.0: A Multimodal, Bimanual Mobile Manipulation Dataset for Generalizable Embodied Intelligence.” arXiv, 2026.
- Liu, Kehui, et al. “FastUMI-100K: Advancing Data-driven Robotic Manipulation with a Large-scale UMI-style Dataset.” arXiv, 2025.
- RealSource. “RealSource World: A Large-Scale Real-World Dual-Arm Manipulation Dataset.” Hugging Face, 2025.
- Simple AI, et al. “HiFi-UMI: Learning Deployable Manipulation Policies from High-Fidelity UMI Data Alone.” arXiv, 2026.
- Wu, Kun, et al. “RoboMIND: Benchmark on Multi-embodiment Intelligence Normative Data for Robot Manipulation.” Robotics: Science and Systems, 2025.
- World Engine AI. “WEB-Dataset.” Hugging Face, 2026.
- Zhang, He, et al. “Hy-Embodied-0.5-VLA: From Vision-Language-Action Models to a Real-World Robot Learning Stack.” arXiv, 2026.
