Edward Red Professor Manufacturing & Mechanical Engineering


Robots are primarily concerned with generating specific motion of the robot joints, simultaneously allowing tooling or sensors to perform certain functions, either when the arm is moving or at specific operational configurations. The arm and attached tooling may perform the operations themselves (such as painting) or carry parts to other devices which perform the operations.

Newer technologies are concerned with robot interactions with parts such that interaction forces and torques can be controlled. This technology will permit more robot applications in assembly, which promises to be a growing application arena for robotics.

There are many processes which can be used to characterize robot applications, such as:

  • Non-contact path following - Robot does not come in contact with the object, but guides a tool such as a welding tool or spray gun along a path described relative to a part.
  • Contact path following - Robot follows a path while performing some contact operation on the part such as polishing, or deburring. Often sensor input such as a force or torque value is used to deviate the path direction.
  • Repetitive configuration moves - Robot simply moves consistently between a set of configurations that have been taught using a teach pendant and performs the same operation on parts that pass through the workcell. Sometimes sensors such as a vision camera will be used to deviate the robot moves to compensate for local deviations in the part delivery, or the part geometry.
  • Telerobotics - Control that occurs with human interaction, where the physical robot arm is removed from the human operator.
  • Target moves versus taught moves - In target moves the robot tool is commanded to move to a position and orientation in space not physically taught, but known relative to the base of the robot. In a taught move the robot is commanded to move to a configuration previously  taught and stored. Target moves require a mathematical model of the robot inverse kinematics, whereas taught moves only require a controller capable of moving the robot joints to the encoder values stored for the taught configuration.

Key Terms

  • Repeatability - variability in returning to the same previously taught position/configuration
  • Accuracy - variability in moving to a target in space that has not been previously taught
  • Tool speed - linear speed capability when tool moving along a curvilinear path
  • Screw speed - rotational speed when tool is being rotated about an axis in space
  • Joint interpolated motion - motion where joint taking longest time to make the joint change governs the motion and the other joints are slowed in proportion so that all joints accomplish their joint changes simultaneously with the slowest joint
  • Joint limits - either the software or physical hardware limits which constrain the operating range of a joint on a robot. The software limits have a smaller range than the hardware limits.
  • Joint speed limits - speed limit for robot joints, which limit how fast the links of a robot may translate or rotate.
  • Point-to-point motion - characterized by starting and stopping between configurations or as the tool is moved between targets.
  • Continuous path motion - characterized by blending of motion between configurations or targets, usually with the loss of path accuracy at the target transitions, as the robot moves between configurations/targets.
  • Interpolation (kinematic) capabilities - robot usually capable of both forward and inverse kinematics. Both combine to give the robot the capability to move in joint space and in  Cartesian space. We typically refer to the moves as joint, linear, or circular interpolation.
  • Forward kinematics - specifying the joint values to accomplish a robot move to a new configuration in space. These may not be simple as it seems because secondary joints such as four-bar linkages, ball screws, etc. may be required to accomplish this motion.
  • Inverse kinematics - solving a mathematical model of the robot kinematics to determine the necessary joint values to move the tool to a desired target (frame) in space. This is accomplished by frame representation whereby a triad (xyz axes) is attached to the tool on the robot and a target frame is attached to the part or operating point in the workcell. The inverse kinematics determine the joint values that align the tool triad with the target triad.
  • I/O - input/output which consist of ON/OFF signal values, threshold values, or analog signal values which allow the control of or response to external devices/sensors as required to sequence workcell operations.
  • Programming language - The language and logical constructs used to program the set of operational instructions used to control robot movement and interact with sensors and other cell devices.
  • Multi-tasking - ability to process more than one program at a time or process I/O concurrently.
  • Load capability - force and torque capability of the robot at its tool interface
  • TCF - tool or terminal control frame
  • TCP - tool/terminal control point
  • Teach Pendant - Operator interface device used to teach/save robot configurations and program simple instructions.

Robot Definition

"A robot is a reprogrammable, multi-functional manipulator designed to move material, parts, tools, or specialized devices through variable programmed motions for the performance of a variety of tasks." (Robotics Institute of America)

Note that computer controlled industrial machine tools fall within the robot definition, but purists resist referring to CNC machine tools as robots.

Where Used & Applied?

Robots are used in almost any industry where repetitive tasks are involved, or the task is difficult manually, or dangerous, such as

  • welding, painting, or surface finishing in the aerospace or automotive industries
  • electronics and consumer products assembly and inspection
  • inspection of parts by robot assisted sensors or in the form of a Coordinate Measurement Machine (CMM)
  • underwater and space exploration
  • hazardous waste remediation in government labs, nuclear facilities, and medical labs

Robot Types

Robots usually have joints to position the tool and joints to orient the tool. Gross positioning is accomplished by the inner (primal) joints, while orientation is accomplished by the outer (distal) joints.

When classifying a robot type, the primal joints are used, it being understood that the orientation joints can be added to give the orientation flexibility required. Thus, the figures which follow show only the first three joints in the robot type classification.

Figure 1 - Revolute: RRR

Figure 2 - Spherical: RRP

Figure 3 - Cylindrical: PRP

Figure 4 - Rectangular: PPP

Vendors & Costs

There are numerous vendors of robots throughout the world, most now in Japan. Some of the primary vendors are:

Fanuc (Japan)
Kuka (Germany)
ABB (Sweden, US)
Adept (US) 
Seiko (Japan)
Motoman (Japan) 

Costs vary by the application, robot size and complexity, and the costs of the supporting technologies involved. Robots can range from $1000 to millions of dollars, but the average cost of a robot lies within the $20,000 - $80,000 range. The integrated robot cell usually costs several times that of the robot.

Vendors will typically supply specification sheets, but you must be wary in evaluating these specifications. Vendors do not necessarily apply the same test procedures to generate the spec data. Follow this link for sample specifications for a Kawasaki Js-30/40 robot.

Supporting Technologies

The types of technologies that are often integrated with a robot are:

  • vision systems
  • end-of-arm tooling and special compliance/manipulation devices
  • welding technologies
  • optical devices such as lasers
  • sensors such as acoustical or other type proximity sensors.
  • wrist sensors capable of measuring wrist forces and torques.
  • control software and hardware, such as AC/DC motors, encoders, tachometers, amplifiers
  • part delivery systems such as conveyors, part feeders
  • application software, interface software
  • realtime operating systems,, programming languages
  • communication protocol/networks
  • I/O devices such as PLC's (Programmable Logic Controller), either discrete or analog


     Greater flexibility, reprogrammability, adjustable kinematic dexterity
     Greater response time to inputs than humans
     Improved product quality
     Maximize capital intensive equipment in multiple work shifts
     Accident reduction
     Reduction of hazardous exposure for human workers
     Automation less susceptible to work stoppages


  • Replacement of human labor
  • More unemployment
  • Significant retraining costs for both unemployed and users of new technology
  • Advertised technology does not always disclose some of the hidden disadvantages
  • Hidden costs because of the associated technology that must be purchased and integrated into a functioning cell. Typically, a functioning cell will cost 3 - 10 times the cost of the robot.


  • Assembly dexterity does not match that of human beings, particularly where eye-hand coordination required.
  • Payload to robot weight ratio is poor, often less than 5%.
  • Robot structural configurations often constrain joint limits and thus the the work volume.
  • Work volumes can be constrained even further when parts of substantial size are picked up or when tooling/sensors added to the robot.
  • The robot repeatability and/or accuracy can constrain the range of potential applications.
  • The closed architectures of most modern robot control systems make it difficult to configure the robot in automated cells where a variety of devices have to be integrated.

Robot Kinematics

The manipulator of a robot, in general, is an open kinematic chain. Since it is not a mechanism requiring only 1 input for control of output (position, velocity, etc.) like a 4-bar linkage, the joints must be controlled individually.

       Figure 5 - Set of serial links connected by joints     

The number of degrees-of-freedom (DOF) of a kinematic chain is governed by the type and number of joints. Manipulators generally have joints which permit 1 DOF and thus, the DOF of the robot equals the number of displacing links which equals the number of joints. A unique manipulator configuration is specified by a set of unique joint values.

Even though many robots have joints which are configured serially, many robots have other joints which actually actuate the primary joints. For example many robots use 4-bar linkages to actuate the primary joints. Somtimes these joints are referred to as the actuation joints.

Homogeneous Transformation

The general homogeneous transformation is used to describe mathematically the position and orientation (pose) of a frame (xyz triad) in space relative to another frame (sometimes called base axes). It is represented by 4x4 matrix H where R is a 3x3 orientation submatrix and p is the fourth column vector.

H =                                                                                                          (1)

The columns of H represent the four vectors describing a second frame; the first three, when normalized, are the direction cosines of the referenced (or secondary) frame relative to the base frame. The last vector locates the secondary origin.

In the more general case of both rotation and displacement the first 3 columns represent the secondary frame axes orientation with respect to the base axes as determined by their direction cosines and the fourth column locates the secondary origin relative to the base origin.

If there is no rotation then R = I = the identity 3x3 matrix. The fourth column p (px,py,pz) represents the origin (displacement) of a second frame relative to a reference frame. If there is rotation only, then p = 0.

Example 1:

Suppose that

   H = H (y,90)H(z,90) =

Draw a figure which depicts the orientation of the frame after the two rotations described above.


          Figure 6 - Multiple rotations    

The columns of H represent (orient and locate) a secondary reference frame x"y"z" relative to the original xyz frame.

Rotation Transformations

For the special case of rotation by angle theta about the x axis, R assumes the form

   R(x,q )  =                                                                                               (2)

           Figure 7 - Rotation of a vector         

We designate the rotated frame by the x'y'z' axes and the original frame by the xyz axes. The effect of rotating u to v is to change its coordinates with respect to the xyz axes but not with respect to the x'y'z' axes.
              Figure 8 - Rotation about the x axis       

The coordinates of v in xyz are                  
since the coordinates of v in x'y'z' are same as u in xyz. Thus, v = R(x,
q) u.

Similarly, rotation about the y or z axis gives



Multiple Rotations

The usual procedures for locating points in translated and rotated reference frames relative to base axes is to rotate the axes first, then translate the origin or, alternatively, translate the frame first and then rotate about the translated frame, rather than the reference frame. H(R,p) will be used to denote this order.

Real rigid body rotations often involve multiple rotations. The next example shows the effect of two rotations performed in order about the base frame.

Example 2:

Rotate u by -90o about +z and -90 about +y. What are the final coordinates in xyz axes? If the rotation order is changed, will the final coordinates be the same? Let u = [0 1 0].


   v = R (z,-90) u

   w = R (y,-90) v


   w = R (y,-90) R (z,-90) u which can be shown by the operation:

   w =   =

If we changed the order of the rotations, we would discover that rotations are not commutative!

Relative Transformations

Statement without proof:

If we postmultiply a transformation representing a frame by a second transformation, we make the transformation with respect to the frame axes of the first transformation. Premultiplying the frame transformation by the second transformation causes the transformation to be made with respect to the base reference frame.

Example 3 (Paul):

Given frame C,

   C =

and transformation H,

   H =

locate frame X = H C and frame Y = C H


First, calculate X:


This can be illustrated by Figure 9 where we note the final orientation of the x", y", and z" axes with respect to the x, y, and z axes, respectively.

                    Figure 9 - X = HC       

Next, we reverse the order to calculate Y = CH :


which can be illustrated by the following figure:

                   Figure 10 - Y =CH

Note that postmultiplying causes H to be made relative to frame C rather than relative to XYZ base axes.

Forward Kinematics

Using homogeneous transformations to relate the joints for the serial links of a robot the pose of a tool at the end of the robot can be determined by the equation

T = H1 H2 H3...Hn G                                                                                                 (5)

where T locates the tool relative to the robot base frame and G locates the tool relative to the last joint/link frame.

The joint frames are described relative to each other by H and are a function of the joint angle if a rotational (revolute: R) joint or the joint translation if a sliding (prismatic: P) joint. Note that the joint frames relative to the previous joint frame as described by H are usually oriented such that the rotation or translation takes place about the joint z axis.

In forward kinematics the amount of translation or rotation is specified directly and the tool is commanded to the pose described mathematically by T since each H is known. Forward kinematics is used in teach pendant programming to describe the pose of the tool once one or more joint values are changed by jogging the robot through the teach pendant interface.

Inverse Kinematics

Inverse kinematics is used for controlling path following or in sensor directed motion where a target can be determined. Thus, inverse kinematics (IK for short) raises the opposite question from forward kinematics: Given that I know the desired pose of the tool, what are the joint values required to move the tool to the pose?

Mathematically, we rearrange equation (4) so that we isolate the homogeneous transformations which are a function of the unknown joint values and somehow solve for the joint values by the following equation:

    (joint values unknown)        
H1 H2 H3...Hn = G -1T                                                       (6)

where T is known.

Question: Why is G transferred to the right hand side of the equation as a known matrix?

If n is 6, then the robot has 6 degrees-of-freedom. The larger robots usually have 6 joints to give them full orientation dexterity, but the inverse kinematics for these robots is usually more difficult. Regardless of whether the robot has 6 joints or less, the IK solution procedure begins by the user examining the complex transcendental equations that arise by comparing each term generated by the  resultant product matrix on the left hand side of (6) with the known terms on the right hand side (once the n H matrices have ben multiplied to arrive at a single matrix). Since there are 3 x 4 = 12 such equations and typically 6 (or less) unknown joint values, it is obvious that the 12 equations are not all independent. The problem is solving these complex set of equations for the unknown joint values.

Depending on the physical robot joint arrangement, some matrix manipulations make the inverse kinematics solution easier. For example, some robots can be solved for their IK by rearranging the form of (6) to

H2 H3...Hn = H1-1 G-1 T                                                      (7)

This or similar manipulations sometimes allows the user to isolate joint values in an equation. For example, the form in (7) will allow the user to solve for joint 1 in some robots. Once joint 1 is determined it becomes easier to solve for the other joint values. The reader should note that a close examination of the robot geometry and joint arrangement will also allow insight into the solution approach.

Alas, there are many robots that have configurations for which an exact IK solution simply cannot be found. These robots can only be commanded in a forward kinematics mode.

Singularity and Redundancy

Singularity problems surface when trying to control robots in Cartesian space. A robot singularity occurs when robot axes are redundant (more axes than necessary to cause the same motion) or when the robot is in certain configurations that require extremely high joint rates to move at some nominal speed in Cartesian space.

Most industrial robots have 6 or less joints, thus, redundancy is not inherent to their design. Some robots, though, do have a certain joint arrangement in their final orientation joints that can lead to redundancy for certain orientations. For example, some robots have the final three joint axes (joints 4, 5, and 6 in a six axis robot) arranged in a roll, pitch, roll sequence. If the pitch joint has a zero value, then the two roll joints align with other. When the target frame require a roll value, the two roll joints have infinite flexibility to accomplish this desired value. For example, if the target requires a roll value of 20 deg, then the following combinations of joints 4 and 6 would satisfy the roll value, along with an infinite additional combinations: (30 deg,-10 deg), (50 deg,-30 deg), (-10 deg,10 deg), etc.

Mathematically, a jacobian mathematical matrix formulation can be used to relate the motion in joint space to the motion in Cartesian space. The singularity occurs when the inverse jacobian becomes singular (determinant = 0).

Joint Interpolated Motion

Joint interpolated motion is the dominant type of joint motion when moving the robot in forward kinematics. Typically, the robot is commanded to move from the current configuration to a new set of joint values. Obviously, there are numerous ways the robot controllere could choose to make the change. For example, the robot controller could choose to move joint one to its new value, then joint 2, etc., until all the joints have been moved to their new values, but this would take more time than necessary. For this reason, joint interpolated motion is the algorithm of choice.

The joint interpolated algorithm

  1. examines each joint for the changes in joint angles,
  2. estimates the time to accomplish each joint change at the current speed setting, given the speed allowables for each joint,
  3. determines the joint which will take the longest time to accomplish the joint change,
  4. then slows the remaining joints down so that all accomplish their change in the same period.

The joint interpolated setting is usually a number between 0 and 1 which represents the fractional % of full speed for each joint.

Example 4:

A simple mechanism has two joints described as follows:

   1.  Joint 1:
          Type = Prismatic (sliding)
          Joint speed maximum = 100 mm/s

   2.  Joint 2:
          Type = Revolute (rotational)
          Joint speed maximum = 180 deg/s

If the robot joint speed setting is set to 50%, then approximate the time to move from a configuration of 20 mm, 125.3 deg to a configuration of 134.5 mm, 34.5 deg, and also determine the joint speeds in doing so. Which joint is controlling the motion and which is following the motion? Neglect the acceleration and deceleration times.


Joint 1 experiences a change of 114.5 mm in the move while joint 2 experiences a change of -90.8 deg. At the 50% speed setting, joint 1 would take (114.5 mm)/[(0.5)(100 mm/s)] = 2.29 sec to complete the move.

Joint 2 would take |-90.8 deg/sec|/[(0.5)(180 deg/sec)] = 1.008 sec to complete the move.

Since joint 1 takes the longest time, it controls the motion. Thus, it will take 2.29 sec to complete the move for both joints, causing joint 2 to follow the motion by slowing its rate to 90.8 deg/2.29 sec = 39.65 deg/sec.

Reader Problem:

A simple x-y-theta robot (2 prismatic joints, 1 revolute joint) has a tool frame attached that can be described by the frame C relative to the robot base frame. The robot joint speed is set at 0.6. Determine the joint speed for each joint and an approximate time to move the tool frame C to the frame H if the joint speed allowables for the three joints are x: 300 mm/s, y: 300 mm/s, and theta (rotate about an axis normal to x-y plane): 150 deg/s. Both C and H are described relative to the base frame of the robot.

C =



Robot Programming

Most robots are still programmed by manually leading the robots though the desired path or to critical key points using a device called a teach pendant - see the following figure.

     Figure 11 - A Teach Pendant (Courtesy of Eshed Robotec)

Increasing use of off-line programming systems are the result of the rise of open- architecture systems like ROBLINE/CODE which make it much easier to integrate different devices in a cell. The CODE system is unique in that it incorporates a realtime manufacturing database of node objects that make the programming of simulated or actual robot cells much more intuitive. See the figure which follows.

 Figure 9 - CODE Hierarchical Realtime Node Tree

These nodes can be assigned various manufacturing and control attributes, which are then used in the control functions. It is not necessary to program tasks in terms of numbers; rather, the control tasks are programmed using object-oriented syntax (see the example program in the next section).

Also note from Figure 9 that the node tree is dynamic. This means that branches of the tree can be cut and pasted, allowing for the most complex assembly where parts are picked up by a robot and then moved or attached to different parts of the workcell.

Robot Programming Languages

There are numerous programming languages and interfaces to robots. These languages are typically a modification of a known programming language like Basic, Pascal, or C. These programming languages use a device interface to issue control commands to the servocard/amplifiers which drive the physical mechanism motors. In addition, the programming interface allows the user to read and send device I/O.

There are numerous programming languages. A few examples are:

     DARL/SPEL - Basic like language developed by SEIKO which uses statements like the
             following to control robot motion and I/O:

             100     MOVE T5  T7
             110     DELAY 20: SPEED 200
             120     MOVE T10  T4
             130     OUTPUT + OG3  500

     KAREL - Developed by Fanuc and is a Pascal derivative.
     VAL II - Developed originally by Unimation.
     CODE (also known as Robline) C and API libraries - developed by BYU and CIMETRIX
             and requires the user to write C programs that call library functions, such as the
             program excerpt which follows:


        #define OPEN_HAND       45.0
        #define CLOSE_HAND      50.0

        void main( void )
           /* Local variables */
           server peg;
           mechanism s100, gripper;
           char *server_name;
           node_id s100_id, gripper_id;
           node_id peg_1_loc, grip_tcf, pallet2, peg_1, pallet;
           double offset = 150.0;

           if( GetDefaultServer(&server_name)==ERROR )
              printf("No default server found\n");

        /* open server */
           peg = open_server( server_name, SYSTEM_V, 0 );

        /* get all node ID to be used */
           get_named_node_id(peg, "s100",      &s100_id);
           get_named_node_id(peg, "gripper",   &gripper_id);
           get_named_node_id(peg, "peg_1_loc", &peg_1_loc);
           get_named_node_id(peg, "grip_tcf2", &grip_tcf);
           get_named_node_id(peg, "pallet2",   &pallet2);
           get_named_node_id(peg, "peg_1",     &peg_1);
           get_named_node_id(peg, "pallet",    &pallet);

        /* open mechanism */
           s100 = open_mechanism( peg, s100_id, CONTROL);
           set_motion_track(s100, ON);
           gripper = open_mechanism( peg, gripper_id, CONTROL);

           set_interp_type( s100, JOINT_INTERP );
           set_joint_speed( s100, 0.25 );
           set_joint_speed( gripper, 0.25 );
           move_single_axis( gripper, 0, OPEN_HAND );

              move_near_node( s100, peg_1_loc, grip_tcf, offset );
              move_to_node( s100, peg_1_loc, grip_tcf );
              move_single_axis( gripper, 0, CLOSE_HAND );
              attach_node( peg, peg_1, grip_tcf );
              move_away( s100, grip_tcf, offset );

              move_rel_node( s100, pallet2, grip_tcf, "xyz", 0., 0. ,0. ,
                 125., 87.5 ,175. );
              move_rel_node( s100, pallet2, grip_tcf, "xyz", 0., 0. ,0. ,
                 125., 87.5 ,75.0 );
              move_single_axis( gripper, 0, OPEN_HAND );
              change_color( peg, peg_1, 1., 0., 0. );
              attach_node( peg, peg_1, pallet2 );
              move_away( s100, grip_tcf, offset );

The biggest problem with proprietary programming languages is that the programs will not port to a different mechanism made by another manufacturer. This spells trouble if you have to replace the mechanism in a cell with a different mechanism because you now have to port the control programs to the new programming language.

Robot Standards

There are few standards established for robotics. The primary standards can be obtained from the Robotics Industry Association (RIA). These deal with repeatibility and accuracy definitions, with limitations and safety regulations applied to teach pendants, with interface information that describes the robot motion capabilities, and with some of the wiring codes used for motion controllers.


Robotics is the integration of computers and controlled mechanisms to make devices reprogrammable and versatile. Modern mathematic representations are used in the control algorithms to plan robotic tasks and integrate sensors into the task planning.

There are decided advantages to using robots, namely flexibility and performance quality. The down side is that it does interrupt the labor pool and requires an upgrading of the educational requirements for manufacturing personnel.

Robotics are used in most industries and will be used even more in the decade to come. In 1994 the Japanese purchased more robots than the entire installed U.S. base. Nevertheless, the use of robots in the U.S. is growing rapidly.


John J. Craig, Introduction to Robotics, Mechanics and Control, Addison Wesley, 1989.

Richard P. Paul, Robot Manipulators: Mathematics, Programming, and Control, MIT Press, 1981.

Charles J. Spiteri, Robotics Technology, Saunders College Publishing, 1990.