arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

how-to-add-texture-to-sdf.md

by Tongkai Zhang, tongkaizhang@brandeis.edu

This is a quick guide for adding textures(.png) to your model in gazebo.

hashtag
Prerequisite

  • gazebo

  • model in sdf format

hashtag
Texture Configuration

After building your own model in the sdf format, you should have a structured model cargodirectory same as the one below.

It's important that you have the directory exactly the same, since importing the texture into gazebo is based on finding parameters and texture images within that directory.

  • scripts: cargo.material, formatted file, defining the name, visual property for the material.

  • textures: the image texture file

  • model.config: meta data for the model

Basic Steps:

  • Get the texture image ready and put them under /textures

  • Define texture in cargo.material, note how texture image is included as well as how the name is set.

    material Cargo/Diffuse is the unique name for this material.

  • model.sdf: model itself

  • Add this material in your sdf model. It should be enclosed by the <visual>tag. Note the uri sexport GAZEBO_MODEL_PATH=~/catkin_ws/src/warehouse_worker/model/hould be correctly set and the name of the material should be identical to the name defined in cargo.material
  • Adding model to your world

  • Set the modelenvironment variable in terminal. When gazebo launches the world, it will search the model cargo under its default model directory. If you want to include your models in your project folder, you should set the GAZEBO_MODEL_PATH variable in your terminal.

    export GAZEBO_MODEL_PATH=~/catkin_ws/src/warehouse_worker/model/

    Now gazebo also searches model under /warehouse_worker/model/

  • image-20210505100405303
    image-20210505100010784
    <?xml version="1.0"?>
    
    <model>
      <name>cargo_with_marker</name>
      <version>1.0</version>
      <sdf version="1.6">model.sdf</sdf>
    
      <author>
        <name>Tongkai Zhang</name>
      </author>
    
      <description>export GAZEBO_MODEL_PATH=~/catkin_ws/src/warehouse_worker/model/
        Cargo
      </description>
    </model>
      <model name='cargo_with_marker'>
            <pose>2.5 0 0.15 0 0 -1.57</pose>
            <include>
                <uri>model://cargo</uri>
            </include>
        </model>
    material Cargo/Diffuse
    {
      receive_shadows off
      technique
      {
        pass
        {
          texture_unit
          {
            texture cargo.jpg
          }
        }
      }
    }
    
    material Marker/Diffuse
    {
      receive_shadows off
      technique
      {
        pass
        {
          texture_unit
          {
            texture MarkerData_1.png
          }
        }
      }
    }
    <visual>
        <material>
                  <script>
                    <uri>model://cargo/materials/scripts</uri>
                    <uri>model://cargo/materials/textures</uri>
                    <name>Marker/Diffuse</name>
                  </script>
        </material>
    </visual>