Releases: robotology/idyntree
iDynTree 1.0.1 (2020-01-14)
iDynTree 1.0.1 Release Notes
This is a patch release of iDynTree 1.0, that fixes a regression that caused all the project that used the CMake command find_package(iDynTree <version>)
to fail.
Detailed ChangeLog
Fixed
- Change CMake version compatibility from SameMajorVersion to AnyNewerVersion, as API breakage between major version will be limited, and to avoid breaking the compatibility of any downstream project that request a minimum version of iDynTree as in
find_package(iDynTree 0.11 REQUIRED)
(#629).
iDynTree 1.0.0 (2020-01-14)
iDynTree 1.0.0 Release Notes
This is the first major release of iDynTree, and from now on iDynTree will adheres to Semantic Versioning, meaning that from now on all releases of the iDynTree 1.x series will be API and ABI backward compatible.
In particular, iDynTree 2.0 will remove support for parts of iDynTree that have been deprecated for a long time such as anything that is enabled by the IDYNTREE_ENABLE_KDL
CMake option, the iDynTree::DynamicsComputations
class and the semantics support.
Release Highlights
Some major additions to the library with respect to iDynTree 0.11 are:
- Several attitude estimation algorithms were added in the iDynTree
estimation
library. - Support for exporting
iDynTree::Model
as URDF files as been added, via the theiDynTree::ModelExporter
class. - Support for using OSQP as a QP solver been added in the iDynTree
optimalcontrol
library. - The
iDynTree::ModelLoader
class has been modified to ensure that URDF models of serial robots load the joint in "normalized order", i.e. having joint closer to the fixed base come before joints that are closer to the end effector.
For more details on these and the other changes of iDynTree 1.0, check the "Detailed ChangeLog" section at the end of this release notes.
Acknowledgements
Thanks to the contributors (either as code authors or code reviewers) of this version of iDynTree:
- Francisco Andrade (@fjandrad)
- Stefano Dafarra (@S-Dafarra)
- Diego Ferigo (@diegoferigo)
- Nuno Guedelha (@nunoguedelha)
- Antoine Hoarau (@ahoarau)
- Gabriele Nava (@gabrielenava)
- Prajval Kumar (@prajval10)
- Ugo Pattacini (@pattacini)
- Prashanth Ramadoss (@prashanthr05)
- Alberto Remus (@AlbertoRemusIIT)
- Angelo Rendiniello (@AngeloRendiniello)
- Francesco Romano (@francesco-romano)
- Giulio Romualdi (@GiulioRomualdi)
- Ines Sorrentino (@isorrentino)
- Yeshasvi Tirupachuri (@Yeshasvitvs)
- Silvio Traversaro (@traversaro)
iDynTree first major release is dedicated to Angelina.
Detailed ChangeLog
Added
- Added method to compute the inverse dynamics inertial parameters regressor in KinDynComputations ( #480 ).
KinDynComputations finally reached feature parity with respect to DynamicsComputations, that will finally be removed in one of the future iDynTree feature releases. - Added method to return the convex hull of the constraint on the projection of the center of mass (#478).
- Added objects to deal with linear optimal control problems in the optimalcontrol library.
- Added
OSQP
interface viaosqp-eigen
in the optimalcontrol library. - Fixed bugs in
MultipleShooting
solver in the optimalcontrol library. - Added few lines of documentation in the optimalcontrol library.
- Added interface for
ALGLIB
andWORHP
in the optimalcontrol library. - Multiple shooting solvers can use hessians of costs and constraints in the optimalcontrol library.
- Taking into account also the sparsity pattern of constraints and dynamical system (both in jacobians and hessians) in the optimalcontrol library.
- Added visualization of vectors in the visualization library.
- Added a SolidShape helper library. This library is part of iDynTree, and is meant
to contain all the algorithms that use in some form the visual and collision geometries of the model,
and so they depend on the Assimp library to load meshes. - Added an helper function that provides rough estimates of the inertial parameters (mass, first moments of mass,
3d inertia matrix elements) of a robot given the total mass of the robot, and its collisions shapes. While the estimates
provided are quite rough, they can be quite useful at least to provide an expected order of magnitude of the parameters,
to normalize errors or as initial points of a nonlinear optimization procedure. - Added attitude estimator interface to estimate the orientation of an IMU, given the IMU measurements (#516).
- Added
DiscreteExtendedKalmanFilterHelper
base class (#516). - Added
AttitudeMahonyFilter
implementation of an explicit formulation of passive complementary filter over quaternion groups (#516). - Added
AttitudeQuaternionEKF
implementation (#516). - Added
getWorldFrameTransform
implementation inSimpleLeggedOdometry
class - Added a new version of
changeFixedFrame
inSimpleLeggedOdometry
class. This can be used to set a desired homogeneous transformation for the fixed frame - Added
bindings
forAttitudeMahonyFilter
,AttitudeQuaternionEKF
,DiscreteExtendedKalmanFilterHelper
(#522) - Added basic tests for the Attitude Estimator classes (#522)
- Added
DiscreteKalmanFilterHelper
class for an implementation of a discrete, linear time-invariant Kalman Filter (#559) - Added dynamic reset functionality to
DiscreteExtendedKalmanFilterHelper
class (#553) - Added high-level Matlab/Octave wrappers of the iDyntree bindings (#530)
- Added bindings for the class
Span
with the nameDynamicSpan
(#522) - Implement
RPYRightTrivializedDerivativeRateOfChange()
andRPYRightTrivializedDerivativeInverseRateOfChange()
intoRotation
class - Implement left Jacobian and left Jacobian inverse of SO(3) in Rotation class (#562)
- Add nameIsValid attribute to iDynTree::SolidShape class.
- Add operator[] method to
iDynTree::VectorDynSize
(#596) - Add operator[] method to
iDynTree::VectorFixSize
(#596) - Implement
getTotalMass()
method for Model class - Enable the installation of the
ModelTestUtils.h
file (#607) - Added
iDynTree::ModelExporter
class to exportiDynTree::Model
instances to URDF files (#554). - Added support in the URDF parser to correctly parse the optional name parameter of visual and collision elements.
- Added
iDynTree::ModelCalibrationHelper
to simplify loading a model from file, update its inertial parameters and exporting again to file (#576). - In
yarprobotstatepublisher
, addtf-prefix
andjointstates-topic
options for the tf prefixes and ROS topic.
- In
yarprobotstatepublisher
, addreduced-model
optional parameter to stream only the link transformations to transform server. By default, tranformations from all the frames are streamed to the transform server.
Changed
- The changelog has been migrated to the format described in https://keepachangelog.com/en/1.0.0/ .
- If the IDYNTREE_USES_YARP option is enabled, the minimum required version of YARP is 3.3 .
- The CMake config files are now installed in ${CMAKE_INSTALL_PREFIX}/lib/cmake/iDynTree also in Windows.
- Updated
iDynTree::ModelLoader
class to load by default models with normalized joint ordering (#491). - In
yarprobotstatepublisher
the model joint positions values are initialized to zero and the joint positions values are updadted in run time if the values are available in ROS topic given throughjointstates-topic
parameter. - In
yarprobotstatepublisher
, joint size check between model joints and joints in ROS topic given throughjointstates-topic
parameter have been removed.
Deprecated
- All the classes and methods that end in Semantics are deprecated, and will be removed in iDynTree 2.0, see #622 for more info.
- The CMake option IDYNTREE_USES_KDL and all the classes available when enabling it are deprecated, and will be removed in iDynTree 2.0 .
- In
yarprobotstatepublisher
, therobot
option is deprecated, and replaced byname-prefix
.
Fixed
iDynTree 0.11.2 (2019-12-12)
iDynTree 0.11.2 Release Notes
Unless noted otherwise, the changes in this patch release were introduced in Pull Request #482 .
Bug Fixes
- Fixed cache invalidation bug in the getFrameBiasAcc method of KinDynComputations. The internal
cache used by getBiasAcc was never updated even if the method setRobotState was called, so the
getFrameBiasAcc method always returned the bias acceleration corresponding to the first call to setRobotState. - Fixed getBiasAcc method in KinDynComputations to take into account the effect of non-zero and non-parallel
linear and angular base velocity, described in #370 . - Fixed compilation on 32-bit Windows ( #506 )
- Fixed a URDF parser regression introduced in iDynTree 0.11 for which collision geometries were also loaded as visual geometries, and viceversa (#497, #559).
- Fixed a URDF parser regression introduced in iDynTree 0.11 for which geometry elements without origin tag were not correctly parsed (#496, #564).
New features
- The getFrameAcc method that returns the acceleration of a frame was added to the KinDynComputations class.
As this method takes in input every time the robot acceleration, it is computationally expensive and
is not suitable to be used for multiple frames in a tight loop. If you need a computationally convenient
method to access frame accelerations, please open an issue. - It is now possible to specify a non-zero bias base acceleration as input of the ForwardBiasAccKinematics function.
This is convenient if the bias acceleration that is being computed is the bias acceleration obtained with the
MIXED velocity representation.
iDynTree 0.11.1 (2018-09-10)
iDynTree 0.11.0 (2018-08-31)
iDynTree 0.11 Release Notes
Summary
- iDynTree now official supports the following compilers: Microsoft Visual Studio 2015/2017, GCC >= 5.3 and clang >= 3.8 .
- The C++14 standard language is now used in the project, including in the public headers.
- libxml2 is now a required dependency. Check the docs to see how to install it.
- A new URDF parser was implemented. A side effect of the new parser is that the serialization of the links and joints of models
parsed from URDF may change. In your code, please use name string (in place of indices) to identify joints and links, or use the
iDynTree::ModelLoader
class to load a Model with the specified joint serialization. - CMake 3.5 is now required to build iDynTree.
- This is the last release of iDynTree that supports YARP 2.3.72 . From iDynTree 0.12, the optional part of iDynTree that depends on YARP will require YARP 3.
Important Changes
core
- Improve SpatialInertia documentation ( #435 ).
sensors
- The
iDynTree/Sensors/SixAxisFTSensor.h
header has been deprecated in favor of theiDynTree/Sensors/SixAxisForceTorqueSensor.h
.
model_io
- Added dependency on Gnome libxml2, see next bullet point.
- Added library
idyntree-modelio-xml
to parse generic XML files. Support for XSD validation (when parsing from file). This library requires Gnome libxml2. - Rewritten URDF parser to use the new
idyntree-modelio-xml
library. - Dropped required dependency on TinyXML1. If TinyXML is found in the system, it is possible to compile the old URDF parser that has been renamed into
idyntree-modelio-urdf-legacy
.
core
- Added
toEigen
methods forSpan
and added typedef forEigen
maps of vectors. - Added some typedefs to
VectorDynsize
andVectorFixSize
classes to enable the use ofmake_span
with these objects. - Added copy operator in
VectorDynSize
andVectorFixSize
forSpan<double>
.
high-level
- Added method to obtain relative Jacobians sparsity pattern
- Added method to obtain free floating Jacobians sparsity pattern
inverse-kinematics
- Constraints Jacobian now exploit sparsity pattern
iDynTree 0.10.0 (2018-06-20)
iDynTree 0.10.0 Release Notes
Important Changes
- Since 0.10 release, iDynTree uses C++14 in its headers, and requires GCC >= 5 and Visual Studio >= 2015
to compile. - Similar to the YARP policy, any new version of iDynTree will have a consecutive minor version number.
Development version (the one contained in thedevel
branch before release will be denoted with a
patch version number greater than 100. The next minor release of iDynTree will be 0.11 .
core
- Added the
iDynTree::Span
class (#434), modeled after
the C++20'sstd::span
( http://en.cppreference.com/w/cpp/container/span ). This class can be used to write
methods and functions that access a contiguous sequence of objects in memory with a known length.
This is extremly useful to make sure thatiDynTree
classes are easy to use regardless of which
vector type the downstream code is using, for example if it is one ofstd::vector<double>
,
Eigen::VectorXd
oryarp::sig::Vector
.
inverse-kinematics
- Frame Constraints can now be enabled and disabled dynamically ( #389 ).
estimation
- Addition of iDynTree::SchmittTrigger, iDynTree::ContactStateMachine and iDynTree::BipedFootContactClassifier classes for performing contact state detection using Schmitt trigger based thresholding and biped foot contact classification based on an alternate contact switching pattern reasoning over contact makes used for getting primary foot in contact
(#410 , #411 ). - Addition of iDynTree::GravityCompensationHelpers class for computing gravity compensation torques using accelerometer measurements (#438)
optimalcontrol
- Initial improvement of the optimal control library ( #442 ). See the inline documentation of the classes for more details, or open an issue
( https://github.com/robotology/idyntree/issues/new ) requesting documentation on some specific aspects of the optimal control library.
iDynTree 0.8.2 (2018-06-20)
iDynTree 0.8.2 Release Notes
Bug Fixes
- In the classes devoted to the external force-torque estimation, since #343 it is possible to have external forces that are completly estimated from external sensors such as skin sensors. If in a given submodels there are no unknown due to this, the pseudoinverse should be skipped ( #443 ) .
- Fix compatibility with YARP 3.
iDynTree 0.8.1 (2017-09-26)
iDynTree 0.8.1 (2017-09-29)
Bug Fixes
-
The
toEigen(const SpatialMotionVector & vec)
andtoEigen(const SpatialForceVector & vec)
inline helpers functions in theiDynTree/Core/EigenHelpers.h
have been modified to return aconst
copy of their content.
While this is technically an API change, it was critical because most of the othertoEigen
methods return anEigen::Map
object, and users
expect to be able to useEigen
modifiers methods such astoEigen(...).setZero()
. Enforcing a compilation error in this case will help to prevent subtle bugs.
As this is aninline
function, this modification does not affectiDynTree
'sABI
( #378 ) . -
The CMake configuration files of the release
0.8.0
were generated with the wrong version0.7.2
.
iDynTree 0.8.0 (2017-09-26)
iDynTree 0.8.0 (2017-09-26)
This is the first version of iDynTree for which a changelog was introduced.
Important Changes
-
The iDynTree::Model class now supports prismatic joints, using the iDynTree::PrismaticJoint class. Support for prismatic joints was added also to the URDF parser ( #269 ).
-
The methods and constructors of the iDynTree::RevoluteJoint and iDynTreee::PrismaticJoint classes handling joints have been cleaned up ( #339 ).
-
Classes and function to convert between chains rappresented by the Denavit Hartnberg convention and iDynTree::Model object have been implemented ( #350 ).
Dependencies
- The logic to enable/disable dependencies has changed. In particular, now all the dependencies (excluding the legacy dependency on KDL)
that are found on the system are enabled. Users can still select manually the dependency that they want to compile using
theIDYNTREE_USES_<dep>
variables ( #323 ). - IPOPT has been added as an optional dependency for the Inverse Kinematics component.
Bindings
- The Octave bindings have been migrated to use the exact same mex code used for the Matlab bindings ( #305 ).
Release v0.4.0
Last version before that still compiles the parts dependent on KDL automatically, and without the automatic dependency on IPOPT.