Configurations, Positions, Orientations

Common Configurations

Most robots have three long links attached to the base, which are used to move the end effector around in space.  The last links and joints are used for controlling the orientation of the end effector.  You can break these two sections of the robot into the arm, and the wrist – very much like the arm and wrist that we have.  Our arms allow our wrist to move around, and it is our wrist that can rotate and move in many ways – allowing us to grip objects in a wide variety of orientations, and manoeuvre it in tight spaces.

The end effector, or wrist, usually consists of three joints, which allows the end-effector to rotate in any orientation.  And these three joints are positioned in such a way that they all rotate around a common point – a very special design consideration.  This allows the translation and orientation of the end effector to be decoupled (meaning independent from one another) – which is called a spherical wrist.  What this means is the first three links, the arm, move the end effector into place, while the last three joints, the wrist, control only the orientation of the end effector.  If the wrist joints didn’t intersect at a common point, then the joints at the wrist would cause translation of the end effector as well as orientation – known as a non-spherical wrist.  Among other aspects, the math involved is much easier if the end effector is decoupled. And so the common practice in designing industrial manipulators is to design a spherical wrist.  Note that to have a spherical wrist does not necessitate a spherical joint.  It is easier to create a wrist that is equivalent to a spherical joint using three revolute joints – it allows for the same movement, but using much simpler joints.

Solving the kinematics of a robot manipulator is a key component to creating a robot that works.  Kinematics is a classical branch of science that deals with the motion of things – things being points, or bodies, which sounds boring but they are just generic terms.  We’ll use the term ‘system’ to be even more generic.  The analysis of a car’s suspension geometry would be a kinematic analysis.  Similarly, the analysis of a robot’s links and joints and end effector – the robotic system – is a kinematic analysis.  It deals with velocity and speed, position, orientation and acceleration.  With kinematics we can describe these systems move.  It is known as the geometry of motion.  The analysis goes something like this: we know certain initial conditions about the system – some values such as position, velocity, and acceleration.  Since we know the geometry of the system (we should since some engineer, or maybe you, designed it) we can used geometrical arguments to determine movement (position, velocity, acceleration) of any part of the system.  For instance, if I have an understanding of the geometry of the human arm, and it’s joints and range of motion, I could determine the velocity of the hand when the shoulder joint is rotated.  The robot only does its job if it can go where we tell it, and in order for the robot to know where to go, we need to tell it – answers that we come up with from kinematics.

What kinematics doesn’t consider is things like mass and stiffness.  It doesn’t consider the forces required to move the links.  Basically, it ignores all the physics of motion, and just deals with the geometry of the system and the position, velocity and acceleration.  Of course, we will need to take these effects into account eventually – and that is a job for dynamics.

It’s important to be able to describe the position and orientation of the end effector and the joints of the robot.  This is accomplished with some linear algebra – a lot of matrices.  We can describe where a point in space (we’ll call this point P)  is using a vector – or a set of three scalars.  First, we would need to establish a coordinate system.  From the origin (or any other point) we can describe the steps necessary to reach our point P.  A simple example.  Let’s say that you’re trying to find a specific office in a tall building and you’re in the lobby.  There’s no map and so you ask for directions, and you have your coordinate system – either directions (north/south, east/west, and up) or simpler directions even (straight, then right).  Regardless of what system you use, you still need some coordinate system to understand the directions you receive.  Someone could give you directions to that specific office by telling you that the office is 50 feet north, 30 feet west, and 200 feet up.  Not the best directions, but they do tell you exactly where the office in relation to the lobby.  It’s the same idea with describing a point – you need the [X, Y, Z] directions and some coordinate system.

Sometimes, you’ll need multiple coordinate systems.  You’ll have a base coordinate system, but sometimes another coordinate system is necessary at some other point.  Let’s say that you have a box, and at the corner of the box is a coordinate system we’ll call this coordinate system {Box 1}.  The coordinate system is conveniently oriented, so that it’s axis are aligned with the direction of the box’s edges.  In other words, the X direction points along the length of the box, the Y direction points along the box’s width, and the Y direction points along the height of the box.  This system is perfect for describing the box, or any point within the box.  It’s intuitive, it’s simple.  If you now throw an identical copy of this box (and the attached coordinate system, {Box 2}) into, say, a pile of sand, it will land at some awkward angle.  The coordinate system is still the same, since it is attached to the box.  But now the two coordinate systems are pointing in very different directions.  We want to keep the two separate coordinate systems because it’s so convenient for describing the box.  But we also need to able to know how to get from one coordinate system to another.  We can actually describe the rotation between the two coordinate systems using matrices again – specifically, rotation matrices.  There are three ways that you can rotate a coordinate system: about each of the axes.  Say you have a coordinate system {A} and another one at some other orientation {B}.  To get from {A} to {B}, you have a couple of options:  You can rotate {A} about its X, Y, and Z axes in succession.  These are fixed angles.  It’s called this because when you rotate about X, the coordinate system will have changed.  But when you rotate Y, you rotate about the original Y axis.  In other words, all rotations are done about the original coordinate system – in this way it is ‘fixed’. Another way to rotate is about the new axes that you create as you begin rotating your original coordinate system.  You can reach {B} by rotating using Z-Y-Z Euler angles.  You’ll notice that you only need two axes.  First rotate about Z, then the new Y, and finally the new Z again.  I apologize deeply for the dryness of this material.  I keep coming back to the thought that we take all of this for granted when we use our arm and hand to pick up a coffee cup.  Doing this with a robot makes use think about thinks like kinematics and coordinate systems, because we need to be able to describe where everything is at all times – we don’t have the luxury of a brain doing all the calculations behind the scenes.

Since we need the ability to go from one coordinate system to another, we need to know how to transform our base coordinate system into whatever coordinate system we are trying to reach.  There are ways to do this with matrices.  We can use a translational operator to translate (no rotation) one coordinate system to another.  This involves multiplying the scalar value of our original coordinates by a [3×3] matrix – the result will be the new position.  Similarly, a rotational operator is also a matrix, which can be used to rotate a coordinate system about a fixed point.  But often we will need to both translate and rotate a coordinate system, and this can be achieved using a transformation operator, which allows us to take a coordinate frame {A} at some point A and transform this frame (both translate and rotate) to some new point B and frame {B}.  Let’s go back to our box example with a coordinate frame attached.  If we throw a second box in the sand so that it is rotated and translated, we can use the transformation operator to transform box A so that it exactly matches box B.  Of course, we need to know the position and orientation of box B.  The transformation operator simply tells us how to get there – the instructions moving and rotating box A so that it is aligned with box B.

You may still be confused as to why we need all of this, which almost seems purposefully confusing.  That’s because it’s such a foreign concept.  You probably haven’t given much thought to rotation and translation before now.  Since we need to control each link of the robot, we need to know the position and orientation of each link – if we know it’s current position, we can tell it where to go next.  So we can attach reference frames to each link at a specific point which is known.  And so we can transform from the origin coordinate system, to the next coordinate system on the first link, and then transform from this system to the next system on the next link, and so on, all the way to the end-effector.

just the basics