Skip to content
TryPLC

Industrial Robotics

Industrial robots,
from the ground up.

Everything a beginner needs to understand the machines that build cars, package food, and stack pallets.

How to read this guide
Each section follows the same template — a one-line plain-English definition, a labelled diagram or interactive widget you can play with, the proper technical terminology (per ISO where one exists), a callout for how different vendors name the same thing, a real industrial example, and the one or two things that trip beginners up. Read top-to-bottom if you're new; jump via the sidebar if you already know parts. Every interactive widget is real — drag a TCP target, watch joint speeds spike near a singularity, scrub a handshake timing diagram.
§ 1

What an industrial robot actually is

A programmable, multi-purpose manipulator — that's the definition the standard uses, and every word matters.

ISO 8373:2021 defines an industrial robot as “an automatically controlled, reprogrammable, multipurpose manipulator, programmable in three or more axes, which can be either fixed in place or mobile for use in industrial automation applications.” Pull that apart and you have the four properties that separate a robot from any other piece of factory automation:

Automatically controlled

It follows a program, not a fixed cam profile and not a human 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 hardware can weld today, paint next month, and pack boxes next year — only the program and end-effector change.

3 or more axes

Below three axes it's “motion control”, not a robot. A single linear actuator on a conveyor isn't a robot.

The world had its first one in 1961 — the Unimate, a hydraulic polar-coordinate arm built by Unimation (George Devol & Joseph Engelberger) and installed at General Motors in Trenton, New Jersey, where it pulled hot die-cast parts and spot-welded them. Today, the IFR puts the global operational stock at 4.66 million industrial robots, with 542,000 new installations in 2024 alone.

A robot is a programmable manipulator. A cobot is one that can run in a collaborative mode. A mobile robot moves around. A service robot is anything else not bolted to a factory floor.

§ 2

Anatomy

Six rotational joints in a row, a flange at the tip, and one specific point in space the robot is actually positioning.

A six-axis articulated robot looks roughly like a human arm with a slightly weird wrist. From the ground up, you'll meet a base that rotates about the vertical (J1), a shoulder (J2) that lifts an upper arm (link 2), an elbow (J3) that bends a forearm (link 3), and a wrist cluster of three more rotational joints (J4, J5, J6) that orient the tool. At the very tip is the tool flange — a precision-machined face with a bolt circle that follows ISO 9409-1, the same on every brand so any gripper or torch with the matching pattern can bolt on.

TCP+X+Z+Y (out)ISO 9787 — right-handed, +Z upJ1J2J3J4-6
TCP

Tool Centre Point. The actual point the robot is positioning — typically the tip of the gripper, not the flange.

The TCP — Tool Centre Point — is the actual point the robot is positioning. It's the “fingertip” you care about, not the flange.

When you tell a robot to move to (400, 200, 350) you're telling it to put the TCP there — not the flange. If you swap a 60 mm-long welding torch for an 80 mm-long sealant nozzle, every taught point becomes 20 mm off until you update the tool definition. This is why “TCP calibration” is the first practical task on any new tool.

Reach, payload, repeatability, accuracy

Reach

mm
The maximum distance from the centre of J1 to the wrist centre, with the arm fully extended. Industrial arms range from ~500 mm (FANUC LR Mate desktop) to 4.6 m (FANUC M-2000iA heavy-payload). The actual usable workspace is smaller — there's a dead zone near the base and at full stretch.

Payload

kg
The mass at the tool flange the robot can move at rated speed. Includes the gripper. Includes the cabling. Includes any extra fixturing past the flange. Tiny cobots start at 3 kg; the FANUC M-2000iA/2300 carries 2,300 kg.

Repeatability

±mm
How close to the same point does it return on every cycle? Measured per ISO 9283. Industrial arms publish ±0.02–0.1 mm. This is what vendors quote loudest.

Accuracy

±mm
How close to the commanded point does it actually get the first time, before any teach? Almost never published. Typically 5–20× worse than repeatability because of link tolerances, gearbox backlash, joint compliance, and thermal drift.
Watch out — payload includes the gripper
A UR10e is rated 12.5 kg payload. A Robotiq 2F-85 weighs ~0.9 kg, a coupling plate adds ~0.2 kg, and you typically reserve ~10 % dynamic margin for acceleration. That leaves ~10 kg for your actual workpiece. Centre-of-gravity offset further derates the arm — always read the vendor's payload diagram, not just the headline number.
§ 3

Configurations

Five shapes solve almost every industrial task. Pick the one whose mechanical bias matches the work.

Robot designers don't pick joint layouts at random — each configuration is biased toward a particular kind of motion. SCARA is rigid vertically and compliant horizontally because that's how PCB insertion works. Delta is upside-down because keeping the motors still and the moving platform light is how you reach 100 g of acceleration. A 6-DOF articulated arm has the same joint count as a human arm because it solves the same general-purpose positioning problem.

Articulated (6-DOF)

6 revolute

Six rotational joints, shaped like a human arm. The default industrial robot.

Three "arm" joints (base, shoulder, elbow) reach the wrist centre to a point in space; three "wrist" joints (J4/J5/J6) orient the tool. A spherical wrist (three axes meeting at one point) keeps the inverse-kinematics math tractable.

Spot/arc weldingPaintingAssemblyMachine tendingPalletising
Workspace
Irregular sphere
Payload
3 kg → 2,300 kg
Reach
500 mm → 4.6 m
Repeatability
±0.02 → ±0.1 mm
Examples
ABB IRB 6700, FANUC R-2000iC, KUKA KR FORTEC
Cobot vs industrial — the regulatory distinction
Per ISO 10218-1:2025, a collaborative robot is one purpose-designed for use in a collaborative application. It is not a separate class of machine. A UR10 running inside a fence at full speed is operating as a regular industrial robot. A heavy ABB IRB 6700 with a properly-validated speed-and-separation monitoring scheme is operating collaboratively. Mode, not metal, defines “cobot”.
§ 4

Degrees of freedom

The number of independent variables you need to fully specify the robot's configuration.

A free rigid body floating in 3D space has six degrees of freedom: three translations (X, Y, Z) and three rotations (often called roll, pitch, yaw). That's why most industrial arms are 6-DOF — exactly enough to place the tool anywhere within reach, at any orientation.

3 DOF

Cartesian

Cartesian, cylindrical, polar

Position only. Orientation is fixed by the mechanism.

4 DOF

SCARA

SCARA

Position + rotation about the vertical. Enough for top-down assembly.

6 DOF

Articulated in

Articulated industrial arms

Position + arbitrary orientation. The default.

7+ DOF

Redundant arms

Redundant arms — KUKA LBR iiwa, Franka, UR e-Series (with rail)

Same TCP pose can be reached with infinitely many joint configurations — the controller can dodge obstacles without disturbing the tool.

DOF ≠ axes ≠ joints — usually
For a serial articulated arm they coincide. A delta robot has 3 DOF but 9-ish visible links because the parallelograms move together — you only command 3 motors. A 7-DOF arm isn't more accurate; it's more dexterous. Don't pay for extra DOF you don't need.
§ 5

Coordinate frames

The robot doesn't know where anything is in “the room” — it knows about a small family of named reference frames you set up.

ISO 9787:2013 defines the standard set: World(cell-level reference), Base (at the robot mounting surface), Mechanical interface (at the flange), and Tool(at the TCP). Every frame is built on the right-hand rule, with +Z pointing opposite to gravity. Every brand also adds a programmable work-object frame attached to whatever you're working on — a fixture, a pallet, a car body — so the whole program can shift with the workpiece without re-teaching anything.

WorldBaseFlangeTool (TCP)Work-objISO 9787 — right-handed, +Z opposite gravity

How vendors name the same frames

ConceptABB (RAPID)KUKA (KRL)FANUC (TP)UR (URScript / PolyScope)
Worldwobj0 / World$WORLDUFRAME[0] / WORLDBase (no separate world)
Robot baseBase$ROBROOT(centre of J1)Base
Flange (raw)tool0$NULLFRAME / FLANGEUTOOL[0] / Faceplate(implicit)
Active tooltooldata$TOOLUTOOL[1..n]TCP (Installation)
Work objectwobjdata (uframe + oframe)$BASEUFRAME[1..n]Feature (Plane / Point / Line)
Watch out — orientations don't port between vendors
ABB stores orientation as a unit quaternion. KUKA, FANUC, Yaskawa, and Mitsubishi use Euler angles — but with different conventions (KUKA: ZY'X'', FANUC: fixed XYZ, Yaskawa: XYZ). UR uses axis-angle (rotation vector). Pasting a target from one brand to another without converting the orientation is the single most common offline-programming bug.
§ 5b

Master the right-hand rule

Two interactive panels: the world frame XYZ — then how individual joints rotate positive or negative without surprising you.

Every industrial controller agrees on one thing: world coordinates are right-handed. +X points forward from the operator, +Y goes across to the operator's left, and +Z points up, always opposite to gravity. Hover the axes in panel A — the matching finger in the right-hand schematic lights up.

The same rule decides which way each joint rotates. Point your right thumb along the joint's axis (for a top-mounted base, that's +Z out of the page). Your fingers curl in the direction the controller calls positive. Panel B shows it live — pick J1 or J2, press Rotate + or Rotate −, and watch the gold curl-arrow match the right-hand rule.

A · World frame · right-hand rule
+Xforward+Yacross+ZupRIGHT HANDthumb · Xindex · Ymiddle · ZISO 9787 · right-handed · +Z opposite gravity
Why the right-hand rule

Industrial robotics is dominated by ISO 9787:2013. Every controller — ABB, KUKA, FANUC, Universal Robots, Yaskawa, Kawasaki — uses a right-handed world frame with +Z pointing opposite to gravity. That's not a styling choice: it's what keeps cross products, torque vectors and rotation matrices consistent between brands.

+Xforward, the line the operator faces
+Yacross — to the operator's left, when +X is forward
+Zup, opposite gravity, never optional

Hover an axis in the diagram to highlight the matching finger.

B · Joint rotation · positive vs negative
top-down view · looking along −Z · +X → · +Y ↑+X+Y+Z outJ1J2TCP
Joint state
J1(limits -170° … 170°)
J2(limits -135° … 135°)
The gold curl arrow over the active joint always shows the positive direction — the way the right-hand rule says rotation goes with the thumb pointing along the joint axis (+Z, out of the page).
SAFETY · before you jog
Before pressing a jog button in joint mode, always check which direction the right-hand rule calls positive for that joint, where the limit fan ends, and where the arm will swing through. A J1 jog at full speed can sweep the tool through a 3-metre arc in under a second. Operator, teach-pendant cable, light curtain — all of these should be on the opposite side of the rotation, never inside it.
Why this matters at the teach pendant
Jogging is the highest-risk operation in a cell after a manual fault recovery. If you start a +J1 jog assuming it goes one way and it goes the other, the tool can swing through the operator instead of away. Every brand prints joint direction stickers on the arm next to the joint axis arrow — match the arrow to your right-thumb pose before you press the button.
§ 5c

The eight equations to recognise

You don't need to derive them. You need to recognise them on a vendor page, because every controller word is one of these in disguise.

Robotics math has been stable for fifty years. The names change between ABB, KUKA, FANUC, UR, Yaskawa, Kawasaki and Mitsubishi — the equations do not. When a brand says orientation drift, singularity, work-object shift or quaternion slerp, they are pointing at one of the eight cards below. Knowing the math is how you read a manual without getting lost in branded vocabulary.

Each card answers two questions: what does it do?— in plain English, no derivation — and when will you actually meet it?— the real teach-pendant button, error message or RAPID type where the formula shows its face. Filter by family (kinematics, orientation, motion & dynamics) if the grid feels dense.

filter:8 / 8
01KINEMATICS

Homogeneous transform

T = ⎡ R  t ⎤
    ⎣ 0  1 ⎦
Legend · every character
T
the whole transform — "place + facing" packaged into one 4×4 matrix
R
3×3 rotation matrix — which way the frame is facing
t
3-vector translation [x, y, z] — where the frame's origin sits
0
row of zeros [0 0 0] — structural padding
1
scalar one — keeps the matrix square so chains multiply
Real-world example

A gripper bolted 100 mm forward of the flange, no extra rotation. R = identity, t = [100, 0, 0] mm. That is literally a tooldata you type into RAPID.

what it does · Combines a 3×3 rotation R and a 3-vector translation t into one 4×4 matrix. The single workhorse of robotics.
you'll meet it · Every "frame", every tool offset, every work object you ever define is one of these matrices.
Vendor surface
tooldata · wobjdata · $TOOL · $BASE · UTOOL · UFRAME
02KINEMATICS

Forward kinematics

T₀ₙ = T₀₁(θ₁) · T₁₂(θ₂) · ⋯ · Tₙ₋₁,ₙ(θₙ)
Legend · every character
T₀ₙ
final transform — from base frame (0) to TCP frame (n)
Tᵢ₋₁,ᵢ
one link's transform — depends on joint angle θᵢ
θᵢ
current angle of joint i (radians inside the controller, degrees on the pendant)
n
number of joints — usually 6 on a classic IRB / KUKA / FANUC arm
·
matrix multiplication — order matters, never commutative
Real-world example

A 6-axis arm parked at joints (0°, 45°, −30°, 0°, 60°, 0°). The controller multiplies six per-link transforms in order — out comes the TCP pose you read on the pendant.

what it does · Multiply the per-link transforms in order from base to flange. Result: where the TCP is, given the joint angles.
you'll meet it · Whenever the teach pendant shows you "current position" — the controller just ran this 250+ times per second.
Vendor surface
CRobT() · $POS · CURJPOS · get_actual_tcp_pose()
03KINEMATICS

Inverse kinematics

q = IK(T_target)
Legend · every character
q
joint angle vector (q₁, q₂, … qₙ) — what gets sent to the motors
IK(·)
inverse-kinematics solver — brand-specific geometry, sometimes closed-form, sometimes numerical
T_target
the pose you want — the same 4×4 matrix from card #01
Real-world example

You teach a point P 600 mm in front of the base, 200 mm above the table. IK returns several joint vectors — the controller picks "elbow-up" because that is how the previous point was solved.

what it does · Given a desired TCP pose, what joint angles get you there? Hard problem — usually multiple solutions exist.
you'll meet it · Every MoveL / LIN / L / movel / Mvs. Choosing elbow-up vs elbow-down is exactly choosing one IK solution.
Vendor surface
CalcJointT() · INV_KIN · solve(pose) · get_inverse_kin()
04ORIENTATION

Rotation matrix

Rᵀ R = I    det(R) = +1
Legend · every character
R
3×3 rotation matrix — re-orients a vector without stretching it
Rᵀ
transpose of R — rows become columns
I
identity matrix — "do nothing" rotation, 1s on the diagonal
det(R)
determinant — single number summarising the matrix
+1
must be positive — a determinant of −1 would mean a mirror flip, 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 re-orients a vector. Orthogonal and unit-determinant — it rotates without stretching or flipping.
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 the X axis
β
pitch — rotation about the Y axis
γ
yaw — rotation about the Z axis
R_x(α), R_y(β), R_z(γ)
single-axis rotation matrices
·
apply in this exact order — different orders give different rotations
Real-world example

A FANUC teach-pendant pose W=10°, P=20°, R=30°. Controller composes R = R_z(30°)·R_y(20°)·R_x(10°). Paste those three numbers verbatim into a KUKA pendant → wrong rotation, every time, because KUKA reads them as ZY′X″ instead of fixed XYZ.

what it does · Three rotations about successive axes — yaw / pitch / roll. Human-readable, but the order matters.
you'll meet it · Pasting a pose from KUKA into FANUC without converting will silently rotate your tool the wrong way.
Vendor surface
KUKA ABC (ZY′X″) · FANUC W·P·R (XYZ fixed) · Yaskawa Rx·Ry·Rz
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 stay unit length — controllers re-normalise after every move
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. Immune to gimbal-lock. Interpolates smoothly (SLERP) between two orientations.
you'll meet it · Every ABB robtarget stores orientation as q. Pose blending in MoveAbsJ uses SLERP, not Euler interpolation.
Vendor surface
ABB orient · quaternion · rotation_vector (UR axis-angle is a sibling)
07MOTION & DYNAMICS

Jacobian

v = J(q) · q̇       det(J) → 0  ⇒  singularity
Legend · every character
v
TCP velocity (6×1) — 3 linear m/s + 3 angular rad/s
J(q)
Jacobian matrix (6×n) — depends on the current joint angles q
joint velocities — time derivative of q, read "q-dot"
det(J)
determinant of the Jacobian — one number that measures its rank
→ 0
approaches zero — the matrix is becoming uninvertible
mathematical "leads to" / "implies"
Real-world example

Arm fully stretched, wrist axes aligned in a line — det(J) drops to almost zero. A 1 mm sideways MoveL would now demand near-infinite elbow speed. Controller throws a "near singular" alarm and refuses the move.

what it does · Maps joint speeds q̇ to TCP velocity v. When J loses rank, a tiny TCP move would need infinite joint speed.
you'll meet it · Wrist alignment, full-stretch, shoulder line — the warnings you get when crossing one of these.
Vendor surface
singularity · wrist alignment · "near singular" alarm
08MOTION & DYNAMICS

Trapezoidal profile

v(t):  accel ▲    cruise ─    decel ▼
   ∫ v dt = displacement
Legend · every character
v(t)
velocity as a function of time
accel phase — the motor ramps from zero up to cruise (jerk-limited or constant accel)
cruise phase — constant velocity plateau (skipped entirely on short moves)
decel phase — braking ramp back to zero
∫ v dt
integral of velocity over time — the area under the curve = total displacement
Real-world example

A 50 mm MoveL at v1000 (1 m/s) with 5 m/s² acceleration. You need 200 ms just to hit 1 m/s — but the move is only 50 mm. You never cruise. The profile becomes a triangle, and the move takes longer than v1000 alone would suggest.

what it does · A real motor cannot instantly hit cruise speed — it ramps up, holds, ramps down. Every move is one of these (or an S-curve).
you'll meet it · Why a 50 mm MoveL never quite reaches v1000 — the cruise plateau is shorter than the ramps need.
Vendor surface
speeddata v100 .. v5000 · $VEL · ACC · max_velocity
The order to learn them in
Start with #01 (homogeneous transform) — every other formula here is either built from one, or unwraps into one. Then #02 / #03 (forward and inverse kinematics) so you can move between joint space and Cartesian space confidently. Orientation (#04 – #06) is what bites you when pasting poses between brands. The Jacobian (#07) is the one you only need when something stops moving — and the trapezoid (#08) is the one you use every day for cycle-time estimates without realising it.
§ 6

Forward kinematics

Given the joint angles, where is the tool?

Forward kinematics is the easy direction. You know every joint angle (the encoders tell you), and you want to compute the position and orientation of the TCP in the base frame. It's deterministic, has exactly one answer, and is a small matrix multiplication.

Real industrial arms use Denavit–Hartenberg (DH) parameters— a 1955 convention for systematically attaching a reference frame to every joint and describing each link by four numbers (twist, length, offset, angle). Multiplying the per-link transformation matrices in order gives you the base-to-TCP transform. You don't need the math to use a robot — the controller does it 250+ times a second. You just need to know that the link lengths and joint offsets matter, and that swapping a gripper changes the tool offset, which changes the FK output.

+X+Yworld (mm)J1J2J3TCP
45°
-160°160°
-60°
-120°120°
-30°
-150°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 3-link arm
For the demo above, the closed-form solution is: x = L₁ cos θ₁ + L₂ cos(θ₁+θ₂) + L₃ cos(θ₁+θ₂+θ₃). Same shape as your three-segment elbow-up-down sketch — every joint adds one sin/cos pair to the running TCP coordinate. The reach envelope is the circle of radius L₁+L₂+L₃ around the base.
§ 7

Inverse kinematics

Given where you want the tool, what are the joint angles? Can have zero, one, several, or infinitely many answers.

IK is the hard direction. For a 6-DOF arm with a spherical wrist (three wrist axes meeting at one point — Pieper's condition) there is a closed-form solution with up to eight distinct joint configurations that reach the same TCP pose: two shoulder choices, two elbow choices, two wrist choices.

+X+Ytarget (200, 130)

Click or drag inside the diagram to move the target. Green ring = max reach (L1+L2). Red inner ring = minimum reach (|L1-L2|).

Solutions
Why two solutions?

For any target inside the annulus there are two ways to fold the arm. Full 6-DOF arms with a spherical wrist have up to 8: shoulder L/R × elbow up/down × wrist flip/no-flip. Vendor configuration data — ABB confdata, KUKA S/T, FANUC config string — picks one and prevents unexpected flips between waypoints.

Production robots ship with a way to pin down which solution to use — ABB calls it confdata, KUKA stores STATUS and TURN integers, FANUC writes a “configuration string” like F U T, 0, 0, 0. Without it, the controller picks the nearest solution by default, which can flip the wrist 180° between two nearby waypoints and crash the robot into its own fixture.

Robots with non-spherical wrists need numerical IK
Some painting robots and the UR-style offset-wrist architecture do not satisfy Pieper's condition — no closed-form IK exists. The controller solves it numerically (damped least squares, Newton-Raphson), which is slower and can fail to converge near singular configurations.
§ 8

Motion types

Three primitives — point-to-point, linear, circular. Every move you ever program is built from these.

Every robot vendor calls them slightly different names, but the three primitives are universal:

Joint move (PTP)

MoveJ
Each joint interpolates linearly between its start and end angle. The TCP traces a curve through space — the controller doesn't care about Cartesian path, only about reaching the target quickly. Fastest. Use for free-air moves where the path doesn't matter.

Linear move (LIN)

MoveL
The TCP follows a straight line at constant Cartesian speed. The controller solves IK at every interpolation step and runs the joints at whatever speeds the straight line demands. Use for welding seams, dispensing beads, cutting paths.

Circular (CIRC)

MoveC
The TCP follows a circular arc through an auxiliary “via” point. Useful for pipe welds, rounded contours, and circumnavigating obstacles with a single instruction instead of many short LINs.
startend
MoveJ — curved TCP path, smooth joint motion
MoveL — straight TCP line, joint speeds vary

Vendor command names

GenericABB (RAPID)KUKA (KRL)FANUC (TP)UR (URScript)Yaskawa (INFORM)Mitsubishi (MELFA)
Joint moveMoveJPTPJ P[n] %s FINEmovejMOVJMov P0
Linear moveMoveLLINL P[n] mm/sec FINEmovelMOVLMvs P1
Circular moveMoveCCIRCC P[n] P[n+1] %smovecMOVCMvr P0 P1 P2
ABB RAPID
MoveJ pHome, v1000, fine, tool0;
MoveL pPick, v500,  fine, tool0;
SetDO doGripper, 1;
WaitTime 0.5;
MoveL pHome, v1000, fine, tool0;
KUKA KRL
PTP XHOME
$VEL.CP = 0.5
LIN XPICK
$OUT[1] = TRUE
WAIT SEC 0.5
LIN XHOME
Universal Robots — URScript
movej([0, -1.57, 1.57, -1.57, -1.57, 0], a=1.4, v=1.05)
movel(p[0.4, 0.0, 0.3, 0, 3.14, 0], a=1.2, v=0.25)
set_digital_out(1, True)
sleep(0.5)
Watch out — speed units vary
ABB v1000 = 1000 mm/s. KUKA $VEL.CP = m/s (so 0.5 is 500 mm/s). FANUC accepts mm/sec, cm/min, inch/min, or sec (time-based). URScript v= is rad/s for movej and m/s for movel. Yaskawa VJ is a percentage but V is mm/s. Never assume a number you copy from another brand means what you think.
§ 9

Blending and velocity profiles

Two ideas that turn a sequence of stop-and-go moves into a smooth, fast production cycle.

Blending — rounding the corners

If a robot decelerates to a full stop at every taught point, cycle times suffer. Blending tells the controller it's allowed to round the corner — to start the next motion segment before the previous one has fully reached its target. You specify a tolerance radius around the corner waypoint; inside that radius the controller is free to interpolate.

z40
P1P2 (corner)P3
Taught path (fine — full stop at corner)
Executed path with blend radius 40 mm
ABB
z
z40
KUKA
$APO.CDIS
C_DIS=40
FANUC
CNT / FINE
CNT25
UR
blend_radius
0.040 m

Velocity profiles — trapezoidal vs S-curve

A motion segment isn't executed at one constant speed — the controller ramps up from zero, cruises, and ramps back down. The shape of the ramp matters. A trapezoidal profile has constant acceleration in each phase, which makes the time derivative of acceleration — jerk — go to infinity at the phase boundaries. The mechanical structure rings; the gripper shakes; precision parts settle slowly. An S-curve (or any jerk-limited polynomial) inserts smooth ramp-in / ramp-out phases for the acceleration itself, so jerk stays bounded.

amplitudet (s)1.6
Velocity (mm/s)
Acceleration (mm/s²)
Position (mm)

Acceleration jumps instantly at the start and corners — jerk (the time derivative of acceleration) is mathematically infinite at those points. Cheap to compute, but it shakes the mechanical structure and excites vibration.

Why S-curve isn't always faster on paper but is faster in practice
For the same peak velocity and acceleration, an S-curve takes slightly longer than a trapezoid. But because it doesn't excite mechanical vibration, the part settles faster at the end of every move — net cycle is usually shorter on high-precision lines.
§ 10

Singularities

Configurations where the math breaks down — the robot is still mechanically free, but the controller can't move the TCP in some direction without infinitely fast joints.

A singularity is a robot pose where the Jacobian matrix — the linear map from joint velocities to TCP velocity — loses rank. The geometric consequence: a small movement of the TCP in a certain direction would require enormous joint speed. The real controller will saturate the joints, slow the path down dramatically, or refuse to execute the motion.

Wrist singularity

J5 ≈ 0
J4 and J6 become coincident (parallel). The wrist loses one rotational DOF. Most common in practice; happens anywhere in the workspace.

Shoulder singularity

wrist on J1 axis
The wrist centre passes directly over (or under) the J1 axis. Any rotation of J1 produces no TCP motion. Avoid programming paths that cross over the base.

Elbow singularity

arm fully extended
Arm at full stretch (or fully folded back). Elbow-up and elbow-down solutions collapse into one. Easiest to avoid — don't reach all the way out.
Joint speeds (deg/s) under constant TCP velocity+max0-max-13°/sJ135°/sJ2
TCP commanded at constant 80 mm/s along Y = 30 mm. As J2 approaches 0 the arm is fully extended — det(J) → 0, joint speeds blow up.
How modern controllers handle them
The math doesn't go away, but the symptom can be tamed. Production controllers continuously monitor the Jacobian determinant; when it drops below a threshold, they switch from a true inverse to a damped least-squares inverse that trades a small TCP tracking error for finite joint speeds. ABB exposes it as SingArea in RAPID. You can also pre-emptively replan a Cartesian LIN as a joint PTP that traverses the singularity geometry safely.
§ 11

End-effectors (EOAT)

The tool at the tip — the thing that actually does the work.

Without an end-effector the robot is just an expensive metronome. The five broad families:

Mechanical grippers

Parallel-jaw (2-finger) for rigid parts: Robotiq 2F-85, Schunk PGN-plus-P, OnRobot RG2/RG6. Three-finger and adaptive for irregular shapes (Robotiq 3-Finger). Force tuning is critical — too soft drops the part, too hard crushes it.

Vacuum (suction)

Cups on a manifold fed by either compressed air through a venturi ejector (most factories, e.g. Piab piCOBOT) or by an electric vacuum pump in the gripper itself (Schmalz ECBPi, the first electric cobot vacuum pump). Great for boxes, sheet metal, glass. Bad on porous or oily surfaces.

Magnetic

Electromagnetic (instant release, heat-limited holding time) or electro-permanent (Magswitch, HVR MAG — a current pulse switches the magnet on/off and the part is then held by permanent-magnet force at zero power). Only works on ferrous parts.

Specialty

Spot-weld guns (pinch-type, with their own transformer), MIG/TIG torches, paint atomisers (Bell-bell on ABB IRB 5500), spindles, dispensing valves, screwdrivers, force-compliant deburring tools (ATI CDB).

Tool changers

ATI Industrial Automation and Stäubli MPS dominate the field. A master plate on the robot flange locks pneumatically to any number of tool plates, passing through electrical signals, pneumatic, fluid, and even fieldbus. Adds 1–3 kg per pair but lets one cell weld, dispense, and inspect without changing robots.
§ 12

Programming methods

Five ways to tell a robot what to do. Most production cells use two.

Teach pendant + jog

The traditional method. Operator jogs the arm to a pose with the pendant buttons, presses “teach”, the pose is captured. Slow per point (~30 seconds) but accurate at the actual geometry — no calibration error. Still the answer for first-time deployment, recovery, and final touch-up.

Lead-through / hand-guiding

Operator grabs the arm and physically pushes it to the desired pose. Native on cobots (UR Freedrive, FANUC CRX Manual Guided Teaching, Doosan). Fast for short programs; loses precision past ~50 waypoints.

Offline programming (OLP)

CAD model of the cell in software — ABB RobotStudio, KUKA.Sim, FANUC ROBOGUIDE, Delmia, RoboDK. Program written and simulated against a virtual controller, then uploaded. Required for any program with hundreds of waypoints or coordinated multi-robot motion. First run on real hardware always needs a 5–15 minute touch-up.

Graphical / block-based

UR PolyScope, FANUC CRX tablet, Yaskawa Smart Pendant, ABB Wizard. Visual node trees that compile to URScript / TP / INFORM under the hood. Easiest on-ramp for non-programmers; limited when you need to step off the template path.

ROS / ROS 2 — research and bespoke

Used in academic labs, mobile-manipulation startups, and vision-driven applications. ROS-Industrial publishes drivers for ABB, FANUC, KUKA, Universal Robots, Yaskawa. Real production lines still run vendor-native languages — for safety certification, vendor support, and SCADA / fieldbus integration maturity.
§ 13

Safety

The standards stack that keeps people alive next to multi-tonne machines.

Robot safety lives at the intersection of two ISO families. ISO 10218-1:2025 governs what the robot manufacturer must guarantee about the arm itself. ISO 10218-2:2025 governs what the integrator must do when wrapping it into a workcell. The 2025 revision folded in everything from the older ISO/TS 15066 on collaborative operation — the cobot biomechanical limits are now part of the headline 10218 standards.

Stop categories (IEC 60204-1 §9.2.2)

stop demandCat 1: power off at t=0.34s6000v (mm/s)t (s)
Cat 0 — STO
Cat 1 — SS1
Cat 2 — SS2
Category 1SS1 — controlled, then power offPOWER REMOVED AFTER STOP

Controller commands the drives to brake at a defined deceleration. Power stays on through the stop, then drops once velocity = 0. The right answer for emergency-stop on heavy industrial robots — the arm decelerates predictably rather than coasting under its own momentum.

Watch out — Cat 2 is NOT for emergency stop
Emergency stop per ISO 13850 must be Category 0 or Category 1 (power has to come off at some point). A Cat 2 chain on the e-stop button is non-compliant. Cat 2 (SS2) is fine for safety-rated monitored stops that resume automatically — that's the basis of cobot “monitored stop” collaboration mode.

The four collaboration modes

Safety-rated monitored stop

Robot holds position with drives energised while a person enters the workspace. Resumes automatically when they leave.

Hand-guiding

Operator physically moves the robot via a force-sensing handle. Only permitted at reduced speeds (≤ 250 mm/s as a typical practitioner default).

Speed and separation monitoring (SSM)

A safety-rated sensor (laser scanner like the SICK microScan3, safety camera, or pressure mat) measures human distance. Robot slows or stops as a person approaches.

Power and force limiting (PFL)

The robot is designed so that any contact stays below biomechanically-validated force and pressure thresholds. See the chart below.

Power-and-force-limiting thresholds (ISO/TS 15066 Annex A)

The numbers below come from the biomechanical study underlying ISO/TS 15066 (the University of Mainz pain-onset study + BG/BGIA force tolerance research). They are quasi-static limits — what a person can experience without injury during a clamping contact. Transient (dynamic impact, no clamping) limits are roughly twice these values for non-critical body regions. Skull and face contact must be prevented; the standard does not publish a “safe” force for them.

Body region
Force limit (N)
Pressure limit (N/cm²)
Skull / forehead
no contact
no contact
Face
no contact
no contact
Neck
35
140
Back & shoulders
210
210
Chest (sternum)
140
120
Abdomen
110
140
Pelvis
180
210
Upper arm
150
190
Lower arm
160
180
Hand & fingers
140
200
Thigh
220
250
Lower leg
130
220
Quasi-static (clamping) limits per ISO/TS 15066:2016 Annex A Table A.2. Transient (dynamic impact, no clamping) limits = approximately 2× these values for non-critical regions. Skull and face: contact must be prevented per §5.5.5.3.
PL e ≠ SIL 4
Functional-safety levels confuse everyone the first time. ISO 13849uses Performance Levels a–e. IEC 62061 / 61508 uses Safety Integrity Levels 1–4. They roughly map: PL d ↔ SIL 2, PL e ↔ SIL 3. SIL 4 only exists in process-industry standards (chemical plants, nuclear) — it is not used in machinery safety. Robot safety functions typically target PL d Cat 3 (light curtains, area scanners) and PL e Cat 4 for the highest-risk perimeter protection.
§ 14

PLC ↔ Robot integration

How the PLC tells the robot which program to run, and how the robot tells the PLC when it's done.

In a typical workcell the PLC is the master conductor — sequencing conveyors, fixtures, sensors, and the robot. The robot runs whatever program the PLC asks for, signals back when it's done, and waits for the next request. There's a textbook six-step handshake that ABB, KUKA, FANUC, UR, and Yaskawa all reduce to — only the signal names change.

123456PROG_NOSTARTBUSYDONEPLC →← Robot
Step 1

PLC writes program number — sets a parallel binary word (FANUC: UI[9-16] PNS1..PNS8; KUKA: $PGNO; ABB: data via GI/RAPID).

How the major vendors name those signals

StepFANUC (UI/UO)KUKA (Auto External)ABB (System I/O)UR (Modbus reg)
Program numberUI[9-16] PNS1..8$PGNOGI (named)reg 128..n (your choice)
Start (edge)UI[18] PROD_START$EXT_STARTStartAtMainreg 129 write
Busy / runningUO[3] PROGRUN$PRO_ACTCycle Onreg 294 = 1
At home / idleUO[7] ATPERCH$IN_HOME(RAPID-defined)reg 130 read
FaultedUO[6] FAULT$ALARM_STOP(RAPID-defined)reg 270 bits
Enable / cmd OKUO[1] CMDENBL, UI[8] ENBL$MOVE_ENABLEMotors On State(not built-in)

The PLC side of the handshake in Structured Text

On the PLC side you typically write a state-machine that drives the program-number bits, raises START, waits for BUSY, then waits for DONE. A CASE statement is the standard pattern — see the matching entry on 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 robot handshake. Mirrors the timing diagram above. *)
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;
      WatchdogTimer(IN := TRUE, PT := T#30S);
    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;
    WatchdogTimer(IN := FALSE);
    State := IDLE;

  FAULT:
    (* alarm, operator intervention *)
    ;
END_CASE;

Fieldbus options — what carries those signals

BusGovernanceTypical cycleRobot OEM support
PROFINET RTPI2–8 msABB, KUKA, FANUC, UR, Yaskawa
EtherNet/IPODVA5–20 ms RPIFANUC native, all others optional
EtherCATEtherCAT TG30–100 µs (drives)KUKA, FANUC option; gateway for ABB
Modbus TCPModbus Org10–100 ms, non-deterministicUR native server on port 502; everyone else via add-on
Standard fieldbus ≠ safety fieldbus
A PROFINET frame can be lost, delayed, or corrupted undetected by the bus. For E-stop, gate, light-curtain, and reduced-speed signals you need a safety-rated layer on top: PROFIsafe over PROFINET, CIP Safety over EtherNet/IP, FSoE over EtherCAT. Each adds a CRC, sequence counter, watchdog, and unique safe address — independent of the underlying network. The principle is called the black channel: assume the bus is unreliable, prove the safety layer catches every failure mode. Standards-rated up to SIL 3 / PL e.
§ 15

Applications

Robot configurations are chosen to match the work. Here's how the work and the shape go together.

Pick-and-place

SCARA (fast in-plane), delta (high rate), 6-DOF (irregular orientation)

The bread-and-butter task. A vision-equipped delta can hit 150-300 picks/min on a packaging line.

Epson SCARA, ABB IRB 360 FlexPicker

Palletising

4-5 axis dedicated palletiser, or heavy-payload articulated

Often a 5-axis robot — the wrist stays gravity-vertical, simpler IK, less wear under heavy boxes.

FANUC M-410 (2200 cycles/h), KUKA KR QUANTEC PA

Spot welding

Heavy-payload 6-DOF articulated, 300-500 kg+ payload

The gun + transformer alone can be 80-150 kg. Why automotive body shops use enormous arms.

KUKA KR FORTEC (up to 800 kg), ABB IRB 7600

Arc welding

Mid-payload slim-wrist 6-DOF, with cable-thru-wrist

Lower payload than spot welding, but the slim wrist matters — you need to weave into tight seam corners.

FANUC ARC Mate, Yaskawa MA1400/MA2010

Painting

Explosion-proof 6 or 7-DOF with hollow-arm paint routing

ATEX-rated. Only certified paint robots are legal in a paint booth — internals are pressurised or intrinsically safe.

ABB IRB 5500, FANUC P-250iB

Machine tending

Mid-payload 6-DOF or cobot, often with dual EOAT

Loads blanks into a CNC / press / injection moulder and removes finished parts. Dual gripper minimises machine idle time.

UR10e, FANUC LR Mate 200iD, Doosan H2017

Assembly

SCARA (in-plane) or 6-DOF cobot (compliant)

Peg-in-hole, snap-fit, gear meshing. Force/torque feedback (Robotiq FT-300, ATI Mini-45) lets the robot feel insertion.

Epson T-series, UR5e + Robotiq FT-300

Bin picking

6-DOF + 3D vision + force sensing

The hardest of the easy tasks. Vision alone isn't enough — you need collision-aware planning and a strategy for the last few parts.

ABB / FANUC + Photoneo MotionCam-3D or Pickit

§ 16

Pick a brand, write some code

Each vendor speaks a different language. They all express the same primitives — pick your shop's from the bar at the top of the page.

Pick a vendor in the bar at the top to open its deep module — or browse the directory below.