AR-Guided Robot Data Collection

Using AR to help operators collect more diverse grasp data
Guoheng Sun
ENEE759N — May 16, 2026
1 / 10

The Problem

How biased are humans?
Towse et al. (2014) asked people to generate random number sequences. Even in this trivial 1D task, outputs are far from uniform — adults strongly prefer digits 1–3.

If we can't be unbiased picking numbers on a line, we certainly can't uniformly cover a 6-DOF robot workspace when teleoperating hundreds of grasp demonstrations.
Towse, J. N., Loetscher, T., & Brugger, P. (2014). Not all numbers are equal. Frontiers in Psychology, 5, 19.
2 / 10

Our Idea

Show operators what they've already collected
directly in the AR headset while they teleoperate

See your history → avoid repetition → better coverage → stronger policy
Teleoperate
with Quest 3
Record
Trajectories
Visualize in AR
+ Random Targets
More Diverse
Data
3 / 10

System Architecture

System Architecture
Image generated by OpenAI Image2
Quest 3
AR + Control
UDP
Jetson Thor
Bridge
ROS2
xArm 6-DOF
Executes
4 / 10

Communication

Quest 3
hand Δ → velocity
Jetson
bridge
xArm
move + report EE
Jetson
forward EE pose
Quest 3
AR render
5 / 10

Calibration

The core challenge:
The robot and Unity have two different coordinate systems. The robot API gives us the end-effector position relative to its base. To render this in AR, we need a mapping between the two coordinate systems.
Coordinate conversion:
Robot (Z-up):   X = forward, Y = left, Z = up
Unity (Y-up):   Z = forward, X = right, Y = up

Mapping:   Unity.x = −robot.y,   Unity.y = robot.z,   Unity.z = robot.x
6 / 10

Data Collection Workflow

Step 1 — Hardware Setup

Power on xArm, connect Jetson via Ethernet. Connect Quest 3 to Jetson via WiFi Direct. Launch xArm ROS2 driver and bridge on Jetson. Deploy the Unity app to Quest 3.

Step 2 — Calibration

Put on the headset — the real world is visible through passthrough. Place the left controller at the robot arm's base, pointing forward. Press X to calibrate. RGB axes appear at the origin, and the first target cube is generated at a random reachable position.

Step 3 — Place the Physical Object

A small semi-transparent colored cube with a numbered label and black wireframe edges appears in AR. The operator places a real physical cube at that position, aligning it with the AR overlay.

Step 4 — Grasp Demonstration

Hold right trigger to teleoperate — hand motion maps to robot velocity. Press grip to close/open the gripper. The trajectory draws in real time (cyan line). Blue/yellow markers appear at grasp/release points.

Step 5 — Next Trial

Press A to stop recording. The trajectory is frozen. Reposition the arm to a new starting pose. Press A again — the old target fades, a new target appears at a different random location, and recording resumes. All historical trajectories stay visible. Press Y to clear everything and start fresh.

7 / 10

What You See in AR

VisualMeaning
Red sphereLive end-effector position
Cyan lineTrajectory during current trial
Blue cubeWhere the gripper closed (grasp point)
Yellow cubeWhere the gripper opened (release point)
Colored targetRandomized grasp target with number label
Faded targetsCompleted trials (history stays visible)
8 / 10

Demo

9 / 10

Summary

Thank you! Questions?
10 / 10