Universal Robots+

Tool communication steps

Hello,

I ran into tool communication problems. I’m working with UR5e (URSoftware 5.3.1.64192) and Robotiq 2F 85 gripper. May I confirm I set the hardware up in the right way? This is my current settings:

  1. I’ve installed the rs485 URCap (but not add it to the program since it is a daemon process).
  2. The Communication Interface has been chosen under Installation->General->Tool I/O, Tool Output Voltage has been set to 24
  3. The external control URCap has been installed
  4. I start the driver bringup with use_tool_communication set to true, tool_voltage set to 24.
  5. Run the externalcontrol program
  6. I ran the gripper ros driver with: rosrun robotiq_2f_gripper_control Robotiq2FGripperRtuNode.py /tmp/ttyUR

Then it throws an exception:
Modbus Error: [Input/Output] No Response received from the remote unit

I’m wondering what I did wrong here that the gripper could be connected. Thank you!

Did you setup the correct baud rate necessary for talking to the device? You can set that via launch file parameters in step 4.

I didn’t change any other tool related parameters other than the tool voltage, as they seem to match the values on the robotiq instruction manual:

I also have tested with different baud rate. For any rates that is < 115200, the gripper will turn red when I run the externalcontrol program. And I got the same no connection error when trying to run the gripper driver.

On the gripper manual, it says the light will be red when:

Minor faults (LED continuous red)
- 0x08-Maximum operating temperature exceeded,wait for cool down.
- 0x09-No communication during at least 1 second.

Also when I run several times with the baud rate 115200, I saw another error (but sometimes still see the no connection error before the tool_communication process stopped):

response is:
ReadRegisterResponse (3)
response is:
ReadRegisterResponse (3)
response is:
ReadRegisterResponse (3)
response is:
ReadRegisterResponse (3)
response is:
ReadRegisterResponse (4)
response is:
ReadRegisterResponse (3)
response is:
ReadRegisterResponse (4)
response is:
WriteMultipleRegisterResponse (1000,0)
Traceback (most recent call last):
File “/home/scazlab18/ros_lib_ws/src/robotiq/robotiq_2f_gripper_control/nodes/Robotiq2FGripperRtuNode.py”, line 89, in
mainLoop(sys.argv[1])
File “/home/scazlab18/ros_lib_ws/src/robotiq/robotiq_2f_gripper_control/nodes/Robotiq2FGripperRtuNode.py”, line 75, in mainLoop
status = gripper.getStatus()
File “/home/scazlab18/ros_lib_ws/src/robotiq/robotiq_2f_gripper_control/src/robotiq_2f_gripper_control/baseRobotiq2FGripper.py”, line 107, in getStatus
status = self.client.getStatus(6);
File “/home/scazlab18/ros_lib_ws/src/robotiq/robotiq_modbus_rtu/src/robotiq_modbus_rtu/comModbusRtu.py”, line 98, in getStatus
output.append((response.getRegister(i) & 0xFF00) >> 8)
AttributeError: ‘WriteMultipleRegistersResponse’ object has no attribute ‘getRegister’

I am not familiar with RTU comminucation. But I guess this meant the gripper is connected to two things? Thank you.