🚀 iDynTree 2.0.0 Released #443
traversaro
started this conversation in
Releases
Replies: 1 comment
-
A small regression on the second variant of Python bindings (not the one used in the robotology-superbuild's |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi @robotology/everyone,
iDynTree 2.0.0 was released today, and is now available at https://github.com/robotology/idyntree/releases/tag/v2.0.0 . 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. iDynTree 2.0.0 will be included in the upcoming iCub-software distro release 2020.11 .
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 aiDynTree
-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 aEigen::VectorXd
, they had to create a separateiDynTree::VectorDynSize
, and copy their data in it to call a iDynTree method such asKinDynComputations::setJointPos
:Since iDynTree 2.0.0, iDynTree supports its non-owning containers for Vector and Matrix, i.e.
iDynTree::Span
andiDynTree::MatrixView
, so that the data can be passed to the methods without unnecessary copies or the creation of intermediate objects, for example to passEigen::VectorXd
toKinDynComputations::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, seeexamples/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 1.0 release of
gym-ignition
, a new framework to create reproducible robotics environments for reinforcement learning research, see #445 .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 therobostatepublisher
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 theDEEP
andSHALLOW
strategy. This feature is available thanks to the work of @elandini84 and @randaz81 .Detailed ChangeLog
Added
IDYNTREE_COMPILES_TOOLS
to disable compilation of iDynTree tools.KinDynComputations::getCentroidalTotalMomentumJacobian()
method (Implement KinDynComputations::getCentroidalTotalMomentumJacobian() method idyntree#706)*.FromPython
),and existing objects can be converted to NumPy arrays (
*.toNumPy
) (Enhance iDynTree from / to Python mapping and add proper NumPy support idyntree#726).pip3 install git+https://github.com/robotology/idyntree.git
(Initial support to Python packaging idyntree#733).MatrixView
andSpan
as input/output objects forKinDynComputations
class (Use MatrixView and Span in KinDynComputations class idyntree#736).They can be compiled by specifying the CMake option
IDYNTREE_USES_PYTHON_PYBIND11
. Note that the generated bindings are notcompatible with the SWIG-generated bindings (e.g. functions have different names). They can be imported as
idyntree.pybind
Python module.Fixed
yarprobotstatepublisher
that caused segmentation fault each time an unknown joint name was read from the input joint states topic (bug-fix: JointIndex validity check idyntree#719)CubicSpline()
that causes wrong coefficients calculation when boundary conditions are set (Change the logic used to update the Coefficients in the CubicSpline class idyntree#723)Changed
BUILD_SHARED_LIBS
CMake variable can be used tocontrol if iDynTree is built as a shared or a static library.
*.fromPyList
is replaced by*.FromPython
(Enhance iDynTree from / to Python mapping and add proper NumPy support idyntree#726).iDynTree
toidyntree.bindings
(Initial support to Python packaging idyntree#733, Update Python SWIG bindings module name idyntree#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>
.const
keyword inKinDynComputations
(Use MatrixView and Span in KinDynComputations class idyntree#736).Removed
iDynTree.init_helpers()
andiDynTree.init_numpy_helpers()
from Python (Enhance iDynTree from / to Python mapping and add proper NumPy support idyntree#726).Beta Was this translation helpful? Give feedback.
All reactions