Move to Cartesian coordinate with unspecified orientation?

  • With Kuka robots, it is unnecesary to specify all of the components of a point in space in order to move there. If X, Y, and/or Z are left out of a position, it will automatically assume I do not want to change those values, and if A, B, and/or C (similar to W, P, and R, and quite possibly identical to them) are not given then the robot will take on values that require the minimum amount of axis rotation:

    Code
    PTP {X 50,Y 70,Z 600,A [some value],B [some value],C [some value]}    ; PTP stands for Point To Point, and is essentially a Joint move
    PTP {X -50}


    For the above example, my final position would be (-50, 70, 600), with an unpredictable ABC orientation for my EOT.
    Is there a similar mechanism in Fanuc robots? I want to be able to make my next position a function of my current position, to be able to say if I'm at X = 750, Y = 750, Z = 750, I want to do a joint move to (-750, -750, 750) (a simple negation of the X and Y componants of the EOT position). I don't need any particular orientation of the EOT as long as the position is reached.


    Similarly, is there a way to construct a position during runtime? So far I've had to teach points or hardcode them into a .ls file, and then used

    Code
    :J P[pointNumber] 100% ...;


    to move there. It would be great to be able to do something like this:

    Code
    :J P[12] 100% FINE;
    :P[12].X = (P[12].X + P[13].X) / 2;
    :J P[12] 100% CNT100;
    :J P[13] 100% CNT100;


    but from my minimal experience with Fanuc I doubt it would be that simple in a TP program (though I'm certain it's possible, just not in the way I demonstrated above).


    Thanks!

  • Also, does anyone know where I could fine a TP programming reference? Right now I am trying to learn the syntax by creating programs on the pendant, pulling them to my computer, and copying their structure in my own files, but I would much prefer an official document to learn from. I was able to find a KAREL reference, and I am currently going through that, but I do not seem to have a manual for offline TP programming. I expect I will work primarily with KAREL in the future, but I thought it important to be able to write TP programs as well, especially since I've heard that KAREL is not very good with robot motion programming.
    If someone could point me to a manual or TP instruction set, that would be fantastic.

  • If I'm getting this correct, you want to move robot form it's current position to a new shifted / predefined position.


    If so you need to use:


    PR[x] - position registers, can store robot position in [X,Y,Z,P,W,R]
    Than you can do with it whatever you want.


    You can use R[x] - registers to make operation on values, add, subtract, divide, multiply.


    So you can "extract" position values from PR and place it to a R do some calculations on it and write it back to PR.

  • This CODE in Fanuc will look like this:


    Code
    :J P[12] 100% FINE;
    :P[12].X = (P[12].X + P[13].X) / 2;
    :J P[12] 100% CNT100;
    :J P[13] 100% CNT100;


    Code
    1:J PR[12] 100% FINE    ;
       2:   ;
       3:  PR[12,1]=((PR[12,1]+PR[13,1])/2) ;
       4:   ;
       5:J PR[12] 100% FINE    ;
       6:J PR[13] 100% FINE    ;


    Just remember that PR[12] will be changed ! so next time that you will get to PR[12] you will get to last saved position

  • It worked! Thanks so much!
    I had been kind of stuck with position registers since I didn't realize that the PR[i, j] command was used to get an element from a position in that register... I had figured out how to set position registers and move to those positions but I had been unable to figure out how to edit position registers.


    Thanks again!

Advertising from our partners