{"id":27692,"library":"dex-retargeting","title":"Dex Retargeting","description":"Dex Retargeting is a Python library for retargeting hand poses from human hand models to dexterous robot hands. It supports multiple retargeting methods (e.g., keypoint-based, joint angle mapping) and is designed for use in robot learning and teleoperation. Version 0.5.0 has a nightly release cadence, with active development. Requires Python >=3.7, <3.13.","status":"active","version":"0.5.0","language":"python","source_language":"en","source_url":"https://github.com/dexsuite/dex-retargeting","tags":["robot hand","retargeting","dexterous manipulation","hand pose","MANO"],"install":[{"cmd":"pip install dex-retargeting","lang":"bash","label":"PyPI install"}],"dependencies":[],"imports":[{"note":"PoseRetargeting is not exposed at the package root; must import from submodule.","wrong":"from dex_retargeting import PoseRetargeting","symbol":"PoseRetargeting","correct":"from dex_retargeting.retargeting import PoseRetargeting"},{"note":"","wrong":"","symbol":"retarget","correct":"from dex_retargeting.retargeting import retarget"}],"quickstart":{"code":"import numpy as np\nfrom dex_retargeting.retargeting import retarget\n\n# Example: retarget a single hand pose\nsource_pose = np.random.rand(21, 3)  # MANO hand joints\nrobot_joints = retarget(source_pose, robot_name='allegro')\nprint(robot_joints)","lang":"python","description":"Load a retargeting function and apply it to a source hand pose (e.g., MANO joints). The function returns robot-specific joint angles."},"warnings":[{"fix":"Ensure your input joints follow the MANO hand joint ordering (21 joints in specific order). Refer to the model documentation.","message":"The retarget function expects source poses in a specific joint order (MANO convention). Using incorrect ordering will silently produce wrong results.","severity":"gotcha","affected_versions":"all"},{"fix":"Use a robot configuration object: `from dex_retargeting.robot_config import get_robot_config; robot_cfg = get_robot_config('allegro'); robot_joints = retarget(source_pose, robot_cfg)`","message":"The 'robot_name' parameter in retarget() is deprecated in favor of passing a robot config object in future versions. Current version still supports string names, but will be removed.","severity":"deprecated","affected_versions":">=0.4.0,<0.6.0"},{"fix":"Use Python 3.7-3.12.","message":"Python 3.13 and above are not supported due to <3.13 constraint.","severity":"breaking","affected_versions":"current"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Run `pip install dex-retargeting` (note the hyphen, not underscore).","cause":"Package not installed or misspelled.","error":"ModuleNotFoundError: No module named 'dex_retargeting'"},{"fix":"Use `from dex_retargeting.retargeting import PoseRetargeting` instead.","cause":"Attempted to import PoseRetargeting from root of package.","error":"AttributeError: module 'dex_retargeting' has no attribute 'PoseRetargeting'"},{"fix":"Check supported robot names: 'allegro', 'shadowhand', 'barrett', etc. See docs.","cause":"Specified robot name not in the list of supported robots.","error":"ValueError: Unknown robot name 'panda'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}