This repository provides a real-robot data collection and teleoperation pipeline built on top of Diffusion Policy. It supports Franka Research 3 (FR3) control, Xbox controller teleoperation, and RGB-D data collection using RealSense cameras.
-
Diffusion Policy (Real Robot setup) This repository is built on top of the official Diffusion Policy implementation for real robots:
👉 https://github.com/real-stanford/diffusion_policy?tab=readme-ov-file#-real-robot
-
Franky (Franka robot control library) Franka robot control is implemented using the Franky library:
-
Intel RealSense SDK RGB-D camera support via RealSense SDK for D405, D415, and D435 cameras.
-
NUC-based setup For NUC-based robot control, refer to the Universal Manipulation Interface (UMI) setup guide:
👉 https://github.com/real-stanford/universal_manipulation_interface/blob/main/franka_instruction.md
Please follow the installation instructions in the above repositories before running this code.
-
✅ Added Franka Research 3 (FR3) control support
-
✅ Added depth data collection (optional, can be enabled/disabled)
-
✅ Added Xbox controller teleoperation
-
✅ Added gripper control and gripper state logging
- Gripper state is stored in the last index of the end-effector (EEF) pose
- ✅ Added Realsense D405 support
- ✅ Fix Franka Research 3 (FR3) control delay
- ✅ Added audio data collection support
- ✅ Added Franka Gripper control support
- ✅ Fixed Franka Research 3 (FR3) control on NUC-based setup
Data collection example:
- Data collection and teleoperation can be started using the
demo_real_robot.pyscript.
python demo_real_robot.py \
--output {path/to/data/dir} \
--robot_ip {@@@.@@@.@@@.@@@} \
--teleop_mode {xbox_controller}\
--robot_model {fr3}python debug_data_video_generation_audio.py- Convert .mp4 data to image sequences.
python generate_replay_buffer.py /home/rvi/projects/robot-arm-real-world-data-collecting/data -o /home/rvi/projects/robot-arm-real-world-data-collecting/data/replay_buffer.zarr-
Depth data latency When collecting depth images, use a low resolution to reduce latency:
(width, height) = (640, 480) -
Tested hardware setup
- Franka Research 3 (FR3)
- Xbox controller
- Intel RealSense D435 × 2
-
Tresh audio data collection
- Check
pavucontrolsettings for microphone input source.systemctl --user stop pulseaudiopython -m sounddevice
- Check
Other configurations are not yet fully validated.
- ⏳ Add VR-based teleoperation mode
- ⏳ Add xArm 7 control support
- ⏳ Add Dexterous hand support
- ⏳ Add Data convertion to RLDS
- ⏳ Fix to more Multi-modal adaptable codebase
