Recovery routine advice request.

  • Hi all,

    I'm asking for an advice how to do recovery routine "Staubli approved way".

    At the moment I was going to do it the same way as I did it on ABB robot, by remembering a unique number for my last passed position and during recovery find it and step back number by number until the robot be at home. When I start typing these uniqie number I realized that Staubli robots run move instructions and other instructions separately and I need to use WaitEndMove, when I want to synchronize them.

    Code
        // Move to tab position
        movej(jSafePickTab,tTabTool,mTravelSlow)
        nRecoveryPos=10001
        movej(appro(pPickTab,trAbovePickTab),tTabTool,mTravelSlow)
        nRecoveryPos=10002
        movel(pPickTab,tTabTool,mPickSlow)
        nRecoveryPos=10003
        waitEndMove()

    My question is: In above example, will the controller update nRecoveryPos variable after robot robot actually pass the point or it will do it instantaneously even before robot pass the first point,

    So before jSafePickTab will be reached the nRecoveryPos will be 10003 instead of 10001?

  • AD
  • Hi,


    The value of nRecoveryPos will be nRecoveryPos=10003 even before getting to jSafePickTab.

    And if you put waitEndMove for all movement instructions, the robot will be very jerky.

    There is a better way to do it, any Staubli move instruction returns a value called moveID:


    For example, if movej(jSafePickTab,tTabTool,mTravelSlow) is the first move instruction, it will return 1, so that will be the move ID 1.


    (continue on next post to upload more images)

  • If you stop your robot while moving there and use the getMoveID() instruction, this will return a number, for example, 1,62. This number means that the robot was moving to move ID 1, which is jSafePickTab and it was at 62% of completion.

    (continue on next post to upload more images)


    This could be used to know exactly where the robot is and how to revert back to safety. The only issue is if you are running this in a loop, next time, movej(jSafePickTab,tTabTool,mTravelSlow) won't be 1 but will be the very next move ID.


    (continue on next post to upload more images)

  • I would advise you to reset the move ID counter either at the end or the beginning of the loop:



    With the setMoveID() you have better control of the movement IDs.

    This is not the best solution, because if you add a few more moves, all the IDs to recover change as well.

    Usually what I do, is to have areas of interest, for example near station 1, I set the move ID to 100, and I know from 100 to, for example, 153, are movements near station 1. For station 2 I set it to 200, and station 3, 300,...

    My recovery program then is just an if within a range, if move ID >99 and < 200, it means is near station 1, and the recovery is made for instance by moving Z up first...


    Hope this help you and let me know otherwise,


    El Esgalho!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now