【ROS-Gazebo】将sdf文件转为urdf的方法

这几天在重新琢磨Gazebo,由于我是机械专业出身,对Solidworks之类的可视化建模总有一种执着的追求。但现在大多数教程中的urdf建模方法真的十分鬼!于是我按照Gazebo官网教程的方法建立了一个小车模型。发现在Gazebo中建模、绑定关节等都十分方便,唯一不方便的是建立的模型格式为.sdf的,只能在Gazebo中查看。想要在rviz查看或者插入ros_control等插件都很费劲。

于是我想:如果能够完全在Gazebo中进行建模就好了。然而,当前.sdf的教程实在太少,最终没有弄明白。于是我在查阅了ROS官方问答论坛后,发现了一个折中的方法:在Gazebo建模,用一个功能包pysdf-master把sdf文件转换为urdf文件。下面是方法:

  1. 在github中下载功能包pysdf-master,解压到ROS工作空间下的src目录。
    链接:https://github.com/andreasBihlmaier/pysdf、

  2. 重新编译工作空间

cd ~/catkin_ws/
catkin_make

  1. 切换到sdf文件所在的目录(根据自己模型的保存位置):

cd ~/model_editor_models/my_model/

  1. 运行转换功能节点(把文件名替换成自己的模型文件名):

rosrun pysdf sdf2urdf my_model.sdf result_model.urdf

大功告成!

注意事项:

  • 根据试验,这种方法仅对纯粹的模型有效,不要在Gazebo建模过程中添加插件,否则转换出错
  • 在Gazebo建模时只能使用urdf中存在的关节类型。如果使用了urdf无法识别的类型,如球关节“ball”,也会报错
  • 为了检验转换是否正确,可以利用urdf工具检验转换后的urdf文件,代码如下:

sudo apt-get install liburdfdom-tools
check_urdf result_model.rudf


以下为补充注意事项,随时更新:

  • 转换后的关节力与速度限位默认为-1,此参数在urdf和xacro中似乎会影响gazebo仿真控制,应修改为所需正值;

有问题欢迎提问~

参考链接:
http://answers.gazebosim.org/question/1310/sdf-to-urdf-converter/

你可能感兴趣的:(ROS-Gazebo,ROS,Gazebo,urdf,sdf,模型)