If you intend to use a six-axis robot arm, such as Mecademic’s Meca500 used in this tutorial as an example, you are most probably interested in positioning and orienting the robot’s tool (end-effector) in various locations (poses). Therefore, you’ll certainly want to know the set of locations that you can reach with a specific end-effector mounted on a specific six-axis robot arm. You’ll probably ask for some kind of diagram showing the “working area,” “working volume,” “working envelope,” or “working range” of the robot. And, unfortunately, you’ll often be presented with a simplistic diagram like the one shown below, or worse yet, with the so-called reach of the robot.
In robotics, the proper term for what you are looking for is robot workspace. The reach is nothing but the maximum distance between the robot’s wrist center (the intersection point of the axes of the last three joints of the robot) and the axis of joint 1. The gray area in the figure above is the area attainable by the wrist center, for a given rotation of joint 1. This area, or even the volume swept by rotating this area about the axis of joint 1, is NOT the workspace of the robot. There is absolutely no guarantee that you can reach a position in this volume with the tooltip of a particular end-effector, let alone reach that position with any orientation. In fact, if you mount a relatively long end-effector, you won’t be able to reach any position from this volume with the tip of your tool.
The workspace of a six-axis robot is the set of all poses (positions and orientations) attainable by a particular end-effector mounted on that robot. Thus, (1) no one can tell you what is the workspace of a specific six-axis robot arm unless you specify what is the end-effector that you intend to use, and (2) that workspace is a six-dimensional entity that is generally impossible to represent graphically.
« The workspace of a six-axis robot is the set of all poses attainable by a particular end-effector mounted on that robot. »
Of course, there are a few exceptions in the field of robotics, when it comes to graphical representation. The workspace of a six-axis Cartesian robot such as the one shown below is trivial to describe but only for one specific choice of tooltip. Indeed, if the tooltip of the robot’s end-effector coincides with the intersection point of the axes of the three revolute joints, then this six-axis robot can position its tooltip anywhere inside the yellow cuboid, with absolutely any tool orientation.
Alas, the vast majority of six-axis industrial robots are not Cartesian, for various practical reasons. For example, the Cartesian robot above has a very small workspace in terms of positioning. The typical six-axis robot arm, often bizarrely referred to as a vertically articulated robot, consists of seven links (bodies), connected in series through six actuated revolute joints. The first of these bodies is the robot’s base, and the last is the robot’s flange (also called mechanical interface). Also, the axis of the first joint is vertical, the axes of joints 2 and 3 are horizontal, the axis of joint 4 is normal to the axis of joint 3, and the axes of the last three joints typically intersect at one point.
While industrial robot arms are generally sold without any tooling, an end-effector (such as a gripper or a touch probe) is eventually attached to the robot’s flange. The user must then associate a tool reference frame, fixed to this end-effector. This tool reference frame is defined with respect to the flange reference frame. The origin of the tool reference frame is called the TCP (tool center point). Ultimately, you must therefore be interested in the set of poses with respect to the robot’s base reference frame, where the robot can bring a specific tool reference frame. Thus, the robot workspace is the set of poses attainable by the robot’s tool reference frame.
In a typical six-axis robot arm, such as our Meca500, whatever the end-effector, for each feasible position of the TCP, the range of attainable tool orientations is completely different, due to mechanical interferences, joint limits, and link length limitations. On top of this high coupling between the positioning and the orienting capabilities of typical six-axis robot arms, these robots have so-called singularities. In a singularity, the robot cannot move in certain directions. This is a physical blockage, not some kind of mathematical problem, and absolutely all six-axis robot arms (including the Cartesian one shown above) have singularities. For example, when all joints in the Meca500 are at zero degrees, as in the left figure below, the robot’s end-effector cannot move along a line parallel to the base y-axis (the green one). To move along this line, joints 4 and 6 would have to rotate ±90° first (in opposite directions).
Singularities are a very important phenomenon (or rather nuisance) in robotics and are treated in a separate tutorial. Here, it suffices to say that even if a path is inside the workspace of a robot, as in the example above, the robot’s tool reference frame might not be able to follow it continuously (i.e., without pauses in the motion of the TCP), because of singularities.
Thus, robot singularities further limit the usable parts of a robot’s workspace. In fact, the workspace of a typical six-axis robotic arm is the combination of several singularity-free workspace subsets, separated by singularities. The robot can move anywhere within the total workspace, in joint mode, but only in one of the singularity-free workspace subsets when in Cartesian mode (i.e., when its TCP continuously follows a specific path). Each singularity-free workspace subset is limited by the link dimensions of the robot and by the allowable ranges of its joints.
« The workspace of a typical six-axis robot arm is the combination of several singularity-free workspace subsets, separated by singularities. »
Each of the singularity-free workspace subsets corresponds to a specific robot configuration. Note that if a given pose seems to be inaccessible with the current robot configuration, it may be accessible with another configuration. For example, the tool reference frame pose in the figure below can only be attained in one of the eight robot configurations. Yet, a common mistake is to consider only one of the singularity-free workspace subsets instead of the total workspace (i.e., working in only one of the eight configuration modes). Note that if you specify a pose using x, y, z coordinates and Euler angles and then use the command MovePose, the robot will automatically find the best configuration. Unfortunately, however, users typically teach robot positions by jogging, rather than by specifying a pose.
Often, a user has already a set of end-effector poses to attain for their given application. For example, a workpiece must be taken from a conveyor, then presented in front of a camera in various orientations, and finally deposited on another conveyor. Finding the optimal placement for the camera, the optimal installation of the gripper and the optimal design for the fingers is far from trivial. Unfortunately, as of now, there is no commercially available automatic procedure for finding the optimal cell design — the only method is by trial and error.
Fortunately, you don’t need to have the real setup for this; you can use simulation software like RoboDK. That said, you still need some robotics skills, or else you might spend a lot of effort on trial and error. Thus, in what follows, we’ll give you ten guidelines to make the best use of your robot’s workspace. Although we use our Meca500 as an example, these guidelines apply to any typical six-axis robotic arm.
Guideline 1: Place your TCP as close to the robot’s flange as possible
In inspection, it is quite common to have to present a part in front of a camera with a large range of orientations. In such an application, the first rule of thumb is to place the tool reference frame as close as possible to the flange reference frame. In other words, you must design a gripping system that allows you to grip the part to be inspected as close as possible to the robot’s flange.
Note that we supply our optional electric gripper with an adaptor plate that allows you to attach the gripper as shown above. However, for some applications, it might be better to design your own adaptor plate to either attach the gripper in such a way that the fingers and the axis of joint 6 are in one plane, or to attach the gripper along the axis of joint 6 (as in this video). Another alternative might be to use L-shaped fingers.
Guideline 2: Don’t move in Cartesian mode unless following a path
In inspection, you often need to rotate a part in different orientations. Of course, in these cases, it is much easier to use the command MoveLinRelTRF or to jog the robot in Cartesian mode. However, both approaches fail if a singularity is present during the rotation, as in the example illustrated in the figure below. In that example, you cannot rotate the end-effector about its y-axis (the green one) at 90°, because of a singularity (the axes of joints 4 and 6 become aligned).
Thus, you must learn how to use Euler angles and use the MovePose command instead. Alternatively, you can use RoboDK. Since RoboDK is a simulator, it allows you to pass through singularities in Cartesian jogging mode. Regardless of singularities, always use the MovePose or MoveJoints commands unless you want your TCP to follow a specific path. The use of these commands generally leads to the fastest cycle times.
Guideline 3: If cabling restrains joint 6 too much, align the axes of joints 1, 4 and 6
Although joint 6 is mechanically unlimited if you use an end-effector that has cabling attached, like our gripper, the range of joint 6 will be limited to about ±180° or even less. If you need more range, you can align the axes of joints 4 and 6, or even of joints 1, 4 and 6. Of course, such a configuration will be singular, so you will need to use the MoveJoints command to rotate about these coincident axes
Guideline 4: If you use an end-effector with cabling, keep joint 6 as close as possible to zero degrees
Whenever possible, at a desired pose, try to keep joint 6 as close as possible to zero degrees. If, for example, you grab a workpiece in a robot position where joint 6 is at 170°, and then execute a MovePose command, joint 6 will most probably rotate a lot. For example, if at the new desired pose, joint 6 could be at 190°, the robot will automatically rotate its last joint 340° in the negative direction (rather than 20° in the positive direction).
Guideline 5: If you need to orient a lot, position your TCP on the axis of joint 1
If you need to cover a wide range of orientations, then you must position your TCP on the axis of joint 1, as in the figure below. Such a configuration will allow you to rotate ±175° about the axis of joint 1 and ±180° about the axis of joint 6. The farther the center of the robot wrist from joint 1, the less the orientational capabilities of the robot.
Guideline 6: Try all robot configurations
Sometimes, the robot will be too close to a singularity in one or more of the end-effector poses that are to be attained. In an inspection application, that might not be a problem, but if you need to pick or place an object, then you most probably need to arrive at and depart from the final pose in linear mode. In such a case, test all possible robot configurations and choose the one that is farthest from singularities. For example, in the figure below, the left configuration is too close to a singularity (axes 4 and 6 are almost aligned), but the right one is sufficiently far from a singularity.
Guideline 7: Consider more than just attainability
As we already mentioned, the workspace of a six-axis robot arm is a set of several workspace subsets separated by singularities. On top of that, not all attainable poses are equally “good.” Indeed, the workspace of a six-axis robot arm is highly heterogeneous, in terms of performance criteria such as speed and precision. We already mentioned that you need to be as far as possible from singularities when moving in Cartesian mode. In addition, the more stretched the robot arm, the less its precision (the more flexible it is) and the more time it takes to suppress vibrations at the tooltip.
Guideline 8: Take advantage of the robot’s redundancy if you don’t need six degrees of freedom
In many cases, you only need five degrees of freedom. For example, if your end-effector is a gluing dispenser or a spindle, you probably don’t care about orienting it about the axis of the needle or of the shaft, respectively. In addition, if you inspect a workpiece using an axisymmetric sensor such as a camera, in many cases you might be able to present the workpiece in any rotation about the axis of the sensor. In these cases, do not align the axis of joint 6 with the axis of symmetry of your tool or sensor and chose the best of the infinitely many robot positions for each pose that is to be attained. Best means far from singularities, but also closest to the preceding and succeeding poses to be attained.
Guideline 9: Fix your robot on an available support
As many industrial robots, the Meca500 can be attached in any orientation (e.g., upside-down, or on a wall). Start by exploring available support surfaces before designing dedicated support that will inevitably eat up valuable space.
Guideline 10: Measure seven times, cut once
The English saying goes “Measure twice, cut once,” but when it comes to robot cell design, opt for the Russian version “Measure seven times, cut once.” If your cell is relatively complex, or the workspace of your robot seems to be restrained, you must use a robot simulation package and go through many design iterations until you find a satisfactory solution. However, do not rely entirely on simulation. A generic simulation package like RoboDK does not simulate the exact behaviour of a robot. For example, a specific linear motion might be doable in RoboDK, but impossible on a real robot, because of singularities. Therefore, you must also try your program on the real robot.
Guideline 11 (bonus): Mount your robot on a linear guide
If the reach of a specific robot is too short for your application, don’t immediately start looking for a bigger robot. Of course, if you need to be able to reach relatively far from the robot’s base in various directions or if you need to follow relatively long paths, you probably need a bigger robot. However, if you simply need to service several areas that could be aligned in the design process, then the most compact and affordable solution is to simply mount your robot on a linear guide, as in the figure below and in this video.
In conclusion, unless your application involves only a few repetitive movements, you must fully understand the workspace of your robot and spend considerable time designing your robot cell. Robot cell design is not only about being able to perform all robot movements; it’s also about optimizing cycle time and other performance criteria (precision, energy consumption).
© Mecademic Robotics. Reproducing this tutorial, in whole or in part, is strictly prohibited.