Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Why Universal Robotics Robotiq Postprocessor is not working
#1
Hello!

I was wondering, how can I make the "Universal Robots RobotiQ" Postprocessor to work? Or how can I make the RobotiQ gripper to open/close on the simulation and then send the program to the robot and get it to run correctly all through RoboDK?

I made a simple simulation of a pick and place task with an UR10 and Robotiq gripper 2F-85. I can run the program on the robot when "Universal Robots" post processor is selected, however, the gripper does not move (open/close) whatsoever neither on the simulation nor on the real robot.
Then on internet I read that I can select a different post processor, and in this case I selected the "Universal Robots RobotiQ", however, when I do that and try to run the program on the robot a message pops up saying that the connection was denied (something along those lines; the computer is in korean and I don't understand korean well) and nothing happens.

My professor and I think that it seems that there are problems in making a connection between robodk/postprocessor/real robot. Could it be possible that the UR RobotiQ postprocessor is outdated? If so, how can we get an updated version that will make the connection to work properly and the gripper to open/close when we run the program on the robot through robodk?

Thank you beforehand and best regards!
#2
Hi marie,
I stumbled across the same problem! As you already mentioned, I also think the code example in the provided Postprocessor is for the older version of the gripper, which uses an outdated set of Modbus commands. Furthermore the postprocessor example throws out a syntax error (at least in my version of RoboDK) because it uses the wrong quotation marks for the header code.

This aside, I think, there are two possibilities for the communication between the Robotiq 2F-85 gripper and RoboDK.
For my solution (which I got by accident) I use the special command library provided by robotiq, for URscript. The library must be send in the header of every program, generated with robodk. Then you can use the functions like

rq_activate_all_grippers(True)
rq_move_and_wait_mm(pos_mm, gripper_socket=1)

as custom code blocks in robodk programs, for activating the gripper and opening / closing it. This is not a very elegant solution but it works ;) I can also send you my custom Postprocessor.
A more elegant solution could be changing the MoveJ function in the Postprocessor to something like this:

def MoveJ(self, pose, joints, conf_RLF=None):
"""Add a joint movement"""
if pose is None:
blend_radius = "0"
self.LAST_POS_ABS = None
else:
pose_abs = self.REF_FRAME*pose
blend_radius = self.blend_radius_check(pose_abs)
self.LAST_POS_ABS = pose_abs.Pos()

if len(joints) == 1:
self.addline('rq_move_and_wait_mm(%s)' % (angles_2_str(joints(0)))
elif 2 <= len(joints) < 6:
self.RunMessage('Move axes to: ' + angles_2_str(joints))
else:
self.addline('movej(%s,accel_radss,speed_rads,0,%s)' % (angles_2_str(joints), blend_radius))

However, I get a syntax error when I try this out.

The second solution, which I did not try out, is to update the Modbus commands in the original Universal_Robots_RobotiQ postprocessor. I think the command "Go_to_Requested" should be changed to “Go to requested position” or something similar. You can find the correct commands in the robotiq manual.

If you have a working solution by now, I would be glad if you share it.
#3
(04-20-2020, 09:13 AM)SimonTwo Wrote: Hi marie,
I stumbled across the same problem! As you already mentioned, I also think the code example in the provided Postprocessor is for the older version of the gripper, which uses an outdated set of Modbus commands. Furthermore the postprocessor example throws out a syntax error (at least in my version of RoboDK) because it uses the wrong quotation marks for the header code.

This aside, I think, there are two possibilities for the communication between the  Robotiq 2F-85  gripper and RoboDK.
For my solution (which I got by accident) I use the special command library provided by robotiq, for URscript.  The library must be send in the header of every program, generated with robodk. Then you can use the functions like

rq_activate_all_grippers(True)
rq_move_and_wait_mm(pos_mm, gripper_socket=1)

as custom code blocks in robodk programs, for activating the gripper and opening / closing it. This is not a very elegant solution but it works ;)  I can also send you my custom Postprocessor.
A more elegant solution could be changing the MoveJ function in the Postprocessor to something like this:

   def MoveJ(self, pose, joints, conf_RLF=None):
       """Add a joint movement"""
       if pose is None:
           blend_radius = "0"
           self.LAST_POS_ABS = None
       else:
           pose_abs = self.REF_FRAME*pose
           blend_radius = self.blend_radius_check(pose_abs)
           self.LAST_POS_ABS = pose_abs.Pos()
           
       if len(joints) == 1:
           self.addline('rq_move_and_wait_mm(%s)' % (angles_2_str(joints(0)))
       elif 2 <= len(joints) < 6:
           self.RunMessage('Move axes to: ' + angles_2_str(joints))
       else:
           self.addline('movej(%s,accel_radss,speed_rads,0,%s)' % (angles_2_str(joints), blend_radius))

However, I get a syntax error when I try this out.

The second solution, which I did not try out, is to update the Modbus commands in the original Universal_Robots_RobotiQ postprocessor. I think the command "Go_to_Requested" should be changed to “Go to requested position” or something similar. You can find the correct commands in the robotiq manual.

If you have a working solution by now, I would be glad if you share it.

Hi @SimonTwo, 

Could you share the special command library provided by robotiq, for URscript. I'm trying to get the gripper to move but I've not been able to do it so far.
  




Users browsing this thread:
1 Guest(s)