SolidWorks导出URDF导入Isaac Sim报错崩溃?一键清洗与修复工具开源
在机器人仿真领域,将SolidWorks设计好的三维模型导出为URDF格式,并导入到NVIDIA Isaac Sim中,是构建数字孪生和具身智能环境的标准流程。
然而,由于Isaac Sim底层的USD架构对文件命名规范有着极度严苛的要求(仅支持纯英文字母、数字和下划线),而SolidWorks导出的文件往往包含中文路径、空格、连字符,并且默认生成带有ROS环境强依赖的package://绝对路径。这会导致在Isaac Sim中直接导入URDF时,频繁触发 Null Prim 崩溃或路径解析失败。
为了解决这一痛点,我开发并开源了一款基于PyQt5的轻量级图形化清洗工具。该工具可以实现一键打平资产层级、批量清除中文字符并重构相对路径。
开源仓库地址: github.com/lwbscu/Isaa...
本文将直接介绍该工具的使用方法,帮助大家打通SolidWorks到Isaac Sim的最后一公里。
环境准备与启动
该工具由Python编写,仅依赖标准库和 PyQt5。
- 克隆项目到本地:
bash
git clone https://github.com/lwbscu/IsaacSim_URDF_from_SolidWork.git
cd IsaacSim_URDF_from_SolidWork
- 赋予运行权限并启动:
arduino
chmod +x run.sh
./run.sh
注:启动脚本内置了依赖检测,如果当前环境缺少 PyQt5,终端会提示并自动通过pip进行安装,安装完成后静默启动图形界面。

核心清洗流程
工具界面分为参数配置区、操作按钮区和日志输出区。具体操作遵循以下三个步骤:
1. 配置路径与参数
在界面顶部的输入框中配置以下信息:
- 目标所在文件夹路径:点击"浏览",选择SolidWorks导出资产的最外层根目录。
- 原urdf路径 :点击"浏览",选择原始的
.urdf文件。工具会自动补全上方的文件夹路径。 - 期望改名后的urdf名称 :输入一个完全符合USD规范的纯净名称(例如:
robot_v2)。注意:仅限使用纯英文和下划线,不需要加.urdf后缀。

2. 执行一键清洗
依次点击界面中部的三个按钮完成处理:
-
深度扫描 (Scan) :系统会遍历所选目录下的所有物理文件,并读取URDF内部的XML树,排查所有的非法中文字符、连字符(-)以及
package://绝对路径。 -
一键清洗重构 (Clean) :这是核心步骤。工具将执行以下操作:
- 自动清理之前导入失败残留的废弃USD缓存。
- 将所有包含原中文名称的文件、文件夹(包括最外层根目录)重命名为指定的纯英文名称。
- 深入URDF代码内部,将所有的
package://原名称/meshes/替换为可跨平台解析的相对路径../meshes/。
-
关节拓扑分析 (Check Joints) :解析重构后的URDF结构,在日志面板输出所有关节的类型和数量。这可以帮助您在导入前排查是否有本该运动的轮子或夹爪在SolidWorks导出时被错误地设定为了无自由度的
fixed关节。

3. 排查SolidWorks特定的网格丢失问题(重要必看)
经过上述清洗,路径和命名问题已全部解决。但在实际操作中,SolidWorks URDF Exporter 插件在导出无自由度的固定件(Fixed Link)时,常存在一个Bug:生成的网格文件名没有后缀,或者干脆没有导出对应的网格文件。
这会导致Isaac Sim在底层转换资产时报出 Unsupported Format,进而引发 NULL TfRefPtr<UsdStage> 导致整个软件核心转储并崩溃退出。
解决方案:
在导入前,请务必打开清洗后的资产文件夹下的 meshes 目录:
- 检查所有的模型文件是否完整。
- 打开清洗后的
.urdf文件,搜索所有的<mesh filename="../meshes/xxx" />标签。 - 严格确保每个文件路径末尾都带有
.STL(或.dae)后缀,如果SolidWorks漏加了后缀,请手动补齐。
在Isaac Sim中导入
一切准备就绪后,打开NVIDIA Isaac Sim,按照以下步骤生成数字孪生模型:
- 在顶部菜单栏点击
File -> Import。 - 在文件浏览器中,导航到刚刚被工具重命名并清洗过的纯英文资产目录下,进入
urdf文件夹,选中清洗后的.urdf文件。

-
在右侧弹出的导入设置面板中:
- 如果导入的是机械臂(固定基座),勾选 Static Base。
- 如果导入的是移动底盘或全向轮小车,勾选 Moveable Base。
- 点击 Import 按钮。
此时,右下角会正常弹出资产转换进度条。几秒钟后,零报错的完整机器人模型将出现在Viewport中。您可以在右侧的 Stage 面板中展开 joints 列表,为各个 Revolute 关节配置速度或位置驱动。

通过该自动化工具的辅助,可以规避大量底层XML修改工作,将时间更多地投入到物理引擎参数调优和强化学习算法的部署中,欢迎各位开发者提出Issue或提交PR。