Skip to content
/ BODex Public
forked from JYChen18/BODex

[ICRA 2025] BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization

License

Notifications You must be signed in to change notification settings

songlin/BODex

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BODex

A GPU-based efficient pipeline for dexterous grasp synthesis built on cuRobo, proposed in [ICRA 2025] BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization.

Project pagePaperDatasetBenchmark codeLearning code

Introduction

Main Features

  • Grasp Synthesis: Generate force-closure grasps for floating dexterous hands, such as the Shadow, Allegro, and Leap Hand.
  • Trajectory Planning: Plan collision-free approaching trajectories with the table for hands mounted on robotic arms, e.g., UR10e + Shadow Hand systems.

Highlights

  • Efficient: Capable of synthesizing millions of grasps per day using a single NVIDIA 3090 GPU.
  • Generalizable: Supports different hands and a wide range of objects.

Follow-up Work

Some projects make modifications on our BODex pipeline to synthesize large-scale datasets of grasping poses, such as DexGraspNet 2.0 and GraspVLA.

Looking for more diverse and higher-quality dexterous grasps? Check out Dexonomy.

Getting Started

  1. Install git lfs: Before git clone this repository, please make sure that the git lfs has been installed by sudo apt install git-lfs.

  2. Install the Python environment:

conda create -n bodex python=3.10
conda activate bodex

conda install pytorch==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia 

pip install -e . --no-build-isolation  

pip install usd-core 
conda install pytorch-scatter -c pyg
conda install coal==3.0.1 -c conda-forge   # https://github.com/coal-library/coal

pip uninstall numpy
pip install numpy==1.26.4

cd src/curobo/geom/cpp
python setup.py install    # install coal_openmp_wrapper
  1. Prepare object assets: Download our pre-processed object assets DGN_2k_processed.zip from Hugging Face and organize the unzipped folders as below.
src/curobo/content/assets/object/DGN_2k
|- processed_data
|  |- core_bottle_1a7ba1f4c892e2da30711cdbdbc73924
|  |_ ...
|- scene_cfg
|  |- core_bottle_1a7ba1f4c892e2da30711cdbdbc73924
|  |_ ...
|- valid_split
|  |- all.json
|  |_ ...

Alternatively, new object assets can be pre-processed using MeshProcess.

  1. Synthesize grasp poses: Each synthesized grasping data point includes a pre-grasp, a grasp, and a squeeze pose.
# Single GPU version
CUDA_VISIBLE_DEVICES=7 python example_grasp/plan_batch_env.py -c sim_shadow/fc.yml -w 40 

# Debugging. The saved USD file has the whole optimization process, while the intermediate gradient on each contact point is denoted by the purple line.
CUDA_VISIBLE_DEVICES=7 python example_grasp/plan_batch_env.py -c sim_shadow/fc.yml -w 1 -m usd -debug -d all -i 0 1

# Multiple GPU version
python example_grasp/multi_gpu.py -c sim_shadow/fc.yml -t grasp -g 0 1 2 3 

We can also synthesize approaching trajectories that are collision-free with the table for hands mounted on arms, e.g., UR10e+Shadow Hand systems.

# Single GPU version
CUDA_VISIBLE_DEVICES=7 python example_grasp/plan_mogen_batch.py -c sim_shadow/tabletop.yml -t grasp_and_mogen

# Multiple GPU version
python example_grasp/multi_gpu.py -c sim_shadow/tabletop.yml -t grasp_and_mogen -g 0 1 2 3 

On a single GPU, the grasp synthesis supports parallizing different objects, but the motion planning only supports parallizing different trajectories for the same object.

  1. (Optional) Visualize synthesized poses:
python example_grasp/visualize_npy.py -c sim_shadow/fc.yml -p debug -m grasp
  1. Evaluate grasp poses and filter out bad ones: please see DexGraspBench.

License

The code from cuRobo is used under the NVIDIA license. All other parts of this work are licensed under CC BY-NC 4.0.

CC BY-NC 4.0

Citation

If you found this repository useful, please consider to cite the following works,

@article{chen2024bodex,
  title={BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization},
  author={Chen, Jiayi and Ke, Yubin and Wang, He},
  journal={arXiv preprint arXiv:2412.16490},
  year={2024}
}

@misc{curobo_report23,
      title={cuRobo: Parallelized Collision-Free Minimum-Jerk Robot Motion Generation},
      author={Balakumar Sundaralingam and Siva Kumar Sastry Hari and Adam Fishman and Caelan Garrett
              and Karl Van Wyk and Valts Blukis and Alexander Millane and Helen Oleynikova and Ankur Handa
              and Fabio Ramos and Nathan Ratliff and Dieter Fox},
      year={2023},
      eprint={2310.17274},
      archivePrefix={arXiv},
      primaryClass={cs.RO}
}

About

[ICRA 2025] BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 83.0%
  • Cuda 12.6%
  • C++ 1.6%
  • C 1.4%
  • Other 1.4%