Limit axis6 angle

  • Hi there.


    I have an installation with vision equipment where a PC sends the pick point positions to the robot, and I need to limit the axis 6 maximum range to -180 to 180 degrees due to cable management.


    Currently I am checking with a karel if robot can move safely to pick the piece, checking the previous, the pick point and also some points on the path to check if motion will be done without reaching an axis limit and also if it can enter and exit safely


    Even forcing the axis 6 turn value of all points to 0, sometimes axis 6 exceeds the +-180 range, probably due to the need to just use a linear movement betwheen the previous and destiny pick point. (its spaced 250mm apart but probably when near singularity this can happen)


    Is there a way to just limit the maximum range from an axis but also that the check_epos karel function returns 0 if out of limits?


    An idea I have is to convert from cartesian pos to epos and check the axis6 value of all points before moving to pick a new part, but as the last movement is linear I don't think the obtained axis6 value will be real... I need a way to check if the turn config will be changed when performing that linear movement, because if I can see that before performing the movement, I can just discard the pick point and just go for another piece.


    Any help would be appreciated. Thx a lot.

  • You could use the software limit variable.

    MENU-SYSTEM-AXIS LIMIT.


    You need to reboot to make it works

    This solve the l’imitas.


    For the détection before having alarm, the cartesian to joint conversion could be good.

    You must do that before path exécution, because path planner always read few points in advance and will pop alarm if you try to do this realtime

    If it starts well the first time, you have not checked all !

  • Yeah, I know, because of that I just made some functions on karel in order to change axis configs, and apply RelTool offsets to PR points to just check them before performing any movement.


    If all checks pass, then I execute the planned path, if not I just discard the trajectory and calculate another one with the next pick point.


    I think I solved it but it still has some flaws, I've made a karel function in order to calculate the axis 6 position of a given point with the pos2joint instruction, there you can specify the "NO_TURNS" config and the previous position from where the robot will start the movement, and it just gives you the destiny JointPos as if it was reaching it with a linear movement.


    Done it with several segments of the trajectory and I know if it will try to exceed the limit, then discard the path.

    Only problem I have is that sometimes it wants to reach the piece with A6 at something like -280, where a better way would be to go at 80dg... and right now I discard that path.


    I think this is caused because I use a "J" movement to move the robot to a nearby know point on the workzone before going to pick the workpiece, this results in that if that known position is near the -180 range, its faster to the robot to go from -180dg --> -280dg with a linear movement than going from -180 --> 80 so it wants to go that way...


    As I cannot control the config change with the linear movements it just goes from NUT000 to NUT00-1.


    Maybe if I limit the maximum axis range with the method you gave to me it will not try to go that way since the kinematic solution should not be possible... so I will try if it helps because vision is slow, and its better to just correct that point rotation than to discard it.


    Thanks for your help.

Advertising from our partners