This workspace marries the Manus MetaGlove Pro with the Agibot Omnihand. Through Pinocchio (kinematics) and NLopt (non-linear optimization), we retarget human hand movements from Manus into the robotic fingers of the Omnihand.
This workspace contains:
ManusSDK- The official Manus SDK headers/libs.manus_ros2- The ROS 2 publisher.manus_ros2_msgs- Custom message definitions.
omnihand_node- The interface node that actually talks to the Agibot hardware.omnihand_*_msgs(e.g.,omnihand_2025_node_msgs,omnihand_pro_2025_node_msgs) - Agibot's native message structures.omnihand_description-*- URDFs, visual meshes, and kinematics configurations defining the Omnihand (versions O10 and O12).
manus_omni_bridge- This node subscribes to the MetaGlove Pro joints, feeds them into a Pinocchio kinematic tree, and uses NLopt to optimize the output joint angles so the Omnihand mimics your real hand flawlessly without breaking itself.
- ROS 2 (Tested on Humble)
- Eigen3 (Math fundamentals)
- Pinocchio (
ros-<distro>-pinocchioor compiled from source) - NLopt (
libnlopt-devlibnlopt-cxx-dev- Non-linear optimization library) - Manus Core running on your Windows/Linux machine (make sure the glove is connected and calibrated in Manus Core).
Just your standard ROS 2 colcon workflow. From the root of your workspace (\Manus_Omni_bridge\):
# Build the entire workspace
colcon build --symlink-install
# Source it
source install/setup.bashYou have a few ways to launch the stack depending on your exact setup. By default, the manus_omni_bridge handles the whole process.
1. Run the Standard Hand (Direct Mapping)
ros2 launch manus_omni_bridge manus_omni_bridge.launch.py2. Run with the Omnihand Pro
ros2 launch manus_omni_bridge manus_omni_bridge.launch.py is_pro:=true3. Run the Pro Hand + Full NLopt Retargeting (This enables the full mathematical optimization pipeline using Pinocchio and NLopt!)
ros2 launch manus_omni_bridge manus_omni_bridge.launch.py is_pro:=true manus_retargeting:=true4. Debugging Mode
ros2 launch manus_omni_bridge manus_omni_bridge.launch.py is_pro:=true debug_print:=true