先说结论:如果关节名、link名和末端名都没有改变,一般只需要替换掉meshes里的STL文件和urdf文件。

具体实施:

1、当你从Solidworks中导出来urdf文件时,文件夹结构一般如下图1所示:

图1 Solidworks导出的urdf文件夹结构示意图

urdf:存放机器人的核心描述文件,用 XML 描述机器人由哪些连杆 link、关节 joint 组成,以及各部件之间的连接关系、坐标位置、关节类型、运动轴、运动范围、惯性参数、视觉模型和碰撞模型等,类似的结构为:

<link name="base_link">
  ...
</link>

<joint name="joint_1" type="revolute">
  <parent link="base_link"/>
  <child link="link_1"/>
  <axis xyz="0 0 1"/>
</joint>

meshes:存放机器人各个零部件的三维模型文件,通常是 .STL.DAE(碰撞模型一般用的是.STL),URDF 会引用这些模型来显示机器人外观或进行碰撞检测;其中外观模型用于 RViz/Gazebo 显示,碰撞模型用于仿真计算。

textures:存放模型表面的贴图或材质图片,用于让三维模型显示颜色、纹理或表面效果。一般不需要。

config:存放机器人相关配置文件,例如控制器参数、关节参数、RViz 配置或后续 MoveIt/Gazebo 使用的配置。

launch:存放 ROS 启动文件,用于一键加载 URDF、启动状态发布节点、打开 RViz 或运行仿真环境。

CMakeLists.txt:ROS Catkin 包的构建配置文件,用于告诉 ROS 这个包如何被编译、安装和管理依赖。

package.xml:ROS 包的元信息文件,用于声明包名、版本、作者、许可证以及依赖项。

export.log:SolidWorks 导出 URDF 时生成的日志文件,用于记录导出过程、成功信息、警告和错误信息。

2、机器人项目里面存放机器人本体模型的结构目录如下图2所示:

图2:机器人本体模型文件夹

在这其中urdf文件夹和meshes文件夹里的文件是最核心的文件,如果只是替换模型外观,一般不需要改config、launch、rviz、CMakeLists.txt和package.xml文件,只需要将新的从Solidworks导出的文件夹里的meshes和urdf替换掉你的机器人本体模型文件夹里的meshes和urdf就行了,文件名记得需要保持一致。

3、踩坑总结:

只替换掉项目中的urdf文件而没有替换掉meshes文件会造成模型外壳乱飞的情况,如下图3所示:

图3:凌乱的机器人模型

URDF 相当于机器人的“装配图纸”,meshes/STL 只是“零件外壳”。只改 URDF、不改 meshes 时,虽然零件没变,但 URDF 里的 joint 位置、方向、父子关系、转轴或 visual origin 变了,ROS 就会按新的装配方式把同一批 STL 重新摆放,所以 RViz 里的机器人模型会乱。换句话说,不是零件坏了,而是装配图纸变了。如图4所示是正常机器人的urdf模型:

图4:正常机器人的模型

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐