Dmitriy Ogureckiy
Dmitriy Ogureckiy

Reputation: 146

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)

Upvotes: 1

Views: 154

Answers (2)

zisangsang
zisangsang

Reputation: 81

It is said MultibodyPlant's discrete update solver failed to converge. To my understanding, the MultibodyPlant's discrete update solver is like a simulation engine, when it fails, the simulation doesn't go on.

The reason may be that the mbp_discrete_update_period is too big. On my computer, I set it to 5.0E-4 instead of 1.0E-3 and it works. If it is set to zero, then the system will switch to a continuous model, you can have a try.

DEFINE_double(
    mbp_discrete_update_period, 5.0E-4,
    "The fixed-time step period (in seconds) of discrete updates for the "
    "multibody plant modeled as a discrete system. Strictly positive. "
    "Set to zero for a continuous plant model.");

Here is the code. The above answer is professional but I think more suitable for people familiar with Drake.

Upvotes: 0

Sean Curtis
Sean Curtis

Reputation: 1873

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.

Upvotes: 1

Related Questions