Skip to content

Weiss/Schunk Gripper (WSG)


This driver works with any size WSG gripper using firmware 4.0.x using TCP/IP network interface if the Text protocol is selected in the gripper control panel.


  1. Open the IP address of the gripper in a web browser (e.g. The control panel will appear.
  2. In Settings tab go to Command Interface to select TCP/IP Interface and unchecked Use text based interface in the TCP Settings category below. Please note the TCP Communication Port (e.g. 1000)
  3. Be sure that the option in the gripper configuration Enable error state on TCP disconnect is unchecked.
  4. After installing the WSG Gripper component in drag&bot, you have to configure the following parameters in the component configuration:
    • IP address to connect
    • Port address, the sames as configured before
    • Width of the gripper in mm
    • Use text protocol has to be set to True to use the GCL driver. If is False, then the binary protocol is used.

Interface and functionality

For the sake of the retro-compatibility, the same ROS Service interface is kept. This interface allows to use the gripper in an easy way.

Reset error

When the gripper is in error state, this function resets any error. If the gripper is not in error state during this call, then it has no effect. wsg50_driver/ack: this service call reset any kind of error in the gripper. If the gripper is not in error states, it does not have any effect.


This function stops the movement of the gripper immediately. The gripper can be normally used after this call. wsg50_driver/stop: this service call of type ROS standard Empty service stops any movement of the gripper.


The gripper requires initialization after power on or new connection. This command has to be called always after gripper power on. A move to the maximum opening will be produced. wsg50_driver/homing: this service initializes the gripper. It is a ROS standard service empty therefore produces no output and requires no input.


The gripper moves to a provided position (width) in mm with a given speed in mm/s. wsg_50_x/move: this service of type wsg50_common/Move moves the gripper. Requires width in mm and speed in mm/s. Returns 0 if OK, 1 in case of any error or position not achieved.

Move incrementally

This function moves the gripper in a given orientation which can be open or close. The given distance in mm will be applied following the current direction. This function is a wrapper of Move, and will call Move using the current position as basis. wsg50_driver/move_incrementally: ROS Service of the type wsg50_common/Incr. This service requires direction as open or close string and increment as mm. It returns 0 if move was OK, or 1 if not achieved.

Set Force

Prior to a grasp call, it is needed to set the force in Newtons by this method. wsg50_driver/set_force: ROS Service of type wsg50_common/Conf. This service has a float value as input, in this case referring Newton.

Information topic publishing

Information about current gripper state including position (width), speed, force and state is published with 50 Hz in /wsg50_driver/status topic (type wsg50_common/Status). Acceleration is the last set acceleration, but it has no effect in the gripper functionality so that it can be ignored. Individual force in fingers is not published by now showing a null value.

Grasp a part (grip)

To be able to grasp a part, the gripper has to be in a non-grasped internal state. To allow an easier use of the gripper. First this grasped state is release (autorelease) by moving the gripper to the current position and then performing grasp operation. Prior to grasp it is needed that the force is set by Set Force method. Position in mm and speed in mm/s have to be also provided. wsg50_driver/grasp: this service of type wsg50_common/Move produces a grasp. Requires width (position) and speed.

Release a part

Releases a grasped object opening the fingers to a indicated position. It is very similar to move. It requires that a part to be correctly grasped before. If not the release will produce an error. Therefore is easier to release parts using Move. Position in mm and speed in mm/s have to be provided. wsg50_driver/release: this service of type wsg50_common/Move produces a release. Requires width and speed.

Set acceleration

This function is deprecated and has no effect in the gripper's functionality.