Releases: robotology/idyntree
iDynTree 3.1.0 (2021-04-23)
[3.1.0] - 2020-04-23
Added
- Add the possibility to use
MatrixView
andSpan
as input/output objects forInverseKinematics
class (#822). - Add the possibility to get frame trasform from the visualizer, and to use frame/link name in place of indices (#849).
- Add
IDYNTREE_DETECT_ACTIVE_PYTHON_SITEPACKAGES
CMake option (default value: OFF) to detect and install in the active site-package directory the Python bindings (#852). - Add inverseDynamicsWithInternalJointForceTorques method to KinDynComputations, this method permits to compute the inverse dynamics, but providing as an output the internal joint 6D force/torque for each joint (#857).
Changed
- The wheels uploaded to PyPI are now
manylinux_2_24
compliant (#844)
Fixed
iDynTree 3.0.2 (2021-04-11)
Fixed
- Fixed compilation of Python bindings on Windows (#843).
iDynTree 3.0.1 (2021-03-11)
Fixed
- Fixed the
IDYNTREE_USES_ASSIMP
option on Windows ifIDYNTREE_USES_YARP
is also enabled (#832). - Fixed the
OBJ
meshes visualization in the Visualizer library (#833). - Fixed
ModelVisualization::getWorldLinkTransform()
method (#836) - Only link required MATLAB libraries when compiling iDynTree MATLAB bindings (#840).
Deprecated
- The method
ModelVisualization::getWorldModelTransform()
is deprecated, and will be removed in iDynTree 4.0.
iDynTree 3.0.0 (2021-02-03)
Release Notes
Added
- Add the possibility to plot and update frames in the Matlab visualizer.
- Added
getFileLocationOnLocalFileSystem
method inExternalMesh
that attempts to find the mesh location in the local file system. This is now used by theVisualizer
when loading the robot model (#798). This can also be used by theiDynTreeWrapper.prepareVisualization
MATLAB function, ifmeshFilePrefix
is explicitly set to""
(#817). - Add the possibility to extract submatrix with MatrixView (#800)
- Improved the Visualizer library: camera animations and corrections, interface for frames and texture, fix of
STL
visualization. These improvements also include mouse control support for the camera, also in theidyntree-model-view
application (#802).
Changed
- Promoted the functions
computeBoundingBoxFromShape
andcomputeBoxVertices
to public in theidyntree-solid-shapes
library (#801). - The
idyntree-yarp
andidyntree-icub
libraries are now header-only, and are always installed even ifIDYNTREE_USES_YARP
orIDYNTREE_USES_ICUB_MAIN
are set toOFF
, to simplify deployment of the library. The downstream libraries that want to use them need to find and linkYARP
andICUB
CMake packages on their own (#807).
Fixed
- Fixed the
IDYNTREE_USES_IRRLICHT
option whenirrlicht
is installed via vcpkg (#806).
iDynTree 2.0.3 (2021-02-03)
iDynTree 2.0.2 (2020-12-04)
iDynTree 2.0.1 (2020-11-24)
iDynTree 2.0.0 (2020-11-22)
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:
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:
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
andSpan
as input/output objects forKinDynComputations
class (#736). - New Python bindings based on pybind11.
They can be compiled by specifying the CMake optionIDYNTREE_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 asidyntree.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
toidyntree.bindings
(#733, #735). To continue referring to iDynTree classes asiDynTree.<ClassName>
, you can change yourimport iDynTree
statements toimport idyntree.bindings as iDynTree
. Otherwise, you can useimport idyntree.bindings
to refer them asidyntree.bindings.<ClassName>
. - Improve the use of
const
keyword inKinDynComputations
(#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()
andiDynTree.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)
iDynTree 1.2.1 Release Notes
Fixed
Fix compatibility with ipopt from conda-forge on Windows (#764) .
iDynTree 1.2.0 (2020-10-17)
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 inSolidShapes.h
(idyntree-model
). Thematerial
attribute inSolidShape
is now deprecated. Please use thecolor
property in the newMaterial
class to maintain the previous behaviour. Note that the old and new properties are completely orthogonal. Ensure the code is consistent with their uses.
- Added getters and setters to all classes in