Releases: gbionics/idyntree
v14.2.0
What's Changed
- Refactoring of feature to set frame as FloatingBase by @LoreMoretti in #1282
- Fix
FreeFloatingVeldocstrings to refer to velocities instead of accelerations by @flferretti in #1284 - Add algorithm to compute Coriolis matrix such that dotM = C + C^T by @LoreMoretti in #1283
Full Changelog: v14.1.0...v14.2.0
v14.1.0
What's Changed
- Add SDFormat model loading support by @flferretti in #1269
- Add Clang formatting by @flferretti in #1270
- Add GNUInstallDirs for standalone bindings build by @traversaro in #1272
- Add Python Bindings for
SphericalJointsby @mstoelzle in #1273 - Fix bias acceleration for spherical joints (#1279) by @mstoelzle in #1280
- Add support for loading SphericalJoints from non-standard ball and spherical joints in URDF by @mstoelzle in #1278
- Fix Wrong Inertia Matrix For Spherical Joints (#1276) by @mstoelzle in #1277
- Cleanup logic to set PYTHONPATH for Python tests by @traversaro in #1281
- Add feature to set frame as FloatingBase by @LoreMoretti in #1275
New Contributors
- @mstoelzle made their first contribution in #1273
Full Changelog: v14.0.2...v14.1.0
v14.0.2
What's Changed
- Replaced deprecated macos-13 GitHub Actions machines to macos-15-intel by @traversaro in #1268
- Set ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint default value to false and bump version to 14.0.2 by @traversaro in #1271
Full Changelog: v14.0.1...v14.0.2
v14.0.1
What's Changed
- Add back addRandomLinkToModel overload that takes bool onlyRevoluteJoints as fourth parameter by @traversaro in #1266
Full Changelog: v14.0.0...v14.0.1
v14.0.0
Release Highlights
Spherical joints support
This is the first release of iDynTree with support of spherical joints, see #1249 and #1258, that is modeled by the Model::SphericalJoint class.
The Model::SphericalJoint models the spherical joints using a 4D quaternion for the position coordinates of the joint, while the velocity is represented as a 3D angular velocity.
Important
Using iDynTree::Model that contains one or more Model::SphericalJoint may violate assumptions that are present in downstream code, as it is a joint with a number of DOF different from 0 or 1, so its use may expose bugs in user code.
For example, classical assumptions that could lead to bugs if not enforced in user code are:
- confusions between
Model::getJointIndex,IJoint::getPosCoordsOffsetandIJoint:: getDOFsOffset, as these methods all return the same values for model with just 1-dof and 0-dof joints, but will return different values for models with spherical joints. - assumption of 0 being a valid configuration for the position coordinates, while the
IJoint::setJointPosCoordsToRestmethod should be used to se the position coordinates to a "rest" position (i.e. 0 for simple joints) - assumption of any random position coordinate being a valid position coordinate, while you should use
IJoint::normalizeJointPosCoordsto normalize a position coordinate to be a valid one, for example for spherical joints ensure that the 4D quaternion is unit
If your code make this assumptions, make sure that you do not use them with Model that contains spherical joints or other non-simple joints. For example, you can ensure that you do not load any spherical joints from URDF by setting the URDF import setting ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint to false, or if you have another iDynTree::Model that somehow contains a iDynTree::SphericalJoint, you can convert it to an equivalent model with the spherical joint replaced with an equivalent series of 3 revolute joints using the iDynTree::convertSphericalJointsToThreeRevoluteJoints function.
URDF support for Spherical joints
The URDF specification do not support Spherical Joints, that instead iDynTree support. To allow to easily load and export URDF models that contain spherical joints, by default iDynTree URDF parser detect if the model contains three consecutive revolute or continuous joints with this conditions:
- The three joint axis intersect at a single point
- The three joint axis are each one orthogonal to each other
- The two internal links have zero mass
If all these conditions are respected and ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint is set to true, the three revolute joints in the URDF model are substituted with a single iDynTree's SphericalJoint. Similarly, when a iDynTree::Model is exported, any iDynTree::SphericalJoint contained in it is exported as a three revolute joints that respect the aforementioned conditions.
For backward compatibility, by default the value of ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint is false, while as it is not impact backward compatibility the default value of ModelExporterOptions::exportSphericalJointsAsThreeRevoluteJoints is true.
Important
The default value of ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint used to be true in iDynTree 14.0.0 and 14.0.1, but it was reverted to false in iDynTree >= 14.0.2 as the downstream impact was too problematic, see #1267 . If you want to import URDF files with iDynTree::SphericalJoints, please set ModelParserOptions::convertThreeRevoluteJointsToSphericalJoint to true explicitly.
Eigen 5.0.0 support
This release is the first one with support for Eigen 5.0.0 (see #1262).
Detailed Changelog
- Add LLM-friendly theory.md and add tests for Motion Subspace matrix methods by @traversaro in #1250
- Temporary disable MATLAB Windows tests by @traversaro in #1253
- Add RevoluteSO2Joint joint and extent IJoint interface to support non-standard joints by @traversaro in #1254
- Fix UnitTestModelExporter by @Nicogene in #1256
- Add option for generating random models with RevoluteSO2 and fix code and tests that assumed 0-dof or 1-dof joints by @Nicogene in #1255
- ModelLoader: fix regression in loadReducedModelFromFile by @Nicogene in #1257
- Add SphericalJoint and generalize CRBA to handle multiple-DOF joints by @traversaro in #1249
- Fix loading of reduced model in meshcat visualizer by @LoreMoretti in #1261
- Remove version constraint for Eigen3 package for Eigen3 5.0.0 compat by @traversaro in #1262
- Start depending on libxml2-devel instead of libxml2 by @traversaro in #1264
- Add SphericalJoints in the export/load to/from the URDF by @Nicogene in #1258
- Bump version to 14.0.0 by @traversaro in #1265
Full Changelog: v13.4.2...v14.0.0
v13.4.2
What's Changed
- Fix rotation of contact wrench in AddNewContactInFrame by @LoreMoretti in #1248
Full Changelog: v13.4.1...v13.4.2
v13.4.1
What's Changed
- Add typemaps for ContactWrench attributes in Python bindings by @GiulioRomualdi in #1247
Full Changelog: v13.4.0...v13.4.1
v13.4.0
What's Changed
- Always export prismatic limits to URDF even if they are not enabled in iDynTree::Model by @traversaro in #1232
- Implement the possibility to use FromPython to generate JointPosDoubleArray and JointDOFsDoubleArray in the python bindings by @isorrentino in #1234
- Require glfw to be at least 3.4 in conda and pixi environments by @traversaro in #1238
- Cleanup pixi.toml by @traversaro in #1239
- Drop ubuntu-20.04 GitHub Action image by @traversaro in #1241
- Add iDynTree.Span based overload for InverseKinematics::setJointLimits and add support in Python bindings to pass np.array to methods that take iDynTree::Span by @traversaro in #1233
- Fix missing update in parent_junction_index in SixAxisForceTorqueSensor::updateIndices by @isorrentino in #1242
- Fix missing xorg-libxrandr linux dependency in ci.yml by @traversaro in #1243
- Migrate windows-2019 GitHub Actions jobs to windows-latest by @traversaro in #1244
- Implement methods to add a new contact wrench to a LinkContactWrenches object and bump version to 13.4.0 by @LoreMoretti in #1245
Full Changelog: v13.3.0...v13.4.0
v13.3.0
What's Changed
- Enhance MeshcatVisualizer to support base frame in load_model method by @GiulioRomualdi in #1229
Full Changelog: v13.2.2...v13.3.0
v13.2.2
What's Changed
- Bump version to 13.2.2 and fix wrong version metadata in 13.2.1 release by @traversaro in #1228
Full Changelog: v13.2.1...v13.2.2