Changelog ========= 3.0.0 (2026-06-01) ------------------ added (17 changes) ~~~~~~~~~~~~~~~~~~ - `symbolic line common perpendicular version `__ - `expose pyqtgraph.opengl and add method to include custom GL items in 3D view `__ - `add \_flat_xyz function for 3D vector normalization and update plotting methods `__ - `orthogonal projection in PyqtgraphPlotter `__ - `CAD-like rotation of scene in PyqtgraphPlotter `__ - `descriptive warning when STL file not found during importing it to MD `__ - `RationalCurve can be evaluated with sympy number results `__ - `test pipeline for python 3.14 `__ - `symbolic backend, including docs `__ - `added interactive visualization to docs for mechanisms `__ - `example update, stl can change pose by transform `__ - `added stl model for visual demo `__ - `PointHom. and DualQuaterion rational=True returns Symbolic class alternative `__ - `math classes refactor, symbolic classes `__ - `matplotlib optional setup for better visibility for papers `__ - `half-turn example of dual quaternion `__ - `tutorial to plot curve of a mechanism `__ removed (3 changes) ~~~~~~~~~~~~~~~~~~~ - `coverage package pipeline testing, now only pytest `__ - `class RationalDualQuaternion.py removed, DualQuaternion can handle rationals itself `__ - `examples folder del, configs for v3 `__ changed (7 changes) ~~~~~~~~~~~~~~~~~~~ - `numpy v2+ required `__ - `RationalCurve generates inverse coeffs only when demanded `__ - `added as_expr in RationalCurve for improved expression handling taking into account t in denominator `__ - `update of contribute.rst according to new code structure `__ - `new docs testing using literalinclude `__ - `regenerated models in data `__ - `examples folder removed and cleand, replaced by scripts folder `__ - `normalized_in_3d removed from usage within package `__ fixed (2 changes) ~~~~~~~~~~~~~~~~~ - `safe cross on dtype objects, complex warning skipped `__ - `dq_algebraic2vector can handle reals `__ deprecated (1 change) ~~~~~~~~~~~~~~~~~~~~~ - `optimization of quadratic curve deprecated `__ .. _section-1: 2.6.0 (2026-03-13) ------------------ added (8 changes) ~~~~~~~~~~~~~~~~~ - `docs for CAD generation `__ - `setting for the sliders range in MotionDesigner, auto-adjust grid `__ - `STL meshes can be scaled via argument `__ - `add STL meshes in the MotionDesigner visualization `__ - `MotionDesigner can preview mechanism using preview_mechanism=True flag `__ - `mechanism parts can be exported as STEP assembly `__ - `new class to represent LinkageCAD and generating methods `__ - `added method to get design points `__ changed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `for better visibility, Pyqtgraph mechanism plots with new color scheme `__ - `refactor with LinkageCAD class `__ .. _section-2: 2.5.0 (2026-02-20) ------------------ added (11 changes) ~~~~~~~~~~~~~~~~~~ - `line model can be exported as STEP solid using build123d `__ - `trimesh and manifold3d are new optional dependencies `__ - `docs updated with STL description `__ - `tool link and frame can be meshed `__ - `single STL mesh can be exported to represent whole linkage at home configuration `__ - `RationalMechanism.get_design prints also joint points in world frame `__ - `motion designer example script `__ - `extended dot product for DQ `__ - `generate random DQ on SQ with integer element values `__ - `changelog description accepts lowercase `__ - `builds also ARM wheels on Github `__ removed (1 change) ~~~~~~~~~~~~~~~~~~ - `hoverxref sphinx addon removed as it was deprecated, causing builds to fail `__ changed (1 change) ~~~~~~~~~~~~~~~~~~ - `motion interpolation methods follow the ARK paper notation `__ .. _fixed-2-changes-1: fixed (2 changes) ~~~~~~~~~~~~~~~~~ - `rendering errors in new PyqtGraph version, quickfix to stay at version 0.13 `__ - `Mechanism from MotionDesigner didn’t respect white background `__ .. _section-3: 2.4.0 (2025-11-21) ------------------ added (5 changes) ~~~~~~~~~~~~~~~~~ - `linux build runner changed to Github Actions; docs update `__ - `possiblity to run Motion Designer with GUI options `__ - `method for plane-line intersection point `__ - `size of poloted points can be altered `__ .. _removed-1-change-1: removed (1 change) ~~~~~~~~~~~~~~~~~~ - `gmpy2 removed from dependencies as it causes issues on ARM devices `__ .. _changed-1-change-1: changed (1 change) ~~~~~~~~~~~~~~~~~~ - `update to installation instructions `__ fixed (3 changes) ~~~~~~~~~~~~~~~~~ - `mocking utils in docs `__ - `utils were missing in docs `__ - `parsing angle error `__ .. _section-4: 2.2.3 (2025-09-17) ------------------ added (1 change) ~~~~~~~~~~~~~~~~ - `MyBinder.org environment setup `__ fixed (1 change) ~~~~~~~~~~~~~~~~ - `jupyter notebooks import error due to Qt `__ .. _section-5: 2.2.0 (2025-09-17) ------------------ .. _added-5-changes-1: added (5 changes) ~~~~~~~~~~~~~~~~~ - `Windows ARM support, dependencies clean-up and description changed `__ - `tutorial with motion recovery `__ - `new tutorial on obtaining rational axes `__ - `new function for creating rational plucker line vector `__ - `new function for creating rational transformation matrices `__ .. _changed-2-changes-1: changed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `scipy no longer required dependency; matplotlib gets installed on linux `__ - `GUI dependencies should no longer cause error on linux while importing `__ .. _fixed-1-change-1: fixed (1 change) ~~~~~~~~~~~~~~~~ - `debug of rational numbers initialization `__ .. _section-6: 2.1.0 (2025-08-13) ------------------ added (6 changes) ~~~~~~~~~~~~~~~~~ - `docstring update `__ - `ik evaluation is lambified `__ - `ik method can return t param `__ - `optimization for a curved link `__ - `print design params with high precision `__ - `plotting of GL curves `__ .. _fixed-1-change-2: fixed (1 change) ~~~~~~~~~~~~~~~~ - `sympy’s zero was not handled `__ .. _section-7: 2.0.0 (2025-06-11) ------------------ added (48 changes) ~~~~~~~~~~~~~~~~~~ - `for plotting, the mechanisms base can be altered `__ - `motion designer added to docs `__ - `gif added to readme and index `__ - `dk, ik, and motion plannings docs `__ - `create PNG animation of rotation `__ - `new simple rational curve example `__ - `tutorial for physical construction of mechanism `__ - `generation of interpolated 6r `__ - `MotionDesigner point values can be edited by textbox `__ - `MotionDesigner point values can be edited by textbox `__ - `MotionDesigner now shows values of control points `__ - `error handling of mechanism creation `__ - `approximation for points draft (not working); force study quadric optimization `__ - `Quaternons and DualQuaternions elements can be set directly `__ - `Plotter.py returns a class instance based on given parameters `__ - `class for Gauss-Legendre curves `__ - `reset of LineSegment counter at update `__ - `LineSegment class has registry, segments are created in circular order of two factorizations `__ - `LineSegment new arg: default (at inf) line coeffs `__ - `new method for obtaining a relative motion between two links-joints `__ - `MotionsDesigner synthesizes and plots mechanism right away `__ - `k-dq x3 calculation in Rust `__ - `rust backend - library import and test methods `__ - `cubic interpolation for both families `__ - `swap in visualization of both families solutions `__ - `heavy calculations separate lib `__ - `new logo `__ - `save PNG figure `__ - `pyqtgraph white background option `__ - `new dependencies `__ - `new utility to extract coefficients from sympy expression `__ - `Cubic interpolation accepts lambda parameter `__ - `Motion Designer for Cubic curve - experimental `__ - `normalized plane default plot `__ - `interactive plotting with Pyqtgraph `__ - `construction of TransfMatrix from single rotation `__ - `motion designer for quadratic curve from poses `__ - `numerical interpolation of quadratic curve `__ - `MotionDesigner for quadratic curves via 5 points `__ - `adding motion designer, not yet working `__ - `interpolation of Bezier curves numerically `__ - `Vispy plotter backend `__ - `PointHomogeneous can be multiplied or divided by scalar `__ - `obtain point orbits using Welzl’s algroithm `__ - `CollisionAnalyser.py takes over calculation for segments orbits `__ - `BezierSegmentControlPoints class avoids init of sympy objects for splitting `__ - `RationalCurve has the “metric” attribute `__ - `added metric attribute RationalMechanism.py `__ removed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `first point/pose cannot be modified (identity) `__ - `Vispy backend removed `__ changed (8 changes) ~~~~~~~~~~~~~~~~~~~ - `plotting docs updated for Qt6 backend `__ - `PyQt6 update for Matplotlib backend, saving PyQtgraph with text overlay `__ - `update of models for latest RL version `__ - `get_design returns correct points which do not take into account Onshape’s design params `__ - `init.py cleanup `__ - `new class for Plotting, handling PyQtGraph as default, Matplotlib as secondary backend that is not required `__ - `changes in dependencies, exudyn option `__ - `new default poses for quadratic MD, added test `__ fixed (10 changes) ~~~~~~~~~~~~~~~~~~ - `get_design returns correct points; newly input is in meters by default `__ - `labeling erased previous render, Gl not processed well `__ - `debug in case of difficult interpolation - perfomed numerically `__ - `Bennett DH docs fix `__ - `debug example `__ - `vector check not strict enough `__ - `debug - poses append; solve for t optimized `__ - `macos fix for segmentation - too small init windows `__ - `DH params were returning wrong d for base `__ - `debug when normal z-coord was 0, cleanup `__ .. _section-8: 1.10.2 (2025-04-11) ------------------- .. _added-1-change-1: added (1 change) ~~~~~~~~~~~~~~~~ - `new logo `__ .. _fixed-2-changes-2: fixed (2 changes) ~~~~~~~~~~~~~~~~~ - `vector check not strict enough `__ - `DH params were returning wrong d for base `__ .. _section-9: 1.10.1 (2025-03-03) ------------------- .. _added-1-change-2: added (1 change) ~~~~~~~~~~~~~~~~ - `github mirroring, notebooks update `__ .. _fixed-1-change-3: fixed (1 change) ~~~~~~~~~~~~~~~~ - `bug: collision searched failed in case of joint-joint collisions `__ .. _section-10: 1.10.0 (2025-02-03) ------------------- added (12 changes) ~~~~~~~~~~~~~~~~~~ - `new Motion Approximation method `__ - `tests and debug of new methods `__ - `constructors from 3 points, line and point, intersection with other plane `__ - `intersection of lines and planes, cleanup `__ - `New NormalizedPlane.py class `__ - `numpy-stl added to opt dependencies `__ - `get_design of RationalMechanism.py returns also actual connection points `__ - `print params for onshape new models `__ - `Synthesis of snapping mechanism for two poses - Wunderlich construction `__ - `plotter adds methods triggering controls visibility, saving via command line `__ - `plotter adds methods for plotting planes, axis (quiver) between points, line segments between list of points `__ - `create StaticMechanism.py from algebraic equations (i,j,k,eps) `__ .. _removed-2-changes-1: removed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `code cleanup, removed ButtonID `__ - `examples cleanup `__ .. _changed-2-changes-2: changed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `plotting examples cleanup `__ - `precise Study Quadric check using numpy Polynomials `__ .. _section-11: 1.9.0 (2024-11-20) ------------------ .. _added-5-changes-2: added (5 changes) ~~~~~~~~~~~~~~~~~ - `rational curve can be numerically checked if it is real motion `__ - `rational curve can be created from two quaternions `__ - `interpolation of 7 3D points using cubic curve `__ - `new method for interpolating 5 points with quadratic curve `__ - `testing for Python 3.13 `__ .. _removed-2-changes-2: removed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `warning for installation of Exudyn removed `__ - `removed unnecessary warning for RR domain `__ changed (3 changes) ~~~~~~~~~~~~~~~~~~~ - `tests run for python 3.13 `__ - `legend is no longer on plot by default, arg needed `__ - `ik update, robust run automatically `__ .. _section-12: 1.8.0 (2024-08-28) ------------------ .. _added-11-changes-1: added (11 changes) ~~~~~~~~~~~~~~~~~~ - `updates to docs, jupyter notebook example on DK IK `__ - `generate csv with desired trajectory `__ - `method to normalize DQ by first element `__ - `traj planning for smooth end-effector velocity `__ - `p2p trajectory planning in joint space `__ - `finding t for splitting curve in equal segments `__ - `numerical ik is for curve and curve.inverse due to numerical stability `__ - `calculate numerically inverse kinematics of linkage `__ - `calculate forward/direct kinematics of linkage `__ - `animate mech passing through given angles `__ - `util to calculate sum of squares in the list `__ fixed (5 changes) ~~~~~~~~~~~~~~~~~ - `ik debug, didn’t take into account tool `__ - `reparameterization of theta driving angle to t must use pluecker norm `__ - `negative angle plotting debug `__ - `ik solver issues with convergence, added normalization `__ - `bug for negative angle `__ .. _section-13: 1.7.0 (2024-07-11) ------------------ added (2 changes) ~~~~~~~~~~~~~~~~~ - `check on Study quadric can be optionally approximate (numerics) `__ - `motion factorization has option to return rational values `__ .. _changed-2-changes-3: changed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `the RationalCurve attribudes are created on call using properties `__ - `docs: update to DQ and Study kinematics `__ .. _fixed-1-change-4: fixed (1 change) ~~~~~~~~~~~~~~~~ - `sympy 1.13 poly uncompatibility fix `__ .. _section-14: 1.6.0 (2024-06-27) ------------------ .. _added-5-changes-3: added (5 changes) ~~~~~~~~~~~~~~~~~ - `semi-automated changelog generation `__ - `Added gmpy2 dependency for faster Sympy `__ - `docs - mouse hovering tooltip `__ - `option to update physical design of a linkage based on physical joint size `__ - `perform and save animation `__ .. _changed-2-changes-4: changed (2 changes) ~~~~~~~~~~~~~~~~~~~ - `faster collision check (forgotten simplify deleted) `__ - `MF’s linkage is now a property that is obtained when needed `__ fixed (4 changes) ~~~~~~~~~~~~~~~~~ - `autogenerate changelog.rst via pandoc `__ - `gmpy2 is fails to build for Python 3.12 `__ - `if Z axes are parallel, take footpoint; extra frame not added anymore; tolerance for checking 2 parallel lines lowered `__ - `during DH determination were added axis to screw axes `__