

Important
Date : 25/07/10
We have recently resolved an issue where some fingertip sensor values were delayed. To address this, we have uploaded the updated firmware at the link below. Please update the firmware and download the modified ROS1 package.
allegro_hand_v5_firmware
Please update the firmware by referring to the "Firmware Update" section in the user manual.
This is the official release to control Allegro Hand V5-3finger with ROS1(Only V5 supported, V4 is not supported). Mostly, it is based on the latest release of Allegro Hand V5 4finger ROS1 package. You can find our latest release of Allegro Hand V5 4finger Ros1 package :(https://github.com/Wonikrobotics-git/allegro_hand_ros_v5) And the interfaces and controllers have been improved and rewritten by Soohoon Yang(Hibo) from Wonik Robotics.
We support three additional actions just like the Allegro Hand V5 4finger does.
- Save customize pose using Moveit and move to the saved pose.
- Visualize Allegro Hand V5 changing in real time in Rviz.
- Simply control hand with GUI tool instead of using keyboard.
These packages are tested on ROS Noetic(Ubuntu 20.04) and Melodic(Ubuntu 18.04). It will likely not work with previous versions(Kinetic ...).
The Allegro Hand V5-3finger now can be controlled and communicated via RS-485 in addition to CAN, unlike Allegro Hand V5-4finger. So, you can directly connect and communicate with a manipulator that supports RS-485 connection.
- Official Allegro Hand Website : https://www.allegrohand.com/
- Community Forum : https://www.allegrohand.com/forum
If you want to use hand directly via RS-485 connection with manipulator or else, you need to set port configures :
- Baudrate : 115200 bps
- Data bit : 8 bits
- Stop bit : 1 bit
- Parity bit : none
- Timeout : 0
Check out our RS-485 protocol in manual(Soon be updated)
From V5, the hand is fully based on torque controller.
- allegro_hand_controllers : Contain two main nodes for control the hand.
- node : Receive encoder data and compute torque using
computeDesiredTorque
based on CAN communication. - grasp : Apply various pre-defined grasps or customized poses based on CAN communication.
- 485 : Apply various pre-defined graps or customized poses based on RS-485 communication.
- node : Receive encoder data and compute torque using
- allegro_hand_description : Urdf,xacro descriptions for the kinematics of the hand, rviz configuration and meshes.
- allegro_hand_driver : Two main driver for sending and receiving data with the Allegro Hand.
- CANAPI : Drivers for CAN communication.
- rs485 : Drivers for RS-485 communication.
- allegro_hand_gui : Node that control the allegro hand with gui program.
- allegro_hand_keyboard : Node that sends the command to control Allegro Hand. All commands need to be pre-defined.
- allegro_hand_moveit : Provide MOVEIT package for Allegro Hand V5-3finger.
- allegro_hand_parameters : Offset and servo directions for each of the 16 joints, and some meta information about the hand.
- bhand : Library files for the predefined grasps and actions., available on 64 bit versions.
Before using the hand, you must install the pcan drivers. This assumes you have a peak-systems pcan to usb adapter.
- Install these packages
- Ubuntu 18.04(melodic)
sudo apt-get install libpopt-dev ros-melodic-libpcan
- Ubuntu 20.04(noetic)
sudo apt-get install libpopt-dev ros-noetic-libpcan
- Download latest drivers: PEAK_driver
- Install the drivers:
make clean; make NET=NO_NETDEV_SUPPORT
sudo make install
sudo modprobe pcan
- Check if drivers successfully installed:
pcaninfo
- When the hand is connected, you should see pcanusb0 or pcanusb1 in the list of available interfaces.
- Make your own Workspace.
mkdir ~/allegro_ws
- Install necessary packages.
sudo apt-get update
sudo apt-get install ros-<distro>-visualization-msgs
sudo apt-get install ros-<distro>-jsk-rviz-plugins
sudo apt install ros-<distro>-moveit
- Clone or Download Allegro Hand V5 ROS package.(https://github.com/Wonikrobotics-git/allegro_hand_ros_v5-3Finger.git)
git clone https://github.com/Wonikrobotics-git/allegro_hand_ros_v5-3Finger.git
- Install BHand library
cd allegro_hand_ros_v5-3Finger-master/src/bhand
sudo make install
sudo ldconfig
- Build Allegro Hand V5 ROS package.
cd ~/allegro_ws/allegro_hand_ros_v5-3Finger-master
catkin_make
source devel/setup.bash
- Connect PCAN-USB and Allegro Hand (make sure to power on Allegro Hand)
- Start the ROS package.
source devel/setup.bash
roslaunch allegro_hand_controllers allegro_hand.launch KEYBOARD:=true
(Melodic) If you get 'Permission denied' error, please chmod +x detect_pcan.py in allegro_hand_description/scripts folder
- Use keyboard command to move Allegro Hand.
Please check 'Launch file instructions' below.
You can simply control Allegro Hand V5 3finger by launching allegro_hand.launch
.
CAN Communication
roslaunch allegro_hand_controllers allegro_hand.launch KEYBOARD:=true
RS-485
roslaunch allegro_hand_controllers allegro_hand.launch KEYBOARD:=true RS485:=true
Optional arguments:
VISUALIZE:=true|false (default is false)
KEYBOARD:=true|false (default is false)
MOVEIT:=true|false (default is false)
GUI:=true|false (default is false)
AUTO_CAN:=true|false (default is false)
RS485:=true|false (default is false)
- If you want to visualize Allegro Hand on Rviz:
roslaunch allegro_hand_controllers allegro_hand.launch VISUALIZE:=true
- If you want to control Allegro Hand with Keyboard:
roslaunch allegro_hand_controllers allegro_hand.launch KEYBOARD:=true
- If you want to make pose or simulate Allegro Hand with MOVEIT:
roslaunch allegro_hand_controllers allegro_hand.launch MOVEIT:=true
- If you want to control Allegro Hand with Keyboard and GUI:
roslaunch allegro_hand_controllers allegro_hand.launch KEYBOARD:=true GUI:=true
- Note on
AUTO_CAN
: There is a nice scriptdetect_pcan.py
which automatically finds an open/dev/pcanusb
file. If instead you specify the can device manually (CAN_DEVICE:=/dev/pcanusbN
), make sure you also specifyAUTO_CAN:=false
. Obviously, automatic detection cannot work with two hands.
- Specify the can device:
pcaninfo
-
Open two terminals and source the allegro hand workspace.
-
Launch Allegro Hand packages using command below.
Terminal 1:
roslaunch allegro_hand_controllers allegro_hand.launch NUM:=0 CAN_DEVICE:=/dev/pcanusb32 AUTO_CAN:=false KEYBOARD:=true
Terminal 2:
roslaunch allegro_hand_controllers allegro_hand.launch NUM:=1 CAN_DEVICE:=/dev/pcanusb33 AUTO_CAN:=false KEYBOARD:=true
- Specify the can device:
ls -l /dev/ttyUSB*
-
Open two terminals and source the allegro hand workspace.
-
Launch Allegro Hand packages using command below.
Terminal 1:
roslaunch allegro_hand_controllers allegro_hand.launch RS485:=true NUM:=0 PORT:=/dev/ttyUSB0 KEYBOARD:=true
Terminal 2:
roslaunch allegro_hand_controllers allegro_hand.launch RS485:=true NUM:=1 PORT:=/dev/ttyUSB1 KEYBOARD:=true
These are example commands.You may need to change CAN_DEVICE, PORT and NUM arguments accroding to your system.
- Start Moveit
roslaunch allegro_hand_controllers allegro_hand.launch MOVEIT:=true KEYBOARD:=true
- Select joints menu and setup goal position of each joint.


Select Planning menu and set Start State: <current>
.
Click Plan
button and Execute
button.
Execution completed: SUCCEEDED
and joint states save complete
will be print on terminal.
NOTE : After the log is printed, hand will move to goal joint position.
Use Keyboard spacebar + Num(0~9)
to save current pose.
NOTE : Pose will be saved with named '(pose + Num). yaml'.
Use Keyboard Num(0~9)
(same as above num) to move hand to saved pose.
- Launch main program with GUI arguments.
roslaunch allegro_hand_controllers allegro_hand.launch GUI:=true
- Clear log button : Clear log.
- Exit button: Torque off and kill GUI program.
- Change button: Change hand motion time (default: 0.6, range: 0.3~2.0)
- Apply: Apply force when grasp (default: 10.0, range: 0.0~15.0)
- Vertical bar: Change & Apply real-time grasp force by moving vertical bar.
- Home: Home pose for grasping box object
- Spherical Home : Home pose for grasping spehrical object
- Grasp: 3finger Grap pose
- Off: Torqueoff
- Save(RS-485)
- Select pose number to save.
- Save current joints in Hand's memory.
- Save(CAN)
- Type file name to save.
- Save current joints to yaml.
- Move
- Select Pose number or pose file.
- Move Allegro Hand to saved pose.
- Refresh : the pose file list will be reloaded.
- Custom Hand Pose Repeat
- Select number of poses you want to repeat.
- Select poses by paying attention to the order in proportion to the number of poses selected.
- Choose how many times to repeat.
- Start.
- Reset : Fingertip sensor value reset.
NOTE : When saving a pose, the name of pose file must not overlap with predefined pose name.