Skip to content

Releases: robotology/idyntree

iDynTree 2.0.0 (2020-11-22)

22 Nov 21:36
17d5a7d
Compare
Choose a tag to compare

Release Notes

This is the second major release of iDynTree. As iDynTree adheres to Semantic Versioning, this means that iDynTree 2.0.0 contains API and ABI changes w.r.t. to the iDynTree 1.x releases.

Release Highlights

Some major additions to the library with respect to iDynTree 1.2 are:

Simplify use of KinDynComputations when using non-iDynTree vectors

Since 2015, to avoid any limitation due to the use of a specific Vector or Matrix type, iDynTree has always used its own Vector and Matrix data types in the interface of its classes, for example in iDynTree::KinDynComputations. While this choice had several advantages, it meant that users had to allocate a iDynTree-specific structure whenever they wanted to pass a quantity as input to an iDynTree method, or they wanted to get a result in output. For example, if a user had the the internal joint configuration of their robot in a Eigen::VectorXd, they had to create a separate iDynTree::VectorDynSize, and copy their data in it to call a iDynTree method such as KinDynComputations::setJointPos:

Eigen::VectorXd jointPosInRad;
iDynTree::VectorDynSize jointPosInRad_iDynTree;
iDynTree::KinDynComputations kinDynComp;

// ...

iDynTree::toEigen(jointPosInRad_iDynTree) = jointPosInRad; 
kinDynComp.setJointPos(jointPosInRad_iDynTree);

Since iDynTree 2.0.0, iDynTree supports its non-owning containers for Vector and Matrix, i.e. iDynTree::Span and iDynTree::MatrixView, so that the data can be passed to the methods without unnecessary copies or the creation of intermediate objects, for example to pass Eigen::VectorXd to KinDynComputations::setJointPos :

Eigen::VectorXd jointPosInRad;
iDynTree::KinDynComputations kinDynComp;

// ...

kinDynComp.setJointPos(iDynTree::make_span(jointPosInRad));

This functionality is not limited to Eigen vector, but can be used also with YARP or std vectors. For a more extended example, see
examples/cxx/KinDynComputationsWithEigen/main.cpp.

This feature is available thanks to @GiulioRomualdi and @S-Dafarra .

Python bindings refresh

Python bindings have been improved, for example adding for iDynTree objects the possibility to be constructed from generic iterable objects and NumPy arrays (*.FromPython), and existing iDynTree objects can be converted to NumPy arrays (*.toNumPy).

This improved Python iDynTree bindings are used inside the upcoming 1.0 release of gym-ignition, a new framework to create reproducible robotics environments for reinforcement learning research.

This feature is available thanks to @diegoferigo .

Computation of the Centroidal Momentum Matrix

The KinDynComputations class has learned how to compute the so-called "Centroidal Momentum Matrix", i.e. the matrix that multiplied on the left for the robot floating base velocity vector, returns the linear and angular momentum expressed in the center of mass of the robot.
This functionality is available in the KinDynComputations::getCentroidalTotalMomentumJacobian method, and is available thanks to the work of @GiulioRomualdi .

Improvements to yarprobostatepublisher

Until iDynTree 2.0.0, the yarprobostatepublisher utility that mimics the capability of the robostatepublisher ROS tool, but just using iDynTree and YARP, published only the transform of each frame of a robot w.r.t. to the base of the robot, producing a "shallow" tree:

shallow tree

While this representation is correct, it does not match the behavior of the robostatepublisher ROS tool, that instead publish the transform of each link frame w.r.t. to the parent link, producing a "deep" tree:
frames_ros

Since iDynTree 2.0, yarprobotstatepublisher has gained a new option, --tree-type with which you can switch between the DEEP and SHALLOW strategy. This feature is available thanks to the work of @elandini84 and @randaz81 .

Detailed ChangeLog

Added

  • Added a new CMake option IDYNTREE_COMPILES_TOOLS to disable compilation of iDynTree tools.
  • Added a KinDynComputations::getCentroidalTotalMomentumJacobian() method (#706)
  • iDynTree now supports build compiled as a shared library also on Windows.
  • When used in Python, new iDynTree objects can be constructed from generic iterable objects and NumPy arrays (*.FromPython),
    and existing objects can be converted to NumPy arrays (*.toNumPy) (#726).
  • iDynTree Python bindings can now be installed with pip3 install git+https://github.com/robotology/idyntree.git (#733).
  • Implement the MatrixView class (#734)
  • Add the possibility to use MatrixView and Span as input/output objects for KinDynComputations class (#736).
  • New Python bindings based on pybind11.
    They can be compiled by specifying the CMake option IDYNTREE_USES_PYTHON_PYBIND11. Note that the generated bindings are not
    compatible with the SWIG-generated bindings (e.g. functions have different names). They can be imported as idyntree.pybind Python module.

Fixed

  • Fixed bug in yarprobotstatepublisher that caused segmentation fault each time an unknown joint name was read from the input joint states topic (#719)
  • Fixed bug in CubicSpline() that causes wrong coefficients calculation when boundary conditions are set (#723)

Changed

  • By default iDynTree is compiled as a shared library also on Windows. The BUILD_SHARED_LIBS CMake variable can be used to
    control if iDynTree is built as a shared or a static library.
  • The Python method *.fromPyList is replaced by *.FromPython (#726).
  • The minimum required CMake version to configure and compile iDynTree is now 3.16 (#732).
  • The Python package name of the SWIG bindings changed from iDynTree to idyntree.bindings (#733, #735). To continue referring to iDynTree classes as iDynTree.<ClassName>, you can change your import iDynTree statements to import idyntree.bindings as iDynTree. Otherwise, you can use import idyntree.bindings to refer them as idyntree.bindings.<ClassName>.
  • Improve the use of const keyword in KinDynComputations(#736).
  • Cleanup size and indices attributes. For consistency with std and Eigen, all sizes and indices have been changed to use std::size_t for unsigned quantities and std::ptrdiff_t for signed quantities. The only exception is the index stored in the triplets of the iDynTree::SparseMatrix data structure, that have been left defined to int for compatibility with Eigen (#767).

Removed

  • Remove the CMake option IDYNTREE_USES_KDL and all the classes available when enabling it. They were deprecated in iDynTree 1.0 .
  • Remove the semantics related classes. They were deprecated in iDynTree 1.0 .
  • Remove unnecessary warning messages from ModelSensorsTransformers.cpp and URDFDocument.cpp (see PR 718)
  • Python2 will not be maintained past 2020 and its support has been dropped (#726).
  • Remove the need to call iDynTree.init_helpers() and iDynTree.init_numpy_helpers() from Python (#726).
  • Remove headers and methods that were deprecated in iDynTree 1.0 (#751).

iDynTree 1.2.1 (2020-11-22)

22 Nov 18:06
c88754d
Compare
Choose a tag to compare

iDynTree 1.2.1 Release Notes

Fixed

Fix compatibility with ipopt from conda-forge on Windows (#764) .

iDynTree 1.2.0 (2020-10-17)

17 Oct 11:03
109fabe
Compare
Choose a tag to compare

iDynTree 1.2.0 Release Notes

Detailed Changelog

Added

  • Added the possibility of reusing an already opened figure with the MATLAB iDynTree Visualizer either if the name coincides or by using gcf.

Changed

  • SolidShapes.h public API changes. API changes are back compatible, but as the ABI has changed, this means a re-compilation of the dependent projects is needed. In details:
    • Added getters and setters to all classes in SolidShapes.h (idyntree-model). Public attributes are still available for compatibility but are now deprecated and will be removed in the next major release of iDynTree (2.x).
    • Added Material class in SolidShapes.h (idyntree-model). The material attribute in SolidShape is now deprecated. Please use the color property in the new Material class to maintain the previous behaviour. Note that the old and new properties are completely orthogonal. Ensure the code is consistent with their uses.

Fixed

  • Fixed bug in init() of SimpleLeggedOdometry that used an incorrect initial world frame location if used with an additional frame of a link (#698).
  • Fixed bug that prevented to use iDynTree cmake packages directly from the build directory (#728).

iDynTree 1.1.0 (2020-06-08)

08 Jun 14:36
ba43b00
Compare
Choose a tag to compare

iDynTree 1.1.0 Release Notes

Release Highlights

This new release introduce two new features:

New MATLAB based visualizer

A new MATLAB iDynTree visualizer (#682, #668) has been added to the iDynTree's high-level-wrappers.
image17

A tutorial on how to use this new MATLAB visualizer is available in the https://github.com/robotology/idyntree/tree/v1.1.0/bindings/matlab/%2BiDynTreeWrappers#matlab-native-visualization .

Thanks a lot to Francisco Andrade (@fjandrad) that implemented this feature in #668 and #682 .

iDynTree's InverseKinematics MATLAB and Python bindings

The iDynTree's InverseKinematics class has been added to the iDynTree's bindings, so it is now usable from MATLAB and Python bindings. See the following snippet to have an idea on how to use iDynTree.InverseKinematics in MATLAB:

ik = iDynTree.InverseKinematics();
ik.setModel(robotModel);

% Set IK tolerances
ik.setCostTolerance(0.001);
% ik.setCostTolerance(1.0);
ik.setConstraintsTolerance(0.00001);
% Set targets as cost in the cost function
ik.setDefaultTargetResolutionMode(iDynTree.InverseKinematicsTreatTargetAsConstraintFull);
% Use roll pitch yaw parametrization for the rotational part of the IK
ik.setRotationParametrization(iDynTree.InverseKinematicsRotationParametrizationRollPitchYaw);
ik.setVerbosity(3);
ik.setDefaultTargetResolutionMode(iDynTree.InverseKinematicsTreatTargetAsConstraintNone);

% Add position target 
ik.addPositionTarget(frameIdx, G_targetPos);

% --------- Add starting point
% As the IK optimization problem is a non-linear iterative optimization, the
% optimization requires a starting point (to be assumed). Be aware
% that this choice can influence the actual convergence of the algorithm
jointsInitPosInRadians = iDynTree.VectorDynSize();
jointsInitPosInRadians.zero();
ik.setFullJointsInitialCondition(G_T_base, jointsInitPosInRadians);

% --------- Solve the IK
if ~ik.solve()
    fprintf('\n Fail to solve IK!\n')
end
G_H_base_optimized          = iDynTree.Transform();
jointPos_optimizedInRadians = iDynTree.VectorDynSize();
ik.getFullJointsSolution(G_H_base_optimized, jointPos_optimizedInRadians);

Thanks a lot to Lorenzo Rapetti (@lrapetto) that implemented this feature in #633 .

Acknowledgements

Thanks to the contributors (either as code authors, code reviewers or by contributing documentation) of this version of iDynTree:

Detailed ChangeLog

Added

  • Added a new function to iDynTreeWrappers for the function getWorldTransformsAsHomogeneous.
  • Added functions for having a MATLAB iDynTree Visualizer in iDynTreeWrappers. Some time optimization has been performed (#659).
  • Added bindings for getWorldTransformsAsHomogeneous function.
  • Added function getWorldTransformsAsHomogeneous that gives a vector of Matrix4x4 based on a vector of strings containing the frame transforms.
  • Added bindings for handling linkSolidShapes properly (#656).
  • Added bindings for InverseKinematics (#633).
  • Implement cbegin() / cend() and begin() / end() methods for VectorDynSize and VectorFixSize (#646).
  • Added CI for MacOS with IDYNTREE_USES_OCTAVE ON

iDynTree 1.0.7 (2020-06-07)

08 Jun 12:35
0831aac
Compare
Choose a tag to compare

iDynTree 1.0.7 Release Notes

Fixed

  • Fixed compilation with assimp installed with apt-get on Ubuntu 20.04 (#692, #693).
  • Fixed compilation with Octave >= 5 (#692, #677).

iDynTree 1.0.6 (2020-05-06)

06 May 13:24
0a96806
Compare
Choose a tag to compare

iDynTree 1.0.6 Release Notes

Fixed

  • Fixed compilation with ipopt installed via vcpkg (#689).
  • Fixed compilation with Visual Studio 2019 16.6 (#672).

iDynTree 1.0.5 (2020-04-03)

03 Apr 13:57
a92bdf9
Compare
Choose a tag to compare

iDynTree 1.0.5 Release Notes

Fixed

  • Fix find_package(iDynTree) when iDynTree is built with IDYNTREE_USES_ASSIMP ON and BUILD_SHARED_LIBS OFF (#667).

iDynTree 1.0.4 (2020-04-02)

02 Apr 12:29
9d3042f
Compare
Choose a tag to compare

iDynTree 1.0.4 Release Notes

Fixed

  • Further fix for configuration compilation with Assimp >= 5.0.0 (#666).

iDynTree 1.0.3 (2020-04-01)

01 Apr 19:55
1ed19d6
Compare
Choose a tag to compare

iDynTree 1.0.3 Release Notes

Fixed

  • Fixed configuration and compilation with Assimp >= 5.0.0 (#661).
  • Fixed runtime errors of the MATLAB bindings on Windows and compatibility with MATLAB 2020a (#664).

iDynTree 1.0.2 (2020-02-21)

21 Feb 15:54
685c080
Compare
Choose a tag to compare

iDynTree 1.0.2 Release Notes

Fixed

  • Remove spurious inclusion of Eigen headers in ExtendedKalmanFilter.h public header, that could create probles when using that header in a downstream project that does not use Eigen (#639).
  • Added find_dependency(OsqpEigen) and find_dependency(LibXml2) when iDynTree is compiled as a static library, fixing the use of iDynTree on Windows (#642).

Changed

  • To reduce the possible unexpected problems, the automatic set of the IDYNTREE_USES_<pkg> CMake variable when the <pkg> CMake package is available in the system has been removed for Irrlicht and WORHP, as it was already disabled for ASSIMP and ALGLIB (#642). To use this dependencies it is now compulsory to set manually the IDYNTREE_USES_<pkg> variable to ON.