What a beginner needs to know about the machines that weld car bodies, pack food and stack pallets, and how to program them.
How to read this guide
Each section starts with a plain definition, then gives you a diagram or a widget to play with, the ISO term where there is one, how the vendors name the same thing, and the mistakes beginners make. If you are new, read from the top. If you already know some of it, use the sidebar. The widgets compute what they show: drag an IK target and both elbow solutions follow, push a TCP along a line and watch the joint speeds climb near a singularity, step through a PLC handshake one edge at a time.
§ 1
What an industrial robot actually is
The standard calls it a reprogrammable, multipurpose manipulator. Each word in that definition rules something out.
ISO 8373 defines an industrial robot as an automatically controlled, reprogrammable, multipurpose manipulator, programmable in three or more axes, either fixed in place or mounted on a mobile platform, for use in industrial automation. Four properties in that definition separate a robot from the rest of the automation on the shop floor:
Automatically controlled
It follows a program. A fixed cam profile does not count, and neither does an operator pushing buttons in real time.
Reprogrammable
You can change what it does in software. A dedicated palletiser hard-wired to one product can't.
Multipurpose
The same arm can weld this year and pack boxes next year. Only the program and the end-effector change.
3 or more axes
Under the ISO definition, fewer than three programmable axes is motion control. A single linear actuator over a conveyor is not a robot.
The first one went to work in 1961: the Unimate, a hydraulic polar-coordinate arm built by Unimation (George Devol and Joseph Engelberger) and installed at General Motors in Trenton, New Jersey, where it unloaded hot die castings and welded them onto car bodies. The IFR's World Robotics 2025 report counts 4.66 million industrial robots in operation worldwide, 542,000 of them installed in 2024.
A robot is a programmable manipulator. A cobot is one built for collaborative applications. A mobile robot drives itself around. A service robot does useful work outside industrial automation.
§ 2
Anatomy
Six rotary joints in a row, a flange at the tip, and one point in space that the robot is actually positioning.
A six-axis articulated robot is built roughly like a human arm with an odd wrist. Working up from the floor: a base that turns about the vertical (J1), a shoulder (J2) that lifts the upper arm (link 2), an elbow (J3) that bends the forearm (link 3), and a wrist of three more rotary joints (J4, J5, J6) that orient the tool. At the tip is the tool flange, a machined face whose bolt pattern follows ISO 9409-1 on most arms. The pattern is sized to the robot, so a gripper or torch with the matching pattern bolts straight on.
TCP
Tool centre point: the point the robot actually positions, usually the tip of the gripper or torch, not the flange.
The TCP (tool centre point) is the point the robot is actually positioning: the fingertip of the tool, not the flange.
When you send the robot to (400, 200, 350) you are asking it to put the TCP there. Swap a 60 mm welding torch for an 80 mm sealant nozzle without changing the tool definition and every taught point is 20 mm off. That is why measuring the TCP is the first job on any new tool.
Reach, payload, repeatability, accuracy
Reach
mm
The maximum distance from the J1 axis to the wrist centre with the arm fully extended. Industrial arms range from about 500 mm (a FANUC LR Mate) to about 4.6 m (the long-reach FANUC M-2000iA). The usable workspace is smaller, because of the dead zone near the base and the poor dexterity at full stretch.
Payload
kg
The mass at the flange the robot can move at rated performance. It includes the gripper, the cable dress and any fixturing past the flange, not just the part. Small cobots start at 3 kg; the FANUC M-2000iA/2300 carries 2,300 kg.
Repeatability
±mm
How closely the robot returns to the same taught point, cycle after cycle, measured to ISO 9283. Industrial arms publish ±0.02 to ±0.1 mm, and it is the number on the front of every datasheet.
Accuracy
±mm
How close the robot gets to a point you calculated rather than taught. It is rarely on the datasheet and is many times worse than repeatability, because link tolerances, gearbox backlash, joint compliance and thermal drift all add up. It is the number that bites offline programming.
Watch out: payload includes the gripper
A UR10e is rated for 12.5 kg. A Robotiq 2F-85 weighs about 0.9 kg and a coupling plate about 0.2 kg; keep 10 % back as margin and you have roughly 10 kg left for the part. If the load's centre of gravity sits away from the flange, the allowed mass drops further, so read the payload diagram in the manual, not just the headline figure.
§ 3
Configurations
Five mechanical layouts cover almost every industrial job. Pick the one whose strengths match the work.
Each layout favours one kind of motion. A SCARA is stiff vertically and slightly compliant horizontally, which is what pushing a pin into a PCB needs. A delta hangs upside down with its motors on the fixed base, so the moving platform is light enough to accelerate at 10 to 15 g. A six-axis arm can put a tool anywhere in its reach at any angle, which is why it is the general-purpose choice. The sixth tile, the cobot, is a six- or seven-axis arm built for a particular kind of application rather than a separate layout.
Articulated (6-DOF)
6 revolute
Six rotational joints, shaped like a human arm. The default industrial robot.
The three arm joints (base, shoulder, elbow) put the wrist centre at a point in space; the three wrist joints (J4, J5, J6) orient the tool. When the wrist axes meet at one point (a spherical wrist), inverse kinematics has a closed-form solution.
The 2025 edition of ISO 10218 no longer uses the term “collaborative robot”. It talks about collaborative applications, and the risk assessment of the whole application decides what safeguarding you need. A UR10e running at full speed inside a fence is an ordinary industrial application. A large ABB IRB 6700 with validated speed and separation monitoring can be part of a collaborative one. The application decides, and the badge on the arm does not.
§ 4
Degrees of freedom
How many independent numbers it takes to say exactly where every part of the robot is.
A rigid body floating in space has six degrees of freedom: three translations (X, Y, Z) and three rotations (often called roll, pitch and yaw). That is why most industrial arms have six axes: it is the minimum that puts a tool at any point in reach, at any orientation.
3 DOF
Cartesian
Cartesian, cylindrical, polar
Position only. The mechanism fixes the orientation.
4 DOF
SCARA
SCARA
Position plus rotation about the vertical. Enough for top-down assembly.
6 DOF
Articulated in
Articulated industrial arms
Position plus any orientation. The default.
7+ DOF
Redundant arms
Redundant arms: KUKA LBR iiwa, Franka, or any six-axis arm on a linear track
One TCP pose has infinitely many joint solutions, so the controller can swing the elbow round an obstacle without moving the tool.
DOF, axes and joints are not always the same number
On a serial articulated arm they match. A delta robot has 3 DOF and three motors, yet you can count a dozen moving links, because the parallelogram arms are not independent. A seventh axis buys dexterity, not accuracy, so only pay for it when the cell needs the arm to reach round something.
§ 5
Coordinate frames
The robot knows nothing about the room. It knows a handful of named reference frames, and you set most of them up.
ISO 9787:2013 defines the standard set: World (the cell reference), Base (on the mounting surface), Mechanical interface (on the flange) and Tool (at the TCP). All of them are right-handed. Only the world frame is tied to gravity, with +Z pointing up. The base frame's +Z is normal to the mounting surface, so it points down on a ceiling-mounted arm, and the flange and tool frames have +Z pointing out of the flange. Every brand also gives you a programmable work-object frame fixed to the thing you are working on (a fixture, a pallet, a car body), so the whole program moves with the part when you re-measure that one frame.
How vendors name the same frames
Concept
ABB (RAPID)
KUKA (KRL)
FANUC (TP)
UR (URScript / PolyScope)
World
wobj0 / World
$WORLD
UFRAME[0] / WORLD
Base (no separate world)
Robot base
Base
$ROBROOT
World (fixed at the base)
Base
Flange (raw)
tool0
FLANGE
UTOOL[0] / faceplate
Tool flange (TCP offset 0)
Active tool
tooldata
$TOOL
UTOOL[1..n]
TCP (Installation)
Work object
wobjdata (uframe + oframe)
$BASE
UFRAME[1..n]
Feature (Plane / Point / Line)
Watch out: orientations do not copy between vendors
ABB stores orientation as a unit quaternion, UR as a rotation vector (axis times angle, in radians), and the others as three angles. KUKA's A, B, C and FANUC's W, P, R describe the same rotation sequence (Z, Y', X'' is the same matrix as fixed X, then Y, then Z), but KUKA lists the Z angle first and FANUC lists the X angle first, so A = R, B = P and C = W. Yaskawa and Mitsubishi have their own angle sets; check the order in the manual. Copy a target between brands without converting the orientation and the tool arrives at the right point, turned the wrong way.
§ 5b
Master the right-hand rule
Two panels: the right-handed world frame, then which way a joint turns when you jog it positive.
Every controller on this site uses right-handed frames. Point your right thumb along +X and your index finger along +Y; your middle finger gives +Z. In the world frame +Z points up, against gravity, so if you stand facing +X, +Y is on your left. Where the world origin sits and which way +X faces is up to the integrator. Hover, tap or tab to an axis in panel A and the matching finger lights up.
The same rule tells you which way a joint turns. Point your right thumb along the joint axis and your fingers curl the way positive rotation goes. Panel B is a SCARA-style arm seen from above, so both axes point out of the page and positive is counter-clockwise. Pick J1 or J2, press Rotate + or Rotate − and check the arm against the gold curl arrow. The vendor decides which way each axis is positive, so on a real arm you still check the manual or the direction marks on the casting.
A · World frame · right-hand rule
Why the right-hand rule
ISO 9787 defines robot coordinate systems as right-handed, and every controller on this site follows it. Point your thumb along +X and your index finger along +Y; your middle finger then gives +Z. Cross products, torque directions and rotation matrices only come out consistent if every frame obeys this.
+Xthumb
+Yindex finger
+Zmiddle finger; up, against gravity, in the world frame
Only the world frame is tied to gravity. The base frame's Z is normal to the mounting surface, so on a ceiling-mounted arm it points down. Hover, tap or tab to an axis to light the matching finger.
B · Joint rotation · positive vs negative
$ joint state
J1(limits -170° … 170°)0°
J2(limits -135° … 135°)0°
The gold curl arrow over the active joint shows the positive direction: thumb along the joint axis (+Z, out of the page), fingers curl counter-clockwise. On a six-axis arm only J1 is vertical; J2 and J3 turn about horizontal axes, so their curl is seen from the side.
SAFETY · before you jog
Before you press a joint jog key, work out which way positive turns for that joint, where its limit is and what the arm will sweep through on the way. Keep yourself, the pendant cable and anything you care about out of that arc. Teach in manual reduced speed (T1 on most controllers), where the TCP is limited to 250 mm/s, and keep the enabling device in your hand. The jog direction is never a safety function; the enabling switch, reduced speed and the safeguarding are.
At the teach pendant
When you jog, you are close to a powered arm. Press +J1 expecting it to swing away and it swings towards you instead, and the tool comes through the space you are standing in. Before the first press on a new arm, find the axis direction marks and check them against your right hand. Jog in manual reduced speed with the enabling device held, and stand where a wrong guess cannot reach you.
§ 5c
The eight equations to recognise
You do not need to derive them. You need to recognise them, because most of the vocabulary in a robot manual is one of these under another name.
The maths has not changed in decades; the names have. ABB, KUKA, FANUC, UR, Yaskawa, Kawasaki and Mitsubishi each have their own words, but a singularity, a work-object shift or an orientation interpolation is one of the eight cards below on every brand. Once you know the card, the manual reads much faster.
Each card says what it does, in plain words with no derivation, and where you will meet it: the pendant screen, error or RAPID data type where the formula turns up. Filter by family (kinematics, orientation, motion and dynamics) if the grid is too much at once.
filter:8 / 8
01KINEMATICS
Homogeneous transform
T = ⎡ R t ⎤
⎣ 0 1 ⎦
Legend · every character
T
the whole transform: position and orientation packed into one 4×4 matrix
R
3×3 rotation matrix: which way the frame is facing
t
translation [x, y, z]: where the frame's origin sits
0
row of zeros [0 0 0], padding
1
a one, which keeps the matrix square so transforms chain by multiplication
Real-world example
A gripper whose tip sits 100 mm out from the flange along the flange Z axis, with no extra rotation. R = identity, t = [0, 0, 100] mm. In RAPID that is the tframe of the tooldata: trans [0, 0, 100], rot [1, 0, 0, 0].
what it does ·Packs a 3×3 rotation R and a translation t into one 4×4 matrix, so moving from one frame to the next is a single matrix multiply.
you'll meet it ·Every "frame", every tool offset, every work object you ever define is one of these matrices.
final transform from the base frame (0) to the flange frame (n); multiply by the tool transform to reach the TCP
Tᵢ₋₁,ᵢ
one link's transform, which depends on joint angle θᵢ
θᵢ
current angle of joint i (radians inside the controller, degrees on the pendant)
n
number of joints, usually 6 on an ABB, KUKA or FANUC arm
·
matrix multiplication; the order matters
Real-world example
A six-axis arm parked at joints (0°, 45°, −30°, 0°, 60°, 0°). The controller multiplies the six link transforms in order, then the tool transform, and the result is the TCP pose you read on the pendant.
what it does ·Multiply the link transforms in order from base to flange, then add the tool. The answer is where the TCP is for a given set of joint angles, and there is exactly one answer.
you'll meet it ·The Cartesian position on the pendant. The controller recomputes it every interpolation cycle, a few milliseconds apart.
joint angle vector (q₁, q₂, … qₙ), what the servos are told
IK(·)
inverse-kinematics solver: closed-form for most industrial arms, numerical for the rest
T_target
the pose you want, as the 4×4 matrix from card #01
Real-world example
You teach a point 600 mm in front of the base and 200 mm above the table. IK finds several joint solutions for it. The configuration stored with the point (ABB confdata, KUKA Status and Turn, the FANUC config string) tells the controller which one you taught.
what it does ·Given a TCP pose, find joint angles that reach it. There can be none, one or several answers, which is why points carry configuration data.
you'll meet it ·Every linear move: MoveL, LIN, L, movel, Mvs. Choosing elbow-up or elbow-down is choosing one IK solution.
3×3 rotation matrix: turns a vector without stretching it
Rᵀ
transpose of R: rows become columns
I
identity matrix, the "do nothing" rotation, 1s on the diagonal
det(R)
determinant, a single number computed from the matrix
+1
must be +1; a determinant of −1 would be a mirror image, not a rotation
Real-world example
A 90° turn about Z gives R = [[0, −1, 0], [1, 0, 0], [0, 0, 1]]. Compute Rᵀ·R → identity. Compute det(R) → +1. So it is a proper rotation, not a reflection.
what it does ·A 3×3 matrix that turns a vector. Orthogonal with determinant +1, so it rotates without stretching or mirroring.
you'll meet it ·Underneath every frame, every tool, every orientation. Vendors hide it behind quaternion or Euler-angle wrappers.
05ORIENTATION
Euler / RPY angles
R = R_z(γ) · R_y(β) · R_x(α)
Legend · every character
α
roll, rotation about X (FANUC W, KUKA C)
β
pitch, rotation about Y (FANUC P, KUKA B)
γ
yaw, rotation about Z (FANUC R, KUKA A)
R_x(α), R_y(β), R_z(γ)
single-axis rotation matrices
·
read right to left about fixed axes (X, then Y, then Z), or left to right about moving axes (Z, then Y′, then X″): same matrix
Real-world example
A FANUC pose with W = 10°, P = 20°, R = 30° means R = R_z(30°)·R_y(20°)·R_x(10°). KUKA builds the same matrix from A, B, C as R_z(A)·R_y(B)·R_x(C), but lists the Z angle first. So the KUKA orientation is A = 30°, B = 20°, C = 10°. Typing 10, 20, 30 into A, B, C swaps the X and Z rotations.
what it does ·Three rotations about named axes. Easy to read, but the order of the rotations and the order the numbers are listed in both vary by vendor.
you'll meet it ·Copying a pose between brands. FANUC W-P-R and KUKA A-B-C are the same convention written in opposite order: A = R, B = P, C = W.
Vendor surface
KUKA A·B·C (Z, Y′, X″) · FANUC W·P·R (fixed X, Y, Z) · check the manual for Yaskawa and Mitsubishi
06ORIENTATION
Unit quaternion
q = (w, x, y, z) ‖q‖ = 1
Legend · every character
q
quaternion: four numbers describing one rotation
w
scalar part: w = cos(θ/2), where θ is the rotation angle
x, y, z
vector part: (axis_x, axis_y, axis_z) × sin(θ/2)
‖q‖
magnitude: √(w² + x² + y² + z²)
= 1
must be unit length; RAPID's NOrient() normalises an orient that has drifted
Real-world example
A 90° rotation about Z. θ = 90°, axis = (0, 0, 1). w = cos 45° = 0.707; (x, y, z) = (0, 0, 1) × sin 45° = (0, 0, 0.707). That is exactly the orient field you will see inside an ABB robtarget.
what it does ·Four numbers, one rotation, no gimbal lock. Interpolating between two quaternions (SLERP) turns the tool smoothly about a single axis.
you'll meet it ·Every ABB robtarget stores its orientation as a quaternion in orient [q1, q2, q3, q4], with q1 the scalar part.
Vendor surface
ABB orient [q1..q4] · UR rotation vector [rx, ry, rz] = axis × angle (a close relative)
07MOTION & DYNAMICS
Jacobian
v = J(q) · q̇ det(J) → 0 ⇒ singularity
Legend · every character
v
TCP velocity (6×1): 3 linear in m/s, 3 angular in rad/s
J(q)
Jacobian matrix (6×n), which depends on the current joint angles q
q̇
joint velocities, the time derivative of q, read "q-dot"
det(J)
determinant of a square (6×6) Jacobian; it is zero exactly when J loses rank
→ 0
approaches zero: J can no longer be inverted
⇒
mathematical "leads to" / "implies"
Real-world example
J5 at 0°, so the J4 and J6 axes line up. det(J) drops to zero. A small MoveL that needs the tool to turn about the missing axis now asks J4 and J6 for huge, opposite speeds, and the controller either slows the path or stops with a singularity error.
what it does ·Maps joint speeds q̇ to TCP velocity v. When J loses rank there is a direction the TCP cannot move in, and close to it a small TCP move needs very large joint speeds.
you'll meet it ·Wrist (J5 near 0°), elbow (arm at full stretch) and shoulder (wrist centre over the J1 axis): the three places linear moves get into trouble.
Vendor surface
SingArea \Wrist (RAPID) · singularity errors on every brand
accel phase: constant acceleration from zero to cruise (an S-curve rounds its corners)
─
cruise phase: constant speed (missing entirely on short moves)
▼
decel phase: braking back to zero
∫ v dt
integral of velocity over time: the area under the curve is the distance moved
Real-world example
A 50 mm MoveL at v1000 (1 m/s) with 5 m/s² acceleration. Reaching 1 m/s would take 100 mm of ramp up and 100 mm of ramp down, and the move is only 50 mm. The profile becomes a triangle that peaks at 0.5 m/s, and the move takes 0.2 s instead of the 0.05 s that 50 mm at 1 m/s suggests.
what it does ·A motor cannot jump to cruise speed. It ramps up, holds, then ramps down; on a short move the hold disappears.
you'll meet it ·Why short moves never reach the programmed speed, and why cutting the number of short moves saves more cycle time than raising v.
Start with #01, the homogeneous transform: the kinematics cards are chains of it. Then #02 and #03, forward and inverse kinematics, so you can move between joint space and Cartesian space. Orientation (#04 to #06) is what catches you when you copy poses between brands. You will reach for the Jacobian (#07) when a linear move stalls near a singularity, and the trapezoid (#08) every time you estimate a cycle time.
§ 6
Forward kinematics
Given the joint angles, where is the tool?
Forward kinematics is the easy direction. The encoders give you every joint angle, and you want the position and orientation of the TCP in the base frame. There is exactly one answer, and it is a short chain of matrix multiplications.
The usual way to write it down is with Denavit-Hartenberg (DH) parameters, a convention from 1955 that attaches a frame to each joint and describes each link with four numbers (twist, length, offset, angle). Multiply the link transforms in order, then the tool transform, and you have base to TCP. The controller does this every interpolation cycle, so you never do it by hand. What you do need to know is that the answer depends on the link lengths and the tool offset: change the gripper without changing the tool data and the computed TCP is wrong.
45°
-160°0°160°
-60°
-120°0°120°
-30°
-150°0°150°
TCP pose
X321.7 mm
Y39.0 mm
φ(tool pitch about Z)-45.0°
d(distance from base)324.0 mm
Worked example: a planar three-link arm
For the arm above: x = L₁ cos θ₁ + L₂ cos(θ₁+θ₂) + L₃ cos(θ₁+θ₂+θ₃), and y is the same with sin. Each joint adds one more term, at the sum of all the angles before it. The TCP can reach anywhere inside the circle of radius L₁+L₂+L₃ round the base.
§ 7
Inverse kinematics
Given where you want the tool, what are the joint angles? There may be none, one, several or infinitely many answers.
IK is the hard direction. A six-axis arm has a closed-form solution when three consecutive axes meet at one point or are parallel (Pieper's condition). A spherical wrist meets it, and so does the UR layout with its three parallel axes. Such an arm has up to eight joint solutions for one TCP pose: two shoulder choices, two elbow choices and two wrist choices.
Click or drag inside the diagram to move the target, or focus it and use the arrow keys. Green ring: maximum reach (L1+L2). Red inner ring: minimum reach (|L1-L2|).
Solutions
Why two solutions?
Inside the ring there are two ways to fold the arm. A six-axis arm with a spherical wrist has up to 8: shoulder front or back, elbow up or down, wrist flip or no flip. The configuration stored with each point (ABB confdata, KUKA Status and Turn, the FANUC config string) picks one, so the arm does not flip between waypoints.
Every controller stores which solution a point was taught in. ABB calls it confdata, KUKA stores STATUS and TURN, and FANUC writes a configuration string such as F U T, 0, 0, 0. Switch the check off (ABB ConfL \Off, for example) and the controller takes whichever solution is nearest the current joints. Between two close points that can mean a 180° wrist flip, with the cable dress, and sometimes the tool, going into the fixture.
Arms that fail Pieper's condition need numerical IK
UR arms have an offset wrist, but their shoulder, elbow and first wrist axes are parallel, so they still have a closed-form solution with up to eight answers. An arm with no three axes meeting or parallel has none. Its controller iterates towards an answer (Newton-Raphson, damped least squares), which is slower and can fail to converge near a singularity.
§ 8
Motion types
Three primitives: joint, linear and circular. Almost every move you program is one of them.
Each vendor names them differently, but every controller has all three:
Joint move (PTP)
MoveJ
Every joint moves from its start angle to its end angle, and they all start and finish together. The TCP traces a curve that you do not control. Usually the quickest way between two points, so use it for moves through free air.
Linear move (LIN)
MoveL
The TCP follows a straight line at the programmed speed. The controller solves IK at every interpolation step and drives each joint at whatever speed the line needs. Use it for weld seams, glue beads, cutting paths and the last few millimetres into a fixture.
Circular (CIRC)
MoveC
The TCP follows an arc through a via point to an end point. Use it for pipe welds and rounded contours, where a string of short linear moves would leave flats.
ABB v1000 is 1000 mm/s. KUKA $VEL.CP is in m/s, so 0.5 is 500 mm/s, and it only applies to LIN and CIRC; PTP speed is a percentage in $VEL_AXIS. FANUC accepts mm/sec, cm/min, inch/min or sec (move time). URScript v= is rad/s for movej and m/s for movel. Yaskawa VJ is a percentage, while V on MOVL is a TCP speed. Check the unit before you copy a number from one brand to another.
§ 9
Blending and velocity profiles
Two settings that turn a string of stop-and-go moves into a smooth, quick cycle.
Blending: rounding the corners
A robot that stops dead at every taught point wastes cycle time. Blending lets the controller start the next move before the current one has reached its point, so it rounds the corner instead. You give a zone round the corner point; once the TCP is inside it, the controller is free to leave the taught path. The robot never actually reaches a blended point, so a point where something must happen exactly, such as a gripper closing on a part, gets fine.
z40
Taught path (fine: full stop at P2)
Executed path with a 40 mm zone
ABB
zonedata, mm
z40
KUKA
$APO.CDIS, mm
$APO.CDIS=40 … LIN P2 C_DIS
FANUC
CNT 0 to 100, not mm
CNT n: size depends on speed
UR
r= blend radius, m
r=0.040
Velocity profiles: trapezoidal or S-curve
No move runs at one speed. The controller ramps up from zero, cruises and ramps back down, and the shape of the ramp changes how the arm behaves. A trapezoidal profile switches acceleration on and off instantly, so jerk, the rate of change of acceleration, is infinite at each corner. The structure rings, the gripper shakes and a precise part takes longer to settle. An S-curve ramps the acceleration itself in and out, so jerk stays finite.
Velocity (mm/s)
Acceleration (mm/s²)
Position (mm)
Acceleration jumps at the start and at each corner, so jerk (the rate of change of acceleration) is infinite there for an instant. Peak speed 83 mm/s, peak acceleration 208 mm/s². Easy to compute, but every jump kicks the arm and the gripper and sets them ringing.
Slower on paper, sometimes quicker on the line
With the same speed and acceleration limits, an S-curve move takes a little longer than a trapezoid. It shakes the arm less, though, so where the cycle waits for the tool to settle before a measurement or a placement, the S-curve can finish the whole step sooner.
§ 10
Singularities
Poses where the arm can still move but the TCP cannot go in some direction, and close by, small TCP moves need huge joint speeds.
A singularity is a pose where the Jacobian, the matrix that turns joint speeds into TCP speed, loses rank. There is then a direction the TCP cannot move in, and near the pose a small TCP move in that direction needs very large joint speeds. A real controller reacts by slowing the path sharply or stopping the move with an error.
Wrist singularity
J5 ≈ 0
The J4 and J6 axes line up, so the wrist loses one rotation. The one you meet most often, because it can happen anywhere in the workspace.
Shoulder singularity
wrist on J1 axis
The wrist centre passes over or under the J1 axis, where turning J1 no longer moves it. Keep linear paths away from the space above the base.
Elbow singularity
arm fully extended
The arm is at full stretch or fully folded, and the elbow-up and elbow-down solutions become one. The easiest to avoid: do not reach all the way out.
-128 mm
TCP commanded at a constant 80 mm/s along Y = 60 mm. Near X = 0 the arm is almost folded; at the right-hand end it is almost stretched. Either way det(J) heads for 0 and the joint speeds climb.
Getting past a singularity
The textbook fix is a damped least-squares inverse: near the singularity it accepts a small TCP error in exchange for finite joint speeds, which is what the widget above does. Vendors do not publish what their controllers do internally, but some give you a switch. In RAPID, SingArea \Wrist lets the controller change the tool orientation slightly so a linear move can pass a wrist singularity. Where the path does not have to be straight, the plain fix is a joint move through that region.
§ 11
End-effectors (EOAT)
The tool on the flange, the part that does the actual work.
Without an end-effector the robot is an expensive way of moving a flange around. The main families:
Mechanical grippers
Parallel-jaw (two-finger) grippers for rigid parts: Robotiq 2F-85, Schunk PGN-plus-P, OnRobot RG2/RG6. Three-finger adaptive grippers for odd shapes (Robotiq 3-Finger). Set the grip force with care: too little and the part slips out on a fast move, too much and it is marked or crushed.
Vacuum (suction)
Suction cups fed either by a venturi ejector on compressed air (Piab piCOBOT, for example) or by an electric vacuum pump built into the gripper (Schmalz ECBPi). Good on boxes, sheet metal and glass; poor on porous or oily surfaces.
Magnetic
Electromagnets release quickly but heat up if they hold for long. Electro-permanent magnets (Magswitch, HVR MAG) switch on or off with a current pulse and then hold the part on permanent-magnet force with no power. Ferrous parts only.
Specialty
Spot-weld guns with their own transformer, MIG and TIG torches, rotary bell paint atomisers (on ABB IRB 5500 paint robots, for example), spindles, dispensing valves, screwdrivers and compliant deburring tools (ATI CDB).
Tool changers
ATI Industrial Automation and Stäubli (MPS) are two of the best-known makers. A master plate on the flange locks pneumatically to any number of tool plates and passes air, fluid, electrical signals and even fieldbus across the joint. The changer's own mass comes off your payload, but one robot can then weld, dispense and inspect in the same cell.
§ 12
Programming methods
Five ways to tell a robot what to do. Production cells usually combine more than one.
Teach pendant + jog
The traditional method: jog the arm to a pose with the pendant keys and record it. Slow, at something like half a minute a point, but the point is taught on the real part, so calibration errors do not come into it. Still how most first installs, recoveries and final touch-ups are done.
Lead-through / hand-guiding
You take hold of the arm and push it to the pose. Standard on cobots (UR Freedrive, FANUC CRX hand guiding, Doosan). Quick for short programs; for precise points you usually finish with a jog.
Offline programming (OLP)
The cell is modelled in software (ABB RobotStudio, KUKA.Sim, FANUC ROBOGUIDE, Delmia, RoboDK), the program is written and simulated against a virtual controller, then loaded onto the robot. The realistic way to build programs with hundreds of points or several robots sharing a space. Expect to touch up points on the real cell, because the real robot and fixtures never match the model exactly.
Graphical / block-based
UR PolyScope, the FANUC CRX tablet, Yaskawa Smart Pendant, ABB Wizard. You build a tree of blocks and the controller turns it into its own language (a PolyScope program runs as URScript). The easiest start for a non-programmer, and the first thing to get in the way when the job does not fit the blocks.
ROS and ROS 2: research and one-off systems
Used in research labs, mobile manipulation and vision-heavy jobs. Drivers exist for ABB, FANUC, KUKA, Universal Robots and Yaskawa, many through ROS-Industrial. Production lines still mostly run the vendor language, which the vendor supports and which the safety configuration and fieldbus set-up are built around.
§ 13
Safety
The standards that decide how people work next to machines weighing a tonne or more.
ISO 10218-1:2025 covers what the robot maker must build into the robot. ISO 10218-2:2025 covers what the integrator must do to turn it into a safe cell or application. The 2025 revision moved the collaborative material from ISO/TS 15066, including the body-region contact limits, into ISO 10218-2. None of the robot program is a safety function: the e-stop, the guarding, the enabling device and any speed or force limits belong to the safety system, which is designed and validated on its own.
Stop categories (IEC 60204-1 §9.2.2)
Cat 0: STO
Cat 1: SS1
Cat 2: SS2
Category 1SS1: controlled, then power offPOWER REMOVED AFTER STOP
The drives brake the arm under control, usually along its path, and power is removed once it has stopped. Also allowed for an emergency stop, and the usual choice when the arm has to stay on its path while it stops.
Curves are illustrative. Real stopping times and distances depend on the arm, payload, speed and extension; take them from the robot manual's stopping-distance data.
Watch out: Category 2 is not an emergency stop
An emergency stop under ISO 13850 must be Category 0 or Category 1, because power has to come off in the end. An e-stop wired as Category 2 does not comply. Category 2 (SS2) belongs to monitored stops that let the robot resume without a restart, which is what the safety-rated monitored stop in a collaborative application is built on.
The four ways to share a workspace
ISO/TS 15066 and the 2011 edition of ISO 10218 named four kinds of collaborative operation. The 2025 edition reorganises the wording around collaborative applications, but these four are still how integrators describe the options.
Safety-rated monitored stop
The robot stops and holds position, drives on and standstill monitored, while a person is in the shared space. It carries on by itself once they leave.
Hand-guiding
The operator moves the robot by hand through a guiding device near the tool. The speed limit comes from the risk assessment; 250 mm/s is a common starting value.
Speed and separation monitoring (SSM)
A safety-rated sensor (a laser scanner such as the SICK microScan3, a safety camera system or a pressure mat) measures how close a person is. The robot slows as they approach and stops before contact is possible.
Power and force limiting (PFL)
Contact is allowed, but the force and pressure on the body must stay below the limits in the chart below. That depends on the robot, the tool, the speed and which part of the body could be hit.
Power and force limits (ISO/TS 15066 Annex A)
These values come from the pain-onset study behind ISO/TS 15066, run by the University of Mainz for the German social accident insurance (DGUV). They are quasi-static limits, for a body part clamped between the robot and something solid. Transient limits, for a free impact where the body can move away, are twice these values, except that no transient contact is allowed with the skull, forehead or face.
Body region
Force (N)
Pressure (N/cm²)
Skull / foreheadno transient contact
130
130
Faceno transient contact
65
110
Neck
150
140
Back & shoulders
210
160
Chest
140
120
Abdomen
110
140
Pelvis
180
210
Upper arm & elbow
150
190
Lower arm & wrist
160
180
Hand & fingers
140
190
Thigh & knee
220
220
Lower leg
130
210
Quasi-static (clamping) limits from ISO/TS 15066 Annex A, Table A.2, now part of ISO 10218-2:2025. Pressure is the lowest value among each region's listed areas. Transient (free impact) limits are twice these, except that no transient contact is allowed with the skull, forehead or face.
PL e is not SIL 4
ISO 13849 grades safety functions as Performance Levels a to e. IEC 62061, the machinery standard based on IEC 61508, uses Safety Integrity Levels 1 to 3. They map roughly as PL d to SIL 2 and PL e to SIL 3. SIL 4 exists in IEC 61508 but not in machinery safety. Robot safety functions are usually specified at PL d, Category 3 (light curtains, area scanners), with PL e, Category 4 where the risk assessment calls for it.
§ 14
PLC ↔ Robot integration
How the PLC tells the robot which program to run, and how the robot reports back that it has finished.
In most cells the PLC runs the sequence: conveyors, fixtures, sensors and the robot. The robot runs the program the PLC asks for, reports when it has finished and waits for the next request. ABB, KUKA, FANUC, UR and Yaskawa cells all use some version of the six-step handshake below; the signal names change. Click a step or drag the scrubber to walk through it.
Step 1
The PLC writes the program number as a binary word. FANUC: PNS1 to PNS8 on UI[9] to UI[16], then a PNSTROBE pulse on UI[17]. KUKA: $PGNO. ABB: a group input that your RAPID main routine reads.
0.1 s
How the major vendors name those signals
Step
FANUC (UI/UO)
KUKA (Auto External)
ABB (System I/O)
UR (registers)
Program number
UI[9-16] PNS1..8 + UI[17] PNSTROBE
$PGNO
Group input read in RAPID
GP register (128-255)
Start
UI[18] PROD_START
$EXT_START
Start at Main
GP register, or "play" on the Dashboard Server
Busy / running
UO[3] PROGRUN
$PRO_ACT
Cycle On
GP register your program writes
At home
UO[7] ATPERCH
$IN_HOME
(RAPID-defined)
GP register your program writes
Faulted
UO[6] FAULT
$STOPMESS
(RAPID-defined)
GP register your program writes
Enable / cmd OK
UO[1] CMDENBL, UI[8] ENBL
$MOVE_ENABLE
Motors On State
(not built in)
The PLC side of the handshake in Structured Text
On the PLC side this is a small state machine: write the program number, raise START, wait for BUSY, then wait for DONE with a watchdog. A CASE statement is the usual way to write it. See the matching entry in the ST Language Guide (control-flow → CASE) and the Symbol Reference (TON timers for the wait-for-done watchdog).
Structured Text (IEC 61131-3)
(* PLC side of the robot handshake. Mirrors the timing diagram above.
The watchdog is called on every scan: a TON only times while it is called. *)
WatchdogTimer(IN := (State = WAIT_DONE), PT := T#30S);
CASE State OF
IDLE:
IF NewJob THEN
ProgNo := JobNumber; (* write program number bits *)
State := REQ_START;
END_IF;
REQ_START:
Start := TRUE; (* raise edge on START output *)
IF Robot_Busy THEN (* robot acknowledged *)
State := WAIT_DONE;
END_IF;
WAIT_DONE:
Start := FALSE; (* drop START once Busy is high *)
IF Robot_Done THEN
State := CLEANUP;
ELSIF WatchdogTimer.Q THEN
State := FAULT; (* robot took too long *)
END_IF;
CLEANUP:
ProgNo := 0;
State := IDLE;
FAULT:
(* alarm, operator intervention *)
;
END_CASE;
Which fieldbus carries the signals
Bus
Governance
Typical cycle
Robot OEM support
PROFINET RT
PI
a few ms
Common on ABB, KUKA, FANUC, UR and Yaskawa controllers, often as an option
EtherNet/IP
ODVA
set by the RPI, a few ms and up
Common on the same controllers; the usual choice with Rockwell PLCs
EtherCAT
EtherCAT TG
well under 1 ms
Mostly inside drive systems; check your controller options for a PLC link
Modbus TCP
Modbus Org
polled, not deterministic
UR has a built-in Modbus TCP server on port 502
A standard fieldbus is not a safety fieldbus
A PROFINET frame can be lost, delayed or corrupted, and the standard protocol will not always notice. E-stop, gate, light-curtain and reduced-speed signals need a safety protocol on top: PROFIsafe over PROFINET, CIP Safety over EtherNet/IP, FSoE over EtherCAT. Each adds its own CRC, sequence counter, watchdog and safe address. This is the black channel principle: treat the network as unreliable and let the safety layer detect every way a message can go wrong. These protocols are rated for use up to SIL 3 and PL e.
§ 15
Applications
The job decides the robot. These are the usual pairings.
The everyday job. A vision-guided delta on a packaging line picks well over a hundred items a minute.
Epson SCARA, ABB IRB 360 FlexPicker
Palletising
4- or 5-axis palletiser, or a heavy-payload six-axis arm
A palletising arm keeps the tool flange horizontal by its mechanism, so it needs fewer axes. Fewer wrist joints also means less to wear out under heavy cases.
FANUC M-410, KUKA KR QUANTEC PA
Spot welding
High-payload six-axis arm, often in the 150 to 250 kg class
A servo gun with its transformer is heavy and long, and the arm has to swing it fast between spots. That is why body shops are full of big arms.
FANUC R-2000iC, ABB IRB 6700, KUKA KR QUANTEC
Arc welding
Mid-payload slim-wrist 6-DOF, with cable-thru-wrist
Far less payload than spot welding, but the wrist has to be slim to get the torch into tight corners, with the hose package routed through it.
FANUC ARC Mate, Yaskawa MA1400/MA2010
Painting
Explosion-proof 6 or 7-DOF with hollow-arm paint routing
A paint booth is a hazardous area, so the robot must be certified for it (ATEX in the EU). Paint robots are built with pressurised or intrinsically safe internals.
ABB IRB 5500, FANUC P-250iB
Machine tending
Mid-payload 6-DOF or cobot, often with dual EOAT
Loads blanks into a CNC machine, press or moulding machine and takes finished parts out. A double gripper swaps finished for raw in one visit, so the machine waits less.
UR10e, FANUC LR Mate 200iD, Doosan H2017
Assembly
SCARA (in-plane) or 6-DOF cobot (compliant)
Peg-in-hole, snap fits, meshing gears. A force/torque sensor (Robotiq FT 300, ATI Mini45) lets the robot feel the part going in.
Epson T-series, UR5e + Robotiq FT-300
Bin picking
6-DOF + 3D vision + force sensing
Harder than it looks. Finding the part is only the start: the arm and gripper must reach it without hitting the bin, and the last few parts in the corners need a plan of their own.
ABB / FANUC + Photoneo MotionCam-3D or Pickit
§ 16
Pick a brand, write some code
Every vendor has its own language for the same primitives. Pick the one your plant runs from the bar at the top of the page.
Pick a vendor in the bar at the top to open its module, or choose one from the directory below.