• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

【ROS-Gazebo】为什么选择SDF?

人工智能 小明工坊 1805次浏览 0个评论

前言

这是一个系列小文章,主要介绍在ROS-Gazebo中如何更好地使用SDF格式建模与仿真。众所周知,URDF是ROS的原生支持格式,但在某些情况下(尤其是Gazebo仿真时),使用SDF格式会更加合理。鉴于中文网络上几乎没有成体系的SDF介绍博文,因此我将自己在硕士期间关于SDF模型的使用经验稍作总结。如有谬误,还望友好地指出。

本系列规划如下内容,建议按顺序阅读。尤其是第一篇,以确认你是否有必要使用SDF建模:

1 什么是SDF?

SDF是一种XML格式,能够描述机器人、静态和动态物体、照明、地形甚至物理学的各方面的信息。SDF可以精确描述机器人的各类性质,除了传统的运动学特性之外,还可以为机器人定义传感器、表面属性、纹理、关节摩擦等;SDF还提供了定义各种环境的方法。包括环境光照、地形等。

【ROS-Gazebo】为什么选择SDF?

SDF描述的机器人

 

【ROS-Gazebo】为什么选择SDF?

SDF描述的地形

2 SDF和URDF有什么区别?

以下基本摘自官方说明[2]

URDF(Unified Robot Description Format)在ROS中是一种功能强大且标准化的机器人描述格式,但依然缺少许多功能。例如,

  • URDF只能单独定义单个机器人的运动学和动力学特性;
  • 无法定义机器人本身在世界中的姿态;
  • 不能定义闭链结构(并联机器人);
  • 缺乏摩擦和等更丰富的动力学特性;
  • 不能定义非机器人物体,例如灯光,高度图等。

在实现方面,URDF语法大量使用XML的属性(Attribute)特性,使得URDF更加不灵活。 也没有向后兼容的机制。

为了解决以上问题,开发人员创建了一种称为SDF(Simulation Description Format)的新格式,专门供Gazebo使用。

SDF完整描述了从世界级到机器人级的所有内容。 它具有良好的可扩展性。 SDF格式使用XML元素而非属性来自我描述(因为属性往往难以阅读和维护[3]),这有助于使用简单的升级工具将旧版本迁移到新版本。 SDF也是具有自描述性的格式。

3 我应该使用哪种格式?

尽管目前有一些SDF与URDF的之间的转换方法(我在后面的文章里会讲到),但往往十分复杂且易出错。因此,我建议刚开始就根据自己的需求选择最合适的模型格式。对此我有以下建议:

3.1 必须使用URDF的情况

  • 使用Rviz对机器人进行可视化

3.2 必须使用SDF的情况

  • 研究并联机器人,或机器人中存在闭链结构

3.3 建议使用URDF的情况

  • 新手,面临毕业压力想快点做出可展示的成果
  • 使用Solidworks建模,想方便地导出用于ROS的三维模型

关于第2条:有专用的Solidworks插件,可以将装配体直接导出成URDF模型。如果想要SDF模型,只能手动导出网格文件,再在SDF中引用。

3.4 建议使用SDF的情况

  • 想深入研究ROS-Gazebo仿真,使仿真的动力学特性更加真实
  • 想开发自己专用的Gazebo仿真插件

参考资料

[1] SDF官方网站

[2] Gazebo教程:如何使用URDF

[3] XML属性的定义与分析


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明【ROS-Gazebo】为什么选择SDF?
喜欢 (0)

您必须 登录 才能发表评论!

加载中……