pytransform3d#
This documentation explains how you can work with pytransform3d and with 3D transformations in general.
Scope#
pytransform3d focuses on readability and debugging, not on computational efficiency. If you want to have an efficient implementation of some function from the library you can easily extract the relevant code and implement it more efficiently in a language of your choice.
The library integrates well with the scientific Python ecosystem with its core libraries NumPy, SciPy and Matplotlib. We rely on NumPy for linear algebra and on Matplotlib to offer plotting functionalities. SciPy is used if you want to automatically compute transformations from a graph of transformations.
pytransform3d offers…
operations for most common representations of rotation / orientation and translation / position
conversions between those representations
clear documentation of conventions
functions to check for common pitfalls (e.g., singularities, ambiguities, discontinuities)
tight coupling with matplotlib to quickly visualize (or animate) transformations
the TransformManager which organizes complex chains of transformations
the TransformEditor which allows to modify transformations graphically
the UrdfTransformManager which is able to load transformations from URDF files
a matplotlib-like interface to Open3D’s visualizer to display geometries and transformations
The design philosophy of pytransform3d is to not hide anything; there is no magic: no operator overloading, no classes to store data (rotations or transformations) other than NumPy arrays, and no layers of abstraction. It is as transparent to the user as possible and its interface is mainly functional.
Citation#
If you use pytransform3d for a scientific publication, I would appreciate citation of the following paper:
Fabisch, A. (2019). pytransform3d: 3D Transformations for Python. Journal of Open Source Software, 4(33), 1159, https://doi.org/10.21105/joss.01159