跳到主要内容

模型导入

Darra 机器人模块内置 90+ 常见品牌型号 (ABB / Kuka / Fanuc / Yaskawa / Universal Robots / AUBO / JAKA / ELite / 埃夫特 / 新松 / 遨博 / 大族等), 直接从内置库选择即可。如果是自研机器人冷门型号或需要加入自定义工装 (夹具 / 工作台 / 料框 / 围栏), 则使用本页的模型导入功能。

支持的模型格式

格式扩展名用途推荐度
URDF.urdf / .xacro完整机器人 (链式运动学 + 视觉 + 碰撞)推荐, 主流
STL.stl纯网格, 单关节或工装快, 无运动学
STEP.step / .stpCAD 原生, 精确几何精确, 文件大
OBJ.obj + .mtl带材质纹理, 演示用演示好看
DAE (Collada).dae多用于 ROS / Gazebo兼容 URDF
Xacro.xacroURDF 宏展开需先转 URDF

URDF 导入 — 完整机器人

URDF 基本结构

URDF (Unified Robot Description Format) 用 XML 描述机器人的链接 (link)关节 (joint):

<robot name="my_robot">
<link name="base_link">
<visual>
<geometry>
<mesh filename="meshes/base.stl"/>
</geometry>
<material name="gray"><color rgba="0.5 0.5 0.5 1"/></material>
</visual>
<collision>
<geometry>
<mesh filename="meshes/base_collision.stl"/>
</geometry>
</collision>
<inertial>
<mass value="15.0"/>
<origin xyz="0 0 0.1"/>
<inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>

<joint name="joint1" type="revolute">
<parent link="base_link"/>
<child link="link1"/>
<origin xyz="0 0 0.35" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<limit lower="-3.14" upper="3.14" effort="100" velocity="3.14"/>
</joint>
<!-- ...更多 link / joint ... -->
</robot>

导入步骤

  1. 准备一个包含 robot.urdfmeshes/ 子目录的文件夹
  2. 项目浏览器 → 机器人 → 右键 → 添加机器人URDF 文件
  3. 选择 .urdf 根文件, 系统自动加载所有关联网格
  4. 向导提示:
    • 基准链接 (base_link): 自动识别, 一般不需改
    • 工具链接 (tool0): 选最后一个 link 或 flange 命名的 link
    • 关节映射: 6 个 revolute 关节自动映射为 J1..J6
    • 初始零位: 默认 URDF 的 xyz / rpy 原点, 如机器人零位与 URDF 不一致需手动修正
  5. 下一步, 系统根据 URDF 参数求解运动学闭解 (6 轴球腕机构) 或退化到数值解 (非球腕)
  6. 如果求解闭解失败, 系统提示使用数值逆解, 性能略低但通用

URDF 常见坑

问题解决
网格路径 package://robot/meshes/xxx.stl替换为相对路径 meshes/xxx.stl
Xacro 未展开用 ROS 工具 xacro robot.xacro > robot.urdf 先展开
质量 / 惯量为 0动力学会失效, 按手册补齐 (没数据就估算)
多个 base_linkURDF 必须唯一根, 合并或重命名
mesh 带纹理贴图文件要一并放到 meshes/ 目录, PNG / JPG 均支持
单位不是米URDF 标准用米 / 弧度 / 千克, 如果是 mm 要缩放 0.001

STL 导入 — 工装模型

STL 只有网格 (三角面片), 没有运动学或层级信息, 适合静态工装:

  1. 项目浏览器 → 工装 → 右键 → 添加工装STL 文件
  2. 选择 .stl 文件 (支持 ASCII 和 binary)
  3. 设置:
    • 实例名: 如 Fixture_A
    • 单位: mm (默认) / m (URDF 风格)
    • 初始位姿: 世界坐标下的 X/Y/Z + 姿态
  4. 确认后工装出现在 3D 视口, 可拖拽调整位置
  5. 右键 → 锁定 防止后续误拖

STEP 导入 — CAD 精确模型

STEP (ISO 10303) 是 CAD 工业标准, 保留精确 B-rep 几何. 缺点是文件大、加载慢:

  1. 右键 → 添加工装STEP 文件
  2. 系统调用内置 STEP 解析器 (基于 OpenCascade) 加载
  3. 提示自动网格化参数:
    • 网格精度: 高 (精度 0.01 mm, 文件大) / 中 (0.1 mm, 推荐) / 低 (1 mm, 快)
    • 合并对称面: 是 / 否
  4. 网格化后自动生成简化 STL 用于显示和碰撞检测
STEP 加载慢

一个 50 MB 的 STEP 文件网格化可能需要 30 秒以上, 建议只对关键工装用 STEP, 常规模型用 STL。

手工 DH 参数输入

如果没有 URDF 只有技术手册的 DH 参数表, 可以手工输入:

  1. 添加机器人手工参数DH 表
  2. 选 DH 类型: Standard DH (SDH)Modified DH (MDH, Craig 版本)
  3. 逐行输入 6 行 (6 轴机器人):
ia (mm)α (°)d (mm)θ 偏移 (°)关节范围 (°)速度上限 (°/s)
10-903450±170150
227000-90-135 ~ +85150
370-9000-155 ~ +158160
40903020±185280
50-9000±120280
600720±360400
  1. 求解运动学, 系统识别是否为球腕 (最后 3 轴相交于一点)
  2. 球腕 → 使用闭解, 10 μs / 次
  3. 非球腕 → 使用数值逆解 (DLS), 100 μs / 次

SDH vs MDH 快速判断

特征SDH (经典)MDH (Craig)
变换顺序Rz(θ) · Tz(d) · Tx(a) · Rx(α)Rx(α) · Tx(a) · Rz(θ) · Tz(d)
a / α 下标连杆 i-1 到 i连杆 i 到 i+1
适用参考早期教材, Paul 1981Craig 教材 (2005 后), ROS 默认

手册给的是 MDH 的概率 > 70%, 看公式形式就能判断。

碰撞体简化

网格显示用的视觉模型 (visual mesh) 通常有几万面, 用于碰撞检测会拖慢 PLC 周期. 必须做碰撞体简化 (collision mesh):

  1. 3D 视口 → 选中 link → 生成碰撞体
  2. 选算法:
    • 凸包 (Convex Hull): 最快, 对凸形物体精确, 对凹形物体偏保守 (误报增多)
    • 长方体 (AABB): 最快, 精度最低
    • 胶囊体 (Capsule): 适合圆柱类关节
    • 多凸包分解 (VHACD): 对凹形物体精确, 拆成多个凸包, 精度 + 性能平衡
  3. VHACD 参数:
    • 凸包最大数量: 16 (推荐)
    • 最大顶点数: 64
    • 误差: 1%
  4. 预览简化结果, 满意后点 应用
  5. 碰撞体可独立导出 STL 存档

碰撞体性能目标

模型规模单周期碰撞检测耗时
全身 50 万面视觉网格20 ms (不可用)
全身 5000 面粗网格0.5 ms
每关节 1 个凸包50 μs (推荐)
每关节胶囊体10 μs (最优)

导入后处理

  1. 对比零位: 让机器人回零, 3D 视口的关节角应全 0, 姿态应与实物匹配 (法兰面朝上或水平, 看型号)
  2. 关节限位校核: 实物机器人加不了极限位, 软件里扫一遍确保不超机械极限
  3. 速度 / 加速度限幅: 手册给的是关节最大速度, 设置时打 80% 折扣留余量
  4. 负载设定: 工具 + 工件质量填到 MC_SetLoad 或 IDE 机器人属性 → 负载, 否则重力补偿不准
  5. 保存为项目模板: 导入无误后另存模板, 下次同型号直接复用

参数表

参数类型单位说明
ModelFormatENUM-URDF / STL / STEP / OBJ / DAE
ScaleLREAL-模型缩放因子, 默认 1.0
OriginOffsetLREAL[6]mm/°导入位姿偏移 X/Y/Z/Rx/Ry/Rz
MeshResolutionLREALmmSTEP 网格精度, 默认 0.1
CollisionTypeENUM-ConvexHull / AABB / Capsule / VHACD
MaxConvexHullsUINT-VHACD 凸包数上限 (默认 16)

排错清单

现象原因解决
URDF 加载后机器人散架Joint 父子链接名拼写错检查 <parent> / <child>
机器人零位与实物反URDF 零位与厂家定义不同手动设置零位偏移
网格显示黑色法线方向反用 MeshLab / Blender 翻面后重导出
STEP 加载闪退文件损坏或版本不支持用 CAD 另存为 AP214 / AP242
3D 视口卡视觉网格太多面减面或启用碰撞体显示模式
关节限位不对URDF 写的是弧度, 转成度时漏转换单位标注检查, URDF 标准是弧度
逆解失败DH 参数中有错 (正负号常见)对照手册核对 α 正负

最佳实践

  1. URDF 优先: 主流 CAD (Solidworks / Inventor / CATIA) 都有 URDF 导出插件, 比 STEP → 手工拼强
  2. 视觉 / 碰撞分离: 视觉网格保留细节, 碰撞网格尽量粗 (面数 < 500)
  3. 单位统一: 全项目用 mm (Darra 默认) 或 m (URDF 默认), 不要混
  4. 版本化: 每次模型修改都导出到 git, 不要直接覆盖
  5. 内置库优先: 如果厂家型号在内置库里, 直接用, 参数和调优都是官方给的
  6. 增量导入: 工装可以先用简单长方体占位, 工程后期再换精细 STEP
  7. 对比实物: 导入后拿实物卷尺量关键尺寸, 误差 > 5 mm 就重导

相关文档