Skip to content

Latest commit

 

History

History
904 lines (673 loc) · 55 KB

CHANGELOG.md

File metadata and controls

904 lines (673 loc) · 55 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

2.7.0 - 2024-01-23

Added

  • Add GeometryObject::meshMaterial attribute (#2084)

Fixed

  • Use bp::ssize_t for recent version of Windows compilers (#2102)
  • Fix missing include for Boost >= 1.83 (#2103)
  • Remove f-strings to fix install with python 2 (#2110)
  • CMake: stop exporting CppAd/cppadcodegen & fetch submodule if not available (#2112)
  • Fix malloc issue in CRBA algo (#2126)
  • Fix build cppad and cppadcg with Boost < 1.77 (#2132)

2.6.21 - 2023-11-27

Added

  • Add inverse dynamics (rnea) Python and C++ example (#2083)
  • Add visualization of Frames in MeshCat viewer (#2098)

Fixed

  • Re-initialize Ycrb[0] in crbaMinimal (#2040)
  • Fix custom scalar use in log function (#2047)
  • Raise exception on wrong input size in XYZQUATToSE3 Python binding function (#2073)
  • Remove memory leak in buildGeomFromUrdf and buildGeomFromUrdfString Python binding functions (#2082stack-of-tasks#2082)
  • Fix Panda3D viewer examples (#2087)
  • Fix centroidal dynamics derivatives with respect to time (#2094))

Changed

  • Rename freeflyer_joint to root_joint in humanoid sample model (#2043)
  • CMake minimal version is now 3.10 (#2055)
  • Split headers and sources in different directories to have a more standard C++ project (#2070)

Removed

  • Remove support to hpp-fcl < v2.0.0 (#2086)

2.6.20 - 2023-08-09

What's Changed

2.6.19 - 2023-06-19

What's Changed

New Contributors

2.6.18 - 2023-04-29

What's Changed

New Contributors

2.6.17 - 2023-02-15

What's Changed

2.6.16 - 2023-02-02

What's Changed

2.6.15 - 2023-01-31

What's Changed

2.6.14 - 2023-01-13

What's Changed

2.6.13 - 2023-01-12

What's Changed

2.6.12 - 2022-11-06

What's Changed

2.6.11 - 2022-10-25

What's Changed

New Contributors

2.6.10 - 2022-09-14

What's Changed

New Contributors

2.6.9 - 2022-08-12

What's Changed

New Contributors

2.6.8 - 2022-06-06

What's Changed

New Contributors

2.6.7 - 2022-05-03

What's Changed

2.6.6 - 2022-03-22

What's Changed

2.6.5 - 2022-02-14

What's Changed

New Contributors

2.6.4 - 2021-11-02

What's Changed

New Contributors

2.6.3 - 2021-07-27

This new release fixes bugs in MeshCat rendering, loading of ROS path and in the Centroidal dynamics derivatives

2.6.2 - 2021-07-05

This new release provides fixes include orders in the unit tests due to recent versions of Boost. It also provides more content to the Readme. This new release prefigures the new Pinocchio 3.x

2.6.1 - 2021-06-08

Enhancement:

  • extended support of serialization of FCL primitives
  • extended support of Boost.Variant in Python

Fixes:

  • fix bug when loading URDF on Windows
  • fix handling of Frame inertia

2.6.0 - 2021-04-11

This new release provides:

  • improvement for handling collision/distance requests
  • support of parallel computations for ABA, RNEA and collisions algorithms (more to come soon)
  • additional features for the RobotWrapper in Python
  • support of Capsule for Meshcat
  • happened Inertia information to Frames
  • fixes for doc issues
  • improve numerical robustness when two inertias are Zero

2.5.6 - 2021-01-23

This new release comes with a more consistent ABA algorithm (data.a_gf used instead of classic data.a) and more outcomes for computeAllTerms. In addition, it provides some extended supports to PyPy.

2.5.5 - 2021-01-07

This maintenance release enhances the whole CMake packaging of the project and provides additional features for the Python bindings.

2.5.4 - 2020-11-26

This new release enhances the compatibility of Pinocchio with former distributions, provides better support to Euler angles and fixes some bugs.

2.5.3 - 2020-11-13

This new release fixes some issues with the Python bindings, add new examples and extend the whole tests.

2.5.2 - 2020-11-02

This new release enhances the compatibility with Windows, provides new tools eitheir to work on joint configurations and also to compute the kinematic regressors.

2.5.1 - 2020-10-12

This new release provides:

  • improvements on the whole project coverage
  • better support of Windows v142
  • support of joint friction and damping (only at the interface level)
  • new algorithm to retrieve the Coriolis matrix from RNEA/ABA derivatives

2.5.0 - 2020-08-31

In this new release, we have:

  • a full memory shared in the Python bindings, i.e. that all the Eigen object can now be changed in Python.
  • better handling of multiprecision arithmetic
  • improved CMake packaging
  • fix for Autodiff

2.4.7 - 2020-07-20

This new release provides:

  • an extended API for dealing with Lie groups and the related computations (integration, difference, derivatives, etc.)
  • the Lie groups have now their Python bindings for easy code prototyping
  • the kinematics derivatives of the Frames have been introduced as well as the extension of current Joints derivatives
  • the packaging of the project has been improved too.

2.4.6 - 2020-06-15

This new release of Pinocchio removes the use of pkg-config to check dependencies and provides a full compatibility and support for Windows systems.

2.4.5 - 2020-05-23

This new release extends the current frames algorithms to also consider the LOCAL_WORLD_ALIGNED reference frame. It also exposes the values of the enum_ for simplified usage.

2.4.4 - 2020-05-13

This new release provides:

  • new helpers function to retrieve frame velocities and accelerations
  • for each collision pair, it is now possible to provide specific collision checking settings
  • support to display convex hulls in viewers

It also fixes:

  • the support of Panda3d

and enhances the global CMake packaging of the project.

2.4.3 - 2020-04-24

This new release provides a new Viewer, named Panda3d, for easy code visualization in Python. It also provides additional fixes to the Code Generation support.

2.4.2 - 2020-04-21

This new release of Pinocchio provides new features for dealing with Lie groups:

  • improved operations over the differential operations of the integrate function
  • new functions for transporting some matrix between the two endpoints of the integrate function
  • the RPY functions are now robust over singularities
  • the support of autodiff frameworks has been improved to also cope with Lie groups features

This release also provides:

  • a packaging fixe with respect to the URDFDOM dependency
  • the Python bindings should now be without memory leak

2.4.1 - 2020-04-15

This new release fixes a bug introduced in Pinocchio 2.4.0 concerning the method ModelTpl::addFrame. This release also provides better support for the checking of the CppAD and CppADCodeGen versions.

2.4.0 - 2020-04-09

This new release of Pinocchio makes several improvements:

  • improve compatibility with hpp-fcl
  • improve compatibility with CppAD and notably the Lie algebra features
  • a better CMake >= 3.0 export of the project
  • new examples for Code generation
  • improved Python bindings
  • improved support for Boost.Multiprecision
  • reduce the memory usage when compilation unit tests

and we have started to move some dependencies like urdfdom to the pinocchio.so library to avoid additional compilations issues and to useless compilations burden.

2.3.1 - 2020-02-20

This new release provides:

  • some fixes with respect to minor bugs introduced in Pinocchio 2.3.0
  • an enhance detection of Python
  • improves the compilation memory overhead

2.3.0 - 2020-02-18

This new release provides:

  • full compatibility with CMake export
  • full compatibility with Numpy.Array
  • examples for Code generation
  • better support of C++11
  • minor bug fixes
  • improves coverage
  • uniformizes function signature
  • improves interoperability between Numpy and Pinocchio
  • add many examples
  • full integration of Python bindings of hpp-fcl
  • supports the pickling and the serialization of Data

2.2.3 - 2019-12-30

This new release provides:

  • pickling and serialization of Data structures
  • provide new algorithms to create reduce models

It also improves the compatibility with the Transform used in HPP-FCL. It also fixes various bugs. It also comes with new and detailed examples.

2.2.2 - 2019-12-11

This new release:

  • improves the compatibility with HPP-FCL bindings
  • improves the documentation of the project with more examples
  • fixes some bugs related to Eigen
  • add new algorithms to compute the centroidal matrix and its time derivatives

2.2.1 - 2019-11-25

This new release fixes the ROS package version number and updates the robot models.

2.2.0 - 2019-11-25

This new release of Pinocchio introduces:

  • analytical formula for Hessian of the kinematics
  • derivatives of the difference operation
  • new derivatives for static torque quantity
  • new models for tests and examples.

It adds some signature non-exposed in Python. It also deletes outdated function signatures that have been deprecated in 2.0.x versions. It also improves the packaging with respect to ROS or other robotics frameworks.

2.1.11 - 2019-10-27

This release fixes missing update of the ROS package.xml file with the new version.

2.1.10 - 2019-10-25

This new release allows throwing when some input arguments are not fulfilled (useful feature in Python). It also provides new support for Hessian of the kinematics. Finally, the project is now packaged for ROS integration.

2.1.9 - 2019-10-09

This is a maintenance release, with some fixes concerning the contact dynamics, better support of LOCAL_WORLD_ALIGNED option and fixes with respect to some recent versions of CppADCodeGen.

2.1.8 - 2019-09-30

This is a maintenance release providing several fixes:

  • remove memory allocation in ABA derivatives with contact forces
  • better handling of boost::Variant
  • better support of Majax

It also provides new features in the documentation of mathematical formula.

2.1.7 - 2019-09-10

This new release improves:

  • the support of AutoDiff frameworks
  • the efficiency of some core algorithms

fixes:

  • the support of Majax
  • the compatibility with Python 2/3

2.1.6 - 2019-08-05

This new release improves the packaging of the project and provides new algorithms to compute the Jacobians of the center of mass of each subtree.

2.1.5 - 2019-07-16

This new release provides support for JointMimic and JointRevoluteUnboundedUnaligned. It also comes with the full support of CasADi.

Thanks to @mkatliar for helping us to provide this support.

2.1.4 - 2019-06-22

This new release provides some fixes with respect to Python bindings, C++17 as well as new important features:

  • dynamic regressor for identification
  • add support of multiple viewers
  • improve analytical derivatives

2.1.3 - 2019-04-30

This new release fixes some issues with Python 3 and C++17 standard. It also provides additional documentation, enlarges the current Python bindings and uniformizes naming convention in Python.

2.1.2 - 2019-04-05

This new release aims at fixing compilations issues when COLLISION module is activated. It also provides some fixes concerning the loading of meshes.

A new feature provided by this release concerns the possibility of appending two models together.

2.1.1 - 2019-03-27

This new release fixes compatibility bugs with previous release 2.1.0. It also provides a serialization interface for Spatial classes and the Model class.

2.1.0 - 2019-02-27

This new release makes some major improvements:

  • it is now possible to use MeshCat, another viewer working in the browser directly in Python
  • the Python bindings are now hardly tested and uniformized with respect to the C++ API
  • this new release is compatible with recent releases of hpp-fcl
  • the SRDF parsing has been improved. Its now possible to load several reference configuration vectors

We also fixed bugs related to recent versions of Boost mostly.

2.0.0 - 2019-01-11

Welcome Pinocchio 2.0.0.

This release makes official the last important and new features for efficiently computing the dynamics of the rigid body systems:

  • Analytical derivatives
  • Automatic differentiation
  • Full scalar type overloading
  • Code generation among others

1.3.3 - 2018-10-29

This is for real the last release before Pinocchio 2.0.0 and more.

This release fixes the packaging when hpp-fcl is missing. Thanks to @aelkhour for raising this issue.

1.3.2 - 2018-10-26

This release is the last one before Pinocchio 2.0.0.

It mostly:

  • fixes issues introduced by new API of frame functionalities;
  • introduces new sample models for manipulator and humanoid systems;
  • fixes bugs due to boost 1.58.0;
  • improve the readme with credits section.

1.3.1 - 2018-09-25

This new release corrects some bugs or bad deprecations concerning Pinocchio 1.3.0.

1.3.0 - 2018-08-28

This new release introduces analytical derivatives in the corpus of Pinocchio. This feature is still under development but can already be used both in C++ and Python.

This new release also fixes a bunch of bugs related to Eigen and Boost.

1.2.9 - 2018-06-01

This is mostly a maintenance release:

  • Fix bug in. lower bounds in Model class
  • Update documentation structure (additional work is needed)
  • Improve the compatibility with Python 3.x

1.2.8 - 2018-05-18

This is mostly a maintenance release:

  • Fix some bugs in JointModel{Translation,Spherical} for ABA algorithm
  • Fix a duplication issue in RobotWrapper
  • Improve compatibility with recent version of Boost >= 1.67.0
  • Romeo is now loaded from the official romeo_description repository

1.2.7 - 2018-04-03

This is mostly a maintenance release:

  • Fixes and computation improvements for Lie group operations.
  • Adding pickle for spatial classes.
  • Allow loading of URDF tree directly from an XML stream.

1.2.6 - 2018-01-15

This is mostly a maintenance release with various fixes to comply with Boost variadic macro on recent OS. It also adds new convention with a LOCAL and a WORLD frame to express Jacobian quantities.

1.2.5 - 2017-10-10

This a maintenance Release. We added some algo to compute the time variation of the Jacobians together with the variation with respect to time of the centroidal momemtum matrix. HPP-FCL works now with Eigen for linear algebra.

1.2.4 - 2017-06-09

This is mostly a maintenance release, with some fix with respect new urdfdom versions, it handles Eigen support with hpp-fcl.

1.2.3 - 2017-02-14

This release fixes some issues with respect to 1.2.1.

API modifications

Interpolate, Differentiate, Integrate are now algorithmic struct which can be efficiently overloaded.

Bindings

Add FCL object bindings

1.2.1 - 2016-10-17

Summary

This release is a minor patch of the previous release 1.2.0.

This release is directly accessible as a Debian package. Please see https://github.com/stack-of-tasks/pinocchio/wiki/installation for further details.

New

  • The Python bindings are aligned and free of unnecessary allocations
  • Add documentation option which allows to not install the documentation
  • Introduces container::aligned_vector to automatically create an std::vector with specific aligned allocator

API modifications

  • Remove JointDense.
  • Remove JointGeneric

Fixes

  • Solves the parsing of geometries in URDF module
  • Fixes alignment issues on 32 bits architecture

1.2.0 - 2016-09-29

Summary

The main modifications concern the update of the code to comply with the Humanoid Path Planner (HPP).

This release is directly accessible as a Debian package. Please see https://github.com/stack-of-tasks/pinocchio/wiki/installation for further details.

New Features

  • Add Joint{Model,Data} classes based on Joint{Model,Data}Base and Joint{Model,Data}Variant. Those classes call directly the visitors and make Variant accessible throw methods
  • Add partial Joint{Model,Data}Composite. They allow a stack of joints without adding any Inertia.
  • Increase Frame class. Frames can be of several types (BODY, JOINT, SENSOR, etc) and reflect the robot tree as it appears in the URDF conventions. Frames have two attributes: parent which the direct Joint parent in the Joint tree, previousFrame which correspond to the parent Frame in the tree of Frames).
  • Adding Python parser which is able to read models written in Python.
  • Add algo checker to check the validity of a model.
  • Improve documentation.

API modifications

  • Model has some methods deprecated. The default name has been removed.
  • The Geometry classes have been updated and several methods have been set to deprecated. They now use Frames as parent instead of Joint directly: a Geometry is now supported by a BODY.
  • Add active collision pair flags in GeomData which define the active collision pairs.
  • Unify naming conventions (nframes, njoints, etc).

Fixes

  • The UDRF parser can now deal with more complex topologies. It properly handles the stack of geometries for each BODY.
  • Improve packaging mainly around the Python part.

1.1.2 - 2016-05-31

Summary

This release is directly accessible as a Debian package. Please see https://github.com/stack-of-tasks/pinocchio/wiki/installation for further details.

New Features

  • Added operational frames (that are a Plucker coordinate frame attached to a parent joint inside a kinematic tree). Position and Jacobian of such frames can be computed
  • Geometry primitives can now be handled (and added to the Pinocchio GeometryModel) when encountered in an urdf file
  • Implemented simple srdf parsing for GeometryData : parse the desactivated collision pairs
  • Added Articulated Body Algorithm (ABA), and CCRBA
  • When parsing a urdf file, now look in the environment variable ROS_PACKAGE_PATH for directories where to search for meshes. Users can provide hint directories to search in as a priority. Updated python RobotWrapper consequently
  • Added forward dynamics with contact algorithm
  • Added algorithms working with vectors of configuration or velocity(either on a JointModel or on a Model, iterating through all the kinematic tree)
    • One can integrate a configuration at a constant velocity during a unit time
    • One can differentiate two configurations (i.e compute the velocity that must be integrated during a unit time to go from first configuration to the other )
    • One can interpolate between two configurations
    • One cancompute the distance between two configurations ( such as dist = norm ( difference) )
    • One can shoot a configuration uniformly sampled between specified limits
  • Added Impulse Dynamic Algorithm
  • Completed the list of method to access or call Joint's data or method when joint are stored in a variant.
  • Added JointAccessor that is a general joint encapsulating a JointVariant ( abstracting the use of visitors for the user).

API modifications

  • Moved limits from joint models to Model as vectors of size nq for position limits and size nv for velocity and effort limits
  • The Geometry objects stored in GeometryModel are now splitted in two types : visual and collision

Minor

  • Improved documentation of Data, Model, Spatial Classes
  • Improved efficiency when executing algorithms
  • One can now create Inertia for simple shapes such as cylinders, boxes, ellipsoid
  • Rework some unittests to increase to coverage of whole package ( C++ and Python )

Bugs Fixed

  • Fixed operator Inertia x constraint in JointSphericalZYX
  • Fixed the Dense conversion of joints (models and datas)
  • Fixed bugs in JointRevoluteUnaligned and JointPrismaticUnaligned to access the access when visiting a variant containing such joints with boost::fusion

1.1.0 - 2016-02-04

Summary

New Features

  • Spatial classes now follow the CRTP Design Pattern, for performance reasons.
  • JointModels are now exposed in Python. This feature enables one to load a URDF model with a precise root joint and to create his/her own model.
  • Python models can now be created by hand ( ex: buildEmptyModel() + calls to addBody() )
  • Added utility tools to check an urdf model ( same as check_urdf but dislpay the Pinocchio model created from urdf parsing)
  • Add unaligned prismatic joint
  • Add geometry through Flexible Collision Library (hpp-fcl)
    • Add dedicated structs to handle geometry. GeometryModel (list of geometry objects and its relation wrt kinematic model) and GeometryData
    • When parsing urdf, meshes can be read from collada files and handled in Pinocchio
    • Created parser that handles geometry and exposed it in python
    • Add algorithms to update the geometry kinematics, to compute the distances for pairs of collision or if they are colliding or not.
  • Added algorithms to compute the kinetic energy, the potential energy and exposed it in python
  • The complete documentation is in progress

API modifications

  • Change name of kinematics algorithms: now forwardKinematics instead of previous geometry, kinematics and dynamics.

Minor

  • SimpleHumanoid is now built with joint limits
  • Handle floating joints in urdf parsing
  • Slight separation between joints and body in Model to avoid confusion
  • Internally, Motion and Force classes now use a 6D-vector instead of two 3D-vectors for linear and angular part

Bugs Fixed

  • Fixed a bug when trying to merge a link with its parent in case of fixed joint. Now merge only if it has an inertial tag.
  • All the algorithms are now set to inline
  • Fix compilation errors

Installation

The source of the release are available in the file pinocchio-1.1.0.tar.gz just below along with a binary version for 64-bits Debian architecture of Pinocchio pinocchio_1.1.0_amd64.deb and its dependencies. For information, those packages will be installed in /opt/openrobots directory.

1.0.2 - 2015-09-14

Summary

New Features

  • The limits in position, velocity and torque for joints Revolute and Prismatic are now parsed from urdf model and accessible
  • Implementation of exp and log functions on SE3 in C++ with its python binding thanks to @aelkhour
  • Data now contains information relative to the center of mass position, velocity and acceleration
  • Add Lua parser - compatible with RBDL
  • Add translational joint
  • Add planar joint

Minor

  • Reduction of compilation warnings.

Bugs Fixed

  • Fixed bug in operator Y*S in JointRevoluteUnaligned

1.0.0 - 2015-04-03

The following algorithms are implemented. • Recursive Newton-Euler algorithm (RNEA, i.e inverse dynamics) • Composite Rigid Body algorithm (CRBA, i.e generalized inertia matrix) • Sparse Cholesky decomposition of the inertia matrix (for constrained forward-dynamics resolution) • Placement Jacobians (i.e application from configuration velocities to end-effector spatial velocities), along with computation of body placements, velocities and accelerations. • Center of mass and its Jacobian

The model can either be parsed from a URDF format or be created by appendending bodies. The following joint models are implemented. • Revolute X, Y, Z (optimized) and unaligned with Cartesian directions • Prismatic X, Y, Z • Spherical (with and withoug singularities) • FreeFlyer (i.e. no constraint, for mobile robots like humanoids -- using quaternion representation for the rotation) • Fixed (concatenation of two consecutive bodies)