Walkthrough — Design a 6-DoF Cobot Arm From Scratch

This walkthrough takes a competent multi-disciplinary engineer end-to-end through the design of a Universal-Robots-class 6-DoF collaborative arm. It is an integration note: each decision is cross-linked to the underlying Tier 1/2/3 reference notes in Engineering/, Robotics/, and Languages/. The point is not to re-derive the math — the point is to show how a working design is assembled out of the library, and to expose the trade-offs and the part numbers that make it real.


1. What we’re building

The target is a 6-DoF collaborative robot arm in the UR5e class: a payload-5 kg / reach-850 mm machine intended for general light-assembly, machine-tending, lab-automation, and pick-and-place duty, that can be operated safely in the presence of humans without a hard cage.

Headline specifications:

  • Degrees of freedom: 6 revolute joints in a serial chain — RRR base (J1 vertical, J2 shoulder, J3 elbow) plus an RRR spherical wrist (J4 wrist1, J5 wrist2, J6 wrist3).
  • Payload: 5.0 kg at the tool flange, including tooling mass — i.e. ~3 kg net payload after a 2 kg gripper.
  • Reach: 850 mm from J1 axis to tool flange face when fully extended in the plane of J2/J3.
  • Repeatability: ±0.05 mm (ISO 9283, full payload, full reach).
  • Absolute positioning accuracy: ±0.5 mm after a 27-parameter kinematic calibration.
  • Maximum tool speed: 1.0 m/s (Cartesian, single-axis), reduced to 250 mm/s in collaborative mode per ISO/TS 15066.
  • Mass: ≤ 20 kg total arm assembly (controller separate).
  • Safety category: ISO 10218-1/2 collaborative + ISO/TS 15066 PFL (power & force limiting). All stop functions to ISO 13849-1 PL d, Cat 3, with selected stops (e.g. STO) implemented at Cat 4.
  • Mains: 100–240 VAC, 50/60 Hz, single-phase, 600 W typical, 1.2 kW peak.
  • Certifications: CE, UKCA, UL 1740 / NRTL listing for North America.

The deliverables of the design effort are: a mechanical CAD pack, a populated BOM at qty 100 and qty 1000, a control firmware tree (joint MCU + main controller), a ROS 2 driver, a safety-validation file (per ISO 12100 risk assessment + ISO 13849 SISTEMA results), and a type-test report covering EMC, environmental, and life-cycle testing.


2. Specification table

ParameterTargetReference
DOF6 (RRR + RRR-wrist)manipulator-topologies
Reach850 mmmanipulability-workspace
Payload5 kg @ flangedynamics-newton-euler
J1 (base) max torque35 N·m continuous, 90 N·m peakmotors-electric
J2/J3 max torque150 N·m continuous, 330 N·m peakmotor-families
J4/J5 max torque28 N·m continuous, 56 N·m peakmotor-families
J6 max torque12 N·m continuous, 28 N·m peakmotor-families
Joint max speed180°/s (J1–J3), 360°/s (J4–J6)trajectory-generation
Tool TCP max speed1.0 m/s nominaltrajectory-generation
Repeatability±0.05 mmISO 9283; standards-bodies
Absolute accuracy±0.5 mm after calibrationcalibration-extrinsics
IP rating (arm)IP54 (housings), IP67 wrist optionalengineering-codes
EMC classEN 61326-1 industrial, IEC 61000-6-2/-6-4pcb-design
Safety categoryISO 13849 PL d Cat 3 (Cat 4 for STO)safety-standards
Collab classISO/TS 15066 PFLsafety-standards
Ambient0–50 °C, 0–95 %RH non-cond.engineering-codes
Mains100–240 VAC, 50/60 Hz, 600 W typpower-electronics

The torque targets are derived from a quasi-static worst-case: arm fully extended horizontally with 5 kg payload + 2 kg gripper, plus a 30 % dynamic margin for trajectory acceleration. Reach 0.85 m × 7 kg × 9.81 m/s² ≈ 58 N·m static at the elbow joint; the 150 N·m continuous figure absorbs gravity-compensation dynamics and the 4-quadrant operation that traverses the singularity envelope. See dynamics-newton-euler for the recursive Newton–Euler derivation that produced these numbers, and dynamics-identification for how the inertial parameters are identified post-build.


3. Kinematic design

We use a modified Denavit–Hartenberg parameter set (Craig convention) per kinematics-dh. The table below mirrors the UR5e geometry — there is no reason to be clever here, the UR topology has been studied to death and gives clean closed-form inverse kinematics.

iα_{i-1} (°)a_{i-1} (mm)d_i (mm)θ_i (init)
100162.50
290000
30-425.000
40-392.2133.30
590099.70
6-90099.60

Total reach from J1 axis to flange face: a₂ + a₃ + d₅ + d₆ ≈ 850 mm with the elbow extended. Shoulder offset (d₂) is zero (planar shoulder), elbow offset (a₂) is the upper-arm length, wrist offset (d₅) and tool offset (d₆) define the spherical wrist.

Closed-form inverse kinematics are tractable because the last three axes intersect at a single point (spherical wrist) — see the Pieper criterion discussion in kinematics-dh. This gives 8 IK solutions per Cartesian target (shoulder L/R × elbow up/down × wrist up/down).

Workspace and dexterity analysis follow manipulability-workspace. The reachable workspace is a hollow toroid: outer radius ≈ 850 mm, inner radius ≈ 100 mm (J2–J3 + offset-elbow clearance), height ≈ ±650 mm above and below J1 axis. The dexterous workspace — full tool orientation reachable — is smaller, about 60 % of the reachable volume.

Singularities to be aware of:

  1. Shoulder singularity — wrist center directly above J1 axis: J1 indeterminate. Avoided in software by inserting a small null-space deflection when |x²+y²| < 50 mm at the wrist center.
  2. Elbow singularity — arm fully extended (J3 = 0): loss of rank in the linear-velocity portion of the Jacobian. Avoided by limiting |J3| ≥ 5° in collaborative mode.
  3. Wrist singularity — J5 = 0 or ±180°: J4 and J6 become coaxial. The most painful one in practice because joint velocities go to infinity through the singularity. Handled with damped-least-squares (DLS) IK with λ² = 0.01 in the wrist neighborhood — see kinematics-dh (singularity-robust pseudo-inverse subsection).

Because we have full 6-DoF + tool-frame re-orientation, every realistic pick-and-place pose has at least one non-singular IK solution; the path planner picks the solution that minimizes joint travel and stays away from singularity boundaries.


4. Mechanical layout

Every joint is built as a self-contained module — torque motor + gearbox + dual encoder + brake + drive PCB — communicating with the main controller via a daisy-chained bus. This modularity is what makes the design tractable: six near-identical units instead of six bespoke joints. See manipulator-topologies for the topology trade space (serial vs parallel, in-line vs offset wrist).

Module construction (inboard to outboard):

  1. Frameless torque motor — rotor pressed onto the output shaft, stator clamped in the housing. Frameless = no bearings, no motor case, just rotor+stator. Saves mass and length.
  2. Cross-roller or thin-section bearing — supports the joint output relative to the housing. Single bearing carries radial + axial + moment load.
  3. Harmonic-drive gearbox — wave generator coupled to motor rotor, flexspline driving the output flange. 1:50 to 1:100 ratio gives the gearing, the zero-backlash spec, and a 30–50 % torque safety margin.
  4. Dual absolute encoder — one optical/magnetic encoder on the motor side (high resolution, used for FOC commutation + velocity loop), one on the output side after the gearbox (used for accurate joint angle + harmonic-drive backlash compensation + safety cross-check).
  5. Spring-applied / electrically released brake — fails to engaged on power loss, so an unpowered arm holds its pose against gravity.
  6. Joint MCU + FOC drive PCB — mounted at the inboard end of the module, carries the gate driver + MOSFETs + STM32 + current-sense.

Mass / torque balance: the inboard joints J1–J3 carry essentially all the moving mass of the outboard arm + payload and bear the largest torques (35–150 N·m). The wrist joints J4–J6 carry only the outboard wrist + payload and bear an order of magnitude less torque. We exploit this by using two motor frame sizes — TBM 7615 in J1–J3, TBM 7613 in J4, and a smaller TBM-class motor in J5–J6 — and three gearbox sizes (CSF-25, CSF-20, CSF-17). This saves about 4 kg of arm mass vs uniform sizing.

Structural elements:

  • Joint housings — forged + 5-axis-milled 6061-T6 aluminium. Forging gives the best strength-to-weight in cyclic loading (cf. aluminum-alloys for alloy temper selection) and the 5-axis mill cleans up bearing seats + bolt patterns to H7 fit. Hard-anodize (Type III) on the wear surfaces.
  • Upper-arm and forearm tubes — drawn 6061-T6 tube, 80 mm OD × 4 mm wall, machined ends with bolt-circle to mate to joint housings.
  • Covers and skins — injection-molded PA-66 with 30 % glass fill (PA-GF30). PA-GF30 gives the stiffness and impact resistance for collision contact without aluminium’s noise and weight. See polymers-taxonomy for the GF-loaded nylon family.
  • Internal cable spine — 17 mm hollow shaft through each joint carries an 8 mm cable bundle (motor power + signal + safety) plus a service-loop reserve for ±360° joint travel (J1 uses a slip-ring instead — see §12).

Total mass budget (preliminary): J1 module 3.2 kg, J2 3.5 kg, J3 3.0 kg, J4 1.4 kg, J5 1.2 kg, J6 1.0 kg, structure + covers 4.5 kg, cable + small parts 1.0 kg → 18.8 kg, below the 20 kg target.


5. Actuator selection

All joints follow the same pattern: frameless brushless torque motor + harmonic-drive gearbox + dual encoder + brake. The choice of frameless motors (instead of housed servo motors) is what gives a cobot its short, hollow, integrated joint envelope. The harmonic drive gives high ratio (50–100:1) in a single stage with zero backlash. See motors-electric for motor family theory, electric-motor-taxonomy for the taxonomy, and motor-families for frameless / direct-drive specifics. For gearbox choice see gears-taxonomy (harmonic-drive subsection).

J1 — base rotation

  • Motor: Kollmorgen TBM 7615-A (frameless), 76 mm OD × 15 mm stack, 65 mm hollow shaft. Continuous stall torque 1.6 N·m, peak 4.4 N·m, K_t = 0.10 N·m/A, K_e = 0.10 V·s/rad, R_phase = 0.4 Ω at 25 °C. Pole-pair count 7.
  • Gearbox: Harmonic Drive CSF-25-100-2UH (1:100 ratio, 308 N·m rated, 686 N·m peak). Backlash < 0.5 arcmin, repeatability < 0.1 arcmin.
  • Joint output: 100 × 1.6 = 160 N·m continuous (after gearbox losses, derated to ~140 N·m). Comfortably above the 35 N·m J1 spec — the oversize is to give thermal margin and reduce torque ripple at low speeds (motor current ~1.5 A continuous).
  • Encoder: Renishaw RoLin RL35BiSS (motor-side, on rotor) + AMS AS5147P (output-side, on flange) — see sensors-pose-motion and sensor-families (encoder subsection).
  • Brake: Mayr ROBA-stop-M 891.000.0 type, spring-applied / electrically released, 4 N·m holding torque (at motor side; ×100 ratio → 400 N·m at output, more than enough).

J2 (shoulder) and J3 (elbow)

Identical to J1: TBM 7615 + CSF-25-100. The gearbox is the same part, with output bearings sized for the higher moment loads at J2/J3. Continuous output torque 160 N·m, peak 330 N·m — covers the 150 N·m spec with thermal margin.

J4 (wrist 1)

  • Motor: Kollmorgen TBM 7613-A (frameless), 76 mm OD × 13 mm stack. Continuous stall 1.1 N·m, peak 3.0 N·m. K_t = 0.08 N·m/A.
  • Gearbox: Harmonic Drive CSF-20-80-2UH (1:80, 88 N·m rated, 224 N·m peak).
  • Joint output: 80 × 1.1 ≈ 88 N·m continuous. Covers 28 N·m spec with 3× margin.

J5 (wrist 2) and J6 (wrist 3)

  • Motor: Kollmorgen TBM-7611 (76 mm OD × 11 mm stack). Continuous stall 0.7 N·m, peak 2.0 N·m.
  • Gearbox: Harmonic Drive CSF-17-50-2UH (1:50, 27 N·m rated, 78 N·m peak).
  • Joint output: 50 × 0.7 ≈ 35 N·m continuous. Covers 12 N·m wrist spec with ~3× margin and gives clean speed (motor max ~4000 rpm → joint ~80 rpm = 480°/s, well above the 360°/s target).

Encoder system

Every joint carries two absolute encoders:

  • Motor-side encoder — fixed to the rotor of the frameless motor. Used for FOC commutation (electrical-angle resolution must be << one pole), velocity loop, and motor-position safety cross-check. Renishaw RoLin RL35BiSS (magnetic ring + read-head; 18-bit absolute over 360°; BiSS-C interface).
  • Output-side encoder — fixed to the joint output flange (after the harmonic). Used for joint angle (absolute, single-turn 18-bit). AMS AS5147P (magnetic, SPI/PWM, 14-bit per revolution, 11-bit single-turn track). The output-side absolute encoder is the reference for joint kinematics; the motor-side encoder is for control bandwidth.

Both readings flow to the joint MCU. The safety controller computes the kinematic agreement: joint_angle ≈ motor_angle / N_gearbox, modulo the harmonic-drive wind-up (typically 1–5 arcmin under full load). Any sustained disagreement > 2× expected wind-up triggers a Cat-3 protective stop — see safety-standards.

Brakes

Spring-applied / electrically-released. Mayr ROBA-stop-M series. Sized to hold motor-side torque (typically 4–8 N·m at the motor, gives 200–800 N·m at the joint output after the harmonic). Required for power-off safety — if mains is lost, every joint locks within 30 ms and the arm holds pose, satisfying ISO 13849 PL d for the uncommanded-motion hazard.


6. Torque sensing for human-robot collaboration

ISO/TS 15066 mandates monitoring of contact force during collaborative operation: 65 N quasi-static / 130 N transient on the head, 140 N / 280 N on the hand-arm, 150 N / 300 N on the chest. To enforce these limits the controller needs per-joint torque sensing so it can:

  1. Detect external contact (joint torque exceeding model-predicted dynamics).
  2. Stop within the regulated reaction time (ISO 13849 PL d, ≤ 1 s typical).
  3. Implement cobot-style compliant teaching (impedance-controlled hand-guiding).

Three torque-sensing options, in increasing cost and capability:

Option (a) — Motor-current-based torque estimation

Estimate joint torque τ from motor current i_q via the friction-compensated model:

τ_joint ≈ N_gearbox · K_t · i_q − τ_friction(ω, T) − τ_inertia(q, q̈)

with the static friction map and the inertia matrix identified offline (see dynamics-identification).

  • Cost: $0 extra — uses the existing current sense on the FOC drive (Texas Instruments INA240 current-sense amp on a 0.5 mΩ shunt, 16-bit ADC sample at 16 kHz on the STM32G474).
  • Resolution: ~0.5 N·m at the joint output, after friction compensation.
  • Latency: 0.5 ms (current loop) + 1 ms (joint position loop).
  • Compatible with ISO/TS 15066 PFL if TCP speed is limited to ≤ 250 mm/s in collaborative regions.

This is the Universal Robots / Doosan / Techman approach. Pick this for the cost-optimized baseline.

Option (b) — Strain-gauged flexspline

Four 350 Ω strain gauges (Vishay MMF-series, full-bridge) bonded onto the harmonic-drive flexspline, read by a dedicated low-drift instrumentation amplifier (e.g. HBM type or, for in-house build, INA826 + 4th-order anti-alias filter + 24-bit Σ-Δ ADC like ADS1263).

  • Cost: roughly $200 / joint (gauges + amp + ADC + cabling + the labor of bonding gauges to a flexspline).
  • Resolution: ~0.05 N·m at the joint output (i.e. ~10× better than option (a)).
  • Latency: < 0.1 ms.
  • Used by KUKA iiwa and the Franka Emika Panda. Suitable for ISO/TS 15066 PFL at higher speeds and for genuine compliant manipulation (assembly tasks, polishing, etc.).

Option (c) — Series-elastic actuator (SEA)

Insert a calibrated torsion spring between the harmonic-drive output and the joint output flange. Read the differential angle (motor-side encoder vs joint-side encoder) and multiply by spring rate to get torque.

  • Cost: $400+ / joint (precision torsion spring + extra bearing).
  • Resolution: very high; bandwidth depends on the spring rate (stiffness vs sensitivity trade-off).
  • Mass: +0.3 kg / joint, mostly the torsion spring.

This is the Baxter/Sawyer/Franka approach. We do not pick (c) for a cobot in this class because the added compliance makes high-speed positioning harder.

Decision: Start with option (a) on all six joints in the v1 product (no recurring BOM impact). Reserve a placeholder in the firmware for option (b) on J2/J3 (the joints where high-resolution torque pays off most in assembly) — the strain-gauged flexspline can be retro-fitted without changing the joint envelope.

See impedance-control for how the torque measurement feeds into the impedance / admittance loop, and sensors-force-tactile for the broader force-sensing taxonomy (joint torque vs flange F/T vs skin-array tactile).


7. Power electronics & motor drives

Each joint has its own FOC drive PCB, integrated into the joint module. The drive runs on a 48 V DC bus distributed daisy-chain from the controller box.

Drive topology (per joint)

  • DC bus: 48 V nominal, 56 V max (TVS-clamped). Local DC-link cap: 470 µF / 63 V aluminium electrolytic + 4 × 4.7 µF X7R ceramic high-frequency decoupling. See passive-components for cap-family selection (electrolytic vs film vs ceramic).
  • Half-bridge MOSFETs: 3 phases × 2 MOSFETs = 6 total per joint. Infineon BSC074N06NS (60 V, 80 A, R_DS(on) 7.4 mΩ at V_GS = 10 V). Generously rated — peak motor current is ~30 A in the largest joints. Junction-to-case 1.2 K/W; conduction loss at 15 A continuous ≈ 1.7 W per MOSFET.
  • Gate driver: Texas Instruments DRV8323R — three half-bridge drivers with integrated current sensing, configurable via SPI, ~0.5 µs propagation delay. Drives V_GS = 10 V into the BSC074 gates.
  • Current sense: 3 × INA240 high-side or low-side current-sense amp on 0.5 mΩ shunt. Gain 50 V/V → 25 mV/A → measured at the STM32 ADC (16-bit, fed by 12-bit on-chip + over-sampling). Phase-current resolution ~0.1 A.
  • Local MCU: STM32G474RET6 (170 MHz Cortex-M4 + FPU + CORDIC + high-resolution timer). Runs the FOC commutation loop at 16 kHz, the current PI loop at 16 kHz, the joint-position PD loop at 1 kHz, and the EtherCAT/RS-485 slave at 1 ms cycle.

The choice of STM32G474 vs the TI C2000 (TMS320F28379D) is essentially a coin-flip on capability; we choose STM32 here for ecosystem reasons (LL/HAL stack, Cube tooling, supply availability). See motor-drive-electronics for the motor-drive PCB family.

Loop structure

LoopRateAlgorithmImplementation
Phase current (FOC)16 kHzPI on i_d, i_qSTM32G474, hardware-CORDIC park/clarke transforms
Joint torque1 kHzPI + friction compSTM32G474, on-MCU
Joint position1 kHzPD + gravity compSTM32G474, on-MCU
Cartesian / impedance250–500 HzImpedance, gravity + Coriolis compMain controller (Linux RT)
Trajectory100 HzQuintic spline interpolationMain controller

Discussion of the current/position cascade and gain tuning is in pid-control (current loop on a brushless motor and PD with gravity feedforward subsection). The Cartesian impedance design is in impedance-control and state-space-lqr (the LQR alternative for the high-bandwidth Cartesian inner loop is discussed there).

Op-amp choice and analog front-end

The current-sense path is the precision-critical analog block. INA240 gives a bandwidth of 400 kHz, V_OS < 25 µV, CMRR > 120 dB — enough headroom for 16 kHz current control with negligible torque ripple. See op-amp-variants (current-sense / instrumentation-amp subsection) for the family comparison.

Power budget (per joint, nominal duty)

  • Motor copper loss (worst joint, J2): I² R = 15² × 0.4 Ω × 3-phase factor ≈ 90 W peak, ~25 W average.
  • MOSFET conduction loss: 6 × 1.7 W ≈ 10 W peak, ~3 W average.
  • Gate-drive + logic: 0.5 W.
  • Total per joint: ~30 W average, ~100 W peak.
  • Six joints: 180 W average → bus current 48 V × 3.75 A = 180 W. Add controller-box logic + cooling fans + tablet/teach-pendant → 600 W total continuous from the mains, 1.2 kW peak.

DC bus PSU

48 V output, single-phase 100–240 VAC input. Pick a 600 W medical-grade PSU (Mean Well RPS-600-48 or similar) with PFC, IEC 60601-1 (for adjacent-to-human use) + EN 61326 EMC. See power-electronics for PFC / SMPS topology choice (off-line flyback up to 100 W, half-bridge LLC 100–1000 W).


8. Communications + control architecture

The joints daisy-chain to the main controller via EtherCAT (preferred) or a proprietary RS-485 multi-drop fall-back. EtherCAT gives sub-100-µs slave-to-slave jitter and a guaranteed 1 ms cycle on a 6-node chain, which is what we need for the safety-stop reaction time (see safety-standards).

Bus

  • Physical: 100-Mbit Ethernet over twisted pair (Cat 5e shielded), daisy-chained joint-to-joint via Beckhoff EK1100-class slave couplers — or in our case, the EtherCAT slave is integrated on the joint MCU board via an LAN9252 (Microchip) or ET1100 (Beckhoff) ASIC.
  • Cycle time: 1 ms (allows 6 joints × 32 bytes PDO + safety + 200 µs slack).
  • Process data: 16 bytes per joint of inputs (motor angle, joint angle, motor current, joint torque estimate, FIT flags) and 16 bytes of outputs (target torque, target position, target stiffness, brake command, mode word).

See comm-buses for the EtherCAT / CANopen / PROFINET trade-space, and ros2-robotics-config for the ROS 2 ↔ EtherCAT bridging (the SOEM library + ros2_control hardware-interface plugin pattern).

Main controller

  • Hardware: Intel NUC i5-class (4 cores, 16 GB RAM, 256 GB NVMe), or the AMD equivalent. About $400 BOM at qty 1000.
  • OS: Linux + PREEMPT_RT kernel (Xenomai is the alternative for hardest real-time; we don’t need it). Worst-case scheduling jitter on PREEMPT_RT ≈ 50 µs at 1 ms cycle, which is fine for a 1 ms EtherCAT.
  • Userspace: ROS 2 Humble Hawksbill (LTS) on Ubuntu 22.04. ros2_control with a custom EtherCAT hardware-interface plugin running the master. MoveIt 2 for path planning.
  • Programming surface: Python + C++ ROS 2 nodes, plus a teach-pendant tablet running a Qt/QML UI over WebSocket. URScript-style scripting language for end-user programs.

See ros2-architecture for the ROS 2 node + DDS + lifecycle pattern, ros2-robotics-config for the workspace layout.

Real-time guarantees

  • EtherCAT cycle: 1.000 ms ± 0.05 ms (master jitter).
  • ROS 2 control thread: SCHED_FIFO priority 80, CPU-pinned.
  • Worst observed E2E latency (sensor in → command out) at 1 ms cycle: 1.6 ms (one cycle to read in, one to compute, one to write out, overlapped → 2-cycle pipeline).

This satisfies the ISO/TS 15066 PFL requirement that a contact event detected by torque sensors trigger a Cat-3 stop within ≤ 250 ms (we operate ~ 30 ms — limited by mechanical brake-engagement time, not by the software loop).


9. Control law stack

The arm runs a four-level cascade. Lower levels are deterministic, on-MCU, fast. Upper levels are model-based, on the main controller, planning-aware.

9.1 Inner-loop joint torque (16 kHz, on-MCU)

Field-oriented control of the brushless motor: park/clarke transforms the three phase currents into (i_d, i_q), PI controllers regulate each to setpoint (i_d*= 0 for surface PM motor, i_q* = τ* / (N · K_t) + friction-feedforward). Loop bandwidth ~2 kHz electrical (FOC), ~1 kHz on torque.

Nominal continuous joint current: 1.5 A (J1–J3 at gravity-loaded continuous), 0.6 A (J4–J6). Peak: 15 A (J1–J3 at full acceleration). See pid-control for the PI tuning and motor-drive-electronics for the FOC implementation.

9.2 Middle joint-position (1 kHz, on-MCU)

PD on (q_ref − q_meas, q̇_ref − q̇_meas) + gravity-compensation feedforward (G(q), computed at controller and shipped to MCU every 1 ms) + friction feedforward. Gains chosen from the per-joint inertia at the worst-case pose, with damping ratio ζ = 0.7. Typical gains: K_p = 4000 (rad/s²)/rad, K_d = 80 (rad/s²)/(rad/s) for J2. See pid-control for PD-with-gravity tuning.

9.3 Outer Cartesian / impedance (250–500 Hz, main controller)

Cartesian impedance: F_cmd = K_t (x_ref − x_meas) + D_t (ẋ_ref − ẋ_meas), then projected to joint-torque commands via Jᵀ. Typical stiffness ranges:

  • Free-space motion: K_t = 2000 N/m translational, 100 N·m/rad rotational.
  • Light contact / assembly: K_t = 500 N/m, 20 N·m/rad.
  • Hand-guiding: K_t = 0 N/m, all-virtual gravity-only mode.

Damping ratio 0.7 across the board; D_t computed at each control step from K_t and the Cartesian inertia M_t = J M(q)⁻¹ Jᵀ.

See impedance-control for the full derivation and stability conditions, and state-space-lqr for the state-space generalisation. For high-bandwidth contact tasks (peg-in-hole, polishing) MPC outperforms fixed-gain impedance — see mpc-for-robots.

9.4 Trajectory generation (100 Hz, main controller)

Quintic (5th-order) polynomial in joint space for point-to-point moves; minimum-jerk 4-5-6-7 polynomial for moves where the user has asked for smooth velocity and acceleration profiles (e.g. holding a cup of liquid). MoveIt 2 plans the waypoint sequence; a separate joint_trajectory_controller interpolates to the 100 Hz set-point stream that feeds the 1 kHz inner loops. See trajectory-generation for spline-family choice and the time-optimal generalisation.


10. Safety architecture (ISO 13849 PL d, Cat 3 + Cat 4 functions)

The safety stack is dual-channel end-to-end. Every safety-related signal is acquired and processed twice, by independent hardware, with cross-check.

Stop functions (per IEC 60204-1 and ISO 10218-1)

  • STO (Safe Torque Off) — Cat 4. Pulls the gate-drive enable line on each joint’s MOSFET driver. Implemented at the DRV8323’s nEN pin, redundant cut by a second optocoupler. Reaction time < 10 ms.
  • SS1 (Safe Stop 1) — Cat 3. Controlled deceleration to zero, then STO. Reaction time < 200 ms for stop, < 30 ms additional for STO.
  • SS2 (Safe Stop 2) — Cat 3. Controlled deceleration to zero, then SOS (safe operating stop, motors energized, position monitored). Used during hand-guided teaching.

Safety-controller hardware

  • Pilz PSSu (or Sick Flexi Soft) modular safety PLC, certified for PL e Cat 4.
  • E-stop button (2NC contacts → both safety channels).
  • Two safety-rated inputs from teach-pendant (3-position enable switch).
  • Two safety-rated digital inputs from external safety devices (light curtains, area scanners) if used.
  • The safety PLC and the main controller communicate via FSoE (Fail-Safe over EtherCAT) or via the older Pilz black-channel approach.

Encoder redundancy & cross-check

Each joint exposes two encoder readings to the safety PLC: motor-side (commutation) and output-side (joint angle). The PLC computes q_motor / N_gearbox − q_joint − offset_calib continuously and trips Cat-3 stop if |error| > 5 arcmin sustained > 50 ms.

Power & force limiting (ISO/TS 15066)

Per-joint torque-limit table loaded at startup based on robot pose, configured speed, and operator-set safety zones. Limits are enforced both by:

  1. Soft path — main controller projects joint torque to TCP force via J⁻ᵀ; clamps the impedance setpoint if |F_tcp| would exceed body-region limits.
  2. Hard path — safety PLC monitors each joint’s torque-estimate output directly; trips Cat-3 stop if τ_joint exceeds its safety limit for > 50 ms.

Body-region limits per ISO/TS 15066 Annex A (quasi-static / transient):

Body regionQuasi-static (N)Transient (N)
Skull / forehead130175
Face6590
Neck (rear)145220
Hand / arm140280
Chest140210
Thigh220440

The system designer maps these to TCP-force limits in each zone of the workspace; the safety PLC enforces them.

Risk assessment

ISO 12100 risk-assessment iteration: identify hazards (pinch, crush, impact, sharp edges, electrical, thermal), estimate risk (severity × frequency × possibility-of-avoidance), apply 3-step risk reduction (inherent design → safeguarding → information), document residual risk. The resulting safety functions are validated per ISO 13849 SISTEMA (PFH_d, MTTF_d, DC, CCF). See safety-standards and reliability-engineering for the methodology, and engineering-codes for the standards landscape.


11. End-effector mounting + tool changer

The tool flange is an ISO 9409-1-50-4-M6 pattern: 50 mm bolt-circle, 4 × M6 tap, two locating dowel pins ⌀6 H7. Standard across all major cobot brands, so 3rd-party grippers (OnRobot, Robotiq, Schmalz, Schunk) bolt up directly.

Through the hollow J6 shaft we route a tool-side electrical interface:

  • 4 × power (24 VDC, 2 A, fused),
  • 4 × digital I/O (24 V tolerant),
  • 2 × USB 2.0 or RS-485 / IO-Link,
  • 1 × Ethernet (100 Mbit) or EtherCAT branch,
  • Ground.

Connector: M12 8-pole A-coded (power) + M12 4-pole D-coded (Ethernet) at the flange — see connector-families for the M-series industrial connector family.

For tools that change during a program (e.g. dual-arm welding cell), add an ATI QC-21 or Schunk SWS-005 manual or pneumatic quick-changer on top of the flange. The QC-21 carries 50 kg, 110 N·m moment, and a 19-pin signal pass-through.

See end-effectors for gripper-family taxonomy (jaw, vacuum, magnetic, soft) and end-effectors-zoo for vendor part lines (Robotiq 2F-85, OnRobot RG2, Schmalz vacuum pads, etc.).


12. Cable management

Internal routing through hollow joints. Each joint module has a 17 mm bore down its rotation axis; we route an 8 mm bundled cable assembly through it. This gives ~9 mm of radial slack for the bundle to spiral inside the bore as the joint rotates (service-loop pattern).

Joint travel limits set by cable bundle:

  • J1: ± unlimited (slip-ring) — see below.
  • J2: ± 180°.
  • J3: ± 160° (mechanical hard-stop, with cable service-loop reserve of ±200° to cover both rotation senses).
  • J4: ± 360°.
  • J5: ± 180°.
  • J6: ± 360°.

J1 slip-ring: a 24-channel capsule slip-ring (Moog AC6275 class) sits axially in the J1 hollow shaft. Carries 8 power conductors (rated 5 A each) + 16 signal channels (low-noise gold-on-gold contacts). Cost ~$300/unit at qty 1000; pays for itself in eliminated software complexity around cable wind/unwind. Slip-ring life > 100 M revolutions at the rated current — comfortably beyond the 1 M cycle design life of the arm.

The remaining joints use a flex-cable service loop: an over-length cable bundle spirals inside the bore, allowing the cable to deflect within the rotation range without exceeding its minimum bend radius (8 × cable OD = ~64 mm). Cable spec: drag-chain-rated TPE-jacketed cable with PUR strain-relief boots at each joint exit (Lapp ÖLFLEX SERVO or igus chainflex CF77 family). See connector-families for connector-side spec.


13. Materials & manufacturing

We design for a qty-1000 BOM, with reasonable scaling to qty-100 prototype and qty-10000 production.

Joint housings

  • Material: forged 6061-T6 aluminium. See aluminum-alloys for alloy selection (6061-T6 picked over 7075 for weldability and corrosion resistance, over cast-aluminium for fatigue performance).
  • Process: closed-die forging (rough), then 5-axis CNC (finishing). See casting-forging-forming and forming-processes for the process selection, machining-processes for the milling sequence.
  • Surface: hard-anodize Type III on wear surfaces (bearing seats, gearbox interface flanges); clear anodize Type II elsewhere for cosmetics. See surface-treatments.
  • Cost: $400–800 per joint at qty 1000 (J6 cheapest, J2/J3 most). Lead time 6 wk from forging die to first delivered part; 2 wk thereafter.

Tubes (upper-arm, fore-arm)

Drawn 6061-T6 tube, 80 mm OD × 4 mm wall × 350 mm long. Ends turned + indexed by CNC to give H7 bolt-circle to mate the joint housings. Hard-anodized. Cost ~$60 each at qty 1000.

Plastic covers

PA-66 + 30 % glass fibre (PA-GF30) — see polymers-taxonomy for the engineering-polymer family.

  • Tooling: ~$20 k per mold (2-cavity, hot-runner, P20 tool steel) — see forming-processes for injection-mold tool families.
  • Per-part BOM: ~$5 at qty 1000.
  • Six covers per arm (one per joint) + 2 large arm-tube covers.
  • Surface texture: SPI A-2 (semi-gloss) on the visible surfaces, mold-tech MT-11020 textured on grip areas.

Fasteners

  • Joint bolts: M5 and M6 ISO 4762 socket-head, grade 12.9 zinc-flake. See fasteners-taxonomy for the bolt-grade family and thread-standards for metric vs imperial thread choice.
  • Critical fasteners (motor mounts, gearbox mounts) torqued with calibrated wrench and witness-marked.
  • Thread-locker: Loctite 243 medium on joint bolts, 263 high on bearing pre-load nuts.

Bearings

  • J6 wrist: deep-groove ball bearing 6802-2RS (24×15×5 mm). See bearings-taxonomy (deep-groove section).
  • J1–J3: thin-section bearings, Kaydon KD-061-XP0 (J3 inner-bore 152 mm) and KD-090 (J1 inner-bore 228 mm) — the larger inner bore is what lets the hollow cable path go through.
  • J4, J5: small thin-section bearings, Kaydon KA040 series.
  • Lubrication: Kluber Isoflex Topas NB 52 grease, factory-filled, sealed (~10 g per joint), nominal life 10 k h at rated load.

Surface treatments

  • Hard-anodize (Type III) on aluminium wear surfaces — see surface-treatments.
  • Black PTFE-coat on gearbox flexspline (low-friction wear surface) — Harmonic Drive applies this at supplier.
  • Painted markings on covers: pad-print white text on PA-GF30 (UV-resistant).

Manufacturing flow

  1. Forged joint blanks delivered from supplier (lead time 6 wk, $200 each).
  2. CNC mill rough → finish, 5-axis Mazak / DMG-Mori. ~45 min cycle time at qty 1000. ($150–400 finishing cost.)
  3. Hard-anodize (Type III) at coater. ~5 days. ($25 each.)
  4. Sub-assembly: bearings press-fit, motor stator clamped, gearbox flange bolted, encoders aligned and zeroed at calibration jig. ~30 min labor per joint.
  5. Drive PCB assembled at EMS partner — JLCPCB / NexPCB / PartnerTech depending on volume.
  6. Final joint module assembly: drive PCB + motor + gearbox stack-up, sealed with PTFE rotary lip seal, leak-tested. ~30 min labor per joint.
  7. Arm-level assembly: 6 joints + tubes + covers + slip-ring + cable harness, run through power-on + EOL test. ~3 h labor per arm.

14. Thermal management

Each joint dissipates ~30 W average at typical duty cycle (see §7), peaking to ~100 W during high-acceleration moves. The motor copper losses are the dominant term, followed by gearbox friction (≈ 6 W per harmonic at full load) and drive electronics (3 W).

Heat path

Motor stator → aluminium housing → external surface → ambient (natural convection + radiation).

Convection budget (natural)

  • Joint case surface area ≈ 0.06 m² (J2/J3).
  • Natural-convection coefficient on a vertical Al case ≈ 8–10 W/m²·K at ΔT = 30 K.
  • Radiation contribution (ε = 0.85 anodized Al): ~5 W at ΔT = 30 K.
  • Total dissipation capability ≈ 0.06 × 10 × 30 + 5 ≈ 23 W → marginal for the 30 W average.

So we have to do a little better. Two interventions:

  1. TIM between motor stator and case — 0.5 mm Bergquist Sil-Pad (thermal conductivity 1.6 W/m·K, ~1 K/W per joint). Drops the motor-to-case ΔT by ~15 K vs an air gap.
  2. Case fins — shallow longitudinal fins on the J2/J3 housings increase external surface area to 0.10 m². With this, dissipation rises to 0.10 × 10 × 30 + 8 = 38 W at ΔT = 30 K — covers steady-state.

For transient peaks (100 W for ~5 s during a fast move), the housing thermal mass (1.5 kg Al × 900 J/kg·K = 1.35 kJ/K) absorbs 100 W × 5 s / 1.35 kJ/K ≈ 0.4 K rise per peak — negligible.

See heat-transfer for convection / radiation theory and heat-transfer-correlations for the Nusselt-number correlations used here (vertical plate, isothermal).

If higher duty cycles are needed (e.g. 24/7 painting application), upgrade to forced convection via a small (10 mm) axial fan in the controller box drawing air through the cable bundle — but the cobot baseline does not need this.


15. EMC + safety compliance

The arm is a class-A industrial product per CISPR 11 / EN 61326-1. Hardware-level mitigations:

  • Shielded motor cables: Cu-braid + Al-foil double-shield, terminated 360° at both ends via EMC glands. Common-mode chokes (Würth WE-FCLP, ~1 mH at 1 MHz) on each motor cable at the drive end suppress the inverter-edge-driven common-mode currents that radiate as 30–500 MHz emission.
  • Star ground in controller box: DC return tied to chassis at one point only; signal grounds keyed off the same star.
  • Decoupling: 4 × 4.7 µF X7R + 470 µF Al-electrolytic on each joint DC bus; 100 nF X7R per IC pin on the drive PCB.
  • TVS clamps: PSMC SMBJ58CA on DC bus, PSMC SMAJ24CA on every external I/O line.
  • PCB layout: 4-layer (signal-GND-PWR-signal) on joint drive PCB, with continuous GND plane, stitching vias around switching-current loops, MOSFET source-to-DC-bus return loops minimized (≤ 100 mm²). See pcb-design and pcb-substrates for stack-up choice.

Required tests

  • IEC 61000-4-2 ESD: ±8 kV contact / ±15 kV air.
  • IEC 61000-4-3 radiated immunity: 10 V/m, 80 MHz – 6 GHz.
  • IEC 61000-4-4 EFT: ±2 kV mains, ±1 kV signal.
  • IEC 61000-4-5 surge: ±2 kV L–L, ±4 kV L–PE.
  • IEC 61000-4-6 conducted immunity: 10 Vrms, 150 kHz – 80 MHz.
  • IEC 61000-4-8 magnetic: 30 A/m at 50/60 Hz.
  • CISPR 11 emission, class A.

The EMC-precompliance plan: scan emission at the supplier’s chamber after first article (typically picks up the inverter switching harmonics around 100 MHz); adjust common-mode chokes and gate-drive slew (lower V_GS slew rate from 5 V/ns to 2 V/ns trades EMI for switching loss) until compliant. UL 1740 (industrial robots) and NRTL listing follow CE.


16. Validation testing

ISO 9283 — pose accuracy & repeatability

Standard test: command the TCP to traverse five predefined points (corners of an inscribed cube in the workspace) at full payload and full speed, in 30 cycles. Measure with laser tracker (Leica AT960 or equivalent). Report:

  • AP (pose accuracy): mean error.
  • RP (pose repeatability): 3σ of the cluster at each point.
  • AT (path accuracy): along a commanded linear path.

Target: AP ≤ 0.5 mm, RP ≤ 0.05 mm.

ISO 9787 — coordinate system test

Verifies the TCP frame, base frame, and tool frame are correctly aligned. Place precision reflectors at known frame origins, measure with laser tracker, fit transformation. Target: ≤ 0.2 mm / 0.05° per axis.

Static deflection

Mount arm horizontal at full reach, hang 5 kg payload, measure TCP deflection with laser interferometer. Target ≤ 1.0 mm.

Accelerated life test

Run a representative pick-and-place cycle (3 s/cycle, 0.5 g peak acceleration, 5 kg payload) for 1 M cycles. Monitor:

  • Joint torque drift (indicates gearbox wear).
  • Encoder backlash (indicates output-bearing wear).
  • Brake holding torque (indicates magnet / coil drift).

Target: < 5 % parameter drift over 1 M cycles, no failures.

MIL-STD-810 vibration

5–500 Hz random vibration, 1 g rms, 3 axes, 1 h each. The arm is non-operating during vibration (representative of shipping). Post-test: no loose fasteners, no broken solder joints, full functionality.

IEC 60068-2-x environmental

  • 60068-2-1 cold: −10 °C non-op, 0 °C op.
  • 60068-2-2 dry heat: 70 °C non-op, 50 °C op.
  • 60068-2-30 damp heat cyclic: 25/55 °C / 95 %RH, 6 cycles.

Functional safety validation (ISO 13849 SISTEMA)

Compute PFH_d for each safety function from the redundant-channel architecture, component MTTF_d, diagnostic coverage, common-cause failure. Target PFH_d ≤ 10⁻⁶ /h for PL d, ≤ 10⁻⁷ for PL e.


17. Cost build-up (qty 1000)

ItemCostNotes
Joint module (×6)9,000Motor 500 + drive PCB 300 + encoder/brake 100
Main controller$1,200NUC i5 200 + safety PLC 100 + chassis $200
Arm structure$800Tubes 2 × 5 + bolts 300 + assorted mech $350
Cable harness$400Internal arm cable + power feed + signal feed + tool-side connector
Tool flange + connector$150ISO 9409-1 flange (machined Al) + M12 connector set
Assembly + EOL test labor$1,500~6 h × $250/h burdened
Safety hardware$400E-stop 40 + dual-channel cabling 230
Direct BOM total~$13,500

Plus overheads (NRE amortization, warranty reserve, freight, packaging, distribution margin): typically 2.0–2.5× cost-up to MSRP. The UR5e retails at $28–35k, consistent with this BOM and typical industrial-robot margins.


18. Schedule

A realistic timeline for a competent multi-disciplinary team (~10 engineers + manufacturing partner):

PhaseDurationKey deliverables
Concept + sims2 moKinematic + dynamic sim, CAD concept, BOM target
Joint-module prototype6 moJoint mechanical proto, joint MCU board, FOC firmware, harmonic-drive characterisation
System integration3 moFull arm proto, EtherCAT bus, main controller, ROS 2 driver, MoveIt 2 integration
Safety + EMC certification3 moTÜV review, SISTEMA file, EMC pre-comp + comp, UL 1740 audit
Pilot production3 mo10–50-unit pilot at EMS partner, yield + reliability data, type-test of pilot units
Rampongoingqty 1000 first year

Total: ~17 months from kickoff to pilot units shipping. Standard Gantt + critical-path-method (CPM) tracking. See project-management-engineering for PM technique selection.


19. Future work / V2 considerations

  • Battery / cordless mode: integrate a 48 V Li-ion pack (10s4p, 14 Ah, ~700 Wh) into the base. Gives ~1 h of typical-duty operation. See battery-chemistries for chemistry choice (LFP for safety, NMC for energy density).
  • Wrist F/T sensor: ATI Mini40 or Robotiq FT-300, mounted between J6 output and the tool flange. Adds 6-axis F/T to the impedance loop for high-bandwidth assembly. See sensor-families (F/T sensor subsection).
  • Redundant 7-DoF variant: add an extra rotation joint at the elbow (between J3 and J4) — gives a null-space DOF for obstacle avoidance and singularity escape. The IK extends to a parameterised closed-form (one free parameter = arm-elbow angle). See manipulator-topologies (7-DoF redundant section).
  • AI / foundation-model policy executor: layer an RT-2 / OpenVLA-class vision-language-action policy on top of the impedance controller. Policy runs at 5–10 Hz, emits TCP setpoints; impedance loop at 250 Hz tracks. Compute: NVIDIA Jetson Orin AGX (64 GB) in the controller box; offload cloud inference for large models. See control-algorithms (RL + foundation-model subsection).
  • Better collision detection: capacitive skin (Pilz, Bosch APAS) or e-skin tactile-array along the upper-arm tube. Detects approach before contact, allows higher cobot speeds. See sensors-force-tactile.

20. Cross-references summary

Tier notes wikilinked above, in order of first appearance:


21. Citations

  • ISO 10218-1:2011 — Robots and robotic devices — Safety requirements for industrial robots — Part 1: Robots.
  • ISO 10218-2:2011 — Part 2: Robot systems and integration.
  • ISO/TS 15066:2016 — Robots and robotic devices — Collaborative robots.
  • ISO 13849-1:2023 — Safety of machinery — Safety-related parts of control systems — Part 1: General principles for design.
  • ISO 9283:1998 — Manipulating industrial robots — Performance criteria and related test methods.
  • ISO 9787:2013 — Manipulating industrial robots — Coordinate systems and motion nomenclatures.
  • ISO 9409-1:2004 — Manipulating industrial robots — Mechanical interfaces — Part 1: Plates.
  • ISO 12100:2010 — Safety of machinery — General principles for design — Risk assessment and risk reduction.
  • IEC 61326-1:2020 — EMC requirements for measurement, control and laboratory equipment.
  • IEC 61000-4 series — EMC test methods.
  • IEC 60204-1:2018 — Safety of machinery — Electrical equipment of machines.
  • UL 1740 — Industrial robots and robotic equipment.
  • Universal Robots e-Series technical reference, kinematic data sheets, public schematics. https://www.universal-robots.com/
  • Harmonic Drive LLC, Engineering Data — CSF-series cup-type units. https://www.harmonicdrive.net/
  • Kollmorgen Inc., TBM(S) Frameless Motor Reference Manual. https://www.kollmorgen.com/
  • Texas Instruments, DRV8323 datasheet + INA240 datasheet.
  • STMicroelectronics, STM32G474 reference manual (RM0440).
  • Microchip, LAN9252 EtherCAT slave controller datasheet.
  • Pilz GmbH, PSSu modular safety controller documentation.
  • Mayr Antriebstechnik, ROBA-stop-M electromagnetic spring brakes catalog.
  • Renishaw plc, RoLin RL35 absolute rotary encoder datasheet.
  • AMS-OSRAM, AS5147P magnetic rotary encoder datasheet.
  • Beckhoff Automation, EtherCAT system documentation.