转载自:https://blog.csdn.net/weixin_44900096/article/details/103017522
GAZEBO 中 sdf文件详解
木木木一 2019-11-11 20:49:21 2166 收藏 12
分类专栏: gazebo
版权
GAZEBO 中 sdf文件详解
1.model模型
- 一个模型数据库会拥有的文件
(1)database.config:有关数据库的元数据,从CMakeList自动填充『本地不需要』
(2)model文件夹:
- 一个模型(model文件夹)会有的文件
1)mdoel.config 模型的元数据 『必需』
2)model.sdf 模型的SDF描述 『必需』
3)plugins 插件源文件和头文件的目录
4)model.sd.erb/meshes/materials
1.1 Model.config格式
固定开头
<?xml version>
<model>
<name>名字
<version>版本
<sdf>描述模型的SDF文件的名字
<author>作者
<name>名字
<email>邮件
<description>介绍模型模型是什么插件干了什么
<depend>
<uri>模型依赖关系的URI
<version>该模型的版本
1.2 Model.sdf格式
<?xml version ?> xml的版本
<sdf version> sdf的版本,和config里<sdf>的版本要一样呀
<model name> 模型的名字
<pose> 在世界中的位置 x y z pitch yaw roll
<static> 选择模型是否固定
<link>链接 包含模型的一个主体的物理属性,尽量减少模型中链接数量以提高性能和稳定
<collision>: 用于碰撞检查,一个link可以有多个碰撞元素
<geometry> 物体
<box> | <sphere> | <cylinder>形状名字
<size> x y z长度 | <radius>半径 | <radius> & <length>
<surface> 平面
<friction>设置地面摩擦力
<ode> <mu> <slip>
<visual>: 可视化
<geometry> 几何形状
<box>形状名字
<size> x y z长度
<inertial>: 惯性元素,描述了link的动态特性,例如质量和转动惯量矩阵
<mass> 质量
<inertia> !!!注意这两单词不一样呀
<sensor>: 从world收集数据用于plugin
<light>: 光源
<joint>关节 关节连接两个link,用于旋转轴和关节限制等
<plugin>插件 用于控制模型
注
1.meta data 元数据:描述数据的数据
2.URI 统一资源标识符:uri
- URL 统一资源定位符
- URN 统一资源名称
3.hg:macurial程序的执行命令【轻量级分布式版本控制系统】
4.XML的注释格式:
<!-- 注释内容-->
2 在sdf文件中添加传感器
加入一个激光
1.进入到你模型的文件路径
2.打开sdf文件
3.将下面的程序放置到标签的前面。
<include>
<uri>model://hokuyo</uri>
<pose>0.2 0 0.2 0 0 0</pose>
</include>
<joint name="hokuyo_joint" type="fixed">
<child>hokuyo::link</child>
<parent>chassis</parent>
</joint>
<include>
标志是告诉gazebo去寻找一个模型并且把它插入进去到与母体相关给定的<pose>
处。在本次当中,我们把hokuyo激光放在机器人的前端,<uri>
模块是告诉gazebo这个模型在数据库当中的位置。
<joint>
把激光头与parent连接起来,它的状态为fixed,防止它移动。
joint模块当中的child是从hokuyo激光的sdf文件当中继承的。hokuyo的激光文件开头:
<?xml version="1.0" ?>
<sdf version="1.4">
<model name="hokuyo">
<link name="link">
当hokuyo文件被插入之后,它的links的命名空间就是hokuyo,所以写法是hokuyo::
。