FSG is a Fingertip-contact-aware Sampling-based Grasp Generator that generates dexterous grasp poses using fingertip contact constraints. The project supports various multi-finger robot hands and integrates with ROS for grasp data generation.
Please refer to the pdfs directory for manuscripts related to this project, and watch the Supplementary Video for the experimental setup and results.
assets/— Contains object and robot resources.obj/— Object meshes (.obj) and point clouds (.pcd)keyframes/— Grasp demonstrationstoolkits/— Mesh-to-pointcloud conversion scripts
robot/— Robot URDF and XML models
cmake/— CMake configuration filesconfig/— YAML configs for AutoWS and FSGdocker/— Dockerfile to build FSG environmenthdf5/— Grasp data generated by FSGinclude/fsg/— FSG header fileslaunch/— ROS launch filespdfs/— Manuscripts related to this projectscripts/autows/— Scripts for AutoWSgrasp_gen/— Scripts for grasp data generation
src/— FSG source codesrv/— ROS service definitionsworkspace/— Fingertip workspace clouds generated by AutoWS
- FSG is built on ROS Noetic, which will no longer be officially supported after May 2025. We recommend using Docker to run FSG for better compatibility.
Pull existing docker image from Docker Hub:
docker pull wu567/fsg:0.1
Or build the image locally:
git clone https://github.com/W567/FSG.git
cd FSG/docker
docker build . -t fsg
Start the docker container:
docker run -it --name fsg --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" wu567/fsg:0.1
# Remember to source catkin_ws/devel/setup.bash in the docker container before running AutoWS and FSG
cd ~/catkin_ws
source devel/setup.bash
# https://www.cgal.org/download/linux.html
sudo apt install libcgal-dev libopencv-dev
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/W567/FSG.git
rosdep init
rosdep update
rosdep install --from-paths . --ignore-src --rosdistro noetic
wstool init .
wstool merge -t . fsg/.fsg.rosinstall
wstool update -t .
catkin build fsg
Scripts of AutoWS in FSG/scripts/autows is used to generate robot fingertip workspace clouds based on robot urdf models.
To use AutoWS, please install dependencies as:
pip install trimesh mujoco lxml scikit-robot sympy matplotlib
pip uninstall -y pyrender && pip install git+https://github.com/mmatl/pyrender.git --no-cache-dir
We provide scripts to sample point cloud from object .obj mesh file and extract desired partial point cloud. Corresponding scripts are stored in FSG/assets/obj/toolkits.
obj2pcd depends on pc_annotation, which is a plugin of the Open3D visualizer. To use pc_annotation for extracting selected points from the original cloud, please build Open3D from source folowing the official instruction, and then build pc_annotation.
cd FSG/scripts/autows
python autows.py --robot srh
# To visualize the generation procedure
python autows.py --robot srh --debug
Generated workspace clouds will be saved under FSG/workspace/, with robot name as the folder name.
# Check grasp demonstration with
python FSG/scripts/read_keyframe.py --robot srh --vis
python autows.py --robot srh --key 1 --separate --aug
# To generate workspace clouds of all available grasp demonstrations:
python ws_gen.py
Generated workspace clouds will be saved under FSG/workspace/, with object name as the folder name (currently only for srh).
roslaunch FSG/launch/gen_grasp.launch
# To visualize the generated grasp poses
python FSG/scripts/grasp_gen/reader_grasp.py -r srh --file grasp_res.h5 --obj ycb_004_sugar_box
# To visualize the palm postions of all generated grasp poses in the dataset
python FSG/scripts/grasp_gen/reader_grasp.py -r srh --file grasp_res.h5 --obj ycb_004_sugar_box --vis_all
python FSG/assets/obj/toolkits/obj2pcd.py -i *path_to_folder_contain_obj_mesh* -o *path_to_folder_to_store_pcd* -v -aff
FSG is a class template with number of fingers
- [1, 2] (Robotiq 2F-85)
- [3, 3] (Barrett)
- [4, 3]
- [4, 4] (Allegro)
- [5, 5] (Srh)
If the
To generate the workspace clouds of the new robot hand, please add the autows.yaml configuration file to FSG/config/robot_hand_name, please take a reference to the existing autows.yaml files of other robot hands.
Attention:
- If AutoWS.py takes too long to generate the workspace clouds, it is usually because the cloud to be generated contains too many points (too many joint combinations). Please try to set the angle step larger, or set the target joint angle range smaller.
If this project helps, please cite with
@article{fsg,
author = {Liqi Wu and Haoyu Jia and Kento Kawaharazuka and Hirokazu Ishida and Kei Okada},
title = {Dexterous grasp data augmentation based on grasp synthesis with fingertip workspace cloud and contact-aware sampling},
journal = {Advanced Robotics},
volume = {39},
number = {12},
pages = {730--747},
year = {2025},
publisher = {Taylor \& Francis},
doi = {10.1080/01691864.2025.2524553},
URL = {https://doi.org/10.1080/01691864.2025.2524553}
}


