# urdf_inertial **Repository Path**: ccpdead/urdf_inertial ## Basic Information - **Project Name**: urdf_inertial - **Description**: 由于sw2urdf插件无法对urdf的惯量,质心等变量准确描述,该python通过根据粘贴的solidwors数据,输出成标准的urdf配置数据 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-12 - **Last Updated**: 2026-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: urdf, RL, solidworks, evo-matrix ## README # sw_to_urdf_inertial 将 **SolidWorks 质量属性**文本一键转换为 **URDF `` XML** 的 Python 工具。 适用于机器人开发中,从 SolidWorks 导出质量/质心/惯性张量数据,手动填写 URDF 惯性属性时容易出错的场景。 --- ## 功能特性 - 自动解析 SolidWorks 质量属性报告中的三类数据: - **质量**(支持 `质量 = ...` 和 `质量(用户覆盖) = ...` 两种格式) - **质心坐标**(``) - **惯性张量**(取"由重心决定,并且对齐输出的坐标系"那组,即 `Lxx/Lxy/...`) - 自动单位转换: - 质心单位为**毫米**时自动转换为**米** - 惯性张量单位为**克·平方毫米**时自动转换为**千克·平方米** - 直接输出可粘贴到 URDF 文件的 XML 片段 --- ## 需求 - Python 3.6+ - 无第三方依赖(仅使用标准库 `re`、`sys`) --- ## 快速开始 ### 交互式运行 ```bash python sw_to_urdf_inertial.py ``` 运行后粘贴 SolidWorks 质量属性文本,**连续两次回车**结束输入,程序输出 URDF XML。 ### 作为模块调用 ```python from sw_to_urdf_inertial import parse_solidworks_to_urdf sw_text = """ 质量 = 0.2782896 千克 质心 : ( 米 ) X = 0.0303250 Y = 0.0189866 Z = 0.0000848 惯性张量: ( 千克 * 平方米 ) 由重心决定,并且对齐输出的坐标系。 (使用正张量记数法。) Lxx = 0.0001186 Lxy = 0.0000057 Lxz = 0.0000001 Lyx = 0.0000057 Lyy = 0.0001120 Lyz = -0.0000003 Lzx = 0.0000001 Lzy = -0.0000003 Lzz = 0.0001325 """ print(parse_solidworks_to_urdf(sw_text)) ``` 输出: ```xml ``` --- ## SolidWorks 导出说明 在 SolidWorks 中打开零件 → **工具 → 质量属性** → 选择对应坐标系 → 复制全部文本粘贴到本工具。 ### 惯性张量选择规则 SolidWorks 会输出两组惯性张量,本工具**只使用第一组**: | SolidWorks 描述 | 变量名 | 是否用于 URDF | |---|---|---| | **由重心决定,并且对齐输出的坐标系** | `Lxx, Lxy, ...` | ✅ 使用此组 | | 由输出坐标系决定 | `Ixx, Ixy, ...` | ❌ 不使用 | 原因:URDF 的 `` 要求的是**过质心的惯性张量**,不能使用包含平行轴偏移的坐标原点版本。 --- ## 文件结构 ``` sw_to_urdf_inertial/ ├── sw_to_urdf_inertial.py # 核心转换脚本(可直接运行或作为模块导入) ├── test_parse.py # 示例 / 单元测试 ├── examples/ │ ├── input_kg_m.txt # 示例输入(千克·米单位) │ └── input_g_mm.txt # 示例输入(克·毫米单位,自动转换) ├── .gitignore ├── LICENSE └── README.md ``` --- ## 单位支持矩阵 | 质心单位 | 惯性张量单位 | 是否自动转换 | |---|---|---| | 米 (m) | 千克·平方米 (kg·m²) | 无需转换 | | 毫米 (mm) | 千克·平方米 (kg·m²) | 质心 ÷1000 | | 米 (m) | 克·平方毫米 (g·mm²) | 惯量 ×1e-9 | | 毫米 (mm) | 克·平方毫米 (g·mm²) | 两者均转换 | --- ## License MIT