gazebo model的sdf文件中的uri路径

让我们先看一个gazebo模型的sdf文件iris_depth_camera_down.sdf

<sdf version='1.5'>
  <model name='iris_depth_camera_down'>
    <include>
      <uri>model://iris</uri>
    </include>

    <include>
      <uri>model://depth_camera_new</uri>
      <pose>0 0 -0.05 0 1.5708 0</pose>
    </include>

    <joint name="depth_camera_new_joint" type="fixed">
      <child>depth_camera_new::link</child>
      <parent>iris::base_link</parent>
      <axis>
        <xyz>0 0 1</xyz>
        <limit>
          <upper>0</upper>
          <lower>0</lower>
        </limit>
      </axis>
    </joint>
  </model>

显然这里面用uri链接打开了iris和depth_camera_new两个模型。

问题是,这两个模型的文件路径是什么?

答案在https://answers.gazebosim.org/question/6568/uri-paths-to-packages-in-the-sdf-model-file/

简而言之,<uri>model://iris</uri>会去找gazebo_model_path路径,而这个路径的申明有几种方法。

1、默认路径

~/.gazebo/models是gazebo会去找的模型默认路径,gazebo中联机下载的模型也会放在这里,也可以把你的模型放在这里,那gazebo一定可以找到。

2、自制model包

也可在自己写的一些ros包的package.xml文件里export这个包里的models文件夹,这个文件夹里的模型也会成为gazebo_model_path。给个参考:

<?xml version="1.0"?>
<package format="2">
  <name>uavros_gazebo</name>
  <version>0.0.0</version>
  <description>The iris_gazebo package</description>

  <license>BSD</license>
  <author>colin</author>
  <maintainer email="lcyfly1@163.com">colin</maintainer>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>message_generation</build_depend>
  <depend>message_runtime</depend>
  <depend>std_msgs</depend>

  <depend>gazebo_ros</depend>
  <depend>roscpp</depend>
  <depend>rospy</depend>
  <depend>camera_info_manager</depend>
  <depend>geometry_msgs</depend>
  <exec_depend>depth_image_proc</exec_depend>

  <test_depend>rostest</test_depend>

  <exec_depend>urdf</exec_depend>
  <exec_depend>xacro</exec_depend>


 <export>
    <gazebo_ros
      plugin_path="${prefix}/lib"
      gazebo_media_path="${prefix}"
      gazebo_model_path="${prefix}/models"
      />
  </export>
</package>

下面的命令可以查看gazebo_ros的model path:

rospack plugins --attrib=gazebo_model_path gazebo_ros

3、声明路径

最后,可以在终端或者.bashrc里声明GAZEBO_MODEL_PATH的路径,之后再打开相应的模型就会找到路径了,比较麻烦不推荐。

exprot GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:path-to-model

 

如果多个路径下面都有同名的model,那么会用到哪个我还不知道,可能有个先后顺序。如果都找不到那就会联网去下载。

最好还是不要用同名的model。

下面是搬运:

gazebo model的sdf文件中的uri路径
gazebo model的sdf文件中的uri路径

gazebo model的sdf文件中的uri路径

 

 

 

上一篇:delft3d 瞎搞


下一篇:将数组平铺到指定深度