六轴工业机器人在执行轨迹跟踪任务时,会遇到一种特殊的位形状态——奇异点。在该状态下,机器人瞬间丧失一个或多个方向的运动能力,导致关节速度趋于无穷大、轨迹控制失效,甚至引发机械结构损坏。理解奇异点的形成机理并掌握有效的规避策略,是机器人编程与调试的核心技能之一。
一、奇异点的本质与分类
1.1 雅可比矩阵的物理意义
机器人的运动学关系由雅可比矩阵 $J$ 建立,其定义为末端执行器笛卡尔速度 $\dot{X}$ 与关节角速度 $\dot{\theta}$ 之间的线性映射:
$$\dot{X} = J(\theta) \dot{\theta}$$
当矩阵 $J$ 降秩时,即 $\det(J) = 0$,存在非零的关节速度 $\dot{\theta}$ 使得 $\dot{X} = 0$。这意味着末端可以在某些方向上"用力"而笛卡尔空间无响应,或反之需要无限大的关节速度才能实现有限的末端运动——这就是运动学奇异。
1.2 六轴机器人的三类奇异点
工业六轴机器人(如 FANUC、KUKA、ABB 标准构型)存在三种典型奇异位形:
| 奇异类型 | 发生条件 | 物理表现 |
|---|---|---|
| 肩部奇异 | 腕部中心点位于 $J_1$ 轴上($d_2 = 0$ 且 $d_3 = 0$) | $J_1$ 旋转不改变腕部位置,仅改变姿态 |
| 肘部奇异 | 大臂与小臂完全伸直或折叠($d_4 = 0$) | 失去一个位置自由度,末端只能沿大臂方向运动 |
| 腕部奇异 | 腕部三轴 $J_4, J_5, J_6$ 共面(通常为 $J_5 = 0°$) | 失去一个姿态自由度,绕工具法向的旋转不可控 |
肩部奇异在实际工作空间中占比极小;肘部奇异可通过合理布置任务点规避;腕部奇异最为常见,是路径规划的重点关注对象。
二、奇异点的数学判定与监测
2.1 腕部奇异的实时检测
对于标准六轴构型,腕部奇异的判定条件简化为:
$$|\cos(\theta_5)| < \epsilon_{\text{sing}}$$
其中 $\epsilon_{\text{sing}}$ 为奇异阈值,通常取 $0.01 \sim 0.05$(对应 $J_5$ 接近 $0°$ 或 $180°$)。
在机器人控制器中,监测 该条件的代码逻辑如下:
def check_wrist_singularity(joint_angles, epsilon=0.05):
"""
检测腕部奇异点
joint_angles: [j1, j2, j3, j4, j5, j6] 单位:弧度
"""
j5 = joint_angles[4] # 第5轴角度
# 归一化到 [-pi, pi] 区间
j5_normalized = ((j5 + np.pi) % (2 * np.pi)) - np.pi
# 检测是否接近 0 或 pi
near_zero = abs(np.sin(j5_normalized)) < epsilon
return near_zero, abs(np.sin(j5_normalized))
2.2 奇异度量指标
为量化接近奇异的危险程度,定义可操作度(Manipulability)指标:
$$w(\theta) = \sqrt{\det(JJ^T)}$$
或更实用的条件数指标:
$$\kappa(J) = \frac{\sigma_{\max}}{\sigma_{\min}}$$
其中 $\sigma_{\max}, \sigma_{\min}$ 为 $J$ 的最大、最小奇异值。条件数趋于无穷大时,机器人处于完全奇异状态。
三、奇异点规避的核心策略
3.1 策略一:关节空间轨迹规划
原理:直接在关节空间插值,完全回避笛卡尔空间的直线约束。
适用场景:对末端轨迹形状无严格要求的搬运、点焊等应用。
执行步骤:
- 设定 起始点与目标点的关节坐标 $\theta_{\text{start}}, \theta_{\text{end}}$
- 选择 插值方法:三次多项式、五次多项式或 S 曲线规划
- 验证 中间点是否穿越奇异区域——计算整条轨迹的可操作度 $w(\theta(t)) > w_{\min}$
- 执行 关节伺服运动
三次多项式插值公式:
$$\theta(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3$$
边界条件为 $\theta(0)=\theta_0, \theta(T)=\theta_f, \dot{\theta}(0)=\dot{\theta}(T)=0$,解得:
$$a_0 = \theta_0, \quad a_1 = 0, \quad a_2 = \frac{3}{T^2}(\theta_f - \theta_0), \quad a_3 = -\frac{2}{T^3}(\theta_f - \theta_0)$$
3.2 策略二:笛卡尔空间路径修正
当任务强制要求直线或特定曲线轨迹时,需在笛卡尔空间主动"绕开"奇异点。
3.2.1 腕部奇异规避——工具姿态调整法
核心思想:在奇异区域附近,暂时放松对工具姿态的约束,允许 $J_4, J_6$ 耦合补偿。
具体操作:
- 检测 当前路径段是否穿过 $J_5 \approx 0°$ 区域
- 计算 奇异点前后两个路径点的 $J_5$ 值,若符号相反则确认穿越
- 插入 中间路径点,强制 $J_5 = \pm 5° \sim \pm 10°$ 的"偏置角"
- 重新规划 过奇异区的姿态:保持工具位置不变,绕接近矢量旋转工具
姿态插值的 SLERP(球面线性插值)公式:
$$R(t) = R_0 \left(R_0^T R_1\right)^t, \quad t \in [0,1]$$
其中 $R_0, R_1$ 为起止姿态矩阵,指数映射通过罗德里格斯公式计算。
3.2.2 肘部奇异规避——肩部偏置法
当路径要求末端经过工作空间边界(如完全伸展姿态):
- 计算 当前构型的臂角 $\psi$(描述肘部上下/左右配置)
- 切换 臂角至对侧配置(如由 $\psi$ 变为 $-\psi$)
- 验证 新构型是否远离奇异且满足关节限位
3.3 策略三:冗余度利用与优化
六轴机器人在特定任务(如纯位置跟踪)下存在功能冗余。利用零空间(Null Space)运动可主动调整姿态以远离奇异。
零空间投影控制律:
$$\dot{\theta} = J^+ \dot{X}_d + (I - J^+ J) \dot{\theta}_0$$
其中 $J^+ = J^T(JJ^T)^{-1}$ 为伪逆,$(I - J^+ J)$ 投影到零空间。选择:
$$\dot{\theta}_0 = k_0 \nabla w(\theta)$$
使关节运动在完成任务的同时最大化可操作度 $w(\theta)$。
3.4 策略四:奇异鲁棒性逆运动学
当无法避免穿越奇异时,采用阻尼最小二乘法(DLS)稳定求解:
$$\dot{\theta} = J^T(JJ^T + \lambda^2 I)^{-1} \dot{X}_d$$
阻尼系数 $\lambda$ 的自适应调节:
$$\lambda^2 = \begin{cases} 0 & w(\theta) \geq w_0 \\ \lambda_{\max}^2\left(1 - \frac{w(\theta)}{w_0}\right)^2 & w(\theta) < w_0 \end{cases}$$
该方法在奇异点附近牺牲部分轨迹精度,换取关节速度的有限性。
四、工程实践:完整的路径规划流程
4.1 离线编程阶段
任务轨迹定义"] --> B{"轨迹类型判断"} B -->|"点序列
PTP运动"| C["关节空间规划
直接插值"] B -->|"连续路径
LIN/CIRC"| D["笛卡尔空间规划"] D --> E["逆运动学求解
逐点计算关节角"] E --> F{"奇异检测"} F -->|"无奇异"| G["输出机器人程序"] F -->|"检测到奇异"| H["激活规避策略"] H --> I["姿态调整/
路径点插入/
臂角切换"] I --> E C --> G
4.2 在线执行阶段
- 预读 下一路径段,评估奇异风险等级
- 动态调整 进给速度倍率:接近奇异时 降低 至 $30\% \sim 50\%$
- 实时监测 关节速度、力矩,触发急停阈值时 暂停 并报警
- 记录 实际轨迹与规划轨迹的偏差,用于后续工艺优化
4.3 典型工艺参数设置
以汽车白车身焊接为例:
| 参数项 | 常规区域 | 奇异附近区域 |
|---|---|---|
| TCP速度 | $100 \sim 300$ mm/s | $30 \sim 80$ mm/s |
| 加速度 | $50\%$ 额定值 | $20\%$ 额定值 |
| 姿态容差 | $\pm 2°$ | $\pm 5°$(允许姿态插补) |
| $J_5$ 限位 | $\pm 120°$ | 实际避开 $\pm 10°$ 区间 |
五、高级话题:奇异点的利用
在某些场景下,奇异位形并非完全负面:
- 轴对准校准:腕部奇异时 $J_4$ 与 $J_6$ 共线,可用于工具坐标系标定
- 力控制任务:奇异方向恰为无力控方向,可实现顺应控制
- 姿态保持:肩部奇异时绕 $J_1$ 旋转不改变位置,适合旋转台配合
理解这些特性,有助于在编程中化被动为主动。
六、调试技巧与故障排查
当机器人出现以下现象时,应优先排查奇异问题:
| 现象 | 诊断 | 解决 |
|---|---|---|
| 某关节速度突然飙升 | 路径穿越腕部奇异 | 插入 中间点,调整过奇异姿态 |
| 直线运动实际为曲线 | 控制器自动奇异规避激活 | 检查 CNT 连续过渡参数,或 关闭 自动规避手动规划 |
| 重定位旋转时抖动 | $J_4, J_6$ 解算跳变 | 锁定 $J_5$ 偏置角,使用 Wrist Jog 模式 |
| 工作空间边缘无法到达 | 肘部奇异或关节限位 | 切换 臂角配置,或调整基座安装高度 |
七、不同品牌控制器的实现差异
| 品牌 | 奇异处理功能 | 参数设置位置 | 特殊说明 |
|---|---|---|---|
| FANUC | Singularity Stop / Singularity Override | System Variables $SCR_GRP[1].$SINGularity |
$PARAM_GROUP[1].$WSTNDPOS 设置腕部奇异阈值角度 |
| KUKA | Singularities 设置 | 提交解释器 $SINGUL_C` | 支持自动插入辅助点(`$SINGUL_C = #PATH) |
|
| ABB | Singularity Area | Motion Settings → Singularity | SingArea \Wrist 指令允许腕部姿态插补 |
| YASKAWA | 奇异点回避功能 | 机器人参数 → 动作范围设定 | 需启用高级功能选项 |
以 ABB RAPID 语言为例,规避腕部奇异的典型程序结构:
PROC ArcMoveLinear(robtarget p1, robtarget p2, speeddata v)
! 检测路径是否穿越奇异
VAR singdata s;
s := GetNextSing(p1, p2);
IF s.type = SING_WRIST THEN
! 在奇异区前插入偏置点
VAR robtarget p_mid;
p_mid := Offs(p1, (p2.trans.x-p1.trans.x)/2,
(p2.trans.y-p1.trans.y)/2,
(p2.trans.z-p1.trans.z)/2);
! 强制J5避开0度
p_mid.rot := OrientZYX(ExtractEulerZYX(p1.rot)\Z + 30,
ExtractEulerZYX(p1.rot)\Y + 10,
ExtractEulerZYX(p1.rot)\X);
MoveL p_mid, v, fine, tool0;
SingArea \Wrist; ! 允许腕部奇异时姿态插补
MoveL p2, v, fine, tool0;
SingArea \Off; ! 恢复正常
ELSE
MoveL p2, v, fine, tool0;
ENDIF
ENDPROC
八、总结性设计准则
- 首选关节空间:对轨迹形状无约束时,优先使用
MOVJ而非MOVL - 腕部留余量:设计夹具和工艺时,尽量使常用姿态的 $J_5$ 保持在 $\pm 30°$ 以外
- 分层规划:粗插补在笛卡尔空间,精插补前在奇异附近切换至关节空间
- 仿真验证:使用 RobotStudio、ROBOGUIDE 等软件进行可达性分析与奇异检测
- 现场标定:通过实际试运行记录奇异发生位置,建立该台机器人的"奇异地图"
掌握上述方法,可在六轴机器人的应用中有效管理奇异点风险,实现高效、稳定、精确的自动化生产。

暂无评论,快来抢沙发吧!