This repository utilizes ROS2 and the Manus Gloves to control various grippers. The manus_ros2
package is from the official site, specifically Manus Core 3.0.1.
Tested on Ubuntu 22.04 with ROS2 Humble/Python 3.10
We currently support the following grippers:
Due to GitHub's file size limitations, the lib
folders in ManusSDK are missing. You will need to download ManusSDK/lib
from the official Manus website. Copy and paste the contents into this repository's manus_ros2/src/manus_ros2/ManusSDK/lib
.
- Build the ROS2 package and source
cd manus_ros2 source /opt/ros/humble/setup.bash colcon build source install/setup.bash
- Connect your Manus Glove(s) to your PC
- Run the Manus Data Publisher Node
ros2 run manus_ros2 manus_data_publisher
- Run the corresponding teleoperation script
python src/manus_ros2/client_scripts/manus_surge_teleop.py
-
Follow the instructions to install manus_ros2
-
Run the Manus data publisher
ros2 run manus_ros2 manus_data_publisher
-
Source the
manus_ros2
package in another terminal and runros2 topic echo /manus_glove_0
. -
Place your hand on a horizontal non-metal surface and close your fingers, but point your thumb outwards.
Note the following joints and their values:
- ThumbMCPSpread
- ThumbMCPStretch
- IndexMCPStretch
- MiddleMCPStretch
- RingMCPStretch
- PinkyMCPStretch
These values will be the lower bounds for your range.
-
Move your thumb towards your palm.
Note the
ThumbMCPStretch
joint and its value. This is the upper bound of your ThumMCPStretch's range. -
Position your fingers like a thumbs up
Note the following joints and their values:
- IndexMCPStretch
- MiddleMCPStretch
- RingMCPStretch
- PinkyMCPStretch
These values will be the upper bounds for your range.
-
While opening your hand and keep your four fingers touching, move the thumb to the base of the pinky finger
Note the
ThumbMCPSpread
joint and its value. This is the upper bound of your ThumbMCPSpread's range -
Nagivate to your desired teloperation script. In the listener_callback function, modify the formulas to match your individual range.
The formula to normalize the value is:
(ergo_data.value − lower bound) / (upper bound − lower bound) × 100
You may have to perform additional adjustments due to the difference in grippers.