Skip to content

iDynTree 1.1.0 (2020-06-08)

Compare
Choose a tag to compare
@traversaro traversaro released this 08 Jun 14:36
· 803 commits to master since this release
ba43b00

iDynTree 1.1.0 Release Notes

Release Highlights

This new release introduce two new features:

New MATLAB based visualizer

A new MATLAB iDynTree visualizer (#682, #668) has been added to the iDynTree's high-level-wrappers.
image17

A tutorial on how to use this new MATLAB visualizer is available in the https://github.com/robotology/idyntree/tree/v1.1.0/bindings/matlab/%2BiDynTreeWrappers#matlab-native-visualization .

Thanks a lot to Francisco Andrade (@fjandrad) that implemented this feature in #668 and #682 .

iDynTree's InverseKinematics MATLAB and Python bindings

The iDynTree's InverseKinematics class has been added to the iDynTree's bindings, so it is now usable from MATLAB and Python bindings. See the following snippet to have an idea on how to use iDynTree.InverseKinematics in MATLAB:

ik = iDynTree.InverseKinematics();
ik.setModel(robotModel);

% Set IK tolerances
ik.setCostTolerance(0.001);
% ik.setCostTolerance(1.0);
ik.setConstraintsTolerance(0.00001);
% Set targets as cost in the cost function
ik.setDefaultTargetResolutionMode(iDynTree.InverseKinematicsTreatTargetAsConstraintFull);
% Use roll pitch yaw parametrization for the rotational part of the IK
ik.setRotationParametrization(iDynTree.InverseKinematicsRotationParametrizationRollPitchYaw);
ik.setVerbosity(3);
ik.setDefaultTargetResolutionMode(iDynTree.InverseKinematicsTreatTargetAsConstraintNone);

% Add position target 
ik.addPositionTarget(frameIdx, G_targetPos);

% --------- Add starting point
% As the IK optimization problem is a non-linear iterative optimization, the
% optimization requires a starting point (to be assumed). Be aware
% that this choice can influence the actual convergence of the algorithm
jointsInitPosInRadians = iDynTree.VectorDynSize();
jointsInitPosInRadians.zero();
ik.setFullJointsInitialCondition(G_T_base, jointsInitPosInRadians);

% --------- Solve the IK
if ~ik.solve()
    fprintf('\n Fail to solve IK!\n')
end
G_H_base_optimized          = iDynTree.Transform();
jointPos_optimizedInRadians = iDynTree.VectorDynSize();
ik.getFullJointsSolution(G_H_base_optimized, jointPos_optimizedInRadians);

Thanks a lot to Lorenzo Rapetti (@lrapetto) that implemented this feature in #633 .

Acknowledgements

Thanks to the contributors (either as code authors, code reviewers or by contributing documentation) of this version of iDynTree:

Detailed ChangeLog

Added

  • Added a new function to iDynTreeWrappers for the function getWorldTransformsAsHomogeneous.
  • Added functions for having a MATLAB iDynTree Visualizer in iDynTreeWrappers. Some time optimization has been performed (#659).
  • Added bindings for getWorldTransformsAsHomogeneous function.
  • Added function getWorldTransformsAsHomogeneous that gives a vector of Matrix4x4 based on a vector of strings containing the frame transforms.
  • Added bindings for handling linkSolidShapes properly (#656).
  • Added bindings for InverseKinematics (#633).
  • Implement cbegin() / cend() and begin() / end() methods for VectorDynSize and VectorFixSize (#646).
  • Added CI for MacOS with IDYNTREE_USES_OCTAVE ON