Drop dependency on IDYNTREE_USES_KDL and iDyn
traversaro opened this issue · 2 comments
The dh
pipeline is used for generating URDF files for iCub v1, and is still going to be used for the foreseeable future. For this reason, we should eventually get rid of the technical debt related to it (dependency on IDYNTREE_USES_KDL, iDyn, and the in general it is a terrible piece of infrastructure, that I mostly wrote during my Master's Thesis).
Furthermore, if the robotology-superbuild
starts to be used on all robots, there is the possibility for the future of finally switching to use iDynTree for all robots (also outside IIT) and finally deprecated iDyn . In that case, we should be ready to drop support for iDyn even for generating models.
To do so, we need to:
Copy the parameters contained in iDyn in a separate iDynTree-based class that generates iDynTree::Model objects
The iCub v1/v2 dynamic model information is spread across several files and parts of the code:
- root_link <--> legs transforms : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDynBody.cpp#L2352
- Torso <--> arm transforms : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDynBody.cpp#L2280
- Legs v1 : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDyn.cpp#L2288
- Legs v2.5 : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDyn.cpp#L2462
- Torso : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDyn.cpp#L2193
- Arm v1 : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDyn.cpp#L2086
- Link <---> FT sensor transform and inertia of the piece of the link between the joint and the FT sensor : https://github.com/robotology/icub-main/blob/v1.10.0/src/libraries/iDyn/src/iDynInv.cpp#L2295
Furthermore, there are some parameters that were added as part of the generation project, in the
toKDL
function.
We should copy this parameters (perhaps just dumping them from the KDL::CoDyCo::UndirectedTree
instance that they generated, to avoid getting crazy for extracting manually all this parameters from all this different places) in a class that generates iDynTree::Model
objects from this parameters and from the headV2
, legsV2
options of the wholebodyinterface
. This little "library" of hardcoded parameters should go here in the icub-model-generator
repository, but given that I suspect it will be useful to generate this models on the fly in the new wholebodydynamics
for backward compatibility, probably it will make sense to put it in iDynTree .
Port the iDynTree::Model ---> URDF model exporter to iDynTree classes, away from the KDL & urdfdom dependency
In the end with @Nicogene we opted for a simpler solution: we will generate all the possible URDF models that the current DH-based generator is able to generate, and for the future we will simply copy the one corresponding to the variant requested. The generation part is done in #169 and in particular with commit a363f94 .
The model generated by #169 are available in robotology/icub-models@9fd2eeb . For reference, I also added it as a .zip file:
icub-models-last-call-for-dh-generator.zip.