This file documents notable changes to this project done before February 2024. For changes after that date, plase refers to the release notes of each release at https://github.com/robotology/idyntree/releases .
- Added getCentroidalRobotLockedInertia and getRobotLockedInertia to KinDynComputations class (#1153).
- Fixed compilation of IDYNTREE_USES_ASSIMP option in Debian 10 Buster (#1148).
- MeshcatVisualizer: Add the possibility to draw lines in MeshcatVisualizer (#1141)
-
CMake: Permit to explicitly specify Python installation directory by setting the
IDYNTREE_PYTHON_INSTALL_DIR
CMake variable (#1124). -
MeshcatVisualizer: Add the possibility to remove a mesh from the visualizer (#1138)
- Fixed compilation of pybind11 bindings (#1128).
- Fixed support for handling correctly STL files that end with
.STL
in iDynTree Irrlicht-based visualizer (#1136). - Fixed handling meshes with vertix count larger than a limit set in Irrlicht used by idyntree-yarp-visualizer (#1139)
- Added the possibility of exporting additional XML elements that are added as child of the
<robot>
element in URDF ModelExporter (#1088). - Added support for reading and wrting joint friction and damping values from URDF files (#1094).
- Since iDynTree 10, all the changes of iDynTree will go directly to the
master
branch, thedevel
branch will be deleted. Users that want to work with a stable version of iDynTree should use a tagged version of iDynTree . - The license of the library is changed to
BSD-3-Clause
(#1089). - The
iDynTree::ModelExporterOptions
class was changed to be defined as a struct (#1088). - The header structure has been shortened, from
<iDynTree/@component@/@[email protected]>
to<iDynTree/@[email protected]>
(#1104). iDynTree::idyntree-sensors
library has been merged iniDynTree::idyntree-model
(#1104).- The
iDynTree::Model
class gained am_sensors
attribute andsensors()
method to access to it to store sensors information as part of theiDynTree::Model
itself (#1106).
- Linking
iDynTree::idyntree-sensors
is deprecated, you can just linkiDynTree::idyntree-model
instead, or just search and replaceiDynTree::idyntree-sensors
with an empty string if you are already linkingiDynTree::idyntree-model
(#1104). - Including
<iDynTree/Core/@[email protected]>
,<iDynTree/Model/@[email protected]>
,<iDynTree/Sensors/@[email protected]>
,<iDynTree/ModelIO/@[email protected]>
,<iDynTree/Estimation/@[email protected]>
,<iDynTree/yarp/@[email protected]>
is deprecated, just include<iDynTree/@[email protected]>
. To perform this migration, just search and replace<iDynTree/Core/
with<iDynTree/
,<iDynTree/Model/
with<iDynTree/
,<iDynTree/Sensors/
with<iDynTree/
,<iDynTree/ModelIO/
with<iDynTree/
,<iDynTree/Estimation/
with<iDynTree/
,<iDynTree/yarp/
with<iDynTree/
(#1104). - Several methods that take in input both a
iDynTree::Model
and aiDynTree::SensorsList
have been deprecated, users are suggested to call the variant that takes in input only theiDynTree::Model
, if necessary by populating correctly the sensors of theiDynTree::Model
via theiDynTree::Model::sensors
method (#1106). - Several classes that ended in
Raw
are deprecated, and in their place their non-Raw counterpart should be used. In particular, the pair "deprecated"/"replacement" is :iDynTree::PositionRaw
/iDynTree::Position
,iDynTree::RotationRaw
/iDynTree::Rotation
,iDynTree::RotationalInertiaRaw
/iDynTree::RotationalInertia
andiDynTree::SpatialInertiaRaw
/iDynTree::SpatialInertia
(#1114).
- Added optional dependency on meshcat-cpp (#1074).
- Added
iDynTree::MeshcatVisualizer
C++ class (#1074).
- Fixed the
iDynTree::Visualizer
class to work on macOS, after it was broken in 9.0.0 . To do so, now the compilation withIDYNTREE_USES_IRRLICHT
set toON
on macOS requires irrlicht to be compiled with SDL support (#1076, #1077).
- Fix export of
iDynTree::PrismaticJoint
iniDynTree::getRandomModel
(#1057).
- Binary wheels available on PyPI now target
manylinux_2_28
, and the optionsIDYNTREE_USES_ASSIMP
,IDYNTREE_USES_IPOPT
andIDYNTREE_USES_IRRLICHT
are disable in binary wheels on PyPI. If you need these options enabled, please use conda-forge binaries or build iDynTree from source (#1068). - Compilation with
IDYNTREE_USES_IRRLICHT
set toON
now requiresglfw
library. Furthermore, nowIDYNTREE_USES_IRRLICHT
on Windows requires irrlicht to be compiled with SDL support. This changes have been done to support resizable visualizer windows on Windows (#1070, #1071). - Use iDynTree::InverseKinematicsRotationParametrizationRollPitchYaw as default parametrization in iDynTree::InverseKinematics (#1058).
The XML parser API has changed. Now an additional XMLParserState
context object is propagated while parsing.
To catch logic errors (which are not pure XML errors that are currently caught by the parser itself) the XMLParserState
contains a bool
variable. Further logic can be added to the context state.
The following errors are currently check:
- Duplicate joints in the URDF will cause an error.
- Build and deploy PyPI wheels for Python 3.10 (#1061)
- Enabled the use of irrlicht dependency in PyPI builds (#1045).
- Fix
MatrixView
constructor whenMatrixView<const T>
is built fromMatrixView<T>
(#1044).
- Added the possibility to set the alpha channel while loading a model in the meshcat visualizer (#1033).
- Add the possibility to pass the list containing the mesh path while building the model (#1036).
- Enable implicit conversion and change KinDynComputations holder in the iDynTree bindings (#1037).
- Fix compilation against PyPy (#1018).
- estimateExternalWrenches: Avoid to compute the pseudoinverse to evaluate the external wrenches (#1017).
- Added creation of sub model object starting from the full model and a sub traversal (#1011).
- Fix bug of
InverseKinematics::updateRotationTarget
that did not actually changed the RotationWeight, but changed the PositionWeight instead (#1012).
- Added a new Berdy variant that accounts for estimating the external link wrenches independently of the internal joint torque estimates (#991).
- Changed signature of the method
BerdyHelper::serializeDynamicVariables
in order to serialize also theRCM_SENSOR
(#991).
- Additional functionalities for pybind11 bindings (#1001):
Twist
classModelLoader
class- Basic kinematics support in
KinDynComputations
- No warning is printed if a sensor not supported by iDynTree is found in an URDF file (#997).
- Fix
iDynTreeWrappers.loadReducedModel
whenmodel_path
argument does not end in\
(#1126).
- Fixed compatibility with YARP 3.7 (#992).
- Added
DHChain
class to the bindings (#984).
- Fixed problems of running two (or more) times the
iDynTree.Visualizer
class on Windows when using SDL >= 1.2.52 (#988, #986).
- Expose some Rotation conversion functions for pybind11 bindings (#973).
- Fixed compatibility at CMake level on macOS with MATLAB R2021a and R2021b (#978).
- Avoid to use iDynTree material (for example the one specified in URDF) when
.obj
meshes are loaded in the Irrlicht visualizer (#974). - Fix crash on
Visualizer::close
on Windows (#976). The fix works only if the used Irrlicht is compiled with SDL support.
- Implement the possibility to use
FromPython
to generate rotation and position in the python SWIG bindings starting from arrays (#959)
- Implement
idyntree-model-view-meshcat
application (#961).
- Fix loading material and color information from URDF files (#961).
- Make sure that
pip
is aware of theidyntree
Python package if iDynTree is installed just via CMake (#963).
- Fixed
iDynTree::ModelExporter
class andidyntree-model-simplify-shapes
utility to generate specification-conforming URDF files, by adding huge velocity and effort limits to joints, as these limits are currently not stored inside theiDynTree::Model
class (#957, #955).
- Added the possibility to draw in different portions of the visualizer window and textures at the same time. Allow disabling the drawing on textures (#903).
- Implement the
operator[]
forLinkPositions
,LinkVelArray
andLinkAccArray
in the swig python bindings (#949) - Expose
ModelTestUtils
in swig bindings (#949) - Define base and joints attributes for
FreeFloatingPos
,FreeFloatingVel
andFreeFloatingAcc
in swig bindings (#949)
- The
iDynTree::Visualizer::enviroment()
was deprecated. Please use theiDynTree::Visualizer::environment()
method instead (#903). - The
iDynTree::idyntree-modelio-urdf
CMake imported target used when using classes such asiDynTree::ModelLoader
andiDynTree::ModelExporter
was deprecated. Please use theiDynTree::idyntree-modelio
imported target instead.
- The tools that depend on YARP (
urdf2dh
,yarprobotstatepublisher
,idyntree-sole-gui
,iDynTreePlotter
) have been moved inidyntree-yarp-tools
and their have been removed from iDynTree, together with the the optionIDYNTREE_COMPILES_YARP_TOOLS
that was been introduced to disable their compilation in iDynTree 3 (#940).
- Fixed the conversion from irrlicht pixels to iDynTree pixels. Fixed a typo in the environment method of the visualizer. Fixed the running of two visualizer instances in the same process (#903).
- Fixed the update of the vectors in the visualization that caused the FPS to drop (#921).
- Fixed compatibility with pybind11 >= 2.6.0 (#867, #937).
- Added support for exporting joint position limits to URDF for 1-DoF joints (prismatic and revolute).
- Added pybind11 python bindings for adding and reading joint limits.
- Added the
ModelTransformsSolidShapes.h
header in theiDynTree::idyntree-solid-shapes
library. At the moment, this header contains just theiDynTree::approximateSolidShapesWithPrimitiveShape
function, useful to approximate the solid shapes of a given iDynTree::Model to a series of bounding boxes (#941). - Added
idyntree-model-simplify-shapes
command line tool. This tool is useful to take in input a model, and return in output the same model, but with all the geometries of the model approximated with their axis aligned bounding boxes (#933, #941).
- In the URDF exporter, export only frames attached to the exported traversal #914.
- Fixed handling of the AMENT_PREFIX_PATH environment variable (#915).
__is_mesh
in theMeshcatVisualizer
now returnsfalse
for non-meshes, and instead was raising an error (#925).
- The option
IDYNTREE_COMPILES_YARP_TOOLS
, that was already deprecated in iDynTree 3, is now set toOFF
by default. It will be removed in iDynTree 5, please use the repo https://github.com/robotology/idyntree-yarp-tools instead (#919).
- Add the possibility to pass the zmq url to the meshcat visualizer, to simplify its use in Google Colab (#905).
- Add the
MeshcatVisualizer
Python class (#901). This class uses meshcat to visualize the state of a model either in a browser or in a Jupyter cell. Check the example inexamples/python/MeshcatVisualizerExample.ipynb
.
- Add the visualization of labels in the visualizer (#879)
- Remove headers
iDynTree/Core/AngularForceVector3.h
,iDynTree/Core/AngularMotionVector3.h
,include/iDynTree/Core/ForceVector3.h
,iDynTree/Core/LinearForceVector3.h
,include/iDynTree/Core/LinearMotionVector3.h
,include/iDynTree/Core/MotionVector3.h
. They were deprecated in iDynTree 2.0 (#708, #885). - The method
ModelVisualization::getWorldModelTransform()
was removed, it was deprecated in iDynTree 3.0.1 .
- Fixed the possibility of installing the bindings of iDynTree (
bindings
directory) on their own, against an already compiled system iDynTree (#896).
- Add the
is/asPrismaticJoint
methods in the bindings (#881, #882) - Add the possibility of building the binding of iDynTree (
bindings
directory) on their own, against an already compiled system iDynTree (#892, robotology/robotology-superbuild#817).
- The tools that depend on YARP (
urdf2dh
,yarprobotstatepublisher
,idyntree-sole-gui
,iDynTreePlotter
) have been moved inidyntree-yarp-tools
and their use in iDynTree has been deprecated. The optionIDYNTREE_COMPILES_YARP_TOOLS
has been introduced to disable their compilation. This option is set by default toON
on iDynTree 3, will exist but default toOFF
in iDynTree 4, and will be removed in iDynTree 5.
- The example file
examples/python/KinDynComputationsTutorial.py
has been fixed to work with Python 3 and iDynTree >= 2.0 (#873). - Fix of a bug introduced by #845 and present in iDynTree 3.1.0 and 3.2.0 in the visualization of boxes (#874)
- The
SwigRef.m
,SwigMem.m
andSwigGet.m
MATLAB files are now namediDynTreeSwigRef.m
,iDynTreeSwigMem.m
andiDynTreeSwigGet.m
. This ensure prevent the possibility that other libraries (such as CasADi) install files with the same name in the MATLAB path with incompatible content (#865, #868).
- 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).
- The wheels uploaded to PyPI are now
manylinux_2_24
compliant (#844)
- Dynamics: In RNEA Dynamic Loop, return zero for wrench corresponding to non-existing parent joint of base link (#857).
- Fixed compilation when using Eigen 3.4 (#861).
- Fixed compilation of Python bindings on Windows (#843).
- 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).
- The method
ModelVisualization::getWorldModelTransform()
is deprecated, and will be removed in iDynTree 4.0.
- 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).
- 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 the
IDYNTREE_USES_IRRLICHT
option whenirrlicht
is installed via vcpkg (#806).
- Fixed use of sphere shape in MATLAB-based Visualizer (#796).
- Fixed compilation against conda-forge-provided Ipopt on Windows (#793).
- Fixed problem in pybind11-based Python bindings (#781).
- 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 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 asidyntree.pybind
Python module.
- 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)
- 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).
- 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).
- Added the possibility of reusing an already opened figure with the MATLAB iDynTree Visualizer either if the name coincides or by using gcf.
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
- 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).
- Added a new function to
iDynTreeWrappers
for the functiongetWorldTransformsAsHomogeneous
. - Added functions for having a MATLAB iDynTree Visualizer in
iDynTreeWrappers
. Some time optimization has been performed (#659). - Added
bindings
forgetWorldTransformsAsHomogeneous
function. - Added function
getWorldTransformsAsHomogeneous
that gives a vector of Matrix4x4 based on a vector of strings containing the frame transforms. - Added
bindings
for handlinglinkSolidShapes
properly (#656). - Added
bindings
forInverseKinematics
(#633). - Implement
cbegin()
/cend()
andbegin()
/end()
methods forVectorDynSize
andVectorFixSize
(#646). - Added CI for MacOS with
IDYNTREE_USES_OCTAVE
ON
- Fixed compilation with assimp installed with apt-get on Ubuntu 20.04 (#692, #693).
- Fixed compilation with Octave >= 5 (#692, #677).
- Fixed compilation with ipopt installed via vcpkg (#689).
- Fixed compilation with Visual Studio 2019 16.6 (#672).
- Fix find_package(iDynTree) when iDynTree is built with IDYNTREE_USES_ASSIMP ON and BUILD_SHARED_LIBS OFF (#667).
- Further fix for configuration compilation with Assimp >= 5.0.0 (#666).
- 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).
- Remove spurious inclusion of Eigen headers in ExtendedKalmanFilter.h public header, that could create problems 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).
- 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 theIDYNTREE_USES_<pkg>
variable toON
.
- 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).
- 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.
- 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.
- 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 missing
DOF_ACCELLERATION
data in dynamic variable cache ordering (#587) - Fixed compatibility of
Span
with SWIG bindings compilation (#522) - Fixed implementation of
Transform::log()
method (#562) - Fixed implementation of
SpatialMotionVector::exp()
method (#562)
- 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 ( #482 ).
- 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 ( #482 ).
- 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 ( #482 ).
- 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).
- Fix a locale-dependent floating point parsing in the URDF parser (#475).
- Fix compatibility with SWIG 2 (#476).
- Fix behavior of InverseKinematics if Add***Constraint method are called multiple times (#479).
- 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. - Added library
idyntree-modelio-xml
to parse generic XML files. Support for XSD validation (when parsing from file). This library requires Gnome libxml2. - 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>
. - Added method to obtain relative Jacobians sparsity pattern.
- Added method to obtain free floating Jacobians sparsity pattern.
- 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.
- CMake 3.5 is now required to build iDynTree.
- Improve SpatialInertia documentation ( #435 ).
- Changed URDF parser to use
libxml2
instead of TinyXML.
- The
iDynTree/Sensors/SixAxisFTSensor.h
header has been deprecated in favor of theiDynTree/Sensors/SixAxisForceTorqueSensor.h
. - Constraints Jacobian now exploit sparsity pattern
- 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
- In the InverseKinematics library, the Frame Constraints can now be enabled and disabled dynamically ( #389 ).
- 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)
- 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.
- 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 the
devel
branch before release will be denoted with a patch version number greater than 100. The next minor release of iDynTree will be 0.11 .
- 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.
- 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
.
- This is the first version of iDynTree for which a changelog was introduced.
- 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 ).
- Classes and function to convert between chains rappresented by the Denavit Hartnberg convention and iDynTree::Model object have been implemented ( #350 ).
- The methods and constructors of the iDynTree::RevoluteJoint and iDynTreee::PrismaticJoint classes handling joints have been cleaned up ( #339 ).
- 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 the
IDYNTREE_USES_<dep>
variables ( #323 ). - IPOPT has been added as an optional dependency for the Inverse Kinematics component.
- The Octave bindings have been migrated to use the exact same mex code used for the Matlab bindings ( #305 ).
-
The
IVector
,IRawVector
,IMatrix
andIRawMatrix
interfaces have been removed for performance reasons, see #98 (comment) . If you want to write generic code in C++ you can rely on templates, and on Matlab and Python you can rely on the native dynamic type system. -
All the core classes that have a fixed size (
Position
,Rotation
,Transform
,SpatialMotionVector
, etc, etc) are not initialized by their empty constructor for performance reasons, see #98 (comment) . From now on, make sure that initialize them before any use. Most of those classes should have azero()
method to zero its content, or aZero()
static method that return a instance with its content set to zero. For ensuring that no regression happened on the iDynTree codebase, a CMake advanced optionIDYNTREE_RUN_VALGRIND_TESTS
has been added to make that no use of initialized memory occurs.