目录 大致过程sdf文件包含在world文件设置sdf文件的路径1.把文件直接放到能被gazebo找得到的目录下2.设置环境变量使gazebo能找到该文件3.在package.xml文件添加路径 参考文献留有疑问
大致过程
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找到,所以直接把文件放到这里就行了
这种方法就是在~目录下找到.bashrc文件,这个文件是用来存放环境变量的,然后在末尾加上
GAZEBO_MODEL_PATH = 你文件的路径
GAZEBO_MODEL_PATH = 你文件的路径这个不能有空格
直接添加代码(注意位置)
<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的那些目录是怎么让gazebo能找到文件的,我猜测gazebo里应该有一个文件专门存放这些目录,然后这个文件的性质是不是和.bashrc的性质是一样的,能够设置gazebo自己的(局部环境变量)2.不管是第一种还是第二种方法,在可移植方面都太差了,比如你写的源码别人下载了还不能直接用,还要配置这些文件。有没有更简单的方法