Metadata-Version: 2.1
Name: dm-robotics-transformations
Version: 0.5.0
Summary: A library for Rigid Body Transformations
Home-page: https://github.com/deepmind/dm_robotics/tree/main/py/transformations
Author: DeepMind
License: Apache 2.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Description-Content-Type: text/markdown
Requires-Dist: pip (>=20.0.2)
Requires-Dist: absl-py (>=0.9.0)
Requires-Dist: numpy (>=1.16.0)
Provides-Extra: quaternion
Requires-Dist: numpy-quaternion (==2021.11.4.15.26.3) ; extra == 'quaternion'

# DeepMind Robotics Transformations

Transformations is a pure python library for rigid-body transformations
including velocities and forces.

The objectives for this library are **simplicity** and **comprehensiveness**
across all canonical representations (euler, axis-angle, quaternion,
homogeneous matrices).


## Supported conversions:
* Quaternion to Rotation matrix, Axis-angle and Euler-angle
* Axis-angle to Quaternion, Rotation matrix and Euler-angle
* Rotation matrix to Quaternion, Axis-angle and Euler-angle
* Euler-angle to Quaternion, Rotation matrix and Axis-angle

## Quaternions:
Quaternions are represented with the scalar part (w) first, e.g.

```python
identity_quaternion = np.asarray([1, 0, 0, 0])  # w, i, j, k
```

Supported quaternion operations:

* Difference
* Distance
* Multiplication
* Inverse
* Conjugate
* Logarithm and Exponent
* Slerp (spherical linear interpolation)
* Rotation of a vector by a quaternion.

## Euler-angles
All 24 from-euler orderings are supported.
7 of 24 to-euler orderings are supported.

## Transforms
This library supports force and velocity transforms.

## Usage Example

```python
from dm_robotics.transformations import transformations as tr

# Convert a pose, euler angle into a homogeneous matrix (a 4x4 matrix):
hmat = tr.poseuler_to_hmat(
        np.array([x, y, z, rot_x, rot_y, rot_z]), 'XYZ')

# Convert the homogeneous matrix to a twist (a 6 vector):
twist = tr.hmat_to_twist(hmat)
```

