环境:ubuntu16.04 ros-kinetic gazebo7.16
利用gazebo仿真时候,需要用到的是sdf文件的,虽然机器人模型使用的是urdf,但在gazebo运行时候,其内部也会把机器人文件urdf转为sdf加载到gazebo里面的.但是,这不是本次总结的重点.
这里总结的是gazebo仿真时候,常用到的两种文件,a.world,model.sdf文件,前者用于launch文件中加载的是自己搭建的世界环境;后者是可以在gazebo-insert选项里面选择插入的.
那么,对于model.sdf类型的,需要引用某一现成的模型,可以使用标签,如在引用gazebo/model里面的一个imu模型到该新建模型里面:
<model>
.......
<include>
<uri>model://imu</uri>//指定引用模型的路径文件
<pose>0 -0.50 0.050 0 0 0</pose>//定义位置
<name>a</name>//重新给个新名字
</include>
<joint type="fixed" name="ium_joint">
<child>a::link</child>//该引入的模型作为子link的名称在joint中编写样式
<parent>base_link</parent>//父link指定
</joint>
</model>//注意,引用模型是在现有的model标签内部的
对于.world类型的sdf,可以允许多个model在文件中,引用时候做好命名以及位置给定就ok了.如在.world文件中加载同一类型,但是各个位置准确的suv:
<world>
<model name="a">
.......
</model>
.....
<model name="b">//重新命名
<pose>8.14 -1.8 0 0 0 0</pose>//给定位置
<include>
<static>false</static>//false表示模型b可以在gazebo里面活动
<uri>model://suv</uri>//引用 .gazebo/models 模型的样式
</include>
</model>
<model name="c">
<pose>12 -1.8 0 0 0 0</pose>
<include>
<static>false</static>
<uri>model://suv</uri>
</include>
</model>
</world>
这里总结一下,方便下次搭建模型时候可以一下子查到,并会想起来.