建立用于gazebo平台的仿真模型的几种方法

sdf与urdf 在gazebo仿真中常见的两种模型格式:sdf、urdf(以及xacro,是urdf的扩展)。
简单理解,sdf是gazebo的“儿子”,urdf是ROS的“儿子”,后来gazebo和ROS俩兄弟联手,所以urdf成了gazebo的干儿子,但是sdf没有成为ROS的干儿子。所以ROS中其他的模型工具(比如rviz)对sdf模型就不怎么友好了。但是sdf作为gazebo的亲儿子,它的模型描述能力整体高于urdf。
到底选择哪种格式,我觉得主要看需求。如果大量依仗ROS的功能,就选择urdf;反之,选择sdf。
模型建立方法 1. 编辑代码 编辑sdf和urdf的模型代码算是基本功了。二者都采用xml格式,语言规范说明:
urdf
sdf
以上两个链接不一定要看,因为照着网上demo编写基本可以满足大部分的需求。本方法,读者值得拥有,读懂模型代码是建立sdf和urdf模型的必备技能,就算借助后文提及的工具,也很难避免阅读编辑模型代码。
2. gazebo model editor gazebo左上角选项有模型编辑器,可以方便地编辑简单模型。简单模型包括三种:球、圆柱、立方体。本方法建立的模型为sdf。这种方法适用于模型比较简单的时候,对我来说,本方法,做小测试的时候可能用一用,整体用的不多。
建立用于gazebo平台的仿真模型的几种方法
文章图片
建立用于gazebo平台的仿真模型的几种方法
文章图片
此外,同一菜单下的building editor可以很方便地建立墙。
建立用于gazebo平台的仿真模型的几种方法
文章图片

3. SolidWorks模型转urdf 通过使用SolidWorks插件sw_urdf可以将sw装配体转化成urdf模型。插件生成一个ROS包,(通常需要经过小修改)可以在ubuntu中编译运行。具体方法如:https://blog.csdn.net/zhangjiali12011/article/details/78313110
本方法不一定总是能得到想要的结果。当sw装配体配合比较复杂的时候,转换效果可能会非常差,尤其是队友的把sw装配体的配合设置得比较奇怪的时候。
虽然有时候不能直接得到urdf,但可以通过SolidWorks导出零件的stl模型,再编辑urdf代码引用该stl模型。这种方法有两个问题:①需要自己加关节②无法得到有纹理的模型(就是模型比较丑╮(╯▽╰)╭)。
4. 建立好看的模型 看别人的gazebo模型经常花花绿绿的,长得很逼真的样子,通过上面几种方法是很难弄出来的,这个时候就需要请出大名鼎鼎的dae。urdf和sdf都支持引用dae模型文件,而且支持度都很好(就是可以把逼真的dae模型很好地显示出来)。常用的建立dae模型的软件有sketchup和blender。
sketchup网上有破解版,操作方式有点像SolidWorks。
blender是个开源的软件,个人觉得长的比sketchup好看。b站上有很好的使用教程。在ubuntu中直接使用二进制安装的blender是无法导出dae文件的,需要到官网上下载安装包(当然速度是超慢的,可以到国内的一些软件平台下载)。
需要注意的是,gazebo无法显示图片,或者说效果极其差。所以在建立dae模型的时候,不要直接插入图片,而是要将图片作为纹理插入。
当然其他的可以导出dae的软件也都是可以的,比如3dmax、Photoshop等,但相对于sketchup和blender来说,这两个软件的体量都是相当大的。
最后 【建立用于gazebo平台的仿真模型的几种方法】最后说的是,建立的模型要尽量简洁。gazebo是个仿真平台,模型的一举一动都伴随着大量的仿真计算。简单的模型会缩短仿真时间,也可能会提高仿真的精度。官网说gazebo仿真计算速率会受模型种类影响,仿真速率:三种简单模型>dae模型>stl模型。

    推荐阅读