Prevent cable from getting tangled

Hello,

I use a UR5e for a electronic board soldering application. For that application, we have pipes and cables that goes to the tip of the arm.
I’m looking for a efficient way to prevent the cables and pipes to get tangled : depending on the movement needed, the wrist3 goes in the wrong direction and the cables make a 360° around it.
I’d like to run a kind of thread that checks for that and if detected, rotates 360° in the other way to untangle.
Any idea how to do that?

Thanks

You can apply joint limits in the installation tab, though I’m not sure I’ve ever done it on wrist 3 to ensure it always spins a certain way. Might still work though. Otherwise using MoveJ with Joint angles selected should always prevent the robot “deciding” to wrap the wrong way. Though if you’re soldering, you’re probably using MoveP, so might have to get a bit more creative… Try the joint limits first.

We’ve already tried to set limits on wrist3 under the installation tab but the issue is that the robot went the wrong way anyway and then triggered a safety stop when max angle was reached but we don’t want safety stops. I don’t think MoveJ / MoveP is the issue. My understanding is that when to call a move using a pose in parameter instead of joint angles, the robot will decide how to reach that position itself. In our application, we need to use pose.
As you said, I think the solution might be a bit more creative but not sure if that would work:

  • create a thread that checks target position using get_target_joint_positions()
  • if target is the wrong way, I need to pause the current movement to add a rotation but I’m not sure how. mc_add_circular would work?

I mean, the MoveJ/MoveP can still resolve your issue (maybe). We experienced a lot of what you’re describing in our Welding CAP too. We’d get done welding, then go home, but because it was wrapped just a little too much, going home would decide to wrap it up even further. By changing some of our approach/exit point air moves to Joint Positions, we could guarantee the weld torch’s orientation was correct, and running the MoveP command to actually weld would not have the robot perform the wrong action.

Sounds like maybe you’re running this over ROS or something? I’m not familiar with mc_add_circular. But what you’re proposing, logically, makes sense to me. Always check the target waypoint, and if wrist 3 > your desired limit, change the target waypoint to the same pose but pose_add/pose_sub 180 degree rotation about wrist 3. Not exactly sure how well this would behave modifying the target waypoint as it’s moving there, but it might be fine.

I am hoping the issue would have solved by now. Nonetheless, there might be another way to do it.
You can monitor the joints in the thread and extracting Wrist3 from it plus monitoring it. Now, if you know the value of Wrist 3 just about when it starts to get tangled you can have a conditional statement in the thread that if the Wrist 3 value is reached to the tangle limit (assuming you know that) follow waypoint to untangle it. It might be a bit tedious to do but once the job stays same it should work alright.

Hello,

Thanks for your answers. I didn’t get the chance to try this yet but I’m not sure what command to use to paause a movment and add a wrist3 rotation.
How would you do it?

Thanks