跳到主要内容

机器人控制

什么是奇异点?如何避免?

奇异点 (Singularity) 是机器人在某些姿态下丧失一个或多个自由度的位置。在奇异点附近,机器人需要极高的关节速度才能实现微小的 TCP 运动,可能导致关节速度超限或轨迹偏差。

常见奇异点类型

类型描述发生条件
腕部奇异点关节 4 和关节 6 轴线共线关节 5 接近 0 度
肩部奇异点TCP 接近基座正上方手臂完全伸展或折叠
肘部奇异点关节 2 和关节 3 使手臂完全伸直工作空间边缘

解决方案

  1. 路径规划时避开奇异点区域
(* 运动前检查奇异点 *)
IF CheckSingularity(TargetPose) THEN
(* 修改接近角度或使用关节运动绕过 *)
MOVJ(IntermediatePoint);
MOVL(TargetPose);
ELSE
MOVL(TargetPose);
END_IF;
  1. 使用关节运动 (MOVJ) 穿越奇异点区域 — 关节运动不受奇异点影响
  2. 奇异阻尼 — Darra Robot Core 内置 Jacobian 阻尼奇异处理,在接近奇异点时自动降速
信息

IDE 3D 视口中可显示工作空间可达性云图,红色区域表示接近奇异点,规划路径时应避开。

关节超限报警怎么处理?

关节超限表示目标位置超出了机器人的物理运动范围。

排查步骤

  1. 检查目标点位 — 在 IDE 中打开点位编辑器,确认各关节角在限位范围内
  2. 检查 DH 参数 — 错误的 DH 参数会导致逆解结果异常
  3. 检查工具坐标系 — TCP 偏移错误可能导致实际关节角与预期不符
  4. 检查工件坐标系 — 工件坐标系偏移可能将目标点推到工作空间外

关节限位设置

(* 关节限位配置 (弧度) *)
JointLimits[0].Min := -3.14; JointLimits[0].Max := 3.14; (* J1: -180~+180 *)
JointLimits[1].Min := -2.09; JointLimits[1].Max := 2.09; (* J2: -120~+120 *)
JointLimits[2].Min := -3.14; JointLimits[2].Max := 1.22; (* J3: -180~+70 *)
JointLimits[3].Min := -3.49; JointLimits[3].Max := 3.49; (* J4: -200~+200 *)
JointLimits[4].Min := -2.09; JointLimits[4].Max := 2.09; (* J5: -120~+120 *)
JointLimits[5].Min := -6.28; JointLimits[5].Max := 6.28; (* J6: -360~+360 *)

如何进行工具标定 (TCP 标定)?

工具标定用于确定工具末端相对于法兰盘的精确偏移。Darra PLC 支持多点法标定。

四点法标定步骤

  1. 在工作空间中固定一个尖点 (参考点)
  2. 从 4 个不同姿态移动工具末端到同一参考点
  3. 每次到达后记录关节角度
(* 记录4个标定点 *)
CalibrationPoint[0] := GetCurrentJoints(); (* 姿态1 *)
CalibrationPoint[1] := GetCurrentJoints(); (* 姿态2 *)
CalibrationPoint[2] := GetCurrentJoints(); (* 姿态3 *)
CalibrationPoint[3] := GetCurrentJoints(); (* 姿态4 *)

(* 计算 TCP 偏移 *)
TCPOffset := CalculateTCP(CalibrationPoint);
(* 结果: TCPOffset = [dx, dy, dz, rx, ry, rz] *)
  1. 在「工具坐标系」对话框中应用计算结果
标定精度

标定点的 4 个姿态应尽量差异大 (相互正交),以提高计算精度。标定精度通常可达 0.1mm。

MOVJ 和 MOVL 什么时候用?

指令路径速度适用场景
MOVJ关节空间最短路径,TCP 路径不可预测空间转移、避障
MOVLTCP 直线运动较慢接近工件、焊接、涂胶
MOVCTCP 圆弧运动较慢圆弧轨迹

经验法则

  • 不关心路径时用 MOVJ (快)
  • 关心路径时用 MOVL / MOVC (精确)
  • 接近/离开工件时用 MOVL (安全)

运动速度设置多少合适?

场景速度倍率说明
首次调试5~10%观察路径是否正确
示教10~30%点动示教
空载试运行30~50%验证完整流程
带载试运行50~80%验证负载下的精度
正常生产80~100%满速运行
注意

首次运行新程序时,必须以低速 (< 10%) 试运行,确认路径无碰撞后再逐步提速。

多个机器人如何同步运动?

Darra PLC 支持多机器人协调运动:

(* 两台机器人同步运动 *)
SyncGroup.Add(Robot1, Target1);
SyncGroup.Add(Robot2, Target2);
SyncGroup.Execute(SyncMode := SYNC_TIME); (* 时间同步: 同时到达 *)

同步模式:

  • SYNC_TIME — 同时到达:较快的机器人降速
  • SYNC_PATH — 路径同步:按比例同步进度
  • SYNC_START — 同时启动:各自速度独立

仿真和实机运动有差异怎么办?

仿真与实机差异的常见原因:

  1. DH 参数误差 — 实际机械尺寸与标称值的制造偏差
  2. 减速比/编码器分辨率 — ScaleFactor 配置不精确
  3. 机械间隙 — 减速器间隙导致的位置偏差
  4. 惯量/摩擦力 — 仿真未考虑动力学特性

解决方案:

  • 使用实际测量的 DH 参数替换标称值
  • 校准编码器 ScaleFactor (通过精密量具比对)
  • 仿真中启用物理引擎 (PhysicsIntegrator)

现场配置与调试运维常见问题

Q: TCP 标定后 Z 偏移仍然偏大

典型现象: 四点法标定完成后, 实际作业 TCP 在 Z 方向偏 1-5 mm。

排查顺序:

检查处理
工具机械安装松动用扭力扳手按厂家规定扭矩上紧
末端负载压弯法兰带负载标定, 或用刚性标定工具
标定点 4 个姿态差异不够四个姿态之间角度差 >45°, 分散在不同空间
基座/机架变形检查地脚螺栓是否松动, 再次水平校准
标定尖针不在同一点尖针要固定不动, 四次触碰同一精确位置
TCP 工具参数手误录错重录并比对

验证标定精度:

  1. 把 TCP 移到已知参考点 (比如标定尖针处)
  2. 切换不同姿态 (让 J6 旋转 90°)
  3. TCP 应该不动, 偏移 <0.5mm 为合格

Q: 机器人报"关节超限"怎么办

关节超限分硬限位软限位:

限位位置触发后果
硬限位机械挡块碰撞损坏, 不能依赖
机械软限位电机驱动器内驱动器报警, 急停
软限位DarraRT 参数运动规划阶段拒绝

处理步骤:

  1. 确认机器人当前关节角 (示教盒或监视面板)
  2. 与项目参数比对 JointLimits 配置
  3. 零位漂移? 做一次零位校准 (回零点, 触发零位开关)
  4. 实际使用范围需要调大? 修改 JointLimits.Max/Min 并重新下载
  5. 极限工况建议软限位比硬限位留 >5° 余量

零位校准流程 (通用):

1. 手动模式慢速旋转关节, 接近零位开关
2. 慢速通过开关, 驱动器记录零位索引
3. 自动模式执行"归零" → 各轴自动回零, 记录位置
4. 校准后与机械基准 (刻线) 比对, 偏差 `<0.1°`

Q: 机器人姿态奇异走不动

见本文上方 什么是奇异点?如何避免?, 运维层再补:

  • 现场快速识别: 报警类型 ROBOT_SINGULARITYJOINT_SPEED_LIMIT
  • 临时规避: 用 MOVJ 穿过奇异区, 再用 MOVL 精确作业
  • 永久规避: 修改路径, 增加引导点改变手腕姿态
  • 参考姿态建议: 让 J5 远离 180° (主要手腕奇异)

Q: 负载参数错导致抖动

机器人高速运动时抖动, 大概率是负载动力学参数错误 (重量、重心、惯量)。

修正方式:

方法精度难度
厂家手册取值
第三方 CAD 建模计算
DarraRT 自动负载辨识
实测称重 + 悬挂法

DarraRT 自动辨识流程:

  1. 机器人 → 负载辨识向导
  2. 机器人按预设轨迹运行 3-5 分钟 (缓慢多姿态)
  3. 系统采集各关节电流, 反解出动力学参数
  4. 保存为"负载配置", 生产时绑定

Q: 使能回路断机器人就停

使能回路 (Enable Chain) 是安全关键信号, 包含:

急停按钮(NC) → 安全门开关(NC) → 三位使能开关(中位) → 驱动器使能

任一断开, 驱动器立即下使能 (伺服关), 机器人停在当前位置。

现场调试时机器人"一下使能就停":

原因处理
急停按钮被拍下未复位旋转急停按钮复位, 复位前必须确认安全
安全门未关好检查安全门开关磁铁/限位到位
三位开关只按到中位没轻握示教盒三位开关轻握 = 使能, 松开/重按 = 断使能
急停回路继电器故障用万用表量通断, 老化元件更换
安全 PLC 参数错安全 PLC 配置中使能条件 AND 关系
使能回路严禁短接

有些现场为"快速调试"短接急停, 严重违反安全标准, 一旦发生伤害责任人承担全部法律责任。

Q: 机器人与 PLC 协同时序问题

机器人作为 PLC 下的子系统, 常见三信号握手协议:

PLC → 机器人机器人 → PLC含义
Start (上升沿)请求执行
Busy正在执行
Done执行完成 (保持到 Start 下降)
Error错误, 带 ErrorCode
(* PLC 端协调 *)
IF ReadyToPick AND NOT Robot.Busy THEN
Robot.Start := TRUE; (* 触发机器人作业 *)
END_IF;

IF Robot.Done THEN
Robot.Start := FALSE; (* 撤掉请求 *)
PickedCount := PickedCount + 1;
END_IF;

IF Robot.Error THEN
Robot.Start := FALSE;
LogError('robot', Robot.ErrorCode);
Alarm_RobotError := TRUE;
END_IF;

时序常见陷阱:

陷阱修正
Start 持续置位, 机器人反复启动必须检测上升沿或等待 Done
未等 Done 就发下一个 Start加 "NOT Robot.Busy" 条件
Busy 和 Done 同时为 TRUE状态机设计错误, 只能一个

Q: 视觉给坐标但机器人抓偏了

抓偏通常来自三个环节之一: 手眼标定、视觉精度、抓手精度。

排查顺序:

  1. 固定视觉给的坐标, 不动真实物体, 让机器人去抓

    • 如果每次抓到同一位置, 视觉坐标是稳定的
    • 机器人系统误差 = 固定偏差, 补偿即可
  2. 固定视觉视野, 换不同位置的物体

    • 视觉每次给的坐标与实际误差一致 = 标定精度问题
    • 误差随位置变化 = 视觉畸变 (镜头/标定板)
  3. 检查手眼标定

    • Eye-in-hand: 相机随机器人末端移动, 重新标定
    • Eye-to-hand: 相机固定, 标定板在机器人末端多姿态采集
    • 标定点 >=9 个, 分散在视野内
  4. 抓手夹具精度

    • 夹具本身变形? 换钢制或加厚
    • 物体摆放不稳? 加导向结构
    • 抓取姿态错误导致物体翻转? 约束摆放方向

Q: 机器人跑一会儿速度降低

运行 10-30 分钟后速度自动降低, 典型热保护触发:

原因排查
电机过热驱动器监视电机温度, >80°C 降速保护
减速机磨损振动声音异常, 换减速机
润滑油不足按维护计划加注
负载超规检查实际负载是否超额定
环境温度高机柜空调或降额使用

运维监控建议:

(* 监视电机温度, 预警而非等保护 *)
FOR i := 0 TO 5 DO
IF MotorTemp[i] > 70.0 THEN
Alarm_MotorHot[i] := TRUE;
(* 主动降低运动速度, 留出冷却时间 *)
SpeedOverride := 0.8;
END_IF;
END_FOR;

Q: 机器人断电后再开机位置丢失

带绝对编码器的机器人不会丢位置, 但需要备用电池:

电池状态后果
电量正常断电开机直接工作
电量低报警驱动器警告, 应计划更换
电量耗尽开机必须重新校零位
电池漏液立即断电检查, 防腐蚀电路板

电池寿命一般 3-5 年, 建议每年例行检查, 第 3 年主动更换。

Q: 现场维护周期建议

周期任务
每天开机自检, 观察有无异响
每周清洁机身, 检查电缆绑扎
每月检查零位偏差, 检查负载参数
每季度减速机油位/油质, 编码器电池电量
半年全轴间隙测量 (百分表)
一年全面精度校验 (激光跟踪仪 ISO 9283)

相关页面