Skip to content

Commit f9966b0

Browse files
authored
Merge pull request #36 from jorisv/topic/changelog
Improve changelog
2 parents a5d6da9 + 11d976e commit f9966b0

6 files changed

Lines changed: 113 additions & 61 deletions

File tree

.github/workflows/macos-linux-windows-pixi.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ jobs:
134134
pixi run -e ${{ matrix.environment }} configure \
135135
-DBUILD_ADVANCED_TESTING=${{ env.BUILD_ADVANCED_TESTING }} \
136136
${{ steps.get_labels.outputs.cmakeFlags }}
137-
# pixi run -e ${{ matrix.environment }} cmake --build build --target all
138-
pixi run -e ${{ matrix.environment }} ninja -j${CMAKE_BUILD_PARALLEL_LEVEL} -C build -k0
137+
pixi run -e ${{ matrix.environment }} cmake --build build --target all
139138
pixi run -e ${{ matrix.environment }} ctest --test-dir build --output-on-failure
140139
pixi run -e ${{ matrix.environment }} cmake --install build
141140

CHANGELOG.md

Lines changed: 85 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,62 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
1010

1111
## [Unreleased]
1212

13+
### Highlights
14+
15+
- `lcaba` algorithm:
16+
- Compute forward dynamics for constrained system with closed kinematics loops
17+
- [Python example here](./examples/simulation-lcaba.py)
18+
- New constraint API:
19+
- `PointContactConstraintModelTpl`, `PointAnchorConstraintModelTpl`, `FrameAnchorConstraintModelTpl`, `JointLimitConstraintModelTpl` and `JointFrictionConstraintModelTpl` constraint models
20+
- Each constraint model is associated to its own constraint data
21+
- Variants `ConstraintModelTpl`/`ConstraintDataTpl` encapsulate all constraints models and data
22+
- Delassus operator API: `DelassusOperatorDenseTpl`, `DelassusOperatorSparseTpl`, `DelassusOperatorCholeskyExpressionTpl`, `DelassusOperatorRigidBodyTpl`
23+
- 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+
1337
### 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)
2369
- Add `PINOCCHIO_DISABLE_UNSUPPORTED_WARNINGS` C++ definition to disable unsupported algorithm warnings
2470
- Add `PINOCCHIO_BUILD_MPFR_TESTING` CMake option to build MPFR tests
2571
- 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/).
3177
- Add `internal::matrix_product` in `math.hpp`
3278
- Add `internal::matrix_inversion` in `math.hpp`
3379
- 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.
3580

3681
### 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`
4387
- Renamed `PINOCCHIO_PRAGMA_DEPRECATED_HEADER` to `PINOCCHIO_MOVED_HEADER`
44-
- Docs : update documentation stylesheet, fix some Doxygen config options
45-
- 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
4889
- Replace `hpp-fcl` by `coal` (see `doc/_porting.md`):
4990
- 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`
5394
- Deprecate `pinocchio/bindings/python/collision/fcl/transform.hpp` moved at `pinocchio/bindings/python/collision/coal/transform.hpp`
5495
- Deprecate `pinocchio::toFclTransform3f` replaced by `pinocchio::toCoalTransform3s`
5596
- 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/).
5899
- Deprecate `pinocchio.hppfcl` replaced by `pinocchio.coal`
59100
- Deprecate `buildModelFromMJCF(filename, root_joint, root_joint_name)` replaced by `buildModelFromMJCFAndRootJoint` and `buildModelAndLegacyConstraintsFromMJCF`
60101
- 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`
65-
- Deprecate `pinocchio/container/aligned-vector.hpp`
66-
- Deprecate `pinocchio::python::StdAlignedVectorPythonVisitor`
102+
- Don't use `Eigen::aligned_allocator`:
103+
- Deprecate `PINOCCHIO_ALIGNED_STD_VECTOR` replaced by `std::vector`
104+
- Deprecate `PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR` replaced by `std::vector`
105+
- Deprecate `pinocchio::container::aligned_vector` replaced by `std::allocator`
106+
- Deprecate `pinocchio/container/aligned-vector.hpp`
107+
- Deprecate `pinocchio::python::StdAlignedVectorPythonVisitor`
67108
- 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`
68113
- Following algorithms are now unsupported algorithms (no more deprecated):
69114
- `forwardDynamics`
70115
- `impulseDynamics`
71116
- `getKKTContactDynamicMatrixInverse`
72-
- Replace headers guards by `#pragma once`
73117
- 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
78119
- Deprecate `ContactCholeskyDecompositionTpl`, replaced by `ConstraintCholeskyDecompositionTpl`
79120
- 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
80124

81125
### Removed
126+
- Remove all warnings with G++ and Clang
82127
- Remove unused headers `deprecated-macros.hpp` and `deprecated-namespaces.hpp`
83128
- 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`)
88-
- Remove PINOCCHIO_WITH_CXX{11,14,17}_SUPPORT define
89-
- Remove support to Eigen < 3.4
129+
- macros.hpp: remove macros already provided by jrl-cmakemodules
130+
- Remove pinocchio 3 deprecated files and functions (see `doc/_porting/porting-3-to-4.md`)
131+
- Remove `PINOCCHIO_WITH_CXX{11,14,17}_SUPPORT` defines
90132
- Remove support to coal < 3
91133
- Remove support to eigenpy < 3
92-
- Eigen 3.4 is the minimal Eigen supported version:
134+
- Eigen 3.4 is now the minimal required version of Eigen:
93135
- Remove Eigen < 3.4 workaround
94-
- Remove PINOCCHIO_WITH_EIGEN_TENSOR_MODULE define
136+
- Remove `PINOCCHIO_WITH_EIGEN_TENSOR_MODULE` define
95137
- Boost 1.74 is the minimal Boost supported version:
96138
- Remove Boost < 1.74 workaround
97139
- pkg-config file are no more generate
98140
- PyPy interpreter is no more supported
99-
- Favorize `RTSan` over `EIGEN_RUNTIME_NO_MALLOC`:
141+
- Use `RTSan` instead of `EIGEN_RUNTIME_NO_MALLOC`:
100142
- Remove `CHECK_RUNTIME_MALLOC` CMake option
101143
- Remove `PINOCCHIO_EIGEN_CHECK_MALLOC` C++ definition
102144
- Deprecate `PINOCCHIO_EIGEN_MALLOC*` macros

doc/_porting/porting-3-to-4.md

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,48 +18,57 @@ All Pinocchio 3 deprecated functions had been removed:
1818
- Replace `FrameTpl::previousFrame` by `FrameTpl::parentFrame`
1919
- Replace `GeometryObject` constructor argument order has changed
2020

21-
Remove use of Eigen::aligned_allocator:
21+
Remove use of `Eigen::aligned_allocator`:
2222
- Deprecate `PINOCCHIO_ALIGNED_STD_VECTOR` replaced by `std::vector`
2323
- Deprecate `PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR` replaced by `std::vector`
24-
- Deprecate `pinocchio::container::aligned_vector` replaced by `std::allocator`
24+
- Deprecate `pinocchio::container::aligned_vector<T>` replaced by `std::vector<T, std::allocator<T>>`
2525
- Deprecate `pinocchio/container/aligned-vector.hpp`
2626
- Deprecate `pinocchio::python::StdAlignedVectorPythonVisitor`
2727

28-
Eigen 3.4 is the minimal Eigen supported version:
28+
Eigen 3.4 is now the required minimum version of Eigen:
2929
- Remove PINOCCHIO_WITH_EIGEN_TENSOR_MODULE define
3030

3131
HPP-FCL has been replaced by coal:
32-
- Deprecate `include/pinocchio/multibody/fcl.hpp` moved at `include/pinocchio/multibody/coal.hpp`
33-
- Deprecate `include/pinocchio/serialization/fcl.hpp` moved at `include/pinocchio/serialization/coal.hpp`
34-
- Deprecate `include/pinocchio/collision/fcl-pinocchio-conversions.hpp` moved at `include/pinocchio/collision/coal-pinocchio-conversions.hpp`
32+
- Deprecate `pinocchio/multibody/fcl.hpp` moved to `pinocchio/multibody/coal.hpp`
33+
- Deprecate `pinocchio/serialization/fcl.hpp` moved to `pinocchio/serialization/coal.hpp`
34+
- Deprecate `pinocchio/collision/fcl-pinocchio-conversions.hpp` moved to `pinocchio/collision/coal-pinocchio-conversions.hpp`
3535
- Deprecate `pinocchio/bindings/python/collision/fcl/transform.hpp` moved at `pinocchio/bindings/python/collision/coal/transform.hpp`
3636
- Deprecate `pinocchio::toFclTransform3f` replaced by `pinocchio::toCoalTransform3s`
3737
- Deprecate `PINOCCHIO_WITH_HPP_FCL` replaced by `PINOCCHIO_WITH_COLLISION`
3838

3939
Constraints API changes:
4040
- Add `std::vector<ConstraintData, ConstraintDataAllocator> contact_datas` in `initConstraintDynamics` method
41-
- Change `BaumgarteCorrectorParametersTpl` constructor scalar are used instead of vectors
41+
- Change `BaumgarteCorrectorParametersTpl` constructor: scalars are used for the gains instead of vectors
4242

4343
`RigidConstraintModel` internal API has changed:
4444
- Remove `colwise_joint1_sparsity`
4545
- Remove `colwise_joint2_sparsity`
4646
- Remove `joint1_span_indexes`
4747
- Remove `joint2_span_indexes`
4848

49-
ContactCholeskyDecompositionTpl changes :
50-
- Deprecate `ContactCholeskyDecompositionTpl::allocate` replaced by `ContactCholeskyDecompositionTpl::rebuild`
49+
- Deprecate `ContactCholeskyDecompositionTpl`, replaced by `ConstraintCholeskyDecompositionTpl`
50+
- Deprecate `DelassusCholeskyExpressionTpl`, replaced by `DelassusOperatorCholeskyExpressionTpl`
51+
52+
ConstraintCholeskyDecompositionTpl changes :
53+
- Deprecate `ConstraintCholeskyDecompositionTpl::allocate` replaced by `ConstraintCholeskyDecompositionTpl::rebuild`
5154
- Add `std::vector<ConstraintModel, ConstraintModelAllocator>`
5255
- Add `std::vector<ConstraintData, ConstraintDataAllocator>`
53-
- ContactCholeskyDecompositionTpl constructor :
56+
- ConstraintCholeskyDecompositionTpl constructor :
5457
- Add `DataTpl<S1, O1, JointCollectionTpl>`
5558
- Add `std::vector<ConstraintData, ConstraintDataAllocator>`
56-
- Deprecate `ContactCholeskyDecompositionTpl`, replaced by `ConstraintCholeskyDecompositionTpl`
57-
- Deprecate `DelassusCholeskyExpressionTpl`, replaced by `DelassusOperatorCholeskyExpressionTpl`
58-
5959

6060
Utility API changes:
6161
- Remove `gettimeofday` definition on Windows
6262
- Remove `operator-(timeval, timeval)` definition
63+
- Remove `deprecated-macros.hpp` and `deprecated-namespaces.hpp`
64+
- Remove `pinocchio/deprecation.hpp` replaced by `pinocchio/deprecated.hpp`
65+
66+
Python bindings API changes:
67+
- Deprecate `pinocchio/bindings/python/multibody/joint/joint.hpp` replaced by `pinocchio/bindings/python/multibody/joint/joint-model.hpp`
68+
- Deprecate Python bindings headers already implemented in eigenpy:
69+
- `pinocchio/bindings/python/utils/registration.hpp` replaced by `eigenpy/registration.hpp`
70+
- `pinocchio/bindings/python/utils/copyable.hpp` replaced by `eigenpy/copyable.hpp`
71+
- `pinocchio/bindings/python/utils/deprecation.hpp` replaced by `eigenpy/deprecation-policy.hpp`
6372

6473
## Python changes
6574

include/pinocchio/src/utils/version.hxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ namespace pinocchio
4141
inline bool checkVersionAtLeast(
4242
unsigned int major_version, unsigned int minor_version, unsigned int patch_version)
4343
{
44-
return PINOCCHIO_MAJOR_VERSION > major_version
45-
|| (PINOCCHIO_MAJOR_VERSION >= major_version && (PINOCCHIO_MINOR_VERSION > minor_version || (PINOCCHIO_MINOR_VERSION >= minor_version && PINOCCHIO_PATCH_VERSION >= patch_version)));
44+
return std::make_tuple(
45+
PINOCCHIO_MAJOR_VERSION, PINOCCHIO_MINOR_VERSION, PINOCCHIO_PATCH_VERSION)
46+
>= std::make_tuple(major_version, minor_version, patch_version);
4647
}
4748
} // namespace pinocchio

include/pinocchio/utils/version.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// IWYU pragma: begin_keep
77
#include <string>
88
#include <sstream>
9+
#include <tuple>
910

1011
#include "pinocchio/config.hpp"
1112
// IWYU pragma: end_keep

0 commit comments

Comments
 (0)