Skip to main content

Hand pose retargeting for dexterous robot hand.

Project description

Dex Retargeting

Various retargeting optimizers to translate human hand motion to robot hand motion.

Test Status Issues Closed Issues Releases pypi License

This repo originates from AnyTeleop Project

Retargeting with different hands.

Installation

pip install dex_retargeting

To run the example, you may need additional dependencies for rendering and hand pose detection.

git clone https://github.com/dexsuite/dex-retargeting
cd dex-retargeting
pip install -e ".[example]"

Changelog

v0.5.0

  • Numpy Support Update: Starting from this version, dex-retargeting supports numpy >= 2.0.0. If you need to use numpy < 2.0.0, you can install an earlier version of dex-retargeting using:

    pip install "dex-retargeting<0.5.0"
    
  • Mediapipe Compatibility: Although mediapipe lists numpy 1.x as a dependency, it is compatible with numpy >= 2.0.0. You can safely ignore any warnings related to this and continue using numpy 2.0.0 or higher.

  • Dependency Cleanup: Removed trimesh as a dependency to simplify installation and reduce potential conflicts. The core functionality of dex-retargeting no longer requires mesh processing capabilities.

Examples

Retargeting from human hand video

This type of retargeting can be used for applications like teleoperation, e.g. AnyTeleop.

Tutorial on retargeting from human hand video

Retarget from hand object pose dataset

teaser

This type of retargeting can be used post-process human data for robot imitation, e.g. DexMV.

Tutorial on retargeting from hand-object pose dataset

FAQ and Troubleshooting

Joint Orders for Retargeting

URDF parsers, such as ROS, physical simulators, real robot driver, and this repository, may parse URDF files with different joint orders. To use dex-retargeting results with other libraries, handle joint ordering explicitly using joint names, which are unique within a URDF file.

Example: Using dex-retargeting with the SAPIEN simulator

from dex_retargeting.seq_retarget import SeqRetargeting

retargeting: SeqRetargeting
sapien_joint_names = [joint.get_name() for joint in robot.get_active_joints()]
retargeting_joint_names = retargeting.joint_names
retargeting_to_sapien = np.array([retargeting_joint_names.index(name) for name in sapien_joint_names]).astype(int)

# Use the index map to handle joint order differences
sapien_robot.set_qpos(retarget_qpos[retargeting_to_sapien])

This example retrieves joint names from the SAPIEN robot and SeqRetargeting object, creates a mapping array (retargeting_to_sapien) to map joint indices, and sets the SAPIEN robot's joint positions using the retargeted joint positions.

Citation

This repository is derived from the AnyTeleop Project and is subject to ongoing enhancements. If you utilize this work, please cite it as follows:

@inproceedings{qin2023anyteleop,
  title     = {AnyTeleop: A General Vision-Based Dexterous Robot Arm-Hand Teleoperation System},
  author    = {Qin, Yuzhe and Yang, Wei and Huang, Binghao and Van Wyk, Karl and Su, Hao and Wang, Xiaolong and Chao, Yu-Wei and Fox, Dieter},
  booktitle = {Robotics: Science and Systems},
  year      = {2023}
}

Acknowledgments

The robot hand models in this repository are sourced directly from dex-urdf. The robot kinematics in this repo are based on pinocchio. Examples use SAPIEN for rendering and visualization.

The PositionOptimizer leverages methodologies from our earlier project, From One Hand to Multiple Hands. Additionally, the DexPilotOptimizeris crafted using insights from DexPilot.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dex_retargeting-0.5.0-py3-none-any.whl (52.3 kB view details)

Uploaded Python 3

File details

Details for the file dex_retargeting-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dex_retargeting-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 347ce785181e7c7dff2c2ca1a55955f6b33b711d33a7171cb4ef89dc19bd66d3
MD5 1efaeebdbb7251ad7fe4ba05ae8efd43
BLAKE2b-256 26c12ed904c6adb9ef20eabc1ae1cd18acc7a20d1347c58c30a985987dd6b83f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dex_retargeting-0.5.0-py3-none-any.whl:

Publisher: build_stable.yml on dexsuite/dex-retargeting

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page