我在虚拟机的Ubuntu20.04中,运行Gazebo,加载XACRO文件的时候,如果XACRO文件有错误,很容易导致虚拟机卡死,一直没找到解决卡死的办法,只能将虚拟机关机,再打开,可想而知通过这种办法寻找文件中的错误,及纠错就显得很麻烦,这个时候就可以将XACRO文件转化为URDF文件,并通过check_urdf对其进行检查了,直至没有错误再在Gazebo中加载,具体过程如下:

   1、在终端运行roscore

   2、在你要检查的文件所在的文件夹下,右键,选择在终端打开,输入以下命令

     rosrun xacro xacro 要检查的文件.xacro  > 要检查的文件.urdf

   要将“要检查的文件”换成你需要进行检查的文件的名字,比如我要检查的文件全名是racecar.urdf.xacro,则其转换后的文件全名为racecar.urdf.urdf,则该文件的转换语句如下

    rosrun xacro xacro racecar.urdf.xacro  > racecar.urdf.urdf  

   这个时候,你会发现它生成了对应的urdf文件

   3、用 check_urdf指令对该urdf文件进行检查,如下面的例子所示,其中后半段是上面生成的urdf的文件名

      check_urdf racecar.urdf.urdf

   当该文件有错误时,比如下图所示:

   就可以根据提示去寻找错误了,将错误解决后再运行检查指令,就可以得到机器人模型中的层级关系,如下所示:

   这表示已经没有错误了,可以尝试去Gazebo中加载了,但是上图的层级关系看起来并不是很形象,这个时候,我们可以运用urdf_to_graphiz命令去生成机器人模型的结构图了,该指令后面跟的是urdf文件的文件名,比如本文中的例子:

      urdf_to_graphiz racecar.urdf.urdf

   它会生成.gv, .pdf两种格式文件,如下所示:

   我之前写过一篇名为 以阿克曼转向车为例对URDF和XACRO文件进行解读 的文章,链接如下:https://blog.csdn.net/qq_44339029/article/details/120682834?spm=1001.2014. 3001.5501(点击可跳转)

   在那篇文章中,我通过对XACRO文件进行解读,手动绘制了,除轮系结构之外的,该机器人的结构图,如下所示(拖动或点击可看大图):

   接下来,我们打开刚才生成的pdf文件,看一下它自动生成的该机器人完整的结构图,如下所示(拖动或点击可看大图):

   有了上面的机器人模型的结构图,再对机器人的结构进行分析就很直观和方便了,对程序的理解也有很大的帮助

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐