Official code for "Efficient Residual Learning with Mixture-of-Experts for Universal Dexterous Grasping" (ICLR 2025)
For detailed information, please refer to our paper.
git clone https://github.com/analyst-huang/ResDex.git
cd ResDexconda create -n resdex python=3.8
conda activate resdexDownload Isaac Gym Preview 4 here and follow the installation document.
pip install -r requirements.txtYou can download PointNet2 here.
unzip Pointnet2_PyTorch-master.zip
cd Pointnet2_PyTorch-master
pip install -e .
cd pointnet2_ops_lib
pip install -e .The dataset is organized as:
assets/
├── datasetv4.1/
├── meshdatav3_pc_feat/
├── meshdatav3_scaled/
├── pcldata/
├── ......
We provide an example object in assets. 3200 training objects are specified in train_set.yaml. The testing objects are specified in test_set_seen_cat.yaml and test_set_unseen_cat.yaml. You can change the objects used for training and evaluation in cfg/shadow_hand_*.yaml.
You can download the complete dataset here for datasetv4.1, and here for meshdatav3_pc_feat and meshdatav3_scaled.
After downloading meshdatav3_scaled and putting it to the corresponding place in assets, you can get pcldata by running the following command:
python script/preprocess_pcl.pyTo train a base policy:
bash script/train_blind.shTo train a residual policy:
First stage training:
bash script/train_residual.shSecond stage training:
Change the goal_cond parameter in shadow_hand_residual_grasp.yaml to False and run the command:
bash script/train_residual.shDagger Distillation:
bash script/train_dagger_vision.shEvaluation:
# Base policy
bash script/test_blind.sh
# Residual policy
bash script/test_residual.sh
# Vision policy
bash script/test_dagger_vision.shIf you find this code useful, please cite our paper:
@inproceedings{
huang2025efficient,
title={Efficient Residual Learning with Mixture-of-Experts for Universal Dexterous Grasping},
author={Ziye Huang and Haoqi Yuan and Yuhui Fu and Zongqing Lu},
booktitle={The Thirteenth International Conference on Learning Representations},
year={2025},
url={https://openreview.net/forum?id=BUj9VSCoET}
}Our implementation is based on UnidexGrasp.