前言
在机器人开发、仿真和 ROS 项目中,URDF(Unified Robot Description Format,统一机器人描述格式)几乎是绕不开的一环。无论是做 MoveIt 运动规划、Gazebo / Isaac Sim / RViz 可视化,还是搭建机械臂、移动机器人、末端执行器的仿真模型,都需要先准备一份结构清晰的 URDF 文件。
但实际工程里,很多机械结构最初并不是以 URDF 形式存在的,而是来自 SolidWorks、Creo、UG/NX、CATIA 等 CAD 软件导出的三维模型,例如 .stp 或 .step 文件。传统做法通常需要:
- 在 CAD 软件中整理装配体;
- 手动导出各个 link 的 mesh;
- 自己编写 URDF / Xacro;
- 配置 joint、origin、visual、collision、inertial 等信息;
- 反复在 RViz 或仿真器里检查坐标和模型位置。
这个过程非常耗时,尤其对刚接触 ROS 建模的同学来说,门槛并不低。本文介绍一个在线 STP 转 URDF 工具,可以把 STEP/STP 模型转换为机器人仿真常用的 URDF 资源,适合用于快速生成初始模型、验证机构结构,或作为后续手动精修 URDF 的基础。
工具简介
本文使用的工具地址为:
这是一个面向机器人建模场景的在线 STP/STEP 转 URDF 工具。它的核心用途是:将 CAD 中常见的 .stp / .step 三维模型转换为 ROS 生态中常用的 URDF 描述文件,并生成配套的模型资源。
如果想看更直观的演示,可以参考作者提供的视频介绍:
为什么需要 STP 转 URDF
1. CAD 模型和机器人仿真模型不是一回事
CAD 模型更关注机械设计、装配关系、尺寸约束和制造加工;URDF 则更关注机器人系统中的 link、joint、坐标系、碰撞体、惯性参数和可视化模型。
也就是说,一个完整的 STEP 装配体并不能直接被 ROS 当成机器人模型使用,中间还需要进行结构拆分和描述转换。
2. 手写 URDF 容易出错
URDF 文件本质上是 XML 格式,虽然语法不复杂,但工程里最容易出错的地方往往不是 XML 标签,而是:
- link 和 joint 的层级关系;
- joint 的父子连接关系;
- origin 中 xyz / rpy 坐标配置;
- mesh 文件路径;
- visual 和 collision 是否对齐;
- 单位是否正确;
- 模型坐标系是否符合后续控制和仿真的习惯。
当模型稍微复杂一点,完全手写 URDF 的维护成本会快速上升。
3. 自动转换可以快速得到可用初稿
在线转换工具的价值在于,它可以帮助我们从 CAD 模型快速得到一套 URDF 初始文件。即使最终仍然需要人工调整关节类型、坐标轴、惯性参数或碰撞模型,自动生成的结果也能大幅减少从零开始的工作量。
使用前准备
在使用工具前,建议先准备好以下内容:
- 一个
.stp或.step格式的模型文件; - 模型最好是经过整理的装配体,而不是杂乱的零件集合;
- 明确模型中哪些部分应当作为独立 link;
- 明确哪些部件之间需要设置 fixed、revolute、prismatic 等 joint;
- 如果后续要用于 ROS,建议提前规划 package 名称和 mesh 资源路径。
如果只是测试工具效果,可以先使用一个结构较简单的模型,例如两三个零件组成的小装配体。这样更容易检查转换结果是否符合预期。
基本使用流程
第一步:打开在线工具
访问工具地址:
进入页面后,根据页面提示上传或导入需要转换的 .stp / .step 文件。
第二步:上传 STP/STEP 模型
选择本地 CAD 模型文件并上传。这里建议注意以下几点:
- 文件名尽量使用英文、数字和下划线;
- 避免路径或文件名中包含特殊符号;
- 模型体积不要一开始就太大;
- 如果装配体很复杂,可以先用简化版本验证流程。
第三步:执行转换
上传完成后,按照页面提示执行转换操作。工具会根据 STEP/STP 模型生成 URDF 相关文件。
一般来说,转换结果通常会包含:
.urdf模型描述文件;- mesh 网格资源;
- 可能存在的配置文件或资源目录;
- 用于在 ROS / RViz 中加载的模型结构。
具体文件结构以工具实际导出的结果为准。
第四步:下载转换结果
转换完成后,下载生成的文件包。建议将其放到 ROS 工作空间中的某个 package 目录下,例如:
bash
catkin_ws/src/your_robot_description/
或 ROS 2 工作空间中:
bash
ros2_ws/src/your_robot_description/
然后根据实际导出的目录结构,整理 urdf、meshes、launch 等文件夹。
第五步:在 RViz 中检查模型
拿到 URDF 后,不要急着直接进入仿真或控制,建议先在 RViz 中检查模型是否正确显示。
ROS 1 中可以使用类似方式检查:
bash
check_urdf your_robot.urdf
如果使用 robot_state_publisher 和 RViz,可以进一步检查:
- 模型是否能完整显示;
- link 是否存在缺失;
- mesh 路径是否正确;
- 模型比例是否正常;
- 坐标系方向是否符合预期;
- joint 层级关系是否合理。
ROS 2 中也可以通过 robot_state_publisher、joint_state_publisher_gui 和 RViz2 做类似检查。
转换后建议重点检查什么
自动转换可以省很多时间,但并不代表生成结果一定能直接满足所有仿真和控制需求。建议重点检查下面几个方面。
1. 单位是否正确
CAD 模型可能使用毫米、厘米或米,而 ROS/URDF 中通常默认使用米。如果导入后模型特别大或特别小,优先检查单位问题。
2. mesh 路径是否正确
URDF 中常见的 mesh 引用类似:
xml
<mesh filename="package://your_robot_description/meshes/base.stl"/>
如果 RViz 中模型不显示,常见原因就是 mesh 路径不对,或者模型资源没有放在 package 能找到的位置。
3. link 和 joint 是否符合机械结构
转换工具可以帮助生成结构,但真实机器人中的运动关系通常还需要人工确认。例如:
- 固定连接应使用
fixedjoint; - 旋转关节应使用
revolute或continuous; - 直线运动关节应使用
prismatic; - joint axis 是否符合真实运动方向;
- limit 是否需要设置上下限。
4. collision 模型是否需要简化
CAD 模型通常细节很多,直接作为 collision 可能会影响仿真性能。工程上常见做法是:
- visual 使用较精细模型;
- collision 使用简化模型;
- 对复杂曲面或大量倒角进行简化;
- 必要时用 box、cylinder、sphere 等基础几何体替代。
5. 惯性参数是否可靠
URDF 中的 inertial 信息会影响动力学仿真。如果只是用于 RViz 显示,惯性参数影响不大;如果用于 Gazebo、Isaac Sim 或动力学控制,就需要认真检查质量、质心和惯性矩阵。
适合哪些使用场景
这个 STP 转 URDF 工具比较适合下面几类场景:
- 机械臂、夹爪、移动底盘等机器人模型初步转换;
- ROS / ROS 2 项目中快速生成 robot_description;
- CAD 模型导入 RViz 做可视化展示;
- 仿真项目前期验证模型结构;
- 教学、课程设计、毕业设计中的机器人建模;
- 将机械工程师提供的 STEP 模型快速转成软件侧可用资源。
对于复杂机器人项目,建议把它作为"初始生成工具",再结合实际需求进行二次整理和优化。
常见问题
Q1:转换出来的 URDF 能直接用于仿真吗?
不一定。能否直接用于仿真取决于模型复杂度、joint 配置、collision 简化程度、惯性参数是否合理等因素。建议先在 RViz 中确认可视化效果,再进入 Gazebo、Isaac Sim 等仿真环境。
Q2:STP 和 STEP 是同一种格式吗?
通常可以认为 .stp 和 .step 都是 STEP 格式文件,只是文件后缀不同。它们常用于不同 CAD 软件之间交换三维模型数据。
Q3:为什么模型在 RViz 里显示不出来?
常见原因包括:
- URDF 语法错误;
- mesh 路径错误;
- package 没有被正确识别;
- 模型比例过大或过小;
- 坐标偏移导致模型不在视野中心;
- mesh 文件格式或导出结果异常。
可以先用 check_urdf 检查语法,再检查 package:// 路径是否正确。
Q4:复杂装配体转换效果不好怎么办?
建议先在 CAD 软件中做预处理:
- 删除无关零件;
- 合并不需要运动的固定结构;
- 简化倒角、螺丝、装饰件等细节;
- 按照机器人 link 的逻辑重新整理装配层级;
- 先转换小模块,确认效果后再处理完整模型。
小结
从 STP/STEP 到 URDF 的转换,是机器人仿真项目中非常典型但又容易耗时的环节。在线 STP 转 URDF 工具可以把 CAD 模型快速转换成 ROS 生态可使用的模型资源,减少手写 URDF 和手动导出 mesh 的重复劳动。
工具入口:
视频介绍:
https://www.bilibili.com/video/BV1LWE76xEQC/
如果你正在做 ROS 机器人建模、机械臂仿真、RViz 可视化或课程项目,可以先用这个工具生成 URDF 初稿,再根据自己的机器人结构继续调整 joint、collision、inertial 和 launch 配置。这样会比完全从零手写 URDF 高效很多。