> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roboticks.io/llms.txt
> Use this file to discover all available pages before exploring further.

# ISO/TS 15066 Collaborative Robots

> Transient and quasi-static contact force limits per body region. Deriving testable requirements from the thresholds. Sim-based vs hardware test approaches.

# ISO/TS 15066

ISO/TS 15066:2016, *Robots and robotic devices — Collaborative robots*, is the technical specification that puts numbers on the collaborative-operation clauses of ISO 10218. It defines the quantitative biomechanical limits for transient and quasi-static contact between a cobot and a human operator.

It is normatively a **Technical Specification**, not a full International Standard — but it is the dominant reference for cobot conformity claims under ISO 10218 collaborative-operation clauses, and is cross-cited by EU MR 2023/1230 conformity assessments for cobot applications.

<Warning>
  **Roboticks is audit-readiness tooling, not a certified toolchain.** We assemble the evidence your notified body, certification body, or QA process ingests. We do not replace tool qualification (DO-178C, ISO 26262-8 TCL) and we do not issue conformity assessments. Verify the regulatory interpretations on this page against the standard text and your accredited assessor.
</Warning>

## Scope

Applies to:

* Collaborative robot systems (robot + end-effector + cell) operating in **Power and Force Limiting (PFL)** mode per ISO 10218.
* Quantitative biomechanical limits for transient (impact, ≤0.5 s) and quasi-static (clamping, >0.5 s) contact.
* Contact-pressure and contact-force thresholds per body region (head, face, chest, abdomen, upper limb, hand, etc.) — Annex A.

It does **not** apply to:

* Safety-rated Monitored Stop (SMS), Hand Guiding (HG), or Speed-and-Separation Monitoring (SSM) modes — the other three collaborative modes of ISO 10218. Those have their own clauses and do not require force / pressure verification.

## What the thresholds look like

Annex A gives, per body region, a maximum quasi-static force, transient force, quasi-static pressure, and transient pressure. The numbers are the result of biomechanical pain-onset studies. As an illustrative example (consult the standard for exact values and the most current edition):

| Body region  | Quasi-static force                              | Transient force |
| ------------ | ----------------------------------------------- | --------------- |
| Hand, finger | low                                             | moderate        |
| Forearm      | moderate                                        | higher          |
| Upper arm    | moderate                                        | higher          |
| Chest        | low                                             | moderate        |
| Head, face   | very low (effectively zero contact recommended) | very low        |

The clinical numbers are in Annex A of the TS. Your contact assessment must produce, for every contact scenario the risk assessment identifies, a force/pressure measurement (or validated model) below the applicable threshold.

## What Roboticks supports

* **Clause-level derivation** from ISO/TS 15066, particularly the Annex A tables.
* **Per-body-region requirement structure** — author one requirement per (body region, contact mode) tuple, derive it from the corresponding Annex A row.
* **Sim-based force measurement** — capture wrench data on contact-candidate surfaces in Gazebo or Webots; the [SDK](/sdk/overview) provides `roboticks.gazebo.contact_force()` and `roboticks.webots.touch_sensor()` helpers.
* **Hardware-test ingestion** — JUnit XML from your hardware-in-the-loop rig with `roboticks.confirms` properties tying back to the derived requirement.
* **MCAP capture of contact events** — every contact scenario records a bag containing TF, contact wrenches, joint states. The evidence pack references the MCAPs.

## What Roboticks does not do

* We do not maintain the Annex A threshold tables. Pull them from your licensed copy of ISO/TS 15066.
* We do not provide certified contact-force sensors. You bring the hardware or the validated sim model.
* We do not perform the biomechanical-equivalence assessment that justifies sim-only verification (when sim is your evidence vehicle, your safety engineer documents the equivalence).

## Sim-based vs hardware verification

Both are acceptable; both have trade-offs.

| Approach                                                   | Pros                                                  | Cons                                                                         |
| ---------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------- |
| **Sim-based** (Gazebo / Webots with contact models)        | Scales to thousands of scenarios; cheap; reproducible | Requires validated contact model; assessment-time scrutiny on sim-vs-reality |
| **Hardware-in-the-loop**                                   | Direct measurement; persuasive to assessors           | Slow; expensive; limited scenario coverage                                   |
| **Hybrid** (sim broad coverage + hardware spot validation) | Best of both                                          | More tooling to maintain                                                     |

Most production cobot programs end up hybrid: a few hundred sim scenarios cover the breadth of contact configurations, and a curated set of \~20 hardware spot tests anchor the sim-vs-reality equivalence claim. The evidence pack accommodates both — sim runs and hardware runs are equally first-class JUnit + MCAP inputs.

## Example derived requirement

```yaml theme={null}
- id: REQ-PFL-007
  title: Quasi-static contact force on upper arm below TS 15066 Annex A limit
  type: safety
  asil_pl: PLd
  derives_from:
    - standard: iso-ts-15066-2016
      clause: "Annex A, Table A.2 — upper arm, quasi-static"
      edition: "2016"
    - standard: iso-10218-1-2025
      clause: "§5.10.5 Power and Force Limiting"
      edition: "2025-07"
  text: |
    In any operating mode where contact with an operator's upper arm
    is foreseeable, the cobot shall not produce a quasi-static
    contact force exceeding the Annex A Table A.2 quasi-static limit
    for the upper arm. Verified across the contact-scenario set
    defined in `scenarios/contact_upper_arm.yaml`.
  acceptance:
    - test: tests/pfl/test_upper_arm_contact.py
```

The test is parameterised across the contact-scenario set:

```python theme={null}
import pytest
from roboticks import confirms
from roboticks.gazebo import contact_force

CONTACT_SCENARIOS = load_scenarios("scenarios/contact_upper_arm.yaml")
UPPER_ARM_QS_LIMIT_N = 150  # placeholder; consult ISO/TS 15066 Annex A

@pytest.mark.parametrize("scenario", CONTACT_SCENARIOS, ids=lambda s: s.id)
@confirms("REQ-PFL-007")
def test_upper_arm_contact(robot, scenario):
    robot.load_world(scenario.world)
    robot.execute(scenario.trajectory)
    peak_quasi_static = contact_force(
        robot, body_region="upper_arm", duration_threshold_s=0.5
    ).peak()
    assert peak_quasi_static < UPPER_ARM_QS_LIMIT_N, (
        f"{scenario.id}: peak {peak_quasi_static} N exceeds limit"
    )
```

Every scenario run captures an MCAP of contact wrench, TF, and joint states. The evidence pack references every MCAP for auditor inspection.

## Conformity route

A cobot conforming to ISO/TS 15066 typically:

1. Pins ISO 10218-1:2025 + ISO 10218-2:2025 + ISO/TS 15066.
2. Derives per-body-region contact requirements from Annex A.
3. Defines a contact-scenario set covering every foreseeable contact configuration the risk assessment identified.
4. Runs the scenarios in sim, captures MCAPs, generates evidence pack.
5. Anchors with a hardware spot-test set for sim-vs-reality equivalence.

See the [cobot ISO/TS 15066 compliance pattern](/compliance/cobot-iso-ts-15066) for the end-to-end workflow.

## Pinning

```bash theme={null}
rbtk standard pin iso-ts-15066-2016 --project acme-cobot/firmware
```

Or via the `cobot-eu` bulk template.

## Next steps

<CardGroup cols={2}>
  <Card title="Cobot compliance pattern" icon="handshake" href="/compliance/cobot-iso-ts-15066">
    End-to-end workflow.
  </Card>

  <Card title="ISO 10218" icon="industry" href="/standards/iso-10218">
    The parent standard that cites TS 15066 for PFL operation.
  </Card>
</CardGroup>
