当前位置: 华文问答 > 数码

ROS/gazebo下,如何在sdf模型文件中使用控制器插件,或者如何将sdf转化为urdf文件?

2016-05-20数码

虽然是很多年前的问题了,但前不久也遇到了,现在根据自己的了解回答一下。

ROS/gazebo仿真最常用的控制器插件是ros_control,一直关注这个插件的开发进度,到目前为止仍然不支持sdf格式,必须要在urdf/xacro上声明后才能使用,gazebo论坛和github上也没有好的解决办法。目前我使用过的解决方法有如下两个:

(1)sdf转urdf,再使用ros_control插件。sdf转urdf格式,目前有插件可以实现,见下面网址中没有被采纳的这个答案,答主给出了项目地址,在评论区说明了使用方法。但如另外一位答主所述,这种方法并没有解决urdf不支持闭链结构的缺陷,同时会丢失一些材质、颜色等信息。

(2)编写自定义gazebo控制器插件,并直接在sdf中调用。虽然目前sdf中没有找到像ros_control这样的现成控制器插件,但根据gazebo官方提供的文档来看,可以通过编写自定义插件来调用gazebo预留的接口,以设定关节的位置、速度、pid参数等信息,从而开发一个简单的控制器插件。如果有C++编程基础,这种方法其实也不费事。因为在做并联机器人的仿真,urdf肯定不能用,因此这也是我现在采用的方法。