Hardware Requirements

To use this package you need a schunk dexterous hand www.schunk-modular-robotics.com with firmware version Other firmware versions may work, but are not officially supported. Alternatively you can use a simulated version without any hardware, see cob_gazebo.

Software Requirements

The installation is tested for Ubuntu 10.04, 10.10, 11.04 and 11.10 using ROS electric. If you discover problems installing them on other platforms, please tell us.


The schunk_sdh package provides a configurable node for operating a schunk dexterous hand.


The schunk_sdh node takes in trajectory_msgs/JointTrajectory messages and send this directly to the hardware. The joint states can be received by topics and the sdh can be initialized, stopped or recovered via services.

Action Goal

follow_joint_trajectory_action/goal (control_msgs/FollowJointTrajectoryActionGoal)
  • The goal describes the target trajectory for the sdh (at the moment only the position value of the last trajectory point is used).

Action Result

follow_joint_trajectory_action/result (control_msgs/FollowJointTrajectoryActionResult)
  • empty

Action Feedback

follow_joint_trajectory_action/feedback (control_msgs/FollowJointTrajectoryActionFeedback)
  • empty

Subscribed Topics

command (trajectory_msgs/JointTrajectory)
  • Receives direct commands.

Published Topics

/joint_states (sensor_msgs/JointState)
  • Publishes the joint states of all joints.


init (cob_srvs/Trigger)
  • Initializes the node and connects to the hardware.
stop (cob_srvs/Trigger)
  • Stops immediately all hardware movements.
recover (cob_srvs/Trigger)
  • Recovers the hardware after an emergency stop.
set_operation_mode (cob_srvs/Trigger)
  • Sets the operation mode for the node.


~sdhdevicetype (string, default: PCAN)
  • Device type for can dongle hand
~sdhdevicestring (string, default: /dev/pcan0)
  • Device identifier for hand, e.g. /dev/pcan32
~dsadevicestring (string, default: Required)
  • Device identifier for tactile sensors, e.g. /dev/ttyUSB0
~baudrate (int, default: 1000000)
  • Baudrate of can module, e.g. 1000, 500,...
~joint_names (list of strings, default: Required)
  • List of joint names corresponding to urdf description, e.g. [sdh_thumb_3_joint, sdh_finger_11_joint,...]
/robot_description (urdf model, default: Required)
  • Urdf model of the robot, including the joints and links describing the sdh


The dsa_only node publishes data from the tactile sensors in form of schunk_sdh/TactileSensor messages.

Published Topics

tactile_data (schunk_sdh/TactileSensor)
  • Publishes data from the tactile sensors.


~dsadevicestring (string, default: Required)
  • Device identifier for dsa, e.g. /dev/ttyS0
~polling (bool)
  • Use polling mode for getting sensor data
~publish_frequency (float)
  • Frequency for publishing sensor data


This package is not intended to be used directly, but with the corresponding launch and yaml files from e.g. schunk_bringup in the schunk_robots stack. For using only the sdh use

roslaunch schunk_bringup sdh_solo.launch

For including the sdh in your overall launch file use

<include file="$(find schunk_bringup)/components/sdh.launch" />

All hardware configuration is done in the schunk_hardware_config package. A sample parameter file for the sdh in "schunk_hardware_config/sdh/config/sdh.yaml" could look like this

sdhdevicetype: PCAN
sdhdevicestring: /dev/pcan0
baudrate: 1000000
joint_names: ['sdh_knuckle_joint', 'sdh_thumb_2_joint', 'sdh_thumb_3_joint', 'sdh_finger_12_joint', 'sdh_finger_13_joint', 'sdh_finger_22_joint', 'sdh_finger_23_joint']
OperationMode: position

A sample parameter file for the dsa tactile sensors in "schunk_hardware_config/sdh/config/dsa.yaml" could look like this

dsadevicestring: /dev/ttyS0
polling: false
use_rle: true
frequency: 30

Wiki: schunk_sdh (last edited 2013-12-03 08:14:38 by FlorianWeisshardt)