文章目录

六轴机器人奇异点的规避与路径规划

发布于 2026-03-24 07:41:22 · 浏览 9 次 · 评论 0 条

六轴工业机器人在执行轨迹跟踪任务时,会遇到一种特殊的位形状态——奇异点。在该状态下,机器人瞬间丧失一个或多个方向的运动能力,导致关节速度趋于无穷大、轨迹控制失效,甚至引发机械结构损坏。理解奇异点的形成机理并掌握有效的规避策略,是机器人编程与调试的核心技能之一。


一、奇异点的本质与分类

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 策略一:关节空间轨迹规划

原理:直接在关节空间插值,完全回避笛卡尔空间的直线约束。

适用场景:对末端轨迹形状无严格要求的搬运、点焊等应用。

执行步骤

  1. 设定 起始点与目标点的关节坐标 $\theta_{\text{start}}, \theta_{\text{end}}$
  2. 选择 插值方法:三次多项式、五次多项式或 S 曲线规划
  3. 验证 中间点是否穿越奇异区域——计算整条轨迹的可操作度 $w(\theta(t)) > w_{\min}$
  4. 执行 关节伺服运动

三次多项式插值公式

$$\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$ 耦合补偿。

具体操作

  1. 检测 当前路径段是否穿过 $J_5 \approx 0°$ 区域
  2. 计算 奇异点前后两个路径点的 $J_5$ 值,若符号相反则确认穿越
  3. 插入 中间路径点,强制 $J_5 = \pm 5° \sim \pm 10°$ 的"偏置角"
  4. 重新规划 过奇异区的姿态:保持工具位置不变,绕接近矢量旋转工具

姿态插值的 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 肘部奇异规避——肩部偏置法

当路径要求末端经过工作空间边界(如完全伸展姿态):

  1. 计算 当前构型的臂角 $\psi$(描述肘部上下/左右配置)
  2. 切换 臂角至对侧配置(如由 $\psi$ 变为 $-\psi$)
  3. 验证 新构型是否远离奇异且满足关节限位

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 离线编程阶段

graph TD A["CAD模型导入
任务轨迹定义"] --> B{"轨迹类型判断"} B -->|"点序列
PTP运动"| C["关节空间规划
直接插值"] B -->|"连续路径
LIN/CIRC"| D["笛卡尔空间规划"] D --> E["逆运动学求解
逐点计算关节角"] E --> F{"奇异检测"} F -->|"无奇异"| G["输出机器人程序"] F -->|"检测到奇异"| H["激活规避策略"] H --> I["姿态调整/
路径点插入/
臂角切换"] I --> E C --> G

4.2 在线执行阶段

  1. 预读 下一路径段,评估奇异风险等级
  2. 动态调整 进给速度倍率:接近奇异时 降低 至 $30\% \sim 50\%$
  3. 实时监测 关节速度、力矩,触发急停阈值时 暂停 并报警
  4. 记录 实际轨迹与规划轨迹的偏差,用于后续工艺优化

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

八、总结性设计准则

  1. 首选关节空间:对轨迹形状无约束时,优先使用 MOVJ 而非 MOVL
  2. 腕部留余量:设计夹具和工艺时,尽量使常用姿态的 $J_5$ 保持在 $\pm 30°$ 以外
  3. 分层规划:粗插补在笛卡尔空间,精插补前在奇异附近切换至关节空间
  4. 仿真验证:使用 RobotStudio、ROBOGUIDE 等软件进行可达性分析与奇异检测
  5. 现场标定:通过实际试运行记录奇异发生位置,建立该台机器人的"奇异地图"

掌握上述方法,可在六轴机器人的应用中有效管理奇异点风险,实现高效、稳定、精确的自动化生产。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文