Manual rotating around one Axis results in changes in all Axes?!

  • I have an issue where I want to be able to offset a point, but mainly the rotations around XYZ, so WPR.


    L P[1] 500mm/sec FINE ACC30 Offset, PR[1]


    P[1] coordinates are:

    X: 796.821

    Y: -2281.020

    Z: 404.333

    W: -175.031

    P: 58.643

    R: 94.256


    This the point in question, the PR[1] offset, I am just changing the P component on it, so PR[1]:

    X: 0

    Y: 0

    Z: 0

    W: 0

    P: 15

    R: 0


    However, when that is applied the robot actually turns 15 degrees around the TOOL X axis, and not around the WORLD Y axis.


    XYZ changes work just fine and they are being applied according to the world frame.


    I have attached a short video to show my issue.


    I guess my question boils down to, how do I tell the robot "hey, take this point (P[1]) and apply P(Pitch) offset calculated around the WORLD frame"?


    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • You need to set the frame in the program using a program instruction. Pressing shift-coord to change it only affects jogging, not program execution.


    That being said, rotational offsets should be done using a tool offset, not a frame offset. Rotational frame offsets are subject to gimbal lock in certain orientations.

  • World is typically NUT and specified as User Frame 0.

    I wonder why your "World" is NDB? If such configuration of User Frame 1 is decided on purpose, do not call it "World", to avoid confusions.

    The configuration does not matter for frames. I really wish Fanuc wouldn't display it on the Frame setup screen.


    All uninitialized frames start off as 0,0,0,0,0,0 N D B, 0, 0, 0

  • It is a common misconception that w, p, and r are axis rotations around x,y, and, z like experienced when jogging. They are in fact not. They are Euler angles and don't always play nicely with rotational frame offsets.


    Tool offsets are a much better solution for rotational offsets.

  • It is a common misconception that w, p, and r are axis rotations around x,y, and, z like experienced when jogging. They are in fact not. They are Euler angles and don't always play nicely with rotational frame offsets.


    Tool offsets are a much better solution for rotational offsets.

    I tried with Tool_Offset and it is behaving the exact same way. Plus, since my tool frame is already rotated, I dont have an axis around which to rotate it in the vertical (XZ) plane. Both Tool_Offset and Frame Offset when changing P are rotating around the Tool Y axis and not around the world(or current frame) Y axis.


    As far as setting the frame and the shift+coord thing from your previous post, yes that is exactly what I am doing, I have an instruction that is setting the frame at the top of my program, I just screenshoted that to show my current frames.


    I still cant figure out how to rotate around the world Y axis (as it behaves when jogging) by setting a single offset.

  • There are a few ways to achieve what you want.


    1. Don't use offsets, just teach points for each motion you need.

    2. Create a new tool frame that is rotated they way you need it to be in order to give you a tool axis to rotate around

    3. Use matrix multiplication to calculate a new frame or position.

  • There are a few ways to achieve what you want.


    1. Don't use offsets, just teach points for each motion you need.

    2. Create a new tool frame that is rotated they way you need it to be in order to give you a tool axis to rotate around

    3. Use matrix multiplication to calculate a new frame or position.

    From the three options that you stated I think that the only option that will work is the third option, the rest will not work because I want use that offset as way for operators to do minor adjustments, because the parts that are being loaded into the machine are irregular so sometimes tiny modifications are needed , so I guess thats why creating a new frame will not work nor teaching points for each motion, because its just like fine-tuning of a point so my question here is:

    Is there a way to do matrix multiplication on the robot itself or do I need to write a Karel script to do this?

    And I am capable of doing that..

  • You can modify frames in the program, so option 2 could be done based on operator input.


    For option 3, There is another post discussing matrix multiplication. You can do in TP but either require the the Vision support tools option (which includes a matrix function) or a lot of math.

Advertising from our partners