Imitation learning on a real UR5e, from capture to rollout

Built it end to end RoboTouch Lab, UIUC (Prof. Wenzhen Yuan)  –

URSA Best Research Poster Award

A UR5e robot arm with a two-finger gripper over a lab table, an AprilTag board and a small red cube in front of it.
The UR5e arm and gripper my policies ran on, at RoboTouch Lab.

I built a real-world imitation-learning pipeline on the UMI stack, on my own rig and data, and trained diffusion policies for a UR5e arm; the work won the URSA Best Research Poster Award (2026).

On the real arm I traced three failures from the logs and fixed them; after the fixes, policies I trained on the lab’s teleop datasets grasped an Allen key and turned a knob.

What I did

From handheld clips to trained policies

  • Collected 500+ demonstrations, handheld and in simulation, and built the data path that turns my GoPro clips into metric 3D trajectories and training episodes.
  • Tracked my recordings with ORB-SLAM3 + IMU and built a SLAM QA tool to check them: all 197 cylinder grasps tracked start to finish.
  • Trained diffusion policies for ≈180 GPU-hours on one RTX 5080, after porting the stack to Blackwell, and wrote an HDF5 → zarr converter with validation for the lab’s datasets.
  • Pretrained a visuo-tactile CLIP encoder (FreeTacMan method), fixed its scheduler and normalization bugs, and integrated it into the lab’s Diffusion Policy fork.

From logs to working rollouts

  • Wrote the ROS 2 node that runs the policies on the UR5e, smoothing 10 Hz plans into 60 Hz commands, and a step-mode harness that logs every input and predicted plan.
  • Fixed the gripper snapping shut (it opens wider than UMI’s convention) and the robot’s speed (actions were 0.3 s apart, not 0.1 s).
  • Measured the arm’s lag at 0.13–0.15 s, found a backward jerk at every plan hand-off and made each new plan start further ahead.

Figures

How the pieces fit: my handheld demonstrations and the lab’s teleop datasets train diffusion policies, which run on the UR5e through my ROS 2 node; the robot’s logs drove the fixes.
Fisheye video from the handheld gripper’s camera as it reaches for and grasps a cup on the lab table.
One demonstration as the gripper’s GoPro saw it: fisheye view, ArUco finger tags at the bottom.
The wrist camera’s view: green gripper fingers close on a black dial and turn it.
The wrist camera during a knob-turning rollout of a policy I trained on the lab’s teleop dataset.

Built with

ORB-SLAM3 + IMU ArUco fiducials PyTorch CLIP ViT-B/16 HDF5 and zarr ROS 2 Python UR5e linear + SLERP interpolation

Credits

Builds on UMI (Chi et al., RSS 2024) and Diffusion Policy (Chi et al.). With Prof. Wenzhen Yuan (PI) and Jingyi Xiang (mentor), RoboTouch Lab.