Home Integration


Left ArrowBack to discussions page
SebastienSebastien Posts: 219 Handy
Hi pros, we have a project where we would need two UR robots to work in the same work space. We need two UR because of cycle time. 
I have seen in the past the following software from Energid for collision avoidance. However this seems to use an external vision system to do the job. How do you guys manage two robots working in the same workspace and avoid collisions? My first guess would be to use the safety planes with some IO exchanges between the two robots and therefore build our own collision avoidance within the logic of the program itself. How are you guys doing it?



  • matthewd92matthewd92 Founding Pro, Tactile Sensor Beta Testers Posts: 1,267 Handy
    edited December 2016
    We did it through communicating when the one robot was clear of the others work space since they used some of the same workspace, one robot placed a part in a fixture, the next robot picked it up. To do this we utilized some modbus registers since you can connect the two robots together over modbus, one robot can become the master, the other the slave basically. We were then passing clear signals between the two or synchronizing signals.


    In this once the parts have been distributed by the robot on the right side of the screen the two robots would each have their own part but they need to be placed into the fixture at the same time (sorry, some imagination is needed in this video). So once they start the weld sequence we then began synchronizing the movements, the robot on the right would tell the robot on the left when to move, the robot on the left would then confirm back to the robot on the right when the motion was complete, so something like this....

     Right Robot
    set_modbus_register(LHRobot-1, 1) #This is a modbus register on the left hand robot<br>movej(xxxxx) #Make some Move<br>wait modbus_register(RHRobot, 1) # This is a modbus register on the right hand robot that the left hand will set<br>set_modbus_register(RHRobot-1,0) # clear the local register for the next move sequence

    Left Robot
    wait modbus_register(LHRobot-1, 1) # Wait for the RH robot to tell me to move<br>set_modbus_register(LHRobot-1,0).&nbsp;# clear the local register for the next move sequence<br>movej(xxxxx). #Do some move<br>set_modbus_register(RHRobot-1, 1) #Tell the RH Robot that my move is complete
Sign In or Register to comment.
Left ArrowBack to discussions page