You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- These operators are tightly linked to the new constraints API
24
+
All these operators compute the same mathematical operator $J M^{-1} J^T$ ($J$ is the constraints jacobian, $M^{-1}$ is the inverse of the mass matrix),
25
+
but with different algorithms and internal optimizations
26
+
-`ADMMConstraintSolverTpl` and `PGSConstraintSolverTpl` algorithms:
27
+
- Solve constrained dynamics expressed with the new constraint API
28
+
- Python examples [here](./examples/admm-constraint-solver.py) and [here](./examples/g1-constraint-simulation.py).
29
+
These examples show how to use each constraint model, how to build a constraint problem, how to compute the associated Delassus operator and how to solve it
30
+
- New [header convention](./development/convention.md)
31
+
- Introduce omnibus headers:
32
+
-`pinocchio/math.hpp`
33
+
-`pinocchio/spatial.hpp`
34
+
-`pinocchio/mutlibody.hpp`
35
+
- ...
36
+
13
37
### Added
14
-
- Added Python bindings for loop-constrained-aba.
15
-
- Added Lie group method `tangentMap` which gives, in the form of a `nq x nv` matrix, the linear mapping that transforms a configuration variation expressed in the Lie algebra (size `nv`) into a small variation expressed in the parametric space (size `nq`). Composed with Jacobian of other methods of Pinocchio that use the Lie group structure, it allows obtaining standard Jacobians in order to, for example, insert Pinocchio derivatives into standard Euclidean differentiation pipelines.
16
-
- Added Lie group methods `tangentMapProduct` and `tangentMapTransport` that apply `tangentMap` while exploiting sparsity.
17
-
- Added model methods `tangentMap`, `tangentMapProduct` and `tangentMapTransport` that perform tangent map for the whole configuration space of the model.
18
-
- Now all Lie group related algorithms (e.g. `dIntegrate`...) work seamlessly for models having some mimic joints.
19
-
- Added joint methods `jointQrows`, `jointQcols` (resp. `jointQVMap`) that make selections of size `NQ` (resp. `NQ x NV`).
20
-
- Added joint method `lieGroup` that returns the Lie group instance associated to a joint. This allows performing some operations (e.g. `integrate`...) individually.
21
-
- Added model method `lieGroup` that returns the Lie group instance associated to the model. It is a Cartesian product of multiple Lie groups. It allows combination of the model Lie group with other Lie groups.
22
-
- Add Python example showcasing the candlewick visualizer
38
+
- Add `lcaba` algorithm in `pinocchio/algorithm/loop-constrained-aba.hpp`
39
+
- Compute forward dynamics for constrained system with closed kinematics loops
40
+
- Add `computeJointMinimalOrdering` in `pinocchio/constraints.hpp`
41
+
- Compute joint processing order for `lcaba`
42
+
- Add new constraint API in `pinocchio/constraints.hpp`
43
+
-`PointContactConstraintModel`: models a unilateral contact constraint with coulomb friction cone
44
+
-`PointAnchorConstraintModel`: models a point-wise equality constraint (bilateral constraint)
45
+
-`FrameAnchorConstraintModel`: models a frame-wise equality constraint (bilateral constraint)
46
+
-`JointLimitConstraintModel`: models a component-wise joint limit lower/upper bound constraint
47
+
-`JointFrictionConstraintModel`: models a component-wise joint friction lower/upper bound constraint
48
+
- Add new Delassus API in `pinocchio/algorithm/delassus.hpp`
49
+
- Add `ADMMConstraintSolverTpl` in `pinocchio/algorithm/solvers/admm-solver.hpp`
50
+
- Solve constrained dynamics using an ADMM algorithm
51
+
- Add `PGSConstraintSolverTpl` in `pinocchio/algorithm/solvers/pgs-solver.hpp`
52
+
- Solve constrained dynamics using a projected Gauss Siedel algorithm
53
+
- Add new functions in `pinocchio/multibody/liegroup.hpp`
54
+
-`tangentMap`: transforms a configuration variation into a small variation expressed in the parametric space
55
+
-`tangentMapProduct` and `tangentMapTransport`: apply `tangentMap` while exploiting sparsity
56
+
- Add mimic joint support for all Lie group related algorithms
57
+
- Add new methods to `JointModelBase`:
58
+
-`jointQrows` and `jointQcols` that make selections of size `NQ`
59
+
-`jointQVMap` that make selections of size `NQ x NV`
60
+
-`lieGroup` that returns the Lie group instance associated to a joint
61
+
- Add `lieGroup` function that returns the Lie group instance associated to a model
62
+
- Add new `mjcf::buildModel` overload to load new constraint API from MJCF
63
+
- Add new `sdf::buildModel` overload to load new constraint API from SDF
64
+
- Add new Python functions to load MJCF model:
65
+
- Add `pinocchio.buildModelFromMJCFAndRootJoint` load model with a custom root joint
66
+
- Add `pinocchio.buildModelAndConstraintFromMJCF` load model and constraints (new API)
67
+
- Add `pinocchio.buildModelAndLegacyConstraintFromMJCF` load model and constraints (old API)
68
+
- Add Python example showcasing the [candlewick visualizer](./examples/candlewick-viewer-solo.py)
23
69
- Add `PINOCCHIO_DISABLE_UNSUPPORTED_WARNINGS` C++ definition to disable unsupported algorithm warnings
24
70
- Add `PINOCCHIO_BUILD_MPFR_TESTING` CMake option to build MPFR tests
25
71
- Add `pinocchio/utils/alloca.hpp`: Helpers for mapping stack allocation for Eigen::Map
@@ -31,25 +77,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
31
77
- Add `internal::matrix_product` in `math.hpp`
32
78
- Add `internal::matrix_inversion` in `math.hpp`
33
79
- Add `internal::matrix_inversion_code_generated` in `math.hpp`
34
-
- Add `examples/admm-constraint-solver.py`: how to use the constraints API to model a stack of cubes, how to use the Delassus operator, how to use the ADMM solver to solve the constraint problem.
35
80
36
81
### Changed
37
-
- Clean delassus API: DelassusOperatorBase define the main delassus API and each method calls `derived().[name-of-method]Impl`
38
-
- Fix potential bug in joint limit due to uninitialized field
39
-
- Add missing constructor for joint friction
40
-
- Solvers can be safely copied (result and workspace copy constructor/operator are now safely handled)
41
-
- Bindings/python : Add missing arg names in `visualizer-visitor.hpp`
42
-
- Use deprecation, warning macros already provided by jrl-cmakemodules
82
+
- C++17 is now the minimal supported version of the C++ standard. Check [cppreference](https://en.cppreference.com/w/cpp/compiler_support/17) to see if your compiler supports it.
83
+
- Introduce new header convention [described here](./development/convention.md)
84
+
- Omnibus header as default pinocchio include
85
+
- Replace headers guards by `#pragma once`
86
+
- Bindings/python: Add missing arg names in `visualizer-visitor.hpp`
43
87
- Renamed `PINOCCHIO_PRAGMA_DEPRECATED_HEADER` to `PINOCCHIO_MOVED_HEADER`
- Change multiple compile-time definitions from anonymous enum values to `constexpr` variables
46
-
- Change instances of `Options`, `Flags`, joint space dimensions `NV`, Lie group `NQ` and `NV`
47
-
- Bindings/python : employ using-declarations (`using context::Options`) in the binding code for the `Options` constant
88
+
- Docs: update documentation stylesheet, fix some Doxygen config options
48
89
- Replace `hpp-fcl` by `coal` (see `doc/_porting.md`):
49
90
- C++:
50
-
- Deprecate `include/pinocchio/multibody/fcl.hpp` moved at `include/pinocchio/multibody/coal.hpp`
51
-
- Deprecate `include/pinocchio/serialization/fcl.hpp` moved at `include/pinocchio/serialization/fcl.hpp`
52
-
- Deprecate `include/pinocchio/collision/fcl-pinocchio-conversions.hpp` moved at `include/pinocchio/collision/coal-pinocchio-conversions.hpp`
91
+
- Deprecate `pinocchio/multibody/fcl.hpp` moved at `pinocchio/multibody/coal.hpp`
92
+
- Deprecate `pinocchio/serialization/fcl.hpp` moved at `pinocchio/serialization/coal.hpp`
93
+
- Deprecate `pinocchio/collision/fcl-pinocchio-conversions.hpp` moved at `pinocchio/collision/coal-pinocchio-conversions.hpp`
53
94
- Deprecate `pinocchio/bindings/python/collision/fcl/transform.hpp` moved at `pinocchio/bindings/python/collision/coal/transform.hpp`
54
95
- Deprecate `pinocchio::toFclTransform3f` replaced by `pinocchio::toCoalTransform3s`
55
96
- Deprecate `PINOCCHIO_WITH_HPP_FCL` replaced by `PINOCCHIO_WITH_COLLISION`
@@ -58,45 +99,46 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
58
99
- Deprecate `pinocchio.hppfcl` replaced by `pinocchio.coal`
59
100
- Deprecate `buildModelFromMJCF(filename, root_joint, root_joint_name)` replaced by `buildModelFromMJCFAndRootJoint` and `buildModelAndLegacyConstraintsFromMJCF`
60
101
- Deprecate `buildModelFromSdf` replaced by `buildModelAndLegacyConstraintsFromSdf`
61
-
- Don't use Eigen::aligned_allocator:
62
-
- Deprecate `PINOCCHIO_ALIGNED_STD_VECTOR` replaced by `std::vector`
63
-
- Deprecate `PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR` replaced by `std::vector`
64
-
- Deprecate `pinocchio::container::aligned_vector` replaced by `std::allocator`
- Deprecate `pinocchio/bindings/python/multibody/joint/joint.hpp` replaced by `pinocchio/bindings/python/multibody/joint/joint-model.hpp`
109
+
- Deprecate Python bindings headers already implemented in eigenpy:
110
+
-`pinocchio/bindings/python/utils/registration.hpp` replaced by `eigenpy/registration.hpp`
111
+
-`pinocchio/bindings/python/utils/copyable.hpp` replaced by `eigenpy/copyable.hpp`
112
+
-`pinocchio/bindings/python/utils/deprecation.hpp` replaced by `eigenpy/deprecation-policy.hpp`
68
113
- Following algorithms are now unsupported algorithms (no more deprecated):
69
114
-`forwardDynamics`
70
115
-`impulseDynamics`
71
116
-`getKKTContactDynamicMatrixInverse`
72
-
- Replace headers guards by `#pragma once`
73
117
- Change arguments in `initConstraintDynamics`
74
-
- Change arguments in `BaumgarteCorrectorParametersTpl` constructor : scalar are used instead of vectors
75
-
- Major refactorization of ContactCholeskyDecompositionTpl to ease online resizing
76
-
- Deprecate `ContactCholeskyDecompositionTpl::allocate` replaced by `ContactCholeskyDecompositionTpl::rebuild`
77
-
- Change arguments in `ContactCholeskyDecompositionTpl` constructor
118
+
- Change arguments in `BaumgarteCorrectorParametersTpl` constructor: scalar are used instead of vectors
78
119
- Deprecate `ContactCholeskyDecompositionTpl`, replaced by `ConstraintCholeskyDecompositionTpl`
79
120
- Deprecate `DelassusCholeskyExpressionTpl`, replaced by `DelassusOperatorCholeskyExpressionTpl`
121
+
- Major refactorization of `ConstraintCholeskyDecompositionTpl` to ease online resizing
122
+
- Deprecate `ConstraintCholeskyDecompositionTpl::allocate` replaced by `ConstraintCholeskyDecompositionTpl::rebuild`
123
+
- Change arguments in `ConstraintCholeskyDecompositionTpl` constructor
80
124
81
125
### Removed
126
+
- Remove all warnings with G++ and Clang
82
127
- Remove unused headers `deprecated-macros.hpp` and `deprecated-namespaces.hpp`
83
128
- Remove header `pinocchio/deprecation.hpp`, directly use generated `pinocchio/deprecated.hpp`
84
-
- macros.hpp : remove macros already provided by jrl-cmakemodules
85
-
- bindings/python : removed header `utils/registration.hpp`, delegate to `<eigenpy/registration.hpp>` instead
86
-
- bindings/python : deprecate and remove contents of `utils/copyable.hpp`, `utils/registration.hpp` and `utils/deprecation.hpp`, include corresponding eigenpy headers instead
87
-
- Remove pinocchio 3 deprecated files and functions (see `doc/_porting.md`)
0 commit comments