# ROS 2 Requirements on Robot

To use ROS 2 with Kangaroo, the robot must be running a minimum firmware version on the motor control boards. Older firmware versions are **not compatible** with the ROS 2 stack.

```{note}
Minimum required firmware version: **1.22.1**
```

## What Changed in Firmware 1.22.1

### Force/Torque Control on Motor Control Boards

Firmware 1.22.1 introduces **Force/Torque control** directly on the motor control boards, enabling closed-loop force control at the actuator level.

### Force Units: Deci Newtons → Milli Newtons

Prior to this firmware version, forces communicated with the motor control boards via driver were expressed in **deci newtons (dN)**. From firmware **1.9.0** onward, forces are now expressed in **milli newtons (mN)** instead. However, the data exposed to the users via ros_control/ros2_control is always in **Newtons (N)**.

```{warning}
Any software, driver, or tooling that reads or writes force values to the motor control boards must be updated to account for this unit change. Mixing firmware versions and unit assumptions will result in force values that are off by a factor of 100.
```

### Leg Length Zero Calibration

The zero calibration reference for the leg length actuator has also changed:

- **Before 1.22.1**: the zero position was set with the leg **fully crouched**.
- **From 1.22.1 onward**: the zero position is set with the leg **fully extended**, pushed down until it reaches the mechanical limit.

See the [Joints Calibration](joints_calibration.md#leg-length-zero-setting) section for the up-to-date calibration procedure.
