Pytransform3d Versions Save

3D transformations for Python.

3.5.0

6 months ago

Features

  • Add pytransform3d.transformations.pq_slerp, which performs linear interpolation of position and SLERP of quaternion.

Bugfixes

  • Fix serialization of TransformManager objects.

Documentation

  • Add connections between docstrings through "See Also" sections.

Refactoring

  • Rename branch master to main.

3.4.0

9 months ago

Features

  • More general mesh loader that can handle more file formats (e.g., collada), loads meshes more robustly, and enables dynamic selection of available libraries to load a mesh (currently supported: Open3D, trimesh).

Bugfixes

  • Improve numerical precision of pytransform3d.rotations.norm_angle.
  • Clamp argument to range [-1, 1] before applying arccos in some conversion functions.

Refactoring

  • Extract common geometric code used for visualization and plotting and move it to the geometry module.

Documentation

  • Improve discussion of pros and cons of rotation representations.

3.3.0

9 months ago

Features

  • Add option to visualize convex hull of collision objects.
  • Add TemporalTransformManager to handle dynamic transformations.

Documentation

  • New logo.
  • Add section on temporal alignment of transformations.

Refactoring

  • Remove dependency beautifulsoup4 and use lxml for URDF parsing.
  • Turn pytransform3d.transform_manager into a subpackage.
  • Extract base class TransformGraphBase from TransformManager that contains common code of TransformManager and TemporalTransformManager.

3.2.0

11 months ago

Bugfixes

  • Fix edge cases of euler angle computation from rotation matrix
  • Fix inconsistency when removing transforms from the TransformManager

Documentation

  • Add citation file (CITATION.cff) to repository

3.1.0

1 year ago

Bugfixes

  • Include Python stub files with type hints in package

Features

  • Concatenation of locally uncertain transformations: pytransform3d.uncertainty.concat_locally_uncertain_transforms; needed for probabilistic product of exponentials

3.0.0

1 year ago

Breaking Changes

  • Switch to new random number generator interface of NumPy (numpy.random.RandomState is legacy code, see good practices with numpy 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.

2.3.1

1 year ago

Last version with Python 2 support!

Deprecation

  • Rename random_state argument to rng in all functions that use random number generators. This change will prepare the transition to the new numpy random number generator interface in version 3.0.0 of pytransform3d. The old argument name still works and prints out a deprecation warning.

2.3.0

1 year ago

Features

  • Serialization of TransformManager with to_dict which produces a serializable dict. An identical object can be created from a deserialized dict with from_dict.

Documentation

  • General introduction to 3D rigid transformations
  • Update discussion of rotation matrices

Bugfixes

  • Relax numerical precision check of rotation matrices (pytransform3d.rotations.check_matrix). Instead of checking the determinant, only the components of R.dot(R.T) will be compared with I.

Tests

  • Use pytest for testing
  • Update CI to check up to Python 3.11

2.2.0

1 year ago

Features

New interface to Euler angles

  • Add rotations.euler_from_quaternion to convert quaternions to arbitrary Euler angles (#207)
  • Add rotations.quaternion_from_angle
  • Add quaternion_from_euler to convert from arbitrary Euler angles to quaternion (#211)
  • Add matrix_from_euler to convert from arbitrary Euler angles to active rotation matrix
  • Add euler_from_matrix to convert from active rotation matrix to arbitrary Euler angles

Bugfixes

  • Fix plot_utils.plot_cylinder and plot_utils.plot_cone in case of axis alignment (#206)

Deprecated

  • rotations.quaternion_from_extrinsic_euler_xyz

2.1.0

1 year ago

Refactoring

  • UrdfTransformManager also stores fixed joints internally #203

Bugfixes

  • Use numpy.int64 instead of numpy.int