Control of a Robotiq Hand-E gripper via modbus

Hello UR community,

I’m trying to migrate a setup from PolyScope 5.25 to PolyScope X and cannot get Modbus communication to a Robotiq Hand-E gripper working.

Setup

  • UR16e with Robotiq Hand-E connected to the robot wrist’s EE connector.
  • Robot controlled through the UR ROS 2 driver.
  • Gripper controlled via a custom Modbus client connected to ROS hardware_interface.
  • Communication is routed through the device /tmp/ttyUR.

What I have done

  1. Installed the Tool Communication Forwarder URCap and External Control URCap.
  2. Started the socat server, running on port 54321.
  3. Enabled the following services:
    • Primary Client Interface
    • Secondary Client Interface
    • RTDE
    • Modbus TCP Server

Tool Communication Forwarder

Running:

ros2 run ur_robot_driver tool_communication.py --ros-args -p robot_ip:=192.168.2.102 -p device_name:=/tmp/ttyUR

outputs:
[INFO] [1783517327.679494091] [ur_tool_communication]: Initializing tool communication wrapper node
[INFO] [1783517327.680121237] [ur_tool_communication]: Launching tool communication via ur_client_library tool_communication.py
[INFO] Robot IP: 192.168.2.102
[INFO] TCP Port: 54321
[INFO] Configuring PTY symlink at '/tmp/ttyUR'
[INFO] Starting socat with following command:
socat pty,link=/tmp/ttyUR,raw,ignoreeof,waitslave tcp:192.168.2.102:54321

Which suggests that the communication forwarder is running and reachable.

But when my Modbus test script tries to communicate with the gripper, I only get timeouts:
INITIAL STATUS
Read error: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 4 bytes (0 received)
Reset
Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response
Read error: Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

At this point I’m running out of ideas. Can someone suggest additional settings or diagnostics to check?

Any pointers would be greatly appreciated.

Thank you!

Best regards

You need probably to set Tool Output voltage to 24V

Hi! Thank you for the reply, yes that was one of the missing pieces :slight_smile: I created a start up script, which contains the following lines for the bring up of the gripper:
set_tool_voltage(24)
set_tool_communication(True, 115200,1,2,1.0,3.5)

Classical case of read the manual.