如何将包含Xacro的URDF文件转换成SDF文件

如果您正在使用ROS和Gazebo,就会经常碰到URDF和SDF两种格式的机器人模型文件

统一机器人描述格式URDF是ROS中建模机器人的标准格式,是ROS支持的原生格式。而仿真描述格式SDF是Gazebo中支持的机器人建模的原生格式。虽然两者均采用XML语言,在一定程度上具有一定的相似性,但并不兼容。而且,URDF可以采用Xacro定义宏变量和宏模块,这样可以复用这些宏变量和宏模块;但不幸的是,Xacro并不支持SDF,即SDF不能用Xacro来定义宏变量和宏模块。因此,相对而言,URDF更加友好,可以减少代码量和建模时间。这样,通常可能就会用包含Xacro的URDF来建模机器人,在进行仿真前就需要将包含Xacro的URDF文件转换成SDF文件。

如果您有一个包含Xacro (即 XML 宏)的URDF机器人文件(如这个URDF文件),则可以在Ubuntu Linux中使用以下命令先将此文件转换为纯URDF文件(即不包含Xacro):

xacro two_wheeled_robot.urdf > two_wheeled_robot_without_xacro.urdf

然后,再将不包含Xacro的URDF文件转换为SDF文件。进入到存储要转换的URDF文件所在的目录中,并执行以下转换命令:

gz sdf -p two_wheeled_robot_without_xacro.urdf > two_wheeled_robot.sdf

参考英语原文地址:automaticaddison.com/ho