【ROS问题】在Rviz中显示带有纹理信息的模型文件

问题描述

     利用sw_urdf_exporter插件可以方便快捷的导出urdf package,省去了用户自己编写urdf文件的过程。但是,由于该插件导出的link是.STL格式,因此每个连杆都不带纹理,即丢失了在solidworks中的颜色信息,这样模型文件在rviz中就显得很单调。

解决方案

     ROS的URDF目前只支持两种格式的模型文件,STL与DAE。其中,.STL文件只记录了文件的三维坐标信息,没有纹理信息。DAE则是另一种xml格式的模型文件,可以包含文件的纹理等信息。所以我们可以将.STL文件替换成.DAE文件,让自己的机器人在rviz中携带漂亮的纹理信息。

  • Step1:首先通过sw_urdf_exporter插件生成urdf package包;
  • Step2:在solidworks中将每个link保存成.IGES格式(注意单位设置成mm),具体保存选项如下图1所示,要特别注意输出坐标系的选择。
  • Step3:安装3d max 2015,安装opencollada插件。在导入.IGES前,先设置3d max的单位信息,具体设置如下图2所示;
  • Step4:导入每个link的.IGES模型,另存为OpenCOLLASA(*.DAE)格式,具体保存选项如下图3所示;

【ROS问题】在Rviz中显示带有纹理信息的模型文件【ROS问题】在Rviz中显示带有纹理信息的模型文件【ROS问题】在Rviz中显示带有纹理信息的模型文件

  • Step5:将urdf package中【meshes】文件夹内的所有.STL文件替换为.DAE文件;
  • Step6:修改urdf package中【urdf】文件夹内的.urdf文件,将mesh元素后缀改为.DAE。注意collision元素不需要修改,仍为.STL。

注意事项

  • 在SolidWorks中将每个link另存为.IGES时,要注意每个link坐标系要与你利用sw_urdf_exporter插件进行urdf package时的坐标系保持一致;
  • 利用sw_urdf_exporter插件导出urdf package时最好自己建立每个link的坐标系,如果是机械臂的话根据DH建系法则进行建系就可以;
  • 注意base_link的z轴要竖直向上,不然在rviz中模型是倒着放的。

下载资源