Skip to content

robot_utils and buildModelReduced #134

@olivier-stasse

Description

@olivier-stasse

Symptoms:

The robot is pushing on its feet in torque control mode.

>>> robot.dynamic.com.value
(-0.001983704997041107, 7.19678203908911e-05, 0.8926753451423107)
>>> robot.cdc_estimator.c.value
()
>>> robot.cdc_estimator.c.recompute(0)
>>> robot.cdc_estimator.c.value
(0.003948910372791941, 0.00036058788430673737, 0.8746905831496146)

It looks like there is a model discrepancy.

Analysis of the problem:

Due to the fact that robot_utils is providing only the urdf file name and not the string of the model, this has lead to a model discrepancy. For the same reason sot-talos has been modified to use the rosparam urdf_description and build a reduced model:
https://github.com/stack-of-tasks/sot-talos/blob/64bec0f0b9f570da8a421bfd2439189e2cbfb80a/src/dynamic_graph/sot/talos/talos.py#L66
called in the pyrene prolog here:
https://github.com/stack-of-tasks/sot-talos/blob/64bec0f0b9f570da8a421bfd2439189e2cbfb80a/src/dynamic_graph/sot/pyrene/prologue.py#L31

This good policy is unfortunately overwrite by the param_server initialization specifying a talos_reduced.urdf file located in the package talos_data.
This initialization is done in package sot-talos-balance here:
stack-of-tasks/sot-talos/blob/master/src/dynamic_graph/sot/talos/talos.py#L66
and in package talos-torque-control here:
https://github.com/stack-of-tasks/talos-torque-control/blob/c6e59b30fde626a8304faea980348ff41e852005/python/dynamic_graph/sot/torque_control/talos/control_manager_conf.py#L14

Reading the robot_description ros parameter is not equivalent to read talos_reduced.urdf from the talos_data package. Not reading the robot constructor model has led us to many problems.

The control structure should have only one reference.
This result in a slightly different model creating a difference of 2cm in the CoM height.

Proposed solution:

Instead of passing a string with the location of the URDF model, we should provide the model string.
This would also make possible to modify the model on-line. We should also have a timestamp and the number of changes in robot_utils.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions