URe Can't make multiple rotations of wrist

  • I feel like this should be simple, but the trainer couldn't figure out how to make my new UR3e make multiple wrist rotations over a specific distance/time. If we programmed 7201° it just rotated the 1° over the distance to get to the 'end result'. Her solution was for me to program 42 different 179° moves... which will be quite a PITA since I have quite a few different part types and will need multiple versions through the testing/learning process. How on earth do I just make it rotate the wrist 20 times per inch during a move?

  • What type of move sequence were you using? If you are using a moveL it’s pretty tricky as that will plan the shortest linear path from point to point regardless of wrist rotation that you want, movej is much simpler since you can define the actual joint positions you want the solution to be near.



    Sent from my iPhone using Tapatalk


  • What type of move sequence were you using? If you are using a moveL it’s pretty tricky as that will plan the shortest linear path from point to point regardless of wrist rotation that you want, movej is much simpler since you can define the actual joint positions you want the solution to be near.



    Sent from my iPhone using Tapatalk


    I do believe we were in moveL at that time. We actually programmed the whole thing in moveL then it slow crashed and got stuck and she told me we should have made those moves in moveJ. That might explain it. Thank you Matthew I will try the same move in moveJ as soon as I finish leveling the robots hanging mount this weekend.


  • Try creating a thread that collects the tcp pose, and use a speedj script function nested in a if statement, here is some code i used to find a surface, retract, move back in, & rotate to account for tooling wear.


    This was also done on a UR-5e which only has +/- 360 deg of rotation on w3, not infinite like the UR-3e, I am not sure what the joint positions look like on the 3 but if they are limited by +/- 2pi you will need a counter in the thread to add the rotations, similar to what your trainer was doing.


    MoveL

    pre_2_deburr_2

    Direction: ref_plane Y-

    Until (tool_contact_detection)

    Start_w3≔ActualjP[5]

    Direction: ref_plane Y+

    Until (distance)

    MoveJ

    Retract_tool_Rz

    MoveL

    Direction: ref_plane Y-

    Until (distance)

    If rot_dir≟1 and ActualjP[5]<(Start_w3+d2r(_rot+5))

    speedj([0,0,0,0,0,d2r(rot_speed*rot_dir)],3.14,30)

    ElseIf rot_dir≟-1 and ActualjP[5]>(Start_w3-d2r(_rot+5))

    speedj([0,0,0,0,0,d2r(rot_speed*rot_dir)],3.14,30)

    Else

    stopj(2)


    Thread_1

    ActualjP≔get_actual_joint_positions()

    sync()

Advertising from our partners