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.