gazebo如何加载sdf文件的模型

大致过程

gazebo只能加载world模型和urdf模型

所以分为两步

1.要把sdf文件包含在world文件里

2.然后是gazebo要找得到sdf文件

sdf文件包含在world文件

先上一个最简单的包含自己sdf模型的world文件

<!--?xml version="1.4" ?-->
<sdf version="1.6">
  <world name="my_world">
    <!-- 环境光 -->
    <include>
      <uri>model://sun</uri>
    </include>

    <!-- 地面 -->
    <include>
      <uri>model://ground_plane</uri>
      <script>
        <uri>file://media/materials/scripts/gazebo.material</uri>
        <name>Gazebo/White</name>
      </script>
    </include>
    
    <!--模型 -->
    <model name='model_name'>
      <include>
        <uri>model://my_model</uri><!--核心-->
      </include>
    </model>
    
  </world>
</sdf>

my_model就是你的模型文件,这个文件一般包含一个.config文件和一个.sdf文件

设置sdf文件的路径

第二步就是让

<uri>model://my_model</uri>

能被找得到

目前我只知道有两种方法

1.把文件直接放到能被gazebo找得到的目录下

可以先打开gazebo

然后在左上角能找到insert标签
在这里插入图片描述
这个标签下的目录都能直接被gazebo找到,所以直接把文件放到这里就行了

2.设置环境变量使gazebo能找到该文件

这种方法就是在~目录下找到.bashrc文件,这个文件是用来存放环境变量的,然后在末尾加上
GAZEBO_MODEL_PATH = 你文件的路径
GAZEBO_MODEL_PATH = 你文件的路径这个不能有空格

3.在package.xml文件添加路径

直接添加代码(注意位置)

<depend>gazebo_ros</depend>
  <exec_depend>gazebo</exec_depend>
  <export>
    <!-- Other tools can request additional information be placed here -->
    <gazebo_ros gazebo_media_path="${prefix}"/>
    <gazebo_ros gazebo_model_path="${prefix}/models"/>
  </export>

但运行时有时会报错说gazebo_ros重复添加,那就可以把上面几句删掉,如下

直接在<export>标签下添加

      <gazebo_ros gazebo_media_path="${prefix}"/>
    <gazebo_ros gazebo_model_path="${prefix}/models"/>

参考文献

https://blog.csdn.net/yuguo0_331/article/details/89205163

https://blog.csdn.net/ktigerhero3/article/details/98712486

https://blog.csdn.net/yxh505613923/article/details/106961476/

https://zhuanlan.zhihu.com/p/129660662

留有疑问

  1. 方法1的那些目录是怎么让gazebo能找到文件的,我猜测gazebo里应该有一个文件专门存放这些目录,然后这个文件的性质是不是和.bashrc的性质是一样的,能够设置gazebo自己的(局部环境变量)
    在这里插入图片描述
    2.不管是第一种还是第二种方法,在可移植方面都太差了,比如你写的源码别人下载了还不能直接用,还要配置这些文件。有没有更简单的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值