Breaking Changes
* Switch to new random number generator interface of NumPy (`numpy.random.RandomState` is [legacy code](https://numpy.org/doc/stable/reference/random/legacy.html), see [good practices with numpy random number generators](https://albertcthomas.github.io/good-practices-random-number-generators/)). `random_state` arguments will also be renamed to `rng`. *With this change pytransform3d does not work with Python 2 anymore as there is no NumPy version for Python 2 that supports the new random number generator interface.*
Features
- `pytransform3d.rotations`
- Add left Jacobian of SO(3) and its inverse
- New representation of rotations: Modified Rodrigues Parameters (MRP)
- Add input validation function: `pytransform3d.rotations.check_mrp`
- Add conversion from quaternion to MRP: `pytransform3d.rotations.mrp_from_quaternion`
- Add conversion from MRP to quaternion: `pytransform3d.rotations.quaternion_from_mrp`
- `pytransform3d.transformations`
- Add left Jacobian of SE(3) and its inverse
- Add function to generate random exponential coordinates
- Extend function to generate random transformation matrices by mean and covariance argument
- Add new module `pytransform3d.uncertainty` with the following functions:
- `estimate_gaussian_transform_from_samples`
- `invert_uncertain_transform`
- `concat_uncertain_transforms`
- `pose_fusion`
- `to_ellipsoid`
- `to_projected_ellipsoid`
- `plot_projected_ellipsoid`
* Add `pytransform3d.plot_utils.plot_spheres` to plot multiple spheres more efficiently.
Bugfixes
* Fix handling of integer inputs in conversion functions of `pytransform3d.coordinates`.
* Fix argument `strict_check` of `pytramsform.camera.plot_camera`.
Documentation
* More visually appealing introduction and description of TransformManager.
* Add introduction to 3D rigid transformations for beginners.
* Add more details on exponential coordinates of SO(3) and SE(3) in docstrings.