Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Simulation may crash while robot is moving

I'm trying to simulate a little robot (~20cm x 20 cm) at gazebo 7.16.1.

For the control part, I'm using ros control "diff_drive_controller/DiffDriveController", and also a toplevel pid controller using the control_toolbox package.

I faced several problems while I was modeling the robot (maybe because of it's dimensions and the low mass it was moving by itself even with controls turned off) and by the end I made a inertia matrix using values that would make the simulation more stable. Still working at this.

The problem is that sometimes, when the robot is turning around it may just crash the simulation. And when this happens it may or may not return me a gazebo error message:

Error [Param.cc:452] Unable to set value [inf -inf inf -0.005162 0.009889 -3.06997] for key[pose] Error [Param.cc:452] Unable to set value [inf -inf inf -3.00176 0.488212 -3.03515] for key[pose] Error [Param.cc:452] Unable to set value [inf inf -inf 0.300231 -0.005626 1.56804] for key[pose] Error [Param.cc:452] Unable to set value [inf inf -inf 0.219387 0.393053 1.39789] for key[pose] Error [Param.cc:452] Unable to set value [inf inf inf -1.83254 0.002762 -1.57711] for key[pose] Error [Param.cc:452] Unable to set value [inf inf inf -1.85188 0.001143 -1.58112] for key[pose] gzclient: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/include/OgreAxisAlignedBox.h:252: void Ogre::AxisAlignedBox::setExtents(const Ogre::Vector3&, const Ogre::Vector3&): Assertion `(min.x <= max.x && min.y <= max.y && min.z <= max.z) && "The minimum corner of the box must be less than or equal to maximum corner"' failed. Aborted (core dumped)

I even got a rviz error message once (and no gazebo error). I'm finding pretty difficult to understand what is going on.

I know it's relate to inercia values x pid parameters. Their configuration is making something to overflow. So I put some ft_sensor on my joints in an attempt to catch their values at the moment of the failure:

--- header: seq: 29 stamp: secs: 175 nsecs: 735000000 frame_id: "wheel/right" wrench: force: x: 0.341902387137 y: -0.357755844095 z: -1.91840636308 torque: x: 1.05324522559 y: -0.00343082718485 z: 0.00299589973586 >

--- header: seq: 30 stamp: secs: 176 nsecs: 735000000 frame_id: "wheel/right" wrench: force: x: nan y: nan z: nan torque: x: nan y: nan z: nan

wheel/left has the same behaviour.

In less than one second the forces and torque values go to nan, but seems to be note relate to the gazebo error for key[pose] as it is not -inf neither a pose information.

Also checked at my /odom topic, the last messages seems ok:

--- header: seq: 8949 stamp: secs: 179 nsecs: 438000000 frame_id: "odom" child_frame_id: "base_link" pose: pose: position: x: -0.0800839482035 y: 0.0124000009501 z: 0.0 orientation: x: 0.0 y: -0.0 z: -0.610951897261 w: -0.791667720216 covariance: [0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0] twist: twist: linear: x: -1.66533453694e-16 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: -1.42108547152e-14 covariance: [0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0]

--- header: seq: 8950 stamp: secs: 179 nsecs: 458000000 frame_id: "odom" child_frame_id: "base_link" pose: pose: position: x: -0.0800839482035 y: 0.0124000009501 z: 0.0 orientation: x: 0.0 y: -0.0 z: -0.610951897261 w: -0.791667720216 covariance: [0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0] twist: twist: linear: x: -1.66533453694e-16 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: -1.42108547152e-14 covariance: [0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0]


Are the forces at the joints that are overflowing or is something else? And why sometimes I got the robot to move without any crash?

This information would really help me to tune the matrix inertia and pid params (and maybe the mass value)