robot terrain collisions

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

robot terrain collisions

Hemation
This post was updated on .
Hi guys,

I'm having problems with robot/terrain collisions in Gazebo. My Pioneer goes into the terrain where it should collide. What am I doing wrong?

This is my world:


  <verbosity>5</verbosity>

  <physics:ode>
    <stepTime>0.03</stepTime>
    <gravity>0 0 -9.8</gravity>
    <cfm>10e-5</cfm>
    <erp>0.3</erp>
    <updateRate>2</updateRate>
  </physics:ode>

  <rendering:gui>
    <type>fltk</type>
    <size>800 600</size>
    <updateRate>20</updateRate>
    <pos>0 0</pos>

    <frames>
      <row height="100%">
        <camera width="100%">
          <xyz>2.5 2.8 1.7</xyz>
          <rpy>0 35 -146</rpy>
        </camera>
      </row>
    </frames>
  </rendering:gui>

  <rendering:ogre>
    <ambient>0.5 0.5 0.5 1.0</ambient>
    <sky>
      <material>Gazebo/CloudySky</material>
    </sky>
  </rendering:ogre>

  <model:physical name="terrain">
    <body:heightmap name="terrain">
      <geom:heightmap name="terrain">
        <image>terrain.png</image>
        <worldTexture>terrain_texture.jpg</worldTexture>
        <size>2 2 0.5</size>
      </geom:heightmap>
    </body:heightmap>
  </model:physical>

  <model:physical name="plane1_model">
    <xyz>0 0 0</xyz>   
    <rpy>0 0 0</rpy>
    <static>true</static>

    <body:plane name="plane1_body">
      <geom:plane name="plane1_geom">
        <normal>0 0 1</normal>
        <size>50 50</size>
        <material>Gazebo/floor_texture</material>
      </geom:plane>
    </body:plane>
  </model:physical>

  <model:physical name="pioneer2dx_model1">
   
    <xyz>0.6 2 0.5</xyz>
    <rpy>0 0 -93</rpy>

    <controller:differential_position2d name="controller1">
      <leftJoint>left_wheel_hinge</leftJoint>
      <rightJoint>right_wheel_hinge</rightJoint>
      <wheelSeparation>0.34</wheelSeparation>
      <wheelDiameter>0.15</wheelDiameter>
      <torque>5</torque>
      <interface:position name="position_iface_0"/>
    </controller:differential_position2d>

    <model:physical name="sonyvid30_model">
      <xyz>0.15 0 0.09</xyz>

      <attach>
        <parentBody>chassis_body</parentBody>
        <myBody>sonyvid30_body</myBody>
      </attach>

      <include embedded="true">
        <xi:include href="models/sonyvid30.model" />
      </include>
    </model:physical>


   
    <include embedded="true">
      <xi:include href="models/pioneer2dx.model" />
    </include>

  </model:physical>

 
  <model:renderable name="directional_white">
    <xyz>2.0 0 2.0</xyz>
    <enableGravity>false</enableGravity>

    <light>
      <type>spot</type>
      <range>1000 1000 100</range>
      <direction>-0.1 0 -0.9</direction>
      <diffuseColor>0.8 0.8 0.8</diffuseColor>
      <specularColor>0.1 0.1 0.1</specularColor>
      <attenuation>10 1.0 0.0 0</attenuation>
    </light>
  </model:renderable>

</gazebo:world>


This is my sample program:

#include <libplayerc++/playerc++.h>
#include "args.h"
#include <iostream>

int main(int argc, char** argv)
{
  parse_args(argc, argv);

  try
  {
    PlayerCc::PlayerClient client(gHostname, gPort);
    PlayerCc::Position2dProxy pos(&client, gIndex);

    pos.SetMotorEnable(1);
    pos.SetSpeed(0.001, 0, 0);

    while (1);

  }
  catch (PlayerCc::PlayerError e)
  {
    std::cerr << e << std::endl;
    return -1;
  }
  return 1;
}

Thanks in advance!