Arms and Manipulators

Robotics Fundamentals

Course 1 · Chapter 9 · Arms and Manipulators

Every robot so far has moved itself through the world: wheels on a floor, with a position and a heading to keep track of (Robotics Fundamentals 4) and behaviours to choose between (Robotics Fundamentals 8). This chapter is about a robot that stays put and moves things. A manipulator is a chain of rigid links joined by motorised joints, with a hand, or end effector, on the end. The central questions are the two that decide every arm: where is the hand, given the joint angles? (forward kinematics) and what joint angles put the hand there? (inverse kinematics). We work both out by hand for a two-link arm, extend them to a third link that sets the hand's orientation, and name the convention (Denavit-Hartenberg) that keeps the bookkeeping straight for bigger arms. Then we look at where the arm can and cannot reach, and at the singular poses where it loses a direction of motion; at the Jacobian, which links joint speeds to hand speed and hand force to joint torque; at the torque a joint needs to hold a payload (the part that decides which servo or motor you can buy); at moving smoothly from one pose to another; at why a real arm is never quite as accurate as its geometry says; at grippers and the force needed to hold what they grip; and at keeping people safe around all of it.

The link lengths, masses, torques, speeds, accuracies and friction coefficients in this chapter are illustrative or typical, approximate values chosen so that the arithmetic is easy to follow, not data for a particular arm, servo or gripper. The formulas (planar forward and inverse kinematics, the Jacobian, τ = JT F, the torque of a weight at a distance, the trapezoidal profile, the friction grip condition, the cantilever deflection) are standard. Every number in the worked examples was recomputed, and the pseudocode was actually run, including a round trip (inverse kinematics, then forward kinematics) that returns to the starting point. The code is deliberately short, hardware-neutral Python-style pseudocode, used only for forward kinematics, inverse kinematics and the trapezoidal profile; real board code is the job of Programming for Robotics.

1. Joints, links and arm types

A link is a rigid piece; a joint connects two links and allows one kind of motion between them. Robotics Fundamentals 2 section 2 listed the joint types. Two do almost all the work in arms. A revolute joint (hinge) rotates about one axis and is described by an angle θ, driven by a servo, a geared motor or a stepper. A prismatic joint (slider) moves along one axis and is described by a length d, driven by a lead screw, a belt or a linear actuator. Each such joint has one degree of freedom, so, as Robotics Fundamentals 1 section 4 showed, the number of joints of a serial chain is its number of degrees of freedom (DOF): one motor per DOF.

The link lengths are the fixed numbers of the design: L1 from shoulder to elbow, L2 from elbow to wrist, and so on, measured between joint axes. The joint variables (θ1, θ2, …) are what the motors change. Everything in kinematics is a relation between the two.

How many DOF does an arm need? The hand is a rigid body, and Robotics Fundamentals 1 section 4 counted that placing a body anywhere in space and pointing it any way takes 6 numbers (3 for position, 3 for orientation). A six-joint arm can therefore reach a point and choose how the hand is turned there; an arm with fewer joints gets only some of that freedom. On a table-top, a 3-DOF arm can place a hand at a point, a fourth DOF (a wrist turn) adds an orientation, and a fifth adds a tilt. A redundant arm has more joints than the task needs (a 7-DOF arm reaching round an obstacle), at the price of an inverse problem with many solutions. Gruebler's formula counts the DOF of a mechanism, but, as Robotics Fundamentals 1 pointed out, it counts only; it does not check that the geometry really moves.

Arm typeJointsTypical reach and payload (approximate)StrengthsWatch for
Cartesian / gantryThree prismatic axes at right angles (X, Y, Z), often plus a wristVery scalable: from 0.2 m desktop machines (3D printers, plotters) to 10 m or more gantries; payload from grams to hundreds of kgSimplest maths (x, y, z are the joint values); rigid; easy to make accurate; large workspace is a plain boxBulky for the volume reached; the whole frame must be larger than the workspace; rails need protection and maintenance
SCARATwo revolute joints with parallel vertical axes (a planar 2-link arm) plus a vertical prismatic axis, plus a wrist spin; 4 DOFReach about 0.2 to 1 m; payload about 1 to 20 kg; fast, with repeatability around 0.01 to 0.05 mm on good modelsStiff downward (vertical axes carry the load) and quick sideways; ideal for pick-and-place and assembly from aboveCannot tilt the hand; vertical stroke is short; the planar kinematics of this chapter applies directly
Articulated 6-axisSix revolute joints: base turn, shoulder, elbow, and a three-axis wristReach about 0.5 to 3 m; payload from about 3 kg to several hundred kg; repeatability about 0.02 to 0.1 mmReaches around and under objects at any hand orientation; the standard factory arm (welding, painting, handling)Complex inverse kinematics, many singular poses; the large shoulder torque limits payload at full reach
Delta (parallel)Three arms hanging from a fixed top plate, each driven at the top, joined by light rods to one small platform; 3 DOF, sometimes plus a wrist spinReach 0.2 to 1.3 m; light payloads (grams to about 1 to 8 kg); very fast, over 100 picks a minuteThe heavy motors are fixed to the frame, so the moving mass is tiny: ideal for fast light pick-and-place (food, packaging)Small workspace and a dome shape; the kinematics is not a simple chain, and the payload is low
Hobby servo armTypically 4 to 6 revolute joints, each a hobby servo, with a small gripperReach 0.2 to 0.4 m; payload tens to a few hundred gramsCheap, light, simple to wire and drive; the best way to learn all of this chapter on a deskBacklash, flexible plastic parts and servo torque limits; repeatability is millimetres, not hundredths of a millimetre

The figures in the table are typical orders of magnitude from catalogues and are approximate; the point is the pattern. Cartesian machines are simple and stiff; the SCARA is the fast, planar specialist; the articulated 6-axis is the general-purpose reaching arm; the delta trades size and payload for speed; and the servo arm is the learner's version of an articulated arm. The rest of the chapter uses a planar two-link arm (the shoulder and elbow of a SCARA, or of an articulated arm seen from the side) as the worked model, because its algebra fits on a page and every idea carries over to the bigger arms.

2. Forward kinematics

Forward kinematics (FK) answers: given the link lengths and the joint angles, where is the hand? For differential drive, Robotics Fundamentals 4 section 3 turned wheel speeds into a position; here the joint angles do the same job. For a planar arm, each link adds a vector. The first link points at angle θ1 from the x axis; the second is turned a further θ2 relative to the first, so it points at θ1 + θ2 from the x axis. The hand is the sum of the two vectors. Angles are in radians in programs and counter-clockwise positive; degrees are used below for readability.

Planar 2-link arm (not to scale): shoulder O at the origin; elbow E; end effector P. t1 is measured from the x axis, t2 is the elbow angle RELATIVE to link 1. y ^ P (x, y) the hand | / | / L2 link 2 points at ( t1 + t2 ) from the +x axis | / | E (elbow) | . ' . | . ' / | . ' / L1 link 1 points at t1 from the +x axis | . ' t1 / O ------------------------------------> x the shoulder is fixed to the base Elbow position: Ex = L1 cos t1 Ey = L1 sin t1 Hand position: x = L1 cos t1 + L2 cos( t1 + t2 ) y = L1 sin t1 + L2 sin( t1 + t2 ) (t2 > 0 bends the elbow counter-clockwise; t2 = 0 is a straight arm) Worked example: L1 = 0.30 m, L2 = 0.20 m, t1 = 40 deg, t2 = 60 deg (so link 2 points at 100 deg). cos 40 = 0.7660 sin 40 = 0.6428 cos 100 = -0.1736 sin 100 = 0.9848 x = 0.30 x 0.7660 + 0.20 x ( -0.1736 ) = 0.22981 - 0.03473 = 0.19508 m y = 0.30 x 0.6428 + 0.20 x 0.9848 = 0.19284 + 0.19696 = 0.38980 m hand at ( 0.195, 0.390 ) m, distance from the shoulder sqrt( 0.0381 + 0.1520 ) = 0.436 m Elbow at ( 0.2298, 0.1928 ) m. Check: the distance from the elbow to the hand is sqrt( (0.1951 - 0.2298)^2 + (0.3898 - 0.1928)^2 ) = sqrt( 0.0012 + 0.0388 ) = 0.200 m = L2.
from math import cos, sin def fk(L1, L2, t1, t2): # angles in radians; returns the hand position x = L1 * cos(t1) + L2 * cos(t1 + t2) y = L1 * sin(t1) + L2 * sin(t1 + t2) return x, y

A third link: setting the hand's orientation

Two joints fix the position of the hand and nothing else: the direction it points is whatever the angles happen to give. A third revolute joint (a wrist) of link length L3 gives control of that direction. The third link points at φ = θ1 + θ2 + θ3, which is also the orientation of the end effector (the angle at which a gripper points), and the position gains one more vector:

x = L1 cos t1 + L2 cos( t1 + t2 ) + L3 cos( t1 + t2 + t3 ) y = L1 sin t1 + L2 sin( t1 + t2 ) + L3 sin( t1 + t2 + t3 ) phi = t1 + t2 + t3 (the hand's orientation: three joints, three numbers x, y, phi) Why this makes the INVERSE problem easy: the point where the wrist joint sits (call it W) is just the hand position backed off along the hand's direction, Wx = x - L3 cos( phi ) Wy = y - L3 sin( phi ) and W depends only on t1 and t2, so W is found with the 2-link formulas of section 3; then t3 = phi - t1 - t2. Worked example: L1 = 0.30, L2 = 0.20, L3 = 0.10 m; t1 = 0, t2 = 90 deg, t3 = -90 deg. Elbow at ( 0.30, 0 ); link 2 points at 90 deg, so the wrist is at ( 0.30, 0.20 ); link 3 points at 90 - 90 = 0 deg, so the hand is at ( 0.40, 0.20 ) with phi = 0 (pointing along +x). Same hand position and orientation, other elbow: t1 = 67.38, t2 = -90, t3 = 22.62 deg (the sum is again 0). Section 3 shows where this pair comes from.

Denavit-Hartenberg: a bookkeeping convention

For a planar arm the sums above are easy. For a six-joint arm in 3D, with joint axes pointing in many directions, a rule is needed to say how each joint is described, so that anyone reading the arm's data sheet can write the same equations. The Denavit-Hartenberg (DH) convention (Denavit and Hartenberg, 1955) is that rule. It fixes a coordinate frame on every link in a standard way and then describes each joint by just four numbers: a link length a and a link twist α (both fixed by the shape of the arm), a link offset d and a joint angle θ (one of which is the variable of the joint: θ for a revolute joint, d for a prismatic one). The hand's pose is then the product of one standard 4 × 4 matrix per joint. For the planar 2-link arm of this chapter the table has two rows, with a1 = L1, a2 = L2, every twist and offset zero, and θ1, θ2 the variables: the product of the two matrices contains exactly the two equations above. DH is named here so you recognise the table in a manual (from memory, there are two common variants, “classic” and “modified”, which place the frames slightly differently, so check which one a data sheet uses); deriving it is the subject of a robotics-kinematics course.

3. Inverse kinematics

Inverse kinematics (IK) is the harder direction: given the wanted hand position (x, y), find the joint angles. It is what an arm controller has to solve every time it is told “go to this point”. For the 2-link arm there is a clean answer from geometry. The shoulder, the elbow and the hand form a triangle with sides L1, L2 and r = √(x2 + y2), the straight-line distance from shoulder to hand. The law of cosines on that triangle gives the elbow angle, and the shoulder angle is the direction to the hand minus the angle the first link sits away from that direction.

Target ( x, y ), r^2 = x^2 + y^2 Reachability first: | L1 - L2 | <= r <= L1 + L2 (outside this ring no angles exist: the arm is too short or cannot fold that tightly) Elbow: the law of cosines on the triangle gives the interior angle at the elbow; the arm's own elbow angle t2 is measured from a straight arm, so cos t2 = ( r^2 - L1^2 - L2^2 ) / ( 2 L1 L2 ) t2 = +acos( ... ) or -acos( ... ) (TWO solutions, the mirror images) Shoulder: t1 = atan2( y, x ) - atan2( L2 sin t2, L1 + L2 cos t2 ) (the direction to the target, minus the angle between link 1 and that direction) Use atan2, not atan( y / x ): atan2 keeps the quadrant and works when x = 0. Elbow-down (t2 > 0): the elbow bends counter-clockwise, so for a target on the right the elbow sits BELOW the line from shoulder to hand. Elbow-up (t2 < 0): the elbow bends clockwise, and the elbow sits ABOVE that line. Both reach the same point. A real arm may have a joint limit that excludes one. Worked example: L1 = 0.30, L2 = 0.20, target ( 0.35, 0.25 ) m. r^2 = 0.1225 + 0.0625 = 0.1850, r = 0.4301 m. Reachable? 0.10 <= 0.4301 <= 0.50 yes. cos t2 = ( 0.1850 - 0.0900 - 0.0400 ) / ( 2 x 0.30 x 0.20 ) = 0.0550 / 0.1200 = 0.4583 t2 = +/- 62.72 deg ELBOW-DOWN: t2 = +62.72 deg. atan2( 0.25, 0.35 ) = 35.54 deg. atan2( 0.20 sin 62.72, 0.30 + 0.20 cos 62.72 ) = atan2( 0.1777, 0.3917 ) = 24.41 deg t1 = 35.54 - 24.41 = 11.13 deg. Check by FK: x = 0.30 cos 11.13 + 0.20 cos 73.85 = 0.2944 + 0.0556 = 0.3500; y = 0.30 sin 11.13 + 0.20 sin 73.85 = 0.0579 + 0.1921 = 0.2500 (matches) ELBOW-UP: t2 = -62.72 deg. atan2( 0.20 sin( -62.72 ), 0.3917 ) = atan2( -0.1777, 0.3917 ) = -24.41 deg t1 = 35.54 + 24.41 = 59.95 deg. Check by FK: x = 0.30 cos 59.95 + 0.20 cos( -2.77 ) = 0.1503 + 0.1997 = 0.3500; y = 0.30 sin 59.95 + 0.20 sin( -2.77 ) = 0.2597 - 0.0097 = 0.2500 (matches) Two different poses of the arm (11.13, 62.72) and (59.95, -62.72) put the hand on the same point: that is not a mistake, it is the geometry.
from math import acos, atan2, cos, sin def ik(L1, L2, x, y, elbow_down=True): r2 = x * x + y * y c2 = (r2 - L1 * L1 - L2 * L2) / (2 * L1 * L2) if abs(c2) > 1.0: # outside |L1 - L2| <= r <= L1 + L2 return None # unreachable: say so, never move t2 = acos(c2) if elbow_down else -acos(c2) t1 = atan2(y, x) - atan2(L2 * sin(t2), L1 + L2 * cos(t2)) return t1, t2 # round trip: t1, t2 = ik(0.30, 0.20, 0.35, 0.25); fk(0.30, 0.20, t1, t2) returns (0.35, 0.25) to within rounding

With the third link of section 2 the recipe is: subtract L3 along the wanted orientation to find the wrist point W, solve the 2-link problem for W, and then set θ3 = φ − θ1 − θ2. In the earlier example, the target hand position (0.40, 0.20) with φ = 0 gives W = (0.30, 0.20), so r2 = 0.13 and cos θ2 = (0.13 − 0.09 − 0.04)/0.12 = 0, which is θ2 = ±90°. Elbow-down gives θ1 = atan2(0.20, 0.30) − atan2(0.20, 0.30) = 0 and θ3 = 0 − 0 − 90 = −90°; elbow-up gives θ1 = 33.69 + 33.69 = 67.38° and θ3 = 0 − 67.38 + 90 = 22.62°, the two poses quoted above.

Two things to remember about IK in general. First, it can have no solution (out of reach), one (at the edge of the reach), two (as here) or, for a redundant arm, infinitely many; a program must handle all of these and prefer the solution that is reachable within the joint limits and nearest to the current pose, so the arm does not swing round the long way. Second, for a six-joint arm with a wrist whose three axes meet at one point (the usual design) there is still a closed-form answer, in the same spirit as the wrist point trick above; for other arms the problem is solved numerically, by repeatedly nudging the angles with the Jacobian of section 5.

4. Workspace and singularities

The workspace is the set of points the hand can reach. For the planar 2-link arm with unlimited joint travel it is a ring (an annulus): a full circle of radius L1 + L2 (the arm straight out) with a hole of radius |L1 − L2| (the arm folded back on itself, the shorter link along the longer). The 3D workspace of a real arm is the same idea turned into a solid. The dexterous part of the workspace is where the hand can also take any orientation; it is smaller, because the wrist needs room to turn.

Workspace of the 2-link arm, L1 = 0.30 m, L2 = 0.20 m, no joint limits: # = reachable, O = the shoulder. Scale: 0.05 m per row, 0.025 m per column. # ################# ######################### ############################# ################################# ################################### ##################################### ####################################### ####################################### ################ ################ ################# O ################# ################ ################ ####################################### ####################################### ##################################### ################################### ################################# ############################# ######################### ################# # Outer radius L1 + L2 = 0.50 m (arm fully STRETCHED: t2 = 0) Inner radius | L1 - L2 | = 0.10 m (arm fully FOLDED: t2 = +/-180 deg) Area = pi x ( 0.50^2 - 0.10^2 ) = pi x 0.24 = 0.754 m^2 Real joints do not turn 360 degrees. With the elbow limited to +/-150 deg the inner radius grows to sqrt( L1^2 + L2^2 + 2 L1 L2 cos 150 ) = sqrt( 0.09 + 0.04 - 0.1039 ) = 0.161 m, a bigger hole, and a mechanical stop stops the arm before the links collide.

Targets near the edge of the ring are expensive. Near the outer edge the arm is almost straight, and a small step of the hand outward needs a large change of elbow angle (section 5 puts numbers on this); and every extra bit of reach is paid for in torque (section 6). The cause is geometric: the forward kinematics maps two angles to two coordinates, and the map folds over on itself at the edges of the ring, where its inverse breaks down.

Singularities

A singular pose is one in which the arm loses the ability to move the hand in some direction, however fast the joints turn. For the 2-link arm the singular poses are exactly the two edges of the workspace: fully stretched (θ2 = 0) and fully folded (θ2 = ±180°). In either pose the two links lie along one line. A shoulder rotation then swings the hand in a circle at right angles to that line, an elbow rotation swings it in a circle at right angles to that line as well, and neither joint can move the hand along the line: it is a direction in which the hand is stuck. In the stretched pose, the hand also cannot go farther out, simply because the arm has no more length. Close to a singularity the arm is not stuck but ill-conditioned: it can move in the lost direction, but only by turning the joints extremely fast. Section 5 puts numbers on this.

Singularities matter in practice. A controller that asks a nearly singular arm to follow a straight line through the singular pose commands joint speeds that grow without limit, and the arm either hits its speed limit and leaves the path or jerks violently. The usual remedies: plan paths that stay away from singular poses (the workspace edges are the first ones to avoid; a six-axis arm has others inside the workspace, such as the wrist axes lining up), limit the commanded joint speed near them, or slow the hand and accept a path error there.

5. The Jacobian: velocity and force

The forward kinematics tells where the hand is. The Jacobian tells how the hand moves when the joints move, and so it is the tool for speed and for force. It is the matrix of derivatives of the hand coordinates with respect to the joint angles. For the 2-link arm, differentiating x and y of section 2, and writing s1 = sin θ1, s12 = sin(θ1 + θ2), c1, c12 likewise:

Velocity relation: [ vx ] [ -L1 s1 - L2 s12 -L2 s12 ] [ t1_dot ] [ ] = [ ] x [ ] or v = J x theta_dot [ vy ] [ L1 c1 + L2 c12 L2 c12 ] [ t2_dot ] Determinant: det J = ( -L1 s1 - L2 s12 )( L2 c12 ) - ( -L2 s12 )( L1 c1 + L2 c12 ) which simplifies (using the sine and cosine of a difference) to det J = L1 L2 sin t2 Singular when det J = 0: sin t2 = 0, that is t2 = 0 (stretched) or t2 = 180 deg (folded): EXACTLY the singular poses of section 4. J then has no inverse, and no joint speeds give some hand velocities. Worked example: L1 = 0.30, L2 = 0.20, t1 = 40 deg, t2 = 60 deg (the pose of section 2: hand at ( 0.195, 0.390 )). sin 40 = 0.6428, sin 100 = 0.9848, cos 40 = 0.7660, cos 100 = -0.1736 J11 = -( 0.30 x 0.6428 + 0.20 x 0.9848 ) = -( 0.19284 + 0.19696 ) = -0.38980 J12 = -0.20 x 0.9848 = -0.19696 J21 = 0.30 x 0.7660 + 0.20 x ( -0.1736 ) = 0.22981 - 0.03473 = 0.19508 J22 = 0.20 x ( -0.1736 ) = -0.03473 det J = ( -0.38980 )( -0.03473 ) - ( -0.19696 )( 0.19508 ) = 0.013538 + 0.038424 = 0.05196 = L1 L2 sin 60 = 0.06 x 0.8660 (the two routes agree) Joint speeds t1_dot = +0.5 rad/s, t2_dot = -0.2 rad/s: vx = -0.38980 x 0.5 + ( -0.19696 )( -0.2 ) = -0.19490 + 0.03939 = -0.1555 m/s vy = 0.19508 x 0.5 + ( -0.03473 )( -0.2 ) = 0.09754 + 0.00695 = 0.1045 m/s hand speed sqrt( 0.0242 + 0.0109 ) = 0.187 m/s, moving up and to the left.

Near a singularity: what the determinant means

Going the other way, joint speeds for a wanted hand velocity, needs the inverse, θ̇ = J−1 v, and the inverse divides by the determinant. Wherever sin θ2 is small the joint speeds grow, as the table shows for the arm at θ1 = 30° asked to move the hand outward along the line from the shoulder at 0.05 m/s:

L1 = 0.30, L2 = 0.20, t1 = 30 deg, hand moving radially outward at 0.05 m/s t2 reach r det J = L1 L2 sin t2 t1_dot (rad/s) t2_dot (rad/s) 90 deg 0.361 m 0.0600 +0.092 -0.300 45 deg 0.464 m 0.0424 +0.210 -0.546 15 deg 0.496 m 0.0155 +0.636 -1.597 5 deg 0.4995 m 0.0052 +1.910 -4.776 1 deg 0.500 m 0.0010 +9.549 -23.874 (about 1370 deg/s of elbow speed to creep outward at 5 cm/s) Every row asks for the same slow 5 cm/s. The elbow speed grows as 1 / det J (the product of t2_dot and det J stays near 0.025), and no servo turns at 24 rad/s: the controller would saturate, and the hand would stop following the line. Moving TANGENTIALLY (across the line from the shoulder) is not a problem at any of these poses: the arm is least able to move in the direction it points.

Force and torque: the static relation

The same matrix also relates forces. By the principle of virtual work (the power the joints put in equals the power the hand puts out, τT θ̇ = FT v = FT J θ̇ for every θ̇), the joint torques needed to make the hand push on the world with force F (in the static case, with nothing moving) are:

tau = J^T x F ( J transposed: swap its rows and columns ) F = the force the HAND exerts on the world, in N; tau = the torques the joints must supply, in N m (counter-clockwise positive) Same pose as above (t1 = 40 deg, t2 = 60 deg, hand at ( 0.195, 0.390 ) m). The hand presses straight DOWN on a table with 5 N: F = ( 0, -5 ) N. tau1 = J11 Fx + J21 Fy = ( -0.38980 )( 0 ) + ( 0.19508 )( -5 ) = -0.9754 N m tau2 = J12 Fx + J22 Fy = ( -0.19696 )( 0 ) + ( -0.03473 )( -5 ) = +0.1736 N m Check by moments (the force times its perpendicular distance, with the lever of Robotics Fundamentals 2 section 2): about the shoulder (0, 0): tau1 = x Fy - y Fx = 0.19508 x ( -5 ) - 0 = -0.9754 N m (clockwise: the shoulder pushes the arm DOWN) about the elbow (0.2298, 0.1928): tau2 = ( x - Ex ) Fy - ( y - Ey ) Fx = ( 0.19508 - 0.22981 ) x ( -5 ) = +0.1736 N m (the hand is slightly LEFT of the elbow, so the elbow must turn counter-clockwise) Pressing sideways, F = ( -4, 0 ) N: tau1 = ( -0.38980 )( -4 ) = +1.5592 N m tau2 = ( -0.19696 )( -4 ) = +0.7878 N m To HOLD a weight W up, the hand must push UP on it: use F = ( 0, +W ). The joint torques are then the negatives of the first case, and section 6 does that weight arithmetic joint by joint. Notice what a SINGULAR pose does to this relation: at t2 = 0 the matrix is singular, so a force along the arm needs ZERO torque from either joint (the structure carries it), while a sideways force needs the full lever arm. A stretched arm holding a load pulled straight along it is not working its motors: a fact that designers of load-carrying arms use.

6. Payload and torque at the joint

The torque a joint needs is the oldest formula in the book, from Robotics Fundamentals 2 section 2: force times the perpendicular distance. A weight m g hanging at distance r along an arm that makes angle α above the horizontal has a perpendicular distance of r cos α, so:

tau = m g r cos( alpha ) alpha = angle of the arm above (or below) the HORIZONTAL; r = distance from the joint axis to the weight (along the arm) Worst case: alpha = 0 (the arm horizontal): cos = 1, so tau(max) = m g r. Straight up or down (alpha = +/-90 deg) the weight hangs over the joint: cos = 0, tau = 0. So SIZE EVERY JOINT FOR THE HORIZONTAL POSE (or the worst pose its limits allow), even if the arm spends little time there. Add up the contributions for EVERY mass that sits beyond the joint: a link's own weight: m g x ( distance to its CENTRE, for a uniform link = half its length ); a motor or servo mounted out on the arm: its mass at its own distance; a gripper and the payload: m g x ( distance to the tip ).

Each joint carries everything beyond it, so the joint nearest the base carries the most, and the torque grows with the distance as well as with the mass. That is why the standard arm design puts the heavy motors at the base (or drives distant joints through belts or rods) and keeps the outer links light: it cuts the mass at long distances. The next example is a hobby arm on a desk, worked joint by joint.

Arm: L1 = 0.20 m, L2 = 0.15 m, both horizontal (worst case). g = 9.81 m/s^2. Masses: link 1 0.08 kg (centre at 0.10 m); elbow servo 0.06 kg at the elbow (0.20 m from the shoulder); link 2 0.05 kg (centre at 0.20 + 0.075 = 0.275 m); gripper 0.05 kg and payload 0.10 kg, both at the tip (0.35 m). SHOULDER torque (everything beyond the shoulder): link 1: 0.08 x 9.81 x 0.100 = 0.0785 N m elbow servo: 0.06 x 9.81 x 0.200 = 0.1177 N m link 2: 0.05 x 9.81 x 0.275 = 0.1349 N m gripper + load: 0.15 x 9.81 x 0.350 = 0.5150 N m total tau(shoulder) = 0.8461 N m ELBOW torque (only link 2, the gripper and the payload): link 2: 0.05 x 9.81 x 0.075 = 0.0368 N m gripper + load: 0.15 x 9.81 x 0.150 = 0.2207 N m total tau(elbow) = 0.2575 N m If the arm is raised 30 degrees above horizontal (both links in a line): multiply by cos 30 = 0.866: shoulder 0.733 N m, elbow 0.223 N m. Still, size for the horizontal pose.

Now choose actuators. The data-sheet stall torque is the most the servo can produce at all, with the output stopped, and, as Robotics Fundamentals 3 section 2 warned, it is not a working figure: at stall the current and heat are at their maximum, the gears are at their highest stress, and the servo cannot be held there for long. A common design rule is to derate to about half of the stall torque for a load that must be held continuously (typical practice, not a law; more where the duty is heavy or the servo is cheap, less for brief loads), and to leave an extra margin where the arm also has to accelerate.

Shoulder servo: stall torque 2.5 N m (about 25 kg cm, a typical large hobby servo). Derate to 50 %: working torque 1.25 N m. Required 0.846 N m < 1.25 N m: it passes, with a margin of 1.25 / 0.846 = 1.48 (and 2.5 / 0.846 = 2.95 against the stall figure). Most payload the shoulder can hold at the derated limit: the arm alone and the gripper make 0.846 - 0.10 x 9.81 x 0.35 = 0.846 - 0.343 = 0.503 N m, so m(max) = ( 1.25 - 0.503 ) / ( 9.81 x 0.35 ) = 0.747 / 3.434 = 0.218 kg (against the 0.10 kg we planned; at the full stall figure it would be 0.58 kg, but that is the limit, not a working load). Elbow servo: stall torque 1.0 N m, derated to 0.50 N m. Required 0.2575 N m: margin 0.50 / 0.2575 = 1.94. Passes. Required stall torque for the shoulder at a 50 % derating: 0.846 / 0.5 = 1.69 N m, so a 1.5 N m servo would NOT have done, and the 2.5 N m choice is the next size up. Acceleration adds torque: tau = I x alpha. The gripper and payload (0.15 kg) at 0.35 m act like a moment of inertia I = m r^2 = 0.15 x 0.1225 = 0.0184 kg m^2. Starting the arm at 8 rad/s^2 needs another 0.0184 x 8 = 0.147 N m at the shoulder (about a sixth more). That is one more reason for the derating, and a reason to limit the acceleration in the motion profile (section 7).

If the joint is driven by a motor and gearbox rather than a servo, the same sizing applies to the output of the gearbox. As Robotics Fundamentals 3 section 3 showed, the output torque is τout = τmotor N η, with gear ratio N and efficiency η; and its section 6 gave the full procedure for sizing a motor from the load, the speed and the continuous rating. A gearbox that cannot be back-driven (a worm drive, or a very high ratio) also holds the arm up when power is off, which is useful and which makes it harder to move the arm by hand. A joint that is only just strong enough also sags and overheats: the margin is not a luxury.

7. Joint space and Cartesian space

There are two ways to tell an arm to go from pose A to pose B. In joint space each joint is moved from its start angle to its end angle, usually with all joints starting and finishing together; this is simple and needs no IK along the way, so singularities do not trouble it, but the hand follows a curved, hard-to-predict path. In Cartesian space the hand is told to follow a chosen path in space (typically a straight line), and at each small step the inverse kinematics finds the joint angles; the path is what you wanted, but it costs an IK solution per step, and it fails if any point on the line is out of reach or near a singularity.

L1 = 0.30, L2 = 0.20. Move the hand from A = ( 0.30, 0.20 ) to B = ( -0.30, 0.20 ), elbow-down both ends. IK for A: t1 = 0.00, t2 = 90.00 deg IK for B: t1 = 112.62, t2 = 90.00 deg JOINT SPACE: move each joint linearly. Halfway: t1 = ( 0 + 112.62 ) / 2 = 56.31 deg, t2 = 90 deg. FK of the halfway pose: x = 0.30 cos 56.31 + 0.20 cos 146.31 = 0.1664 - 0.1664 = 0, y = 0.30 sin 56.31 + 0.20 sin 146.31 = 0.2496 + 0.1109 = 0.3606. The hand passes through ( 0, 0.361 ), a bulge of 0.161 m above the straight line y = 0.20: the path is an arc. CARTESIAN (straight line y = 0.20): IK at five points along the line, elbow-down: x (m) t1 (deg) t2 (deg) +0.30 0.00 90.00 +0.15 11.72 124.23 0.00 48.59 138.59 (the elbow folds to its tightest here: r = 0.20, close to the inner radius 0.10) -0.15 85.46 124.23 -0.30 112.62 90.00 The straight line needs the elbow to swing 90 -> 138.6 -> 90 deg, while joint-space motion keeps t2 at 90 deg throughout. Joint space is the quickest way between poses; the Cartesian line is needed whenever the path itself matters (welding a seam, drawing, moving a cup without tipping it, carrying round an obstacle). A line through the shoulder, such as ( 0.20, 0 ) to ( -0.20, 0 ), passes through r = 0, inside the hole of radius 0.10: UNREACHABLE. Check every point of a line (or at least its closest approach to the shoulder) against | L1 - L2 | <= r <= L1 + L2 BEFORE starting to move.

The trapezoidal velocity profile

An arm cannot jump to full speed: that would need infinite acceleration, shake the arm and the payload, and exceed the torque of section 6. The standard smooth move is the trapezoidal velocity profile (named for the shape of its speed-against-time graph): accelerate at a constant amax until the maximum speed vmax is reached, cruise at vmax, then decelerate at the same rate to stop exactly at the target. It applies to a joint angle (rad, rad/s, rad/s2) or to a distance along a Cartesian line; the same formulas hold.

speed ^ vmax | ______________________ | / \ | / \ Area under the curve = the distance moved, D | / \ | / \ 0 +---+----------------------------+---+-------> time 0 ta T - ta T Ramp time: ta = vmax / amax Distance covered in one ramp: d(ramp) = vmax^2 / ( 2 amax ) Long move ( D >= vmax^2 / amax, enough room for both ramps ): cruise time = ( D - 2 d(ramp) ) / vmax = D / vmax - ta TOTAL TIME T = D / vmax + ta Short move ( D < vmax^2 / amax ): there is no cruise: the speed rises and falls as a triangle, peaking below vmax: ta = sqrt( D / amax ), T = 2 sqrt( D / amax ), v(peak) = amax x ta Worked example 1 (long move): a joint turns D = 90 deg = 1.5708 rad, vmax = 2.0 rad/s, amax = 8.0 rad/s^2. Ramp time ta = 2.0 / 8.0 = 0.25 s. Ramp distance d = 2.0^2 / ( 2 x 8.0 ) = 0.25 rad ( 14.3 deg ). Both ramps need 0.50 rad; D = 1.5708 >= 0.50, so there is a cruise. Cruise time = 1.5708 / 2.0 - 0.25 = 0.7854 - 0.25 = 0.5354 s. TOTAL T = 1.5708 / 2.0 + 0.25 = 1.0354 s. (without ramps, at a constant 2 rad/s, it would take 0.785 s) Worked example 2 (short move): D = 20 deg = 0.3491 rad, same limits. vmax^2 / amax = 4 / 8 = 0.50 rad; 0.3491 < 0.50: no cruise. ta = sqrt( 0.3491 / 8 ) = 0.2089 s, T = 0.4178 s, v(peak) = 8 x 0.2089 = 1.671 rad/s (below the 2.0 allowed). Check: area = 1/2 x T x v(peak) = 0.5 x 0.4178 x 1.671 = 0.3491 rad. Several joints: give every joint the SAME total time T = the longest time any joint needs, so they all start and stop together; the slower joint sets the pace, and the others are slowed to match, which keeps a joint-space path a smooth arc rather than a zigzag.
from math import sqrt def plan(D, vmax, amax): # distance D (rad or m) -> ramp time, total time, peak speed if D >= vmax * vmax / amax: # long move: there is a cruise ta = vmax / amax return ta, D / vmax + ta, vmax ta = sqrt(D / amax) # short move: a triangle return ta, 2.0 * ta, amax * ta def position(t, D, amax, ta, T, vpk): # where the joint (or hand) is at time t after the start if t <= ta: return 0.5 * amax * t * t # accelerating if t <= T - ta: return 0.5 * amax * ta * ta + vpk * (t - ta) # cruising if t <= T: s = T - t return D - 0.5 * amax * s * s # decelerating return D # arrived # plan(1.5708, 2.0, 8.0) gives (0.25, 1.0354, 2.0); position( 0.25, ... ) is 0.25 rad, position( T, ... ) is 1.5708 rad exactly

A smoother alternative, used where jerk (the rate of change of acceleration) must be kept small, is the S-curve profile, which rounds the corners of the trapezoid; a cubic polynomial between waypoints is another common choice. The trapezoid is the one to know first. Feedforward and the position loop that follows these profiles are the subject of Robotics Fundamentals 7 sections 7 and 11: the profile is the reference, the controller makes the joint follow it.

8. Precision, repeatability, backlash and deflection

An arm that computes its pose perfectly still misses the target by a few millimetres. Two quantities describe that. Repeatability is how closely the arm returns to the same taught point every time (the scatter); accuracy is how closely it reaches a point it is told to reach in space (the offset from the true coordinates). An arm can be very repeatable and not very accurate: it goes back to the same wrong place every time, which is fine if it is taught the points by hand and a problem if the points come from a camera or a drawing. Repeatability is the cheaper to buy; typical figures are about 0.02 to 0.1 mm for industrial arms and millimetres for a hobby arm (approximate).

The sources of error are the same few, all of them magnified by the length of the arm. A joint angle error δθ moves the tip by about r δθ, where r is the distance from that joint to the tip:

Tip error from an angle error: e = r x delta_theta ( radians ) Resolution matters too: a joint that can only be set to the nearest 1 degree at a reach of 0.35 m cannot place the tip closer than 0.35 x 0.01745 = 6.1 mm. BACKLASH (Robotics Fundamentals 3 section 3): free movement of the gears when the direction reverses. 0.5 degrees at the shoulder, reach 0.35 m: 0.35 x 0.008727 = 3.05 mm of free tip movement. Backlash grows with every gear stage, and it is magnified by the arm. Worst for an arm that holds a position and is then pushed or loaded the other way: the joint takes up the slack and the tip moves. Remedies: a gearbox with low backlash (planetary or harmonic), preloaded or split gears, approaching every target from the same direction, and an encoder on the LINK side of the gears rather than the motor side, so the control loop sees the true joint angle (Robotics Fundamentals 7). DEFLECTION (Robotics Fundamentals 2 section 1, the cantilever): delta = F L^3 / ( 3 E I ), I = b h^3 / 12 (h measured in the direction of the load) Link 2 of the arm: an aluminium flat bar, 20 mm wide, 3 mm thick, L = 0.20 m, carrying a 0.20 kg load at its end ( F = 0.2 x 9.81 = 1.962 N ); E = 69 GPa ( typical for aluminium alloy ). Mounted FLAT (the 3 mm is vertical): I = 0.020 x 0.003^3 / 12 = 4.5e-11 m^4 delta = 1.962 x 0.008 / ( 3 x 69e9 x 4.5e-11 ) = 0.01570 / 9.315 = 1.69 mm (the tip sags). Mounted ON EDGE (the 20 mm is vertical): I = 0.003 x 0.020^3 / 12 = 2.0e-9 m^4 delta = 0.01570 / 414 = 0.038 mm. The same bar is ( 20 / 3 )^2 = 44 times stiffer when mounted on edge. Deflection grows with the CUBE of the length: a link twice as long droops 8 times as much. It is also a position error that no encoder sees (the joint angle is right; the link bends). Thermal growth, wear, a loose screw and an out-of-true link also add error. Calibration (measure the real link lengths and zero angles, correct them in the model) removes the systematic part of all of these.

The practical lessons: keep links short and stiff (ribs, tubes and on-edge bars); keep the moving mass low; choose joints with little play; put encoders where the angle matters; and calibrate. A hobby arm will never be an industrial arm, but understanding where the millimetres come from tells you which one is worth fixing.

9. Grippers and end effectors

The end effector is whatever the arm carries to do the job: a gripper, a vacuum cup, a welding torch, a screwdriver, a camera. A gripper is the most common, and its design is a force problem: it must hold the object against its weight and against the acceleration of the arm, without crushing it.

End effectorHow it holdsGood forWatch for
Parallel-jaw gripperTwo flat fingers move together and squeeze; the grip is friction between finger and objectBoxes, blocks and parts of known size; strong, simple, one motorNeeds a flat or well-fitted contact; an object of unknown shape can slip or be crushed; jaw force must be sized (below)
Vacuum (suction cup)Air pumped out of a soft cup; atmospheric pressure presses the object on the cup: force = pressure difference × cup areaFlat, smooth, non-porous things: sheets, trays, boxes, glass; touches from one side onlyRough, wet or porous surfaces leak; needs a pump and an air supply; a power cut drops the load
Soft / compliant gripperFlexible fingers (silicone, or a fin-ray shape) that wrap round the object; or a membrane that conforms and then stiffensFragile or irregular objects (fruit, eggs, odd shapes); forgiving of positioning errorLower grip force and a less precise position; the material wears; hard to model, so the force is found by testing

Grip force

With friction grippers the object is held up by friction at the finger pads. Each finger pushes with a normal force N; the friction it can supply is at most μ N (the friction coefficient μ between pad and object, as in the traction formula of Robotics Fundamentals 3 section 5). With n fingers in contact, the total friction must be at least the weight, and, because the arm accelerates, the weight is increased by an upward acceleration a. A safety factor covers uncertain friction, shocks and wear:

Grip condition: mu x N x n_fingers >= m ( g + a ) x SF so N >= m ( g + a ) x SF / ( mu x n_fingers ) a = the largest acceleration of the gripper IN THE DIRECTION OPPOSING the grip (upward acceleration adds to g; the horizontal case is similar, with the object's own weight still to be held) SF = safety factor, typically 2 for a known object and surface, higher for unknown ones Worked example: a 0.5 kg object, held by 2 rubber-faced fingers (mu = 0.5, a typical value for rubber on a dry plastic or metal surface), upward acceleration a = 2.0 m/s^2, SF = 2. Load to hold: m ( g + a ) = 0.5 x ( 9.81 + 2.0 ) = 5.905 N. With the safety factor: 5.905 x 2 = 11.81 N of friction needed. N = 11.81 / ( 0.5 x 2 ) = 11.81 N per finger. So each pad must press with about 12 N. Is the actuator enough? A servo of 0.30 N m stall, derated to 0.15 N m, driving each jaw through a pinion of radius 0.015 m gives 0.15 / 0.015 = 10 N per finger: NOT ENOUGH (10 < 11.81). The fix is cheap if found early: larger pads (higher mu), a stronger servo, a lower acceleration (a = 0: 0.5 x 9.81 x 2 / 1 = 9.81 N per finger, which 10 N just meets), or a different grasp that wraps round the object. Too much force is also a fault: the object must not be crushed. Compare N with what the object can bear, and use a force or current limit on the jaw. Vacuum: F = delta_P x A. A cup of diameter 30 mm ( A = pi x 0.015^2 = 7.07e-4 m^2 ) at a vacuum of 40 kPa below atmosphere (typical of a simple pump): F = 40000 x 7.07e-4 = 28.3 N. With the same acceleration and SF = 2: the largest mass is 28.3 / ( 2 x ( 9.81 + 2.0 ) ) = 1.20 kg. Several cups add; a side-gripped (sheared) load is limited by friction, not by this figure, so a cup used on a vertical surface needs a much larger margin.

10. Arm safety

An arm is a machine that can hurt people, and a small one can still pinch a finger. The energy is the thing to respect: the kinetic energy of the hand and payload is ½ m v2, which is 0.5 J for 1 kg at 1 m/s, and a joint torque from section 6, divided by the distance from the joint to the point of contact, is the force that point can exert on a trapped finger. Keep these habits.

  • Respect the payload limit. Work out the torque (section 6) for the worst pose with the heaviest object, including its acceleration; stay inside the derated limit; and write the rated payload on the arm. An overloaded arm sags, overheats, strips its gears, and drops what it holds.
  • Find the pinch points and the crush points. Wherever two links close on each other (the inside of an elbow as it folds, the gap between a link and the base, a gripper's jaws), a finger can be caught. Guard them, use covers, limit the joint range with hard stops that keep a gap, and keep hands out of the workspace while power is on.
  • Limit the speed and the force. The lowest speed that does the job is the right one, and a force or current limit on every joint caps what a collision can do. Use the stopping-distance arithmetic of Robotics Fundamentals 8 section 7 (reaction time plus braking) for the arm's own coasting distance.
  • Hold the load when the power goes. A joint under gravity falls when its motor is off unless something holds it: a brake, a non-back-drivable gearbox (Robotics Fundamentals 3 section 3), or a counterbalance. Decide what the safe state is for each joint before the first test (Robotics Fundamentals 8 section 7), and fit a hardware emergency stop that cuts power whatever the software is doing.
  • Test slowly, with clearance. First move each joint alone with the payload removed and the speed capped, then the full path, then the load; keep a hand on the stop switch and everyone outside the reach (the outer radius L1 + L2 plus the length of the gripper and its load).

Collaborative arms are designed to work next to people without a fence. From memory, the standards (ISO 10218 for industrial robots and ISO/TS 15066 for collaborative operation) name four ways to do this, and they are named here only so you recognise them: a safety-rated monitored stop (the arm halts when a person enters and resumes when they leave), hand guiding (the person moves the arm by hand, with enabling controls), speed and separation monitoring (the arm slows as a person comes nearer and stops at a minimum distance) and power and force limiting (the arm is built so that contact forces and pressures stay below published limits for each body region, using low moving masses, rounded covers, torque sensing and limited speed). Power and force limiting is the reason collaborative arms are slow and light. Applying any of this to a real workplace needs the current standards and a proper risk assessment, which this course cannot replace. Robotics Fundamentals 10 (planned) covers power and safety for the robot as a whole: fusing and wiring, emergency stops, safe testing and the ethics of building machines that act in the world.

11. Challenges

Challenge 1: Forward and inverse kinematics
A planar arm has L1 = 0.25 m and L2 = 0.15 m. (a) Find the hand position for θ1 = 50° and θ2 = −70°, and say which kind of elbow pose that is. (b) State the reachable range of distance from the shoulder, and say whether each target is reachable: (0.30, 0.20), (0.45, 0.05) and (0.06, 0.04). (c) For the target (0.30, 0.20), find both inverse kinematics solutions (θ1, θ2) and verify each by forward kinematics. (d) A third link L3 = 0.08 m is added at the wrist. The hand must reach (0.32, 0.10) pointing at φ = −30°. Find the wrist point, then θ1, θ2 and θ3 for the elbow-down solution, and verify by forward kinematics.
View solution
Challenge 2: Jacobian, singularities and static torque
The arm has L1 = 0.25 m and L2 = 0.15 m, at θ1 = 25° and θ2 = 70°. (a) Find the hand position and the elbow position. (b) Write the Jacobian numerically and find its determinant two ways (from the matrix, and from L1L2 sin θ2). (c) For joint speeds θ̇1 = 0.4 rad/s and θ̇2 = 0.6 rad/s, find the hand velocity and speed. (d) The hand pushes on a surface with F = (−2, −6) N. Find the joint torques from τ = JTF and check both by moments about the shoulder and the elbow. (e) The hand must move straight outward from the shoulder at 0.04 m/s. Find the joint speeds when θ2 = 70° and when θ2 = 8°, and explain the difference. (f) Name the two singular elbow angles and say what the arm looks like in each.
View solution
Challenge 3: Payload, motion, deflection and grip
(a) A single-joint servo arm: servo stall torque 1.8 N m, derated to 50 %, arm length 0.22 m, arm mass 0.06 kg (weight at its middle), gripper 0.04 kg at the tip. Find the torque of the arm and gripper alone, and the largest payload at the tip that the derated servo can hold with the arm horizontal. (b) With a 0.30 kg payload, find the torque with the arm horizontal and with the arm 40° above horizontal, and say which pose sizes the servo. (c) A gearmotor has a continuous torque of 0.12 N m, a 20:1 gearbox and an efficiency of 0.85: find its output torque and compare with part (a)’s need for 0.30 kg. (d) A joint turns 120° with vmax = 1.5 rad/s and amax = 6 rad/s2: find the ramp time, cruise time and total time. Then do the same for a 15° move. (e) A 0.8 kg object is held by 2 fingers with μ = 0.4, upward acceleration 3 m/s2 and SF = 2: find the normal force per finger. A 25 mm vacuum cup at 50 kPa lifts the same object under the same acceleration: find the force and the largest mass at SF = 2. (f) A flat aluminium bar 25 mm wide and 3 mm thick, 0.25 m long, carries 0.30 kg at its end (E = 69 GPa): find the deflection when the 3 mm is vertical, and say what turning it on edge does. Then find the tip error from 0.8° of backlash at a reach of 0.40 m.
View solution

Quick reference

  • Joints and links: revolute (angle θ) and prismatic (length d); one motor per DOF; a six-joint arm reaches any position and orientation within its reach. Types: Cartesian (simple, stiff), SCARA (fast, planar), articulated 6-axis (general), delta (fast, light), hobby servo arm (cheap, backlash).
  • Forward kinematics (2 links): x = L1 cos θ1 + L2 cos(θ1 + θ2), y likewise with sin. Third link: add L3 at angle φ = θ1 + θ2 + θ3. Denavit-Hartenberg: four numbers per joint (a, α, d, θ), a bookkeeping convention (two variants).
  • Inverse kinematics: reachable only if |L1 − L2| ≤ r ≤ L1 + L2; cos θ2 = (r2 − L12 − L22)/(2L1L2), θ2 = ±acos (elbow-down +, elbow-up −); θ1 = atan2(y, x) − atan2(L2 sin θ2, L1 + L2 cos θ2). With a wrist: find W = hand − L3(cos φ, sin φ) first. Always verify by forward kinematics.
  • Workspace: a ring between |L1 − L2| and L1 + L2. Singularities at the edges (stretched θ2 = 0, folded θ2 = 180°): a direction of motion is lost, and joint speeds near them grow like 1/sin θ2.
  • Jacobian: v = J θ̇; J = [[−L1s1 − L2s12, −L2s12], [L1c1 + L2c12, L2c12]]; det J = L1L2 sin θ2; θ̇ = J−1 v; static joint torques τ = JT F for the force the hand exerts.
  • Joint torque: τ = m g r cos α, worst at horizontal (α = 0); sum every mass beyond the joint, each link at its centre; the base joint carries the most. Derate a servo to about 50 % of stall; τout = τmotor N η for geared motors; add Iα for acceleration.
  • Motion: joint space is quick and curved; Cartesian lines are straight but need IK at every step and a reachability check along the line. Trapezoid: ta = vmax/amax; long move T = D/vmax + ta (if D ≥ vmax2/amax); short move T = 2√(D/amax); give all joints the same T.
  • Precision: repeatability (scatter) vs accuracy (offset); tip error = r δθ; backlash and resolution are magnified by reach; deflection = FL3/3EI (cube of length; on edge is (h/b)2 stiffer); calibrate; encoders on the link side.
  • Grippers: parallel-jaw (friction), vacuum (F = ΔP A), soft (compliant). Grip condition μ N n ≥ m(g + a) SF, so N = m(g + a) SF/(μ n); check the actuator can supply N without crushing the object.
  • Safety: size for the payload limit; find pinch points; limit speed and force; hold the load when power fails (brake, non-back-drivable gearbox); a hardware stop; test slowly with clearance. Collaborative modes (from memory): monitored stop, hand guiding, speed and separation monitoring, power and force limiting.

Next, Robotics Fundamentals 10 closes the course with the part that makes a robot real and safe to run: power, safety and building your first robot. Battery sizing and runtime, wiring and fusing, emergency stops and safe testing, a short look at ethics, and a complete build plan with a parts list, which pulls together the mechanics, motors, sensors, control and behaviour of the nine chapters before it, and points on to Programming for Robotics.