ARCap: Collecting High-quality Human Demonstrations for Robot Learning with Augmented Reality Feedback
This is part of official implementation of ARCap: Collecting High-quality Human Demonstrations for Robot Learning with Augmented Reality Feedback
For training diffusion policy using collected dataset please checkout link
- Operating System: Windows 10/11 (Tested)
- VR Headset: Meta Quest 3
- RGB-D Camera: Intel realsense D435 camera [Optional to try our code, required to collect data]
cd data_processing
Python Version: 3.11
pip install -r requirements.txt
- Download and Install Rokoko Studio
- Create a scene and connect Rokoko Smart Glove to Rokoko Studio
- Enable data streaming, set forward IP to your computer's IP, set data format as
JSONv3
- Configure
data_processing/ip_config.py
setVR_HOST
to VR headset IP address andLOCAL_HOST
to your computer's IP
- 3D print camera mount.Camera Mount
- 3D print glove mount. Glove Mount
- Following instruction of this video to assemble mounts.
- Connect D435 camera to computer using Type-C cable.
- Install Meta Quest Developer Hub link in your PC
- Connect Quest 3 headset to your PC, open Meta Quest Developer Hub, device should be shown in MQDH. If not put on Quest 3, enable developer mode and enable usb debugging.
- Install
arcap_release.apk
using MQDH -> Device Manager.
- Download Unity Hub / Editor link
- Follow link to install Unity dependencies for quest development
- In Unity Hub, Add->Add project from disk, select:
ARCap_Unity
- Open
ARCap_unity
, waiting for Unity Editor to open - Deploy APP on Quest 3:
- Top menu bar->File->Build Settings, select Android, select Quest 3 as device, Click
Build And Run
- Top menu bar->File->Build Settings, select Android, select Quest 3 as device, Click
In data_processing
folder, mkdir data
- Leap hand: in
data_processing
folder, run:
python data_collection_server.py # --no_camera if D435 is not connected
- Parallel jaw gripper: in
data_processing
folder, run:
python data_collection_server.py --handedness left # --no_camera if D435 is not connected
All collected data will be stored in data/<yyyy-mm-dd-hh-mm-ss>
, each trajectory has its own folder named: data/<yyyy-mm-dd-hh-mm-ss>/<yyyy-mm-dd-hh-mm-ss>
. Each frame is stored as a .npz
In data_processing
folder, mkdir data_processed
- Leap hand: in
data_processing
folder, run:
python convert_data_with_robot.py --root_path <yyyy-mm-dd-hh-mm-ss> --visualize
- Parallel jaw gripper: in
data_processing
folder, run:
python convert_data_with_robot.py --root_path <yyyy-mm-dd-hh-mm-ss> --use_gripper --visualize
All processed data will be stored in data_processed/<yyyy-mm-dd-hh-mm-ss>
, each trajectory has its own folder, named: data_processed/<yyyy-mm-dd-hh-mm-ss>/demo_i
. Each frame is stored as a subfolder data_processed/<yyyy-mm-dd-hh-mm-ss>/demo_i/frame_j
, which contains joint angles of hand and arm, wrist poses and point clouds
If you find this repository useful please cite:
@article{chen2024arcap,
title={ARCap: Collecting High-quality Human Demonstrations for Robot Learning with Augmented Reality Feedback},
author={Chen, Sirui and Wang, Chen and Nguyen, Kaden and Fei-Fei, Li and Liu, C Karen},
journal={arXiv preprint arXiv:2410.08464},
year={2024}
}