跳到主要内容

基础仿真

Darra 提供基础仿真能力,用于在编程阶段验证点位、坐标系和动作示例。

定位

基础仿真不是工业级物理仿真,不做碰撞动力学、节拍精确计算。它的目标是让你在不接机器人的情况下:

  • 查看点位是否正确
  • 采集并验证坐标系
  • 演示典型动作流程
  • 检查路径是否穿墙/自碰撞(几何层)

如果需要精确节拍、动力学、数字孪生,参考 应用案例 → 数字孪生

打开 3D 视口

  • 视图页签 → 3D 视口
  • 双击机器人节点也会打开

视口里可以看到:

  • 机器人本体(按导入时的运动学)
  • 坐标系标记(World/Base/Tool/工件)
  • 已示教的点位(小圆点)
  • 程序执行时的轨迹(虚线)

视口操作

操作方法
旋转视角鼠标中键拖动
平移Shift + 中键
缩放滚轮
重置视角右键 → 重置相机
切换正交 / 透视工具栏按钮

用法 1:查看点位

示教一批点位后,想看看它们在 3D 空间的分布:

  1. 点视口上方的 显示点位 按钮
  2. 所有示教点以小圆点显示
  3. 鼠标悬停在点上显示名称与坐标
  4. 双击点 → 机器人仿真地走到该点

这能快速发现:

  • 点位是不是都在工件区域内
  • 是否有点太近,合并一下更整齐
  • 是否有明显错误(比如 Z 写反了)

用法 2:坐标系采集

标定完坐标系后,在 3D 视口里能直接看到:

  • World:世界坐标,灰色
  • Base:机器人基坐标,蓝色
  • Tool0:工具默认,红色
  • 自定义工件坐标系,绿色

用视口验证坐标系朝向对不对,比手算快。

用法 3:动作示例演示

写完一段运动程序(见 运动编程),在视口里试跑:

  1. Ribbon → 运动 → 仿真模式(图标变成灰机器人)
  2. 程序循环执行
  3. 机器人本体按程序路径运动
  4. 实际机器人不动,纯软件仿真

仿真模式下可调速度(0.1x ~ 10x),让动作慢下来看清细节。

用法 4:几何碰撞检查

视口里加入外部模型(夹具、料框)后:

  • 右键 → 碰撞检测
  • 仿真运行时,如果机器人与模型碰撞,该段高亮红色并暂停

注意这是几何碰撞,不考虑物理效果(没有反弹、没有变形)。

限制

做不到替代方案
节拍精确预测找我们做专门的节拍分析工具
物理动力学仿真接外部 Gazebo/MuJoCo
视觉图像仿真用 Unity/Unreal 做数字孪生
人机交互安全区仿真找安全专业工具,如 Visual Components

基础仿真只解决点位和动作对不对的问题。

仿真模式详解

Darra 支持 3 个仿真模式, 按"真实程度"递增:

模式 1 — 运动学仿真 (Kinematics Only)

  • 只做正 / 逆运动学
  • TCP 轨迹准确
  • 不考虑伺服动力学、加减速曲线
  • 计算开销最小, 适合快速检查路径

模式 2 — 轨迹仿真 (Trajectory)

  • 运动学 + 完整轨迹规划
  • 模拟 Jerk / Accel / Vel 曲线
  • TCP 位姿、速度、加速度随时间输出
  • 能预估节拍时间 (通常误差 < 5%)
  • 默认模式

模式 3 — 硬件在环 (HIL, Hardware-in-the-Loop)

  • 轨迹仿真结果 → 送到真实伺服驱动器
  • 伺服上电但机械脱开 (或悬空)
  • 测试伺服参数响应、增益、延迟
  • 只有调试环境适用, 上产线无意义

仿真与实物切换

VAR
mode : ROBOT_OPERATION_MODE;
END_VAR

// 编程时切仿真
SetRobotMode(Robot := Robot1, Mode := ROBOT_SIMULATION);

// 上线切实物
SetRobotMode(Robot := Robot1, Mode := ROBOT_PHYSICAL);

切换不会丢失状态, 关节角、TCP、速度倍率都保留。

3D 视口渲染选项

选项默认说明
机器人主体显示机器人 3D 模型
坐标系显示 Tool / User / Base
点位示教点
路径运动轨迹
工作空间可达区域云
奇异区奇异位姿集
碰撞体碰撞检测用的简化网格
重心 / 惯量椭球动力学可视化
力 / 速度向量实时向量显示
FPS 计数器渲染性能

仿真录制与回放

  • 录制: 点录制按钮, 当前仿真的所有状态 (关节 / TCP / IO) 录到 .rec 文件
  • 回放: 打开 .rec, 可以倍速播放 / 暂停 / 时间点跳转
  • 用途: 现场故障复现, 远程排错 (传 .rec 文件即可)

多机器人同步仿真

多机场景下:

VAR
SimGroup : SIMULATION_GROUP;
END_VAR

AddRobotToSim(Group := SimGroup, Robot := Robot1);
AddRobotToSim(Group := SimGroup, Robot := Robot2);
StartSimGroup(Group := SimGroup);

仿真组保证所有机器人同一时钟推进, 用于多机协作程序验证。

与 CAD 集成

3D 视口可导入外部 CAD 模型作为环境:

  1. 导入工装 STL / STEP (见 模型导入)
  2. 固定对象类型添加到环境
  3. 碰撞检测自动考虑这些对象
  4. 可用拖拽调整工装位置
  5. 保存为场景 (.scene), 下次打开还原

参数表

参数类型单位默认说明
SimulationModeENUM-TRAJECTORY仿真级别
SimSpeedScaleLREAL-1.0仿真倍率 (0.1..10)
CollisionEnabledBOOL-FALSE几何碰撞检测
RenderFPSUINT-60渲染帧率
TraceLengthUDINT-10000显示轨迹点数上限
RecordIntervalUDINTms10录制采样间隔

排错清单

现象原因解决
仿真机器人不动程序未关联机器人实例在程序属性里绑机器人
3D 视口黑屏GPU 驱动问题更新显卡驱动 / 用软件渲染
仿真和实物不一致仿真用的 DH 与实物不同重新导入机器人参数
节拍预估不准动力学负载与实际差异在 Mass / Inertia 配实际值
录制文件巨大录制间隔太短调 RecordInterval 到 50 ms
碰撞报但实际可走碰撞体保守 (凸包)改用 VHACD 简化

最佳实践

  1. 先仿真再下发: 新程序必须先仿真通, 再下发到实物
  2. 仿真节拍参考: 真机节拍 = 仿真节拍 × 1.05 ~ 1.10 (加减速伺服延迟)
  3. 工装纳入仿真: STL / STEP 导入工装, 否则碰撞检测漏掉关键
  4. 多机项目用仿真组: 独立仿真时钟不同步, 看不出冲突
  5. 长仿真记得关录制: 24 小时录制文件 > 1 GB
  6. 仿真 UI 操作习惯: 用 Ctrl+Scroll 缩放, Alt+拖 平移
  7. 仿真不是生产: 仿真通过 ≠ 实物一定通过, 还要看 诊断

相关文档