If you do not want to have your model in two different places like @hsu said (GAZEBO_MODEL_PATH
and ROS_PACKAGE_PATH
) then what you can do is edit the launch file for your model's package, and after the <launch> tag, but before you run any gazebo related stuff, insert an <env> tag which will allow you to temporarily set that environment variable, without changing across your entire system. http://wiki.ros.org/roslaunch/XML/env
Here would be an example:
<launch>
<env name="GAZEBO_MODEL_PATH" value="$(find surus_sim)"/>
<param name="robot_description" textfile="$(find surus_sim)/robots/surus_sim.sdf" />
<node
name="spawn_model"
pkg="gazebo_ros"
type="spawn_model"
args="-sdf -param robot_description -model surus_sim"
output="screen">
</node>
</launch>
and then in your SDF (and i believe this would work for URDF too) you specify the path of your mesh(s) relative to the value specified in the <env> tag.
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://meshes/base_link.STL</uri>
</mesh>
</geometry>