How tetheria/aero-hand-open works
Aero Hand Open is an open-source tendon-driven dexterous robotic hand with firmware, a Python control SDK, and ROS 2 integrations for teleoperation and policy deployment. The principal ROS workflow streams hand motion from a mocap source, retargets it to hand-joint commands, then sends those commands to the hand node for actuation; the node can also publish actuator feedback. The graph includes the documented Manus, webcam, Apple Vision Pro, and RL branches. Some connections follow documented topics or README capabilities; unsampled implementations are represented only where the tree supports a path.
Main entry points: dex_retargeting_node.py Retargeting node · aero_hand.py Python hand interface · aero_hand_node.py ROS hand node · rl_z_rotation_deploy.py RL policy deployment
Components 20
Motion capture
- Webcam capture
ros2/src/webcam_mocap/webcam_mocap/webcam_mocap.py - Manus glove
ros2/src/manus_glove_pkg/manus_ros2/src/manus_data_publisher.cpp - Vision Pro capture
ros2/src/apple_vision_pro_mocap/apple_vision_pro_mocap/apple_vision_data_publisher.py
ROS 2 control
- Retargeting node
ros2/src/aero_hand_open_retargeting/aero_hand_open_retargeting/dex_retargeting_node.py - MediaPipe retargeting
ros2/src/aero_hand_open_retargeting/aero_hand_open_retargeting/mediapipe_retargeting.py - Manus retargeting
ros2/src/aero_hand_open_retargeting/aero_hand_open_retargeting/manus_joint_states_retargeting.py - Vision retargeting
ros2/src/aero_hand_open_retargeting/aero_hand_open_retargeting/apple_vision_pro_retargeting.py - Pose normalization
ros2/src/aero_hand_open_retargeting/aero_hand_open_retargeting/utils/normalize.py
Hand runtime
- ROS hand node
ros2/src/aero_hand_open/aero_hand_open/aero_hand_node.py - Servo configuration
firmware/main/HandConfig.h - Servo homing
firmware/main/Homing.cpp - Aero robotic hand
Python SDK
- Control GUI
sdk/src/aero_open_sdk/gui.py - Python hand interface
sdk/src/aero_open_sdk/aero_hand.py - Joint conversion
sdk/src/aero_open_sdk/joints_to_actuations.py - Actuation conversion
sdk/src/aero_open_sdk/actuations_to_joints.py
Policy deployment
- RL policy deployment
ros2/src/aero_hand_open_rl/aero_hand_open_rl/rl_z_rotation_deploy.py - Simulation mappings
ros2/src/aero_hand_open_rl/aero_hand_open_rl/utils/sim_to_real_mappings.py - MuJoCo simulation
Other components
- Teleoperator
Connections 21
- Teleoperator → Webcam capture: provides hand motion
- Webcam capture → Retargeting node: publishes mocap
- Manus glove → Manus retargeting: publishes glove data
- Vision Pro capture → Vision retargeting: publishes mocap
- Retargeting node → MediaPipe retargeting: retargets pose
- Retargeting node → Manus retargeting: retargets glove state
- Retargeting node → Vision retargeting: retargets pose
- Retargeting node → Pose normalization: normalizes motion
- Retargeting node → ROS hand node: publishes joint control
- ROS hand node → Aero robotic hand: commands servos
- Servo homing → Aero robotic hand: homes servos
- Servo configuration → Servo homing: supplies servo settings
- Teleoperator → Control GUI: sets hand targets
- Control GUI → Python hand interface: sends control
- Python hand interface → Joint conversion: converts joint targets
- Python hand interface → Actuation conversion: converts feedback
- Python hand interface → Aero robotic hand: controls over serial
- MuJoCo simulation → RL policy deployment: provides policy environment
- RL policy deployment → Simulation mappings: maps simulated actions
- RL policy deployment → ROS hand node: publishes actuator control
- ROS hand node → RL policy deployment: publishes actuator feedback