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_DIRCMake 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
.STLin 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
masterbranch, thedevelbranch 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::ModelExporterOptionsclass was changed to be defined as a struct (#1088). - The header structure has been shortened, from
<iDynTree/@component@/@headername@.h>to<iDynTree/@headername@.h>(#1104). iDynTree::idyntree-sensorslibrary has been merged iniDynTree::idyntree-model(#1104).- The
iDynTree::Modelclass gained am_sensorsattribute andsensors()method to access to it to store sensors information as part of theiDynTree::Modelitself (#1106).
- Linking
iDynTree::idyntree-sensorsis deprecated, you can just linkiDynTree::idyntree-modelinstead, or just search and replaceiDynTree::idyntree-sensorswith an empty string if you are already linkingiDynTree::idyntree-model(#1104). - Including
<iDynTree/Core/@headername@.h>,<iDynTree/Model/@headername@.h>,<iDynTree/Sensors/@headername@.h>,<iDynTree/ModelIO/@headername@.h>,<iDynTree/Estimation/@headername@.h>,<iDynTree/yarp/@headername@.h>is deprecated, just include<iDynTree/@headername@.h>. 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::Modeland aiDynTree::SensorsListhave 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::Modelvia theiDynTree::Model::sensorsmethod (#1106). - Several classes that ended in
Raware 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::RotationalInertiaandiDynTree::SpatialInertiaRaw/iDynTree::SpatialInertia(#1114).
- Added optional dependency on meshcat-cpp (#1074).
- Added
iDynTree::MeshcatVisualizerC++ class (#1074).
- Fixed the
iDynTree::Visualizerclass to work on macOS, after it was broken in 9.0.0 . To do so, now the compilation withIDYNTREE_USES_IRRLICHTset toONon macOS requires irrlicht to be compiled with SDL support (#1076, #1077).
- Fix export of
iDynTree::PrismaticJointiniDynTree::getRandomModel(#1057).
- Binary wheels available on PyPI now target
manylinux_2_28, and the optionsIDYNTREE_USES_ASSIMP,IDYNTREE_USES_IPOPTandIDYNTREE_USES_IRRLICHTare 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_IRRLICHTset toONnow requiresglfwlibrary. Furthermore, nowIDYNTREE_USES_IRRLICHTon 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
MatrixViewconstructor 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::updateRotationTargetthat 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::serializeDynamicVariablesin order to serialize also theRCM_SENSOR(#991).
- Additional functionalities for pybind11 bindings (#1001):
TwistclassModelLoaderclass- 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.loadReducedModelwhenmodel_pathargument does not end in\(#1126).
- Fixed compatibility with YARP 3.7 (#992).
- Added
DHChainclass to the bindings (#984).
- Fixed problems of running two (or more) times the
iDynTree.Visualizerclass 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
.objmeshes are loaded in the Irrlicht visualizer (#974). - Fix crash on
Visualizer::closeon Windows (#976). The fix works only if the used Irrlicht is compiled with SDL support.
- Implement the possibility to use
FromPythonto generate rotation and position in the python SWIG bindings starting from arrays (#959)
- Implement
idyntree-model-view-meshcatapplication (#961).
- Fix loading material and color information from URDF files (#961).
- Make sure that
pipis aware of theidyntreePython package if iDynTree is installed just via CMake (#963).
- Fixed
iDynTree::ModelExporterclass andidyntree-model-simplify-shapesutility to generate specification-conforming URDF files, by adding huge velocity and effort limits to joints, as these limits are currently not stored inside theiDynTree::Modelclass (#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,LinkVelArrayandLinkAccArrayin the swig python bindings (#949) - Expose
ModelTestUtilsin swig bindings (#949) - Define base and joints attributes for
FreeFloatingPos,FreeFloatingVelandFreeFloatingAccin swig bindings (#949)
- The
iDynTree::Visualizer::enviroment()was deprecated. Please use theiDynTree::Visualizer::environment()method instead (#903). - The
iDynTree::idyntree-modelio-urdfCMake imported target used when using classes such asiDynTree::ModelLoaderandiDynTree::ModelExporterwas deprecated. Please use theiDynTree::idyntree-modelioimported target instead.
- The tools that depend on YARP (
urdf2dh,yarprobotstatepublisher,idyntree-sole-gui,iDynTreePlotter) have been moved inidyntree-yarp-toolsand their have been removed from iDynTree, together with the the optionIDYNTREE_COMPILES_YARP_TOOLSthat 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.hheader in theiDynTree::idyntree-solid-shapeslibrary. At the moment, this header contains just theiDynTree::approximateSolidShapesWithPrimitiveShapefunction, useful to approximate the solid shapes of a given iDynTree::Model to a series of bounding boxes (#941). - Added
idyntree-model-simplify-shapescommand 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_meshin theMeshcatVisualizernow returnsfalsefor 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 toOFFby 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
MeshcatVisualizerPython 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 (
bindingsdirectory) on their own, against an already compiled system iDynTree (#896).
- Add the
is/asPrismaticJointmethods in the bindings (#881, #882) - Add the possibility of building the binding of iDynTree (
bindingsdirectory) 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-toolsand their use in iDynTree has been deprecated. The optionIDYNTREE_COMPILES_YARP_TOOLShas been introduced to disable their compilation. This option is set by default toONon iDynTree 3, will exist but default toOFFin iDynTree 4, and will be removed in iDynTree 5.
- The example file
examples/python/KinDynComputationsTutorial.pyhas 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.mandSwigGet.mMATLAB files are now namediDynTreeSwigRef.m,iDynTreeSwigMem.mandiDynTreeSwigGet.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
MatrixViewandSpanas input/output objects forInverseKinematicsclass (#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_SITEPACKAGESCMake 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_24compliant (#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_ASSIMPoption on Windows ifIDYNTREE_USES_YARPis also enabled (#832). - Fixed the
OBJmeshes 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
getFileLocationOnLocalFileSystemmethod inExternalMeshthat attempts to find the mesh location in the local file system. This is now used by theVisualizerwhen loading the robot model (#798). This can also be used by theiDynTreeWrapper.prepareVisualizationMATLAB function, ifmeshFilePrefixis 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
STLvisualization. These improvements also include mouse control support for the camera, also in theidyntree-model-viewapplication (#802).
- Promoted the functions
computeBoundingBoxFromShapeandcomputeBoxVerticesto public in theidyntree-solid-shapeslibrary (#801). - The
idyntree-yarpandidyntree-icublibraries are now header-only, and are always installed even ifIDYNTREE_USES_YARPorIDYNTREE_USES_ICUB_MAINare set toOFF, to simplify deployment of the library. The downstream libraries that want to use them need to find and linkYARPandICUBCMake packages on their own (#807).
- Fixed the
IDYNTREE_USES_IRRLICHToption whenirrlichtis 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_TOOLSto 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
MatrixViewandSpanas input/output objects forKinDynComputationsclass (#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.pybindPython module.
- Fixed bug in
yarprobotstatepublisherthat 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_LIBSCMake variable can be used to control if iDynTree is built as a shared or a static library. - The Python method
*.fromPyListis 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
iDynTreetoidyntree.bindings(#733, #735). To continue referring to iDynTree classes asiDynTree.<ClassName>, you can change yourimport iDynTreestatements toimport idyntree.bindings as iDynTree. Otherwise, you can useimport idyntree.bindingsto refer them asidyntree.bindings.<ClassName>. - Improve the use of
constkeyword 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.hpublic 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
Materialclass inSolidShapes.h(idyntree-model). Thematerialattribute inSolidShapeis now deprecated. Please use thecolorproperty in the newMaterialclass 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
SimpleLeggedOdometrythat 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
iDynTreeWrappersfor the functiongetWorldTransformsAsHomogeneous. - Added functions for having a MATLAB iDynTree Visualizer in
iDynTreeWrappers. Some time optimization has been performed (#659). - Added
bindingsforgetWorldTransformsAsHomogeneousfunction. - Added function
getWorldTransformsAsHomogeneousthat gives a vector of Matrix4x4 based on a vector of strings containing the frame transforms. - Added
bindingsfor handlinglinkSolidShapesproperly (#656). - Added
bindingsforInverseKinematics(#633). - Implement
cbegin()/cend()andbegin()/end()methods forVectorDynSizeandVectorFixSize(#646). - Added CI for MacOS with
IDYNTREE_USES_OCTAVEON
- 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
OSQPinterface viaosqp-eigenin the optimalcontrol library. - Fixed bugs in
MultipleShootingsolver in the optimalcontrol library. - Added few lines of documentation in the optimalcontrol library.
- Added interface for
ALGLIBandWORHPin 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
DiscreteExtendedKalmanFilterHelperbase class (#516). - Added
AttitudeMahonyFilterimplementation of an explicit formulation of passive complementary filter over quaternion groups (#516). - Added
AttitudeQuaternionEKFimplementation (#516). - Added
getWorldFrameTransformimplementation inSimpleLeggedOdometryclass - Added a new version of
changeFixedFrameinSimpleLeggedOdometryclass. This can be used to set a desired homogeneous transformation for the fixed frame - Added
bindingsforAttitudeMahonyFilter,AttitudeQuaternionEKF,DiscreteExtendedKalmanFilterHelper(#522) - Added basic tests for the Attitude Estimator classes (#522)
- Added
DiscreteKalmanFilterHelperclass for an implementation of a discrete, linear time-invariant Kalman Filter (#559) - Added dynamic reset functionality to
DiscreteExtendedKalmanFilterHelperclass (#553) - Added high-level Matlab/Octave wrappers of the iDyntree bindings (#530)
- Added bindings for the class
Spanwith the nameDynamicSpan(#522) - Implement
RPYRightTrivializedDerivativeRateOfChange()andRPYRightTrivializedDerivativeInverseRateOfChange()intoRotationclass - 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.hfile (#607) - Added
iDynTree::ModelExporterclass to exportiDynTree::Modelinstances to URDF files (#554). - Added support in the URDF parser to correctly parse the optional name parameter of visual and collision elements.
- Added
iDynTree::ModelCalibrationHelperto simplify loading a model from file, update its inertial parameters and exporting again to file (#576). - In
yarprobotstatepublisher, addtf-prefixandjointstates-topicoptions for the tf prefixes and ROS topic.
- In
yarprobotstatepublisher, addreduced-modeloptional 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::ModelLoaderclass to load by default models with normalized joint ordering (#491). - In
yarprobotstatepublisherthe 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-topicparameter. - In
yarprobotstatepublisher, joint size check between model joints and joints in ROS topic given throughjointstates-topicparameter 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, therobotoption is deprecated, and replaced byname-prefix.
- Fixed missing
DOF_ACCELLERATIONdata in dynamic variable cache ordering (#587) - Fixed compatibility of
Spanwith 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::ModelLoaderclass to load a Model with the specified joint serialization. - Added library
idyntree-modelio-xmlto parse generic XML files. Support for XSD validation (when parsing from file). This library requires Gnome libxml2. - Added
toEigenmethods forSpanand added typedef forEigenmaps of vectors. - Added some typedefs to
VectorDynsizeandVectorFixSizeclasses to enable the use ofmake_spanwith these objects. - Added copy operator in
VectorDynSizeandVectorFixSizeforSpan<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
libxml2instead of TinyXML.
- The
iDynTree/Sensors/SixAxisFTSensor.hheader has been deprecated in favor of theiDynTree/Sensors/SixAxisForceTorqueSensor.h. - Constraints Jacobian now exploit sparsity pattern
- Added the
iDynTree::Spanclass (#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 thatiDynTreeclasses are easy to use regardless of which vector type the downstream code is using, for example if it is one ofstd::vector<double>,Eigen::VectorXdoryarp::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
develbranch 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.hhave been modified to return aconstcopy of their content. While this is technically an API change, it was critical because most of the othertoEigenmethods return anEigen::Mapobject, and users expect to be able to useEigenmodifiers methods such astoEigen(...).setZero(). Enforcing a compilation error in this case will help to prevent subtle bugs. As this is aninlinefunction, this modification does not affectiDynTree'sABI( #378 ) . - The CMake configuration files of the release
0.8.0were 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,IMatrixandIRawMatrixinterfaces 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_TESTShas been added to make that no use of initialized memory occurs.