Hi Nicolas,

I don't think gazebo can read pgm files.  Try opening your map file in gimp, save it as a grayscale .png file.  Place the file in a package that exports its prefix to gazebo_media_path (for example take a look at manifest.xml for gazebo_worlds), under a subdirectory [package_name]/Media/materials/texture/walls.png.

Then try your spawn again.  Note that if the map is complicated, it might take gazebo's recursive rectangle wall builder more than 30 sec. to construct the model.

John



2010/11/9 Nicolás Alvarez Picco <nicolasapicco@hotmail.com>
Hi Everybody!!!

I have made a map with gmapping, it is a file 'map.pgm'. Now I want to spawn its walls, for that I am using this launch file:

<launch>

  <arg name="scenario"/>
  <arg name="no_window"/>
  <!-- start gazebo with an empty plane -->
  <param name="/use_sim_time" value="true" />

  <!-- if no window is set then start with -r (no window displayed) -->
  <node name="gazebo" pkg="gazebo" type="gazebo" args="-r $(find han_Scene)/worlds/empty.world" respawn="false" output="screen" if="$(arg no_window)"/>
 
  <!-- Otherwise start normally -->
  <node name="gazebo" pkg="gazebo" type="gazebo" args="$(find han_Scene)/worlds/empty.world" respawn="false" output="screen" unless="$(arg no_window)"/>
 
  <!-- walls-->
  <param name="walls" textfile="$(find han_Scene)/scenarios/$(arg scenario)/walls.model" />

  <node name="xml2factor_walls" pkg="gazebo" type="spawn_model" args="-gazebo -param walls -model walls" respawn="false" output="screen" />

  <!-- <node name="xml2factor_walls" pkg="gazebo" type="spawn_model" args="-gazebo -param walls -x -16 -y -16 -model walls" respawn="false" output="screen" /> -->

</launch>

Where the file walls.model is

<?xml version="1.0" ?>
<model:physical name="walls_model"
  xmlns:model="http://playerstage.sourceforge.net/gazebo/xmlschema/#model"
  xmlns:body="http://playerstage.sourceforge.net/gazebo/xmlschema/#body"
  xmlns:geom="http://playerstage.sourceforge.net/gazebo/xmlschema/#geom" >

  <static>true</static>
  <body:map name="walls_body">
    <xyz>-8 -8 0 </xyz>
    <geom:map name="walls_geom">
      <image>map.pgm</image> <!-- for now this is in the gazebo model dir, change later-->
      <height>2</height>
      <threshold>200</threshold>
      <granularity>1</granularity>
      <negative>false</negative>
      <scale>0.04</scale>
      <offset>0 0 0</offset>
      <material>Gazebo/Rocky</material>
    </geom:map>
  </body:map>
</model:physical>

The thing is that nothing happens in gazebo.
Any clue?? Does exist any documentation about how to spawn walls of a map??

Many thanks

Nicolas

_______________________________________________
ros-users mailing list
ros-users@code.ros.org
https://code.ros.org/mailman/listinfo/ros-users