# Frames

Frames are what allow us to use mathematical expressions to define motion and positions in the real world. They utilize the two main coordinate systems, Cartesian and Joint to define a position, configuration, or orientation as numbers.

When adding a tool or a work area, you will create a frame that defines location and orientation for that tool. FANUC Teach Pendants have utilities available for quickly and easily creating these frames, although you are also able to manually enter measurements taken from the tool.

## Coordinate Systems

Coordinate systems are the methods we use to measure positions and orientations of physical objects. The robot doesn't know anything about the real world or what is in it, as it's driven by a processor that can only work with numbers.

We live in a 3 dimensional universe, meaning a position in space can be referenced by 3 values, each a measurement from an origin point. The robot is a series of joints, so it can reference positions related to the angle of each joint, and the distance between each of the joints, using trigonometry.

**Examples:**

You have a quarter on a table. It is 10mm from the front edge of the table, 14.5mm from the left edge of the table, and is 1.75mm high. This means we can express the location we'd need to reach to pick it up in X,Y,Z format as (10, 14.5, 1.75). This is the WORLD frame. We are referencing it's position relative to a point we've chosen in the real world.

However, the human body (specifically your brain) does not operate in a WORLD frame. Your arm is a series of joints that must work together to reach positions, even if we fully understand and measure that position with a ruler. For example, for you to reach that quarter your brain will tell your elbow to extend to 78°, your shoulder to 93.75° and your wrist to turn to 12°. This would be expressed in a JOINT reference system as (78, 93.75, 12).

If you give someone a map that told them the location of something in degrees, they would have no idea what you were talking about. The human brain likes systems that reference things in the real world instead. Thankfully, industrial robots always include a variation on the WORLD reference system.

### Joint Coordinate System

The joint coordinate system is the simplest from the point of design and control. Each joint has a specific range of motion it is capable of, expressed in degrees. A joint coordinate is simply a list of each joint's angular position.

The robot controller processor calculates the end of arm tooling point using simple trigonometric equations, with the variables of each joint's angle and length between joints.

Saving PR positions in JOINT coordinate systems make them truly global, as it will always represent an exact configuration of the robot arm.

Joint 1 | Joint 2 | Joint 3 | Joint 4 | Joint 5 | Joint 6 |
---|---|---|---|---|---|

100° | 112.323° | 10° | 88° | 399° | 84.34° |

### Cartesian Coordinate System

X | Y | Z | Yaw | Pitch | Roll | Configuration |
---|---|---|---|---|---|---|

100mm | 112.323mm | 300mm | 108° | 20° | 84.34° | N, U, B |

In the bridge between a processor's computation and motion and position in the physical world, we have to have some sort of reference to begin our measurements. Each point in space can be represented by three values represented by the characters X, Y, and Z. This is known as a "Cartesian" coordinate system.

To use a Cartesian system we have to define where 0 is for each axis. Since it does not affect the calculations and only makes it easier to understand, we define 0 as the same point for all 3.

The familiar looking image on the right demonstrates this. The intersection between the three axis lines is the "Zero" point.

There are three more axes to consider, but don't define the object's location in space. They are represented by the characters W, P, and R, colloquially referred to as ya**W**, **P**itch, and **R**oll.

Yaw, Pitch, and Roll determine the object's orientation about the position defined in X, Y, and Z.

**Examples:**

You have a quarter on a table.

Moving the quarter toward you increases its X axis value.

Moving the quarter to the right increases its Y axis value.

Turning the quarter on the table rotates it about the Z axis. Rotation about Z is known as Roll.

Position | Symbol | Description | Our Robot's WORLD frame |
---|---|---|---|

X Coordinate | X | Distance along X axis from the origin point | Forward/Back |

Y Coordinate | Y | Distance along Y axis from the origin point | Left/Right |

Z Coordinate | Z | Distance along Z axis from the origin point | Up/Down |

Orientation | Symbol | Description |
---|---|---|

Yaw | W | Rotation about the X axis |

Pitch | P | Rotation about the Y axis |

Roll | R | Rotation about the Z axis |

The FANUC Cartesian coordinate system also includes data that represents the configuration of various joints, since there is often more than one solution to bring the tool to a specific point and orientation. This is described as Wrist, Elbow, and Robot.

Configuration | Symbols | Description |
---|---|---|

Wrist | N/F | |

Elbow | U/D | |

Facing | T/B |

## Frames

The choice of frames in FANUC programming determine where to reference "zero" at for each axis. It can be useful to work with your robot in reference to the tool, or your work area, or the robot itself.

### World Frame

World Frame is the default for your robot. Coordinates are measurements in the Cartesian coordinate system. The zero point for X, Y, and Z is the center of the robot's J1 axis, at the height of J2.

When you are viewing the robot from the front (with the side of the robot with power cables facing away from you) the X direction is positive toward you. The Y direction is to your right, and the Z direction is up.

For the majority of the course, you will be working in the World Frame for simplicity.

### Joint Frame

Joint Frame is the application of the Joint coordinate system. The robot uses the joint coordinate system to calculate all other frames, since the positional feedback of each joint is measured in degrees. You can access it directly by utilizing the Joint Frame for jogging, and apply it in positions and position registers by changing the representation to JOINT.

Position Registers expressed in JOINT representation are "truly global" in that there is only one possible solution for a set of joint coordinates, unlike cartesian that can reach the same points in different configurations (elbow up or down, wrist up or down, facing forward or bending backwards)

### User Frame

When working with a robot, it is often desirable to align the cartesian axes with your intended work area. This may be at a different position or angle than the base of the robot (World Frame) so the option of User Frames is used.

In user frames, the coordinates you work with start at a user-defined position and the axis directions are determined by the user. Using the three-point method for teaching user frames, the zero "origin point" is taught, as well as the direction of the X and Y axes.

X, Y, and Z remain at right angles to one another but their positive directions from the newly defined origin are chosen.

Jogging in the USER Frame in Yaw, Pitch, or Roll will revolve the position of the tool center point about the User Frame Origin.

As an example, a robot may have a conveyor bringing products into its work envelope. This conveyor may be at an arbitrary position relative to the robot, at an angle, or at a unique height in reference to the world frame. Teaching a user frame allows you to jog the robot in a way that is perfectly aligned with that conveyor, as well as teach points on the conveyor that are in reference to permanent marks on the conveyor's chassis. This allows those taught points to still be useful and accurate, even if the conveyor's position, height, and orientation is changed - just by redefining where the new position and orientation are.

*User Frame 0 is permanently set to be equivalent to the robot's WORLD frame.*

__Methods__

##### Three point

In the three-point method for teaching user frames, you teach an origin point to determine the zero point for each axis, an X point to determine the exact direction of positive X, and a Y position to determine the direction of positive Y. There is a lab available detailing all the steps involved in using the three-point method, User Frame Lab

##### Four-Point

##### Direct Entry

The direct entry method requires you to know the exact world-frame coordinates of your zero point, as well as the orientation of each axis. They can be entered manually, one at a time.

### Tool Frame

The robot is a collection of axes that each have a specific range of motion and distance from one another. The processor calculates the position of the robot’s Tool Center Point (TCP) by the angle of each axis and the known distance to the next.By default, FANUC robots calculate position in the real world by the center of the plate on the end of the last actuator. When you attach a tool, you must tell the robot where the effective end of the tool is, relative to the tool center plate.

Since Tool Frames are in reference to the tool plate, a tool that is perpendicular and 100mm away from the tool plate will have a Z value (in its tool frame) of positive 100mm. If your tool is facing down and you jog in +Z, it will lower the position of the tool relative to the world frame, so always be aware of which frame you are in.

__Methods__

##### Three point

In the three-point method for teaching tool frames, you align the exact center of the tool's effective end with a reference point (any pointy object) three times, each at significantly different orientations. Using these three approach points, the controller will calculate the location you used, relative to the tool center plate.

There is a lab available detailing all the steps involved in using the three-point method, Tool Frame Lab

##### Six-Point (XZ)

##### Six-Point (XY)

##### Two-Point + Z

##### Four-Point

##### Direct Entry

The direct entry method requires you to know the exact coordinates of your tool's center point in reference to the tool plate, as well as the orientation of each axis. They can be entered manually, one at a time.

### Jog Frame