Dexcap开源了数据采集、数据处理、数据集构建与策略训练四个部分
DexCap: Scalable and Portable Mocap Data Collection System for Dexterous Manipulation" (Paper, Website) by Wang et al. at The Movement Lab and Stanford Vision and Learning Lab.
目录
1 安装
1. 在mini-PC (NUC) 上安装数据收集环境
此安装基于 Windows 平台。安装 Rokoko 动作捕捉手套软件和 Anaconda 后,创建 conda 环境:
cd DexCap/install
conda env create -n mocap -f env_nuc_windows.yml
2. 在 Ubuntu 工作站上安装数据处理和训练环境
工作站可以是无显示界面的服务器,用于构建数据集和训练:
conda create -n dexcap python=3.8
conda activate dexcap
cd DexCap/install
pip install -r env_ws_requirements.txt
cd STEP3_train_policy
pip install -e .
2 数据采集
1. 设置 Rokoko Studio 软件
确保 Rokoko Studio 可以检测到动作捕捉手套,选择“Livestreaming”功能,并使用以下设置:
Include connection: True
Forward IP: 192.168.0.200
Port: 14551
Data format: Json
NUC 必须连接便携式 Wi-Fi 路由器,且 IP 地址设置为 192.168.0.200(可修改)。开启数据流后,打开 conda 终端运行以下脚本捕获手套的原始数据:
conda activate mocap
cd DexCap/STEP1_collect_data
python redis_glove_server.py
2. 启动数据采集
在另一个终端中运行以下脚本开始数据采集:
python data_recording.py -s --store_hand -o ./save_data_scenario_1
数据将首先存储在内存中,完成当前录制后使用 Ctrl+C 停止,程序会自动将数据多线程保存到本地 SSD。数据结构如下:
save_data_scenario_1
├── frame_0
│ ├── color_image.jpg # Chest camera RGB image
│ ├── depth_image.png # Chest camera depth image
│ ├── pose.txt # Chest camera 6-DoF pose in world frame
│ ├── pose_2.txt # Left hand 6-DoF pose in world frame
│ ├── pose_3.txt # Right hand 6_DoF pose in world frame
│ ├── left_hand_joint.txt # Left hand joint positions (3D) in the palm frame
│ └── right_hand_joint.txt # Right hand joint positions (3D) in the palm frame
├── frame_1
└── ...
3 数据处理
首先,可视化收集的数据:
cd DexCap/STEP1_collect_data
python replay_human_traj_vis.py --directory save_data_scenario_1
此脚本会显示基于 Open3D 的点云可视化,可以看到捕获的手部动作,如下所示:
(可选)此外还提供了一个用于纠正 SLAM 初始漂移的接口。运行以下脚本,并使用数字键来纠正漂移,校正将应用于整个视频:
python replay_human_traj_vis.py --directory save_data_scenario_1 --calib
python calculate_offset_vis_calib.py --directory save_data_scenario_1
下一步,将点云和 mocap 数据转换到机器人操作空间。运行以下脚本,并使用数字键调整数据的世界坐标系,使其与机器人工作台坐标系对齐。此过程通常 <10 秒,且每个数据集只需要完成一次:
python transform_to_robot_table.py --directory save_data_scenario_1
最后,将整个数据 episode 分割为多个任务示例(task demos),运行:
python demo_clipping_3d.py --directory save_data_scenario_1
可以从 Link 中下载 raw dataset,并运行 replay_human_traj_vis.py 来可视化数据
4 构建训练数据集
在采集和处理 raw data 后,将数据转移到工作站,使用以下脚本,生成符合 robomimic 格式的 HDF5 数据集:
python demo_create_hdf5.py
此处理将使用逆运动学(基于 PyBullet)将机器人 LEAPHand 的指尖与 mocap 数据中的人类指尖进行配准。当人手在相机视图中可见时,使用正运动学构建的机器人手的点云网格将添加到点云观测中,如以下视频所示。多余的点云(背景、桌面)也将被删除
可以从 Link 中下载处理好的数据集
5 策略训练
生成 HDF5 数据集后,运行以下脚本和配置文件进行策略训练:
cd DexCap/STEP3_train_policy/robomimic
python scripts/train.py --config training_config/[NAME_OF_CONFIG].json
默认的训练配置将训练一个基于点云的扩散策略(Diffusion Policy),该策略以胸前摄像头的点云观测数据(已转换到固定的世界坐标系)作为输入,并生成一系列动作序列(共20步),用于控制机器人双手和手臂(总计46维)。有关算法的更多细节可以参考论文
6 致谢
策略训练基于 robomimic, Diffusion Policy
机器人手臂控制基于 Deoxys
LEAPHAND 控制基于 LEAP_Hand_API