[ros-users] Gazebo Vehicle Simulation

David Ferguson apockoffork at gmail.com
Tue May 4 16:26:09 UTC 2010


Thank you for the response John.

Your interface thing worked. There do seem to be other weird issues with the
force plugin. I'm not sure if its the intended behavior but the rate at
which force application messages are sent affects how the force is applied.
To get a constant force it seems as if a huge number of messages would need
to be sent. The torque issue is also little strange because in some
situations it will in fact apply the torque.

Once again thanks for the response,
David



On Mon, May 3, 2010 at 5:03 PM, John Hsu <johnhsu at willowgarage.com> wrote:

> David,
>
> Further investigation found one more bug with gazebo.  The torque values
> are continuously overwritten by zeros, ticketed here
> https://code.ros.org/trac/ros-pkg/ticket/4051
> The fix in boxturtle has been checked in as r29314, will make a bug patch
> release later.
>
> thanks,
> John
>
>
> On Mon, May 3, 2010 at 1:22 PM, John Hsu <johnhsu at willowgarage.com> wrote:
>
>> Hi David,
>> Thanks for the feedback, I see two (potential) issues here,
>>
>>    - gazebo requires an iface internally, which I ticketed here
>>    https://code.ros.org/trac/ros-pkg/ticket/4049.  For now, if you add an
>>    interface line to your controller, then things should work better
>>
>>        <gazebo>
>>            <controller:gazebo_ros_force name="box_force_controller" plugin="libgazebo_ros_force.so">
>>             <alwaysOn>true</alwaysOn>
>>
>>
>>             <updateRate>15.0</updateRate>
>>
>>             <topicName>box_force</topicName>
>>             <bodyName>object_link</bodyName>
>>    *         <interface:audio name="dummy_iface"/>*
>>
>>            </controller:gazebo_ros_force>
>>
>>
>>
>>
>>        </gazebo>
>>
>>    - another issue that might come up:  if the world update rate differs
>>    from the force plugin update rate, force application will be skipped in the
>>    intermediate time steps.  For example, if world is updating at 1kHz and your
>>    controller has an updateRate of 100Hz, the desired force on the body is
>>    applied only 1 out of 10 simulation updates, resulting in what looks like a
>>    1/10th smaller force than desired.  So I recommend changing updateRate to
>>    match (or be greater than) your world update rate for now.  (I also ticketed
>>    this here: https://code.ros.org/trac/ros-pkg/ticket/4050).
>>
>> Thanks,
>> John
>>
>> On Mon, May 3, 2010 at 12:53 PM, David Ferguson <dhf at andrew.cmu.edu>wrote:
>>
>>> Hi,
>>>
>>> I am trying to write create a gazebo simulation of a 4 wheeled vehicle
>>> (think golf cart). I am having an issue with trying to create forces in the
>>> simulation. I want to apply a torque the rear wheels (equivalent to pressing
>>> the gas pedal). I can't figure out however how to use the gazebo plugin
>>> which is supposed to apply the force. In the .h file for the plugin it says
>>> to use it as such:
>>>
>>>   This is a controller that collects data from a ROS topic and applies
>>> wrench to a body accordingly.
>>>
>>>   Example Usage:
>>>   \verbatim
>>>   <model:physical name="box_model">
>>>     <body:empty name="box_body">
>>>      ...
>>>     </body:empty>
>>>     <controller:gazebo_ros_force name="box_force_controller"
>>> plugin="libgazebo_ros_force.so">
>>>         <alwaysOn>true</alwaysOn>
>>>         <updateRate>15.0</updateRate>
>>>         <topicName>box_force</topicName>
>>>         <bodyName>box_body</bodyName>
>>>     </controller:gazebo_ros_force>
>>>   </model:phyiscal>
>>>   \endverbatim
>>>
>>> To test it I essentially copied the tutorial showing how to use the iface
>>> plugin (sets a models position). My urdf file is below:
>>>
>>> <robot name="object_model"
>>>        xmlns:controller="
>>> http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"
>>>        xmlns:interface="
>>> http://playerstage.sourceforge.net/gazebo/xmlschema/#interface" >
>>>   <!-- urdf requires at least one joint and one link, so here's the joint
>>> -->
>>>   <joint name="my_mug_joint" type="floating" >
>>>     <!-- axis is in the parent link frame coordintates -->
>>>     <axis xyz="0 0 0" />
>>>     <parent link="world" />
>>>     <child link="object_link" />
>>>     <!-- initial pose of my_mug joint/link in the parent frame
>>> coordiantes -->
>>>     <origin xyz="0 0 0" rpy="0 0 0" />
>>>   </joint>
>>>   <!-- one floating link -->
>>>   <link name="object_link">
>>>     <inertial>
>>>       <mass value="1"/>
>>>       <origin xyz="0 0 0.0"/>
>>>       <inertia ixx="0.05" ixy="0" ixz="0" iyy="0.05" iyz="0" izz="0.05"/>
>>>     </inertial>
>>>     <visual>
>>>       <origin rpy="0 0 0" xyz="0 0 0.0"/>
>>>       <geometry>
>>>         <box size="1.0 1.0 1.0"/>
>>>       </geometry>
>>>     </visual>
>>>     <collision>
>>>       <origin rpy="0 0 0" xyz="0 0 0.0"/>
>>>       <geometry>
>>>         <box size="1.0 1.0 1.0"/>
>>>       </geometry>
>>>     </collision>
>>>
>>>   </link>
>>>   <gazebo reference="object_link">
>>>     <material>Gazebo/Black</material>
>>>     <mu1>10.0</mu1>
>>>     <mu2>10.0</mu2>
>>>     <kp>10</kp>
>>>     <kd>1.0</kd>
>>>     <turnGravityOff>false</turnGravityOff>
>>>     <dampingFactor>0.01</dampingFactor>
>>>   </gazebo>
>>>     <gazebo>
>>>         <controller:gazebo_ros_force name="box_force_controller"
>>> plugin="libgazebo_ros_force.so">
>>>          <alwaysOn>true</alwaysOn>
>>>          <updateRate>15.0</updateRate>
>>>          <topicName>box_force</topicName>
>>>          <bodyName>object_link</bodyName>
>>>         </controller:gazebo_ros_force>
>>>     </gazebo>
>>> </robot>
>>>
>>> I then have a python script publishing a wrench message to the box_force
>>> topic however no matter what settings I use it never seems to actually
>>> affect the box in the simulation. Am I going about this completely wrong? Is
>>> there a flag I'm not setting?
>>>
>>> Thanks in advance for any help,
>>>
>>> David Ferguson
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100504/daaae727/attachment-0003.html>


More information about the ros-users mailing list