Gazebo | Ignition | Community
Ask Your Question
0

preventing bouncing of object?

asked 2016-06-02 08:17:50 -0500

Rajnunes gravatar image

updated 2016-06-02 11:57:50 -0500

chapulina gravatar image

I have created an movable 3 wheel object ... but the problem is when i increase its velocity suddenly it begins to bounce .How exactly do i stop this from happening

<?xml version="1.0"?>
<robot xmlns:gazebo="http://playerstage.sourceforge.net/gazebo/xmlschema/#gz"
    xmlns:model="http://playerstage.sourceforge.net/gazebo/xmlschema/#model"
    xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"
    xmlns:body="http://playerstage.sourceforge.net/gazebo/xmlschema/#body"
    xmlns:geom="http://playerstage.sourceforge.net/gazebo/xmlschema/#geom"
    xmlns:joint="http://playerstage.sourceforge.net/gazebo/xmlschema/#joint"
    xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"
    xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"
    xmlns:rendering="http://playerstage.sourceforge.net/gazebo/xmlschema/#rendering"
    xmlns:physics="http://playerstage.sourceforge.net/gazebo/xmlschema/#physics"
    name="test">
    <link name="base_footprint"/>

<!--BASE Link-->
<link name="base_link">
    <inertial> 
            <mass value="100"/> 
            <inertia ixx="1000"  ixy="0"  ixz="0" iyy="800" iyz="0" izz="600" /> 
    </inertial>

    <visual>
        <geometry>
            <box size="0.3 0.4 0.1"/>
        </geometry>
    </visual>
    <collision>
        <geometry>
            <box size="0.3 0.4 0.1"/>
        </geometry>
    </collision>
</link>

<!--Left Wheel-->
<link name="left_wheel">
    <inertial> 
                <mass value="1"/> 
                <inertia ixx="10"  ixy="0"  ixz="0" iyy="80" iyz="0" izz="60" /> 
    </inertial>

    <visual>
        <origin xyz="0 0 0" rpy="0 1.57 0" />

        <geometry>
            <cylinder length="0.02" radius="0.1"/>
        </geometry>
    </visual>
    <collision>
        <origin xyz="0 0 0" rpy="0 1.57 0" />

        <geometry>
            <cylinder length="0.02" radius="0.1"/>
        </geometry>
        <surface>
            <friction>
                <torsional>
                    <coefficient>10000.0</coefficient>
                    <surface_radius>0.5</surface_radius>
                    <use_patch_radius>false</use_patch_radius>
                </torsional>
            </friction>
        </surface>
    </collision>
</link>

<!--Right wheel-->
<link name="right_wheel">
    <inertial> 
                <mass value="1"/> 
                <inertia ixx="10"  ixy="0"  ixz="0" iyy="80" iyz="0" izz="60" /> 
    </inertial>

    <visual>
        <origin xyz="0 0 0" rpy="0 1.57 0" />

        <geometry>
            <cylinder length="0.02" radius="0.1"/>
        </geometry>
    </visual>
    <collision>
        <origin xyz="0 0 0" rpy="0 1.57 0" />

        <geometry>
            <cylinder length="0.02" radius="0.1"/>
        </geometry>


        <surface>
                <friction>
                  <torsional>
                    <coefficient>10000.0</coefficient>
                    <surface_radius>0.5</surface_radius>
                    <use_patch_radius>false</use_patch_radius>
                  </torsional>
                </friction>
        </surface>
    </collision>
</link>
<!--front wheel-->
<link name="front_wheel">
        <inertial> 
                <mass value="1"/> 
                <inertia ixx="10"  ixy="0"  ixz="0" iyy="80" iyz="0" izz="60" /> 
        </inertial>

        <visual>
            <origin xyz="0 0 0" rpy="0 1.57 0" />

            <geometry>
                <cylinder length="0.02" radius="0.1"/>
            </geometry>
        </visual>
        <collision>
            <origin xyz="0 0 0" rpy="0 1.57 0" />

            <geometry>
                <cylinder length="0.02" radius="0.1"/>
            </geometry>

            <surface>
                <friction>
                  <torsional>
                    <coefficient>10000.0</coefficient>
                    <surface_radius>0.5</surface_radius>
                    <use_patch_radius>false</use_patch_radius>
                  </torsional>
                </friction>
            </surface>
        </collision>
</link>


<!--CONNECTORS WHEEL TO BODY-->

<!--link name="left_connector">

    <inertial> 
            <mass value="1"/> 
            <inertia ixx="10"  ixy="0"  ixz="0" iyy="8" iyz="0" izz="6" /> 
    </inertial>
    <visual>
        <origin xyz="0 0 0" rpy="0 1.57 0" />

        <geometry>
            <cylinder length="0.02" radius="0.05"/>
        </geometry>
    </visual>

    <collision>
        <origin xyz="0 0 0" rpy="0 1.57 0" />
        <geometry>
            <cylinder length="0.02" radius="0.05"/>
        </geometry>
    </collision>
</link-->

<!--link name="right_connector">

    <inertial> 
            <mass ...
(more)
edit retag flag offensive close merge delete

Comments

Could you share the vehicle's SDF? Maybe share a video of what you're observing? How are you controlling its velocity?

chapulina gravatar imagechapulina ( 2016-06-02 10:50:49 -0500 )edit

i control it through ros rqt. is there anyway that i can reduce the bouncing and skidding of the bot.. im using gazebo 2.2 as the latest models are not that compatable with ros ..this is in urdf format @chapulina

Rajnunes gravatar imageRajnunes ( 2016-06-02 11:49:47 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
3

answered 2016-06-02 14:19:26 -0500

hsu gravatar image

updated 2016-06-02 15:24:57 -0500

here are a couple of sources of undesired "bouncing behavior" that I've commonly seen with vehicles:

  • cause: interpenetration correction applies an impulse that pushes the object away from interpenetrating collision, but if the impulse is too large it causes the object to "bounce/fly away". fix: set maximum velocity impulse (max_vel) to 0 will enforce pure position correction with no added momentum from interpenetration correction. It is recommended to set a finite minimum allowable interpenetration depth (min_depth) of 1mm or something small in comparison to the colliding objects.
  • cause: controller exerts unrealistically large efforts on joints or links. fix: double check the forces/torques commanded by your controller and make sure they are physically realistic if you are looking for physically realistic responses.
  • cause: unrealistically high velocity / momentum buildup. fix: add dissipation by adding joint damping and set implicit_spring_damper flag to true to avoid numerical instability. Joint damping value is in the units of (effort / velocity). One extremely simplistic way to try and come up with viscous damping estimates is this: at what joint velocity do you want significant effort opposing your actuation forces? Assuming for example, we are controlling a hinged joint, and the actuator is capable of putting out 1 Nm of torque. A damping coefficient of 2 means the damping force opposing your actuator will neutralize actuation torque of 1 Nm when the joint is rotating at 0.5 rad/s.
  • cause: friction coefficients are too large, combined with failure of dynamics solver to resolve all constraints sufficiently in allotted time. This is especially true of you have opposing frictional forces at work such as in the cases of skid-steer or non-ackerman steering. fix: use friction coefficient of 1 or lower, and potentially increase number of inner iterations.

Here's an example for specifying contact parameters discussed above in URDF as Gazebo extensions, this example applies the parameters to all collision shapes specified under a link named my_link:

<gazebo reference="my_link">
  <kp>1000000.0</kp>
  <kd>1.0</kd>
  <mu1>0.8</mu1>
  <mu2>0.8</mu2>
  <maxVel>0.0</maxVel>
  <minDepth>0.001</minDepth>
</gazebo>
edit flag offensive delete link more

Comments

@hsu how exactly do i set the friction coefficient to one through urdf?and prevent skidding of the bot.? Also is there anyway to add gazebo tags in the urdf to add friction to the bot thanks :)

Rajnunes gravatar imageRajnunes ( 2016-06-02 14:35:41 -0500 )edit

@Rajnunes example: <gazebo reference="link_name"> <selfcollide>self_collide</selfcollide> <collision> <surface> <friction> <ode> <mu>mu1</mu> <mu2>m2</mu2> </ode> </friction> <contact> <ode> <kp>kp</kp> <kd>kd</kd> ..

JeremySMorgan gravatar imageJeremySMorgan ( 2018-11-29 00:10:20 -0500 )edit
0

answered 2016-06-03 01:58:35 -0500

Rajnunes gravatar image

@chapulin you were right centre of mass problem thanks

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2016-06-02 08:17:50 -0500

Seen: 11,854 times

Last updated: Jun 03 '16