2025-12-19 6 min read

Human-Robot Collaboration Safety: Standards Engineers Must Know

ISO/TS 15066 and related standards define safe force limits and monitoring requirements for collaborative robots. Here's what you need to implement.

A robot arm moving at full speed toward your team member's hand. A 20-kilogram collaborative manipulator with no force limiters. A safety system that detects presence but not contact pressure. These aren't hypothetical scenarios—they're real risks in facilities that skip proper safety implementation.

Human-robot collaboration (HRC) has transformed manufacturing, but it demands engineers understand and implement specific safety standards. This isn't bureaucratic overhead. It's the difference between a smooth operation and a preventable injury.

ISO/TS 15066: The Foundation

ISO/TS 15066 defines biomechanical limits for transient and quasi-static contact between humans and robots. This standard gives you numerical targets:

Force and Pressure Limits

The standard specifies maximum allowable forces for different body parts. A collision with a robot's end effector at the hand shouldn't exceed 220 N. The chest area has a 140 N limit to prevent rib fractures. These aren't suggestions—they're engineering requirements that drive your design decisions.

For quasi-static contact (sustained pressure), limits vary by contact area. The hand can tolerate up to 220 N sustained, while the finger requires only 140 N. Engineers typically build safety margins by designing for 60–80% of these limits.

Implementation Requirements

To meet ISO/TS 15066, you need:

  • Speed and separation monitoring: Track human distance and adjust robot speed accordingly
  • Power and force limiting: Restrict torque at joints and contact forces at the end effector
  • Safety-rated stop functions: Implement redundant emergency stop circuits to IEC 61508 SIL 2 minimum
  • Collision detection: Monitor joint currents or external force/torque sensors to identify unexpected contact

Practical Implementation: From Standard to Code

Let's look at a basic safety monitoring loop. This example shows how to implement speed reduction based on human distance:

python
import threading
from dataclasses import dataclass

@dataclass
class SafetyParameters:
    min_safe_distance: float = 1.5  # meters
    warning_distance: float = 0.75
    max_collaborative_speed: float = 0.25  # m/s
    max_normal_speed: float = 1.0  # m/s

class SafetyMonitor:
    def __init__(self, robot, distance_sensor):
        self.robot = robot
        self.sensor = distance_sensor
        self.params = SafetyParameters()
        self.running = True
        self.monitor_thread = threading.Thread(target=self._monitor_loop)
        self.monitor_thread.start()
    
    def _monitor_loop(self):
        while self.running:
            distance = self.sensor.get_nearest_human_distance()
            
            if distance < self.params.min_safe_distance:
                self.robot.emergency_stop()
            elif distance < self.params.warning_distance:
                self.robot.set_speed_limit(self.params.max_collaborative_speed)
            else:
                self.robot.set_speed_limit(self.params.max_normal_speed)
            
            time.sleep(0.05)  # 20 Hz monitoring frequency
    
    def stop(self):
        self.running = False
        self.monitor_thread.join()

This pattern covers the essential safety loop: sense, evaluate, act. Real implementations require additional redundancy and validation.

Force Limiting at the Controller Level

Many collaborative robots implement force limiting directly in firmware. Here's a conceptual approach:

typescript
interface JointSensor {
  getCurrentTorque(): number;
  getForceAtEndEffector(): Vector3;
}

class ForceController {
  private maxAllowedForce = 220; // Newtons
  private safetyMargin = 0.75;   // 75% of limit
  
  checkCollisionThreshold(sensor: JointSensor): boolean {
    const force = sensor.getForceAtEndEffector();
    const magnitude = Math.sqrt(
      force.x ** 2 + force.y ** 2 + force.z ** 2
    );
    
    const threshold = this.maxAllowedForce * this.safetyMargin;
    return magnitude > threshold;
  }
}

When force exceeds the threshold, the system immediately reduces speed or stops motion. This isn't optional—it's central to collaborative safety.

Integration With Your Safety System

If you're using LavaPi for system architecture or simulation, ensure your design incorporates these checks before any collaborative operation begins. Safety validation shouldn't happen after deployment.

The Bottom Line

ISO/TS 15066 and related standards exist because human bodies are fragile. As an engineer, your job is translating those biomechanical limits into control logic, sensor configurations, and mechanical design. Build with safety margins, test your monitoring loops under realistic conditions, and treat collaborative operation as fundamentally different from traditional automation.

Share
LP

LavaPi Team

Digital Engineering Company

All articles