Skip to content

Releases: dfki-ric/pytransform3d

3.12.0

25 Jan 21:00
Compare
Choose a tag to compare

Features

  • Add transformations.norm_dual_quaternion
  • Add option unit to transformations.concatenate_dual_quaternions to allow multiplication of unnormalized dual quaternions
  • Update transformations.dual_quaternion_requires_renormalization to check for orthogonality of real and dual quaternion
  • Add rotations.robust_polar_decomposition as an alternative orthonormalization method for rotation matrices

3.11.0

09 Jan 21:00
Compare
Choose a tag to compare

Features

  • Add random sampling of rotation matrices
  • Add estimation of Gaussian rotation
  • Add general implementation of Frechet mean

Bugfixes

  • Fix case of no rotation for batch conversion from rotation matrices to axis-angle representation
  • Do not catch ImportErrors for missing plotting dependencies except matplotlib
  • Fix loading of color STL meshes by trying to load with Open3D first, since trimesh does not support color information in STL files

Refactoring

  • Refactor conversion of trimesh scenes to meshes when converting to Open3D mesh by implementing the composition with Open3D

3.10.1

31 Dec 16:00
Compare
Choose a tag to compare

Documentation

  • Fix interpretation of rotation matrix (see #321)

Testing

  • Add Python versions 3.12 and 3.13 to CI

3.10.0

14 Dec 15:56
Compare
Choose a tag to compare

Features

  • Add class plot_utils.Camera for animations of camera frames.

Documentation

  • Update installation instructions to be compatible with zsh.
  • Fix array shape in a docstring.

3.9.0

27 Nov 12:26
Compare
Choose a tag to compare

Highlight

The TemporalTransformManager now allows vectorized queries along the time axis (contributed by @JonasHablitzel), for example,

tm = TemporalTransformManager()
tm.add_transform("A", "W", A2world)
tm.add_transform("B", "W", B2world)
A2B_at_start_time, A2B_after_start_time = tm.get_transform_at_time("A", "B", [0.0, 0.1])

Features

  • Add mrp_prod_vector to apply modified Rodrigues parameters to a vector
  • Add alias rot_log_from_compact_axis_angle for cross_product_matrix
  • Add alias check_rot_log for check_skew_symmetric_matrix
  • Add batch_rotations.norm_axis_angles
  • Add batch_rotations.axis_angles_from_quaternions
  • Add trajectories.concat_many_to_many
  • Add trajectories.concat_dynamic
  • Add trajectories.screw_parameters_from_dual_quaternions
  • Add trajectories.dual_quaternions_from_screw_parameters
  • Add trajectories.dual_quaternions_power
  • Add trajectories.dual_quaternions_sclerp
  • Add trajectories.batch_dq_q_conj
  • Vectorize TimeVaryingTransform.as_matrix and TemporalTransformManager.current_time to enable querying transformations for multiple times at once (#301)

Bugfixes

  • Fix mrp_double for no rotation (np.zeros(3))

3.8.0

28 Oct 15:56
Compare
Choose a tag to compare

Features

  • Add conversions between axis-angle representation and MRP
  • Add functions to write numerically stable code and avoid pitfalls
    • matrix_requires_renormalization - check if rotation matrix needs renormalization
    • norm_euler - maps Euler angles to unique interval
    • euler_near_gimbal_lock - checks if angles are close to gimbal lock singularity
    • assert_euler_almost_equal - checks if two sets of Euler angles are similar
    • compact_axis_angle_near_pi - check if angle is close to pi
    • quaternion_double - create another quaternion that represents the same orientation (double cover)
    • quaternion_requires_renormalization - check if quaternion needs renormalization
    • mrp_near_singularity - check if angle is close to 2 * pi
    • norm_mrp - normalize angle to [-pi, pi]
    • mrp_double - create another mrp that represents the same orientation (double cover)
    • assert_mrp_almost_equal - check if two mrp vectors are similar
    • transform_requires_renormalization - check if transformation matrix needs renormalization
    • assert_exponential_coordinates_almost_equal - check if exp. coordinates are similar
    • dual_quaternion_requires_renormalization - check if dual quaternion needs renormalization
    • dual_quaternion_double - create another dual quaternion that represents the same transformation (double cover)

Documentation

  • Sort API documentation of rotations and transformations by representation
  • Correct documentation of angle limits for Euler angles

3.7.0

15 Oct 19:08
Compare
Choose a tag to compare

Features

  • Add concatenation of modified Rodrigues parameters (#299 )
  • Add TransformGraphBase.remove_frame (#300 )

Documentation

  • Fix PDF documentation
  • Link examples in user guide about rotations and transformations
  • Correct grammatical errors and typos
  • Document how Gaussian distributions of transformations are computed
  • Fix logo for dark mode (#297)
  • Review documentation of UrdfTransformManager
  • Explain example "Probabilistic Product of Exponentials" step by step
  • Explain example "Concatenate Uncertain Transforms" step by step
  • Explain quaternion operations

3.6.2

20 Sep 08:18
Compare
Choose a tag to compare

Documentation

  • Improve rotor explanation
  • Review user guide sections on rotations, transformations, and camera
  • Add user guide section about uncertainty module (fix #291)
  • Fix sidebar in section about ambiguities
  • Better names of user documentation sections
  • Remove animation section
  • Add cross-references in API documentation

3.6.1

16 Sep 08:07
Compare
Choose a tag to compare

Documentation

  • Use pydata-sphinx-theme, remove sphinx-bootstrap-theme. (Fix #287)
  • Fix Open3D scraper for latest version of sphinx-gallery. (Fix #286)
  • Show logo in sphinx documentation

3.6.0

10 Sep 11:44
Compare
Choose a tag to compare

Documentation

  • Remove pyrender example
  • Reference references in user documentation

Bugfixes

  • Fix pytransform3d.visualizer.Figure.view_init for open3d >= 0.17
  • Fix a bug with loading COLLADA scenes as meshes in a URDF that was caused by a changed interface of trimesh (#284)