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.

Prerequisite
gazebo
model in sdf format
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<?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.sdf: model itself
Basic Steps:
Get the texture image ready and put them under
/texturesDefine texture in
cargo.material, note how texture image is included as well as how the name is set.material Cargo/Diffuseis the unique name for this material.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 } } } }Add this material in your sdf model. It should be enclosed by the
<visual>tag. Note theurisexport GAZEBO_MODEL_PATH=~/catkin_ws/src/warehouse_worker/model/hould be correctly set and thenameof the material should be identical to the name defined incargo.material<visual> <material> <script> <uri>model://cargo/materials/scripts</uri> <uri>model://cargo/materials/textures</uri> <name>Marker/Diffuse</name> </script> </material> </visual>Adding model to your world
<model name='cargo_with_marker'> <pose>2.5 0 0.15 0 0 -1.57</pose> <include> <uri>model://cargo</uri> </include> </model>Set the
modelenvironment variable in terminal. When gazebo launches the world, it will search the modelcargounder its defaultmodeldirectory. If you want to include your models in your project folder, you should set theGAZEBO_MODEL_PATHvariable in your terminal.export GAZEBO_MODEL_PATH=~/catkin_ws/src/warehouse_worker/model/Now gazebo also searches model under
/warehouse_worker/model/
Last updated
Was this helpful?
