drakeatlas

Atlas example warning in Drake toolkit


I have ubuntu 20.04. I build atlas example in drake toolkit. When I run this file I got this warning. How can I solved it ?

[2021-09-15 23:59:06.432] [console] [warning] Ignoring collision group heel on link l_foot
[2021-09-15 23:59:06.433] [console] [warning] Ignoring collision group heel on link l_foot
[2021-09-15 23:59:06.433] [console] [warning] Ignoring collision group heel on link l_foot
[2021-09-15 23:59:06.433] [console] [warning] Ignoring collision group toe on link l_foot
[2021-09-15 23:59:06.434] [console] [warning] Ignoring collision group toe on link l_foot
[2021-09-15 23:59:06.434] [console] [warning] Ignoring collision group midfoot on link l_foot
[2021-09-15 23:59:06.434] [console] [warning] Ignoring collision group midfoot on link l_foot
[2021-09-15 23:59:06.450] [console] [warning] Ignoring collision group heel on link r_foot
[2021-09-15 23:59:06.450] [console] [warning] Ignoring collision group heel on link r_foot
[2021-09-15 23:59:06.450] [console] [warning] Ignoring collision group heel on link r_foot
[2021-09-15 23:59:06.451] [console] [warning] Ignoring collision group toe on link r_foot
[2021-09-15 23:59:06.451] [console] [warning] Ignoring collision group toe on link r_foot
[2021-09-15 23:59:06.451] [console] [warning] Ignoring collision group midfoot on link r_foot
[2021-09-15 23:59:06.452] [console] [warning] Ignoring collision group midfoot on link r_foot
[2021-09-15 23:59:06.466] [console] [warning] Ignoring collision group left_hand_robotiq on link left_palm
[2021-09-15 23:59:06.467] [console] [warning] Ignoring collision group right_hand_robotiq on link right_palm
[2021-09-15 23:59:06.468] [console] [warning] WARNING: Skipping transmission since it's attached to a fixed joint "hokuyo_joint".
[2021-09-15 23:59:06.469] [console] [warning] MultibodyPlant has at least one body 'atlas/l_foot' with multiple contact geometries. Contacts with this body may be unclear in the visualizer if contact is made with multiple geometries simultaneously. To clarify the visualization, pass in a geometry naming functor to the constructor. See the documentation for ContactResultsToLcmSystem for details.
terminate called after throwing an instance of 'std::runtime_error'
  what():  MultibodyPlant's discrete update solver failed to converge at simulation time =   0.498 with discrete update period =   0.001. This usually means that the plant's discrete update period is too large to resolve the system's dynamics for the given simulation conditions. This is often the case during abrupt collisions or during complex and fast changing contact configurations. Another common cause is the use of high gains in the simulation of closed loop systems. These might cause numerical instabilities given our discrete solver uses an explicit treatment of actuation inputs. Possible solutions include:
  1. reduce the discrete update period set at construction,
  2. decrease the high gains in your controller whenever possible,
  3. switch to a continuous model (discrete update period is zero),      though this might affect the simulation run time.
Aborted (core dumped)

Solution

  • You've got two warnings (one with multiple instances) and one error.

    1. "Ignoring collision group X on link Y"
      • In an URDF you can specify the "group" attribute in the <link> <collision> tag. Drake doesn't make use of this attribute and is letting you know it's not being used.
    2. "MultibodyPlant has at least one body with multiple contact geometries."
      • This is a warning that should no longer be given in master. It had to do with a visualization thing that was a transitory thing.
    3. Discrete solver failed to converge.
      • The simulation failed because the contact solver failed. The instructions given as part of the error message pretty much outline what you can/should do. Do you have a specific question about options 1, 2, or 3?
      • Option 1 involves the constructor to MultibodyPlant. You are currently passing it a non-zero value. Pass it a smaller non-zero value.
      • Option 2 involves your controller. I don't know what controller you have, but tweaking its gains will be up to you.
      • Option 3, likewise, involves the constructor to MultibodyPlant, instead of a non-zero value, pass zero.