Robotics StackExchange | Archived questions

Model "disables" after ODE message (LCP internal error s<=0)

Hi, I'm having a very odd problem with my model in gazebo. I have a URDF file which is spawned into gazebo with spawn_urdf node. It has a planar move plugin with which I drive my robot. (the robot is not realistic because I just want to learn how to work with gmapping and slam). My robot description is basically a cylinder with a box on it, floating 1m above ground, with Hakuyo and IMU sensor (which don't affect behavior) and a planar move plugin:

<gazebo>
    <plugin name="object_controller" filename="libgazebo_ros_planar_move.so">
      <commandTopic>cmd_vel</commandTopic>
      <odometryTopic>odom_planar</odometryTopic>
      <odometryFrame>odom</odometryFrame>
      <odometryRate>50.0</odometryRate>
      <robotBaseFrame>base_link</robotBaseFrame>
      <cmdTimeout>-1</cmdTimeout>
    </plugin>
  </gazebo>

I used a teleop node to command velocity to plugin, and when I realized there is a problem, tried to command velocity manually with rostopic pub insted:

rostopic pub /round_object/cmd_vel geometry_msgs/Twist "linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.1"

that resulted same, which is the following error:

ODE Message 3: LCP internal error, s <= 0 (s=-0.0000e+00)

And after some time the model will be re-spawned in the origin of world, not responding to any command, and all joints are disappeared.

I'd appreciate your thoughts on this, and how to solve it.

thanks.

EDIT (11/15/2021): I solved the problem temporarily by making my model "kinematic". yet the question is still unanswered that what causes this problem and what is the correct method to solve it.

Asked by SIA on 2021-11-13 04:36:12 UTC

Comments

Answers

Check your inertias. Since you have primitive geometries, it's easy to calculate some valid values. Wikipedia can give you the equations for each geometry.

Asked by nlamprian on 2021-11-22 12:19:56 UTC

Comments