# Utils

## Interpolation Functions[[reachy_mini.utils.interpolation.minimum_jerk]]

#### reachy_mini.utils.interpolation.minimum_jerk[[reachy_mini.utils.interpolation.minimum_jerk]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L13)

Compute the minimum jerk interpolation function from starting position to goal position.

#### reachy_mini.utils.interpolation.linear_pose_interpolation[[reachy_mini.utils.interpolation.linear_pose_interpolation]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L58)

Linearly interpolate between two poses in 6D space.

#### reachy_mini.utils.interpolation.time_trajectory[[reachy_mini.utils.interpolation.time_trajectory]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L96)

Compute the time trajectory value based on the specified interpolation method.

#### reachy_mini.utils.interpolation.delta_angle_between_mat_rot[[reachy_mini.utils.interpolation.delta_angle_between_mat_rot]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L135)

Compute the angle (in radians) between two 3x3 rotation matrices `P` and `Q`.

This is equivalent to the angular distance in axis-angle space.
It is computed via the trace of the relative rotation matrix.

References:
- https://math.stackexchange.com/questions/2113634/comparing-two-rotation-matrices
- http://www.boris-belousov.net/2016/12/01/quat-dist/

**Parameters:**

P : A 3x3 rotation matrix.

Q : Another 3x3 rotation matrix.

**Returns:**

The angle in radians between the two rotations.

#### reachy_mini.utils.interpolation.distance_between_poses[[reachy_mini.utils.interpolation.distance_between_poses]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L161)

Compute three types of distance between two 4x4 homogeneous transformation matrices.

The result combines translation (in mm) and rotation (in degrees) using an arbitrary but
emotionally satisfying equivalence: 1 degree ≈ 1 mm.

**Parameters:**

pose1 : A 4x4 homogeneous transformation matrix representing the first pose.

pose2 : A 4x4 homogeneous transformation matrix representing the second pose.

**Returns:**

`A tuple of`

- translation distance in meters,
- angular distance in radians,
- unhinged distance in magic-mm (translation in mm + rotation in degrees).

#### reachy_mini.utils.interpolation.compose_world_offset[[reachy_mini.utils.interpolation.compose_world_offset]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L187)

Compose an absolute world-frame pose with a world-frame offset.

- translations add in world:       t_final = t_abs + t_off
- rotations compose in world:      R_final = R_off @ R_abs
This rotates the frame in place (about its own origin) by a rotation
defined in world axes, and shifts it by a world translation.

Parameters
----------
T_abs : (4,4) ndarray
Absolute pose in world frame.
T_off_world : (4,4) ndarray
Offset transform specified in world axes (dx,dy,dz in world; dR about world axes).
reorthonormalize : bool
If True, SVD-orthonormalize the resulting rotation to fight drift.

Returns
-------
T_final : (4,4) ndarray
Resulting pose in world frame.

#### reachy_mini.utils.interpolation.InterpolationTechnique[[reachy_mini.utils.interpolation.InterpolationTechnique]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/interpolation.py#L87)

Enumeration of interpolation techniques.

## Hardware Configuration[[reachy_mini.utils.hardware_config.parser.MotorConfig]]

#### reachy_mini.utils.hardware_config.parser.MotorConfig[[reachy_mini.utils.hardware_config.parser.MotorConfig]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/hardware_config/parser.py#L9)

Motor configuration.

#### reachy_mini.utils.hardware_config.parser.SerialConfig[[reachy_mini.utils.hardware_config.parser.SerialConfig]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/hardware_config/parser.py#L23)

Serial configuration.

#### reachy_mini.utils.hardware_config.parser.ReachyMiniConfig[[reachy_mini.utils.hardware_config.parser.ReachyMiniConfig]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/hardware_config/parser.py#L30)

Reachy Mini configuration.

#### reachy_mini.utils.hardware_config.parser.parse_yaml_config[[reachy_mini.utils.hardware_config.parser.parse_yaml_config]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/hardware_config/parser.py#L38)

Parse the YAML configuration file and return a ReachyMiniConfig.

## Rerun Visualization[[reachy_mini.utils.rerun.Rerun]]

#### reachy_mini.utils.rerun.Rerun[[reachy_mini.utils.rerun.Rerun]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L27)

Rerun logging for Reachy Mini.

log_camerareachy_mini.utils.rerun.Rerun.log_camerahttps://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L130[]
Log the camera image to Rerun.
#### log_movements[[reachy_mini.utils.rerun.Rerun.log_movements]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L186)

Log the movement data to Rerun.
#### set_absolute_path_to_urdf[[reachy_mini.utils.rerun.Rerun.set_absolute_path_to_urdf]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L95)

Set the absolute paths in the URDF file. Rerun cannot read the "package://" paths.
#### start[[reachy_mini.utils.rerun.Rerun.start]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L105)

Start the Rerun logging threads.
#### stop[[reachy_mini.utils.rerun.Rerun.stop]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/rerun.py#L111)

Stop the Rerun logging threads.

## Wireless Version Utilities[[reachy_mini.utils.wireless_version.utils.call_logger_wrapper]]

#### reachy_mini.utils.wireless_version.utils.call_logger_wrapper[[reachy_mini.utils.wireless_version.utils.call_logger_wrapper]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/utils.py#L112)

Run a shell command asynchronously, streaming stdout and stderr to logger in real time.

**Parameters:**

command : Shell command string.

logger : logger object with .info and .error methods

env : Optional environment variables dict. If None, inherits current environment.

#### reachy_mini.utils.wireless_version.update.update_reachy_mini[[reachy_mini.utils.wireless_version.update.update_reachy_mini]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/update.py#L9)

Update reachy_mini package and restart daemon.

**Parameters:**

logger : Logger for streaming output.

pre_release : If True, install pre-release from PyPI (ignored if git_ref set).

git_ref : If set, install from this GitHub tag/branch instead of PyPI.

#### reachy_mini.utils.wireless_version.startup_check.check_and_fix_venvs_ownership[[reachy_mini.utils.wireless_version.startup_check.check_and_fix_venvs_ownership]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/startup_check.py#L17)

For wireless units, check if files under venvs_path are owned by user pollen and fix if needed.

**Parameters:**

venvs_path : Path to the virtual environments directory (default: /venvs)

custom_logger : Optional logger to use instead of the module logger

#### reachy_mini.utils.wireless_version.startup_check.check_and_update_bluetooth_service[[reachy_mini.utils.wireless_version.startup_check.check_and_update_bluetooth_service]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/startup_check.py#L80)

Check if bluetooth service needs updating and update if different.

Compares the source bluetooth_service.py with the installed version at
/bluetooth/bluetooth_service.py. If they differ, copies the new version
and restarts the bluetooth service. Also syncs the commands/ folder.

#### reachy_mini.utils.wireless_version.startup_check.check_and_update_wireless_launcher[[reachy_mini.utils.wireless_version.startup_check.check_and_update_wireless_launcher]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/startup_check.py#L190)

Check if wireless daemon service needs updating and update if different.

Compares the source reachy-mini-daemon.service with the installed version.
If they differ, copies the new version and reloads systemd.

#### reachy_mini.utils.wireless_version.startup_check.check_and_sync_apps_venv_sdk[[reachy_mini.utils.wireless_version.startup_check.check_and_sync_apps_venv_sdk]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/startup_check.py#L255)

Check if apps_venv SDK matches daemon install source and sync if needed.

Compares both version AND install source (PyPI vs git ref). If daemon was
installed from a git ref, apps_venv will be synced to the same ref.

#### reachy_mini.utils.wireless_version.update_available.is_update_available[[reachy_mini.utils.wireless_version.update_available.is_update_available]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/update_available.py#L36)

Check if an update is available for the given package.

#### reachy_mini.utils.wireless_version.update_available.get_pypi_version[[reachy_mini.utils.wireless_version.update_available.get_pypi_version]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/update_available.py#L47)

Get the latest version of a package from PyPI.

#### reachy_mini.utils.wireless_version.update_available.get_local_version[[reachy_mini.utils.wireless_version.update_available.get_local_version]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/wireless_version/update_available.py#L65)

Get the currently installed version of a package.

## Core Utilities[[reachy_mini.utils.create_head_pose]]

#### reachy_mini.utils.create_head_pose[[reachy_mini.utils.create_head_pose]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/__init__.py#L13)

Create a homogeneous transformation matrix representing a pose in 6D space (position and orientation).

**Parameters:**

x (float) : X coordinate of the position.

y (float) : Y coordinate of the position.

z (float) : Z coordinate of the position.

roll (float) : Roll angle

pitch (float) : Pitch angle

yaw (float) : Yaw angle

mm (bool) : If True, convert position from millimeters to meters.

degrees (bool) : If True, interpret roll, pitch, and yaw as degrees; otherwise as radians.

**Returns:**

`np.ndarray`

A 4x4 homogeneous transformation matrix representing the pose.

## URDF Parsing[[reachy_mini.utils.parse_urdf_for_kinematics.get_data]]

#### reachy_mini.utils.parse_urdf_for_kinematics.get_data[[reachy_mini.utils.parse_urdf_for_kinematics.get_data]]

[Source](https://github.com/pollen-robotics/reachy_mini/blob/v1.8.2/src/reachy_mini/utils/parse_urdf_for_kinematics.py#L17)

Generate the urdf_kinematics.json file.

