Hello List,
UPDATED YET AGAIN: See 3rd update below!
I am having difficulties in getting stable behaviour with my simulated rowing boat.
The model can be found on my github page in the boot3_description/urdf
directory.
A simplified version can be found in the testing directory
Please see crash.mp4
for how the simulation (and simulator) blows up.
Sometimes there is an error message like:
gzclient: /build/ogre-1.9-B6QkmW/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.
The model is crash_boot.xacro
and for testing I use the (normally) generated crash_boot.sdf
.
The model now contains only 3 revolute joints. Playing around with friction and damping does not help.
What does help is reducing the max step size
by a factor of 10. But it then becomes impractically slow, especially when using the full blown model with almost 40 joints.
Hopefully someone can help, as I am really stuck here.
UPDATE: Enforcing more limits as in
<limit>
<lower>-1.5</lower>
<upper>0.5</upper>
<effort>1</effort>
<velocity>0.01</velocity>
</limit>
seems to be completely ignored the model and gazebo crashes just the same!
2nd UPDATE: Getting a bit despondent here.
I can get it a bit better by increasing iterations
in the solver, e.g. to 200 or 500.
The testing model now works fine, but the complete (boot3) model now most of the time will be stable for some time (sometimes several minutes).
But adding a few controllers to the joints makes it unstable again. But not by the controller itself, I am using very low values for pid.
The instability maybe comes from two or more joints connected directly together as in an elbow or shoulder using e.g.
<link name="left_shoulder_psi_link">
<inertial>
<mass value="0.01"/>
<origin rpy="0 0 0" xyz="0 0.0 0.0"/>
<inertia ixx="0.000000167" ixy="0" ixz="0" iyy="0.000000167" iyz="0" izz="0.000000167"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<geometry>
<box size="0.01 0.01 0.01"/>
</geometry>
</visual>
</link>
So with no change in the origin.
If you pull the Rowing repository and then do
roslaunch boot3_gazebo control_boot_world.launch
you will see the simulated rower in gazebo. Starting the simulation (and the control via ros_control) will show the crashing fairly quickly.
The following shows that a simplified model does work ok.
roslaunch testboot_gazebo control_boot_world.launch
3rd UPDATE
After some help from gazebo/issues I now have a better simple example that still crashes! Please see this folder on my github page.
The video shows the usual form of crashing. Sometimes gazebo crashes entirely with the error mentioned above.
Simplifying it further makes is stable most of the time. For example removing the fixed_joint/link between world and the first revolute joint makes it stable.
It is a simple model with 3 joints and a few links with a mass of 1kg. I currently use gazebo 9.6.0. The sdf file is generated from the urdf in the usual way.
Please help, I really don't know what to do anymore, Sietse
Originally posted by Sietse on Gazebo Answers with karma: 25 on 2018-11-13
Post score: 0