Home / 机器人经典基础 / 奇异鲁棒逆解:允许一点偏差,换取可执行的关节运动

016|奇异鲁棒逆解:允许一点偏差,换取可执行的关节运动

总览 · 目录 · 上一篇 · 下一篇

论文:Yoshihiko Nakamura、Hideo Hanafusa,Inverse Kinematic Solutions With Singularity Robustness for Robot Manipulator Control,1986,JDSMC 108(3):163–171。原始出版入口。

先接住前作的问题

Resolved-rate在弱奇异方向可能要求巨大关节速度,本篇承接这个逆问题,允许近似任务运动以换取有界指令。可操作度帮助诊断方向能力。

五个前置概念

五个前置概念:病态矩阵对误差有大放大;伪逆给出最小范数最小二乘解;奇异值刻画方向能力;正则化用偏差换取稳定性;硬约束明确禁止超限,而不仅在目标中惩罚它。

一、问题设定:奇异附近怎样避免不可执行的巨大关节速度

机械臂接近完全伸直时,要求夹爪沿某个方向移动一点点,可能需要关节以极高速度转动。数学上的逆解可以存在,电机却执行不了。直接截断巨大速度又会破坏各关节之间的配合。

问题设定:病态与无解不是同一件事

设期望任务速度为 vdv_d,机器人满足 v=J(q)q˙v=J(q)\dot q。普通逆或伪逆给出 q˙=J†vd\dot q=J^\dagger v_d。若 JJ 满行秩,这个解能精确实现任务速度;但接近奇异时,最小奇异值很小,关节速度可能异常大。

在真正奇异点,某些任务速度方向根本不可实现;在邻近奇异点,这些方向虽然理论可实现,所需关节速度却可能超出硬件。工程控制必须同时面对两种情况,不能只在矩阵恰好不可逆时才采取措施。

这里研究的是机器人局部运动学,不是规划完整路径。输入是当前姿态、雅可比和任务速度;输出是关节速度。它没有奖励学习,也不自动计算电机力矩。若把有限速度误认为动力学可行,就忽略了加速度与力矩约束。

二、加入正则化,按奇异方向解释逆增益

采用等权教学形式,求解

min⁡q˙ ∥Jq˙−vd∥2+λ2∥q˙∥2.\min_{\dot q}\ \|J\dot q-v_d\|^2+\lambda^2\|\dot q\|^2.

第一项要求末端运动接近期望,第二项惩罚过大的关节速度。λ>0\lambda>0 决定折中程度。对目标求导得到

q˙λ=JT(JJT+λ2I)−1vd.\dot q_\lambda=J^T(JJ^T+\lambda^2I)^{-1}v_d.

实现应解线性方程,而不是显式计算逆矩阵。正则化使被求解矩阵保持正定,即使 JJ 降秩也能给出唯一有限的优化解。这是目标的性质,不是说原机器人突然获得失去的自由度。

令 J=UΣVTJ=U\Sigma V^T,每个奇异方向的逆增益从 1/σi1/\sigma_i 变为

gi=σiσi2+λ2.g_i=\frac{\sigma_i}{\sigma_i^2+\lambda^2}.

当 σi\sigma_i 很小,增益不再爆炸;当 σi\sigma_i 远大于 λ\lambda,行为接近伪逆。所实现的末端速度在该方向被乘以 σi2/(σi2+λ2)\sigma_i^2/(\sigma_i^2+\lambda^2),所以抑制关节速度必然伴随任务误差。

增益 g(σ)g(\sigma) 的最大值为 1/(2λ)1/(2\lambda),可由求导验证。这为理解数值放大提供一个简单上界,但它不是每个关节都严格满足指定速度上限的约束。如果某关节有特别低的限速,仍需要权重设计或带不等式约束的优化。

先把“求导得到”中省略的一步补上。二次目标的梯度为 2J⊤(Jq˙−vd)+2λ2q˙2J^\top(J\dot q-v_d)+2\lambda^2\dot q,令其为零得到 (J⊤J+λ2I)q˙=J⊤vd(J^\top J+\lambda^2I)\dot q=J^\top v_d。通过奇异值分解可验证它等价于上面的任务维数形式;哪一种线性系统更小,取决于关节数和任务维数,而不是两种算法具有不同物理含义。

还可以定量检查所谓“阻尼零空间”。记 Jλ#=J⊤(JJ⊤+λ2I)−1J_\lambda^\#=J^\top(JJ^\top+\lambda^2I)^{-1},则 Nλ=I−Jλ#JN_\lambda=I-J_\lambda^\#J 在一个非零奇异方向上保留 λ2/(σi2+λ2)\lambda^2/(\sigma_i^2+\lambda^2),因此通常 JNλ≠0JN_\lambda\ne0。原创例取 J=diag⁡(1,0.1),λ=0.1J=\operatorname{diag}(1,0.1),\lambda=0.1,辅助命令 z=(0,1)z=(0,1) 经 NλN_\lambda 后为 (0,0.5)(0,0.5),仍产生 (0,0.05)(0,0.05) 的任务速度。把这种泄漏误当主任务完全解耦,会使姿态优化偷偷改变末端轨迹。

对于等权模型,由 ∥Jλ#∥2≤1/(2λ)\|J_\lambda^\#\|_2\le1/(2\lambda) 可得 ∥q˙∥2≤∥vd∥2/(2λ)\|\dot q\|_2\le\|v_d\|_2/(2\lambda)。这可以给出保守的总速度预算,却不能精确描述每个电机的不同限速。可操作度诊断弱方向,本篇承接Resolved-rate的速度逆问题并允许近似;操作空间的动态零空间还要考虑惯性,不能把这里的阻尼矩阵直接当成力矩解耦投影。

阻尼在小奇异值方向压低逆增益,同时留下任务误差。下面直接计算最弱方向的输出,将这个代价与简单速度截断区分开,再读理论和仿真范围。

三、计算阻尼逆解,用最弱方向手算误差

输入:当前 q、目标任务速度 vd、阻尼参数 lambda
J ← 计算当前任务雅可比
A ← J*J转置 + lambda平方*单位矩阵
y ← 解线性方程 A*y = vd
dq ← J转置*y
检查预测末端误差 J*dq-vd、关节速度和限位余量
若超过硬件限制,进入明确设计的约束处理
输出 dq;下一控制周期依据新状态重新计算

这是一种现代标准化教学实现。原文的 SR-inverse 还涉及可行性评价与选择,未核实其全部调度细节,不能把固定 λ\lambda 宣称为原文唯一版本。

自构数值例子:最弱方向到底发生了什么

设 J=diag⁡(1,0.01)J=\operatorname{diag}(1,0.01),期望速度 vd=(0,1)v_d=(0,1)。伪逆要求第二个关节速度为 100。令 λ=0.1\lambda=0.1,阻尼解的第二分量为 0.01/(0.0001+0.01)≈0.99010.01/(0.0001+0.01)\approx0.9901。

此时末端第二方向实际速度只有约 0.0099010.009901,误差很大。这个例子刻意选得极端,用来说明“关节速度变小”不是免费收益:机器人几乎放弃了当前难以实现的任务方向。

若 λ\lambda 减小到 0.0010.001,同一分量约为 99.0199.01,跟踪恢复,但速度再次接近巨大伪逆值。没有一个阻尼参数能让真实缺失的运动能力凭空出现。更好的上层做法可能是换姿态、改路径或降低期望速度。

还可以把期望速度改为 (1,0)(1,0)。它沿强方向,阻尼影响小得多。由此可见,接近奇异不代表所有方向都一样危险,应结合任务速度在奇异向量上的投影分析。

四、区分理论、仿真主张与未核实数值

阻尼逆解:抑制放大,同时牺牲任务速度;曲线由正文解析公式直接计算,不是原论文仿真曲线
原创教学图:本文手算与几何示意;核对相关原文。非原论文图,非实验数据。

读图:曲线由正文解析公式直接计算,不是原论文仿真曲线。橙线在零附近发散,蓝线的峰值被 5 限制;右侧数值同时展示关节速度下降与任务速度损失。

理论与仿真怎样判断

出版全文及原图仍未取得。以下阻尼最小二乘是解释 SR-inverse 思想的教学推导;原稿的权重、调度函数和公式编号不作未核实归因。

原始摘要,问题定义。 逆解在奇异附近不可执行;研究重点是可行近似运动;具体机械臂设置未核实。

原始摘要,SR-inverse 描述。 替代普通逆与伪逆;方法接受笛卡尔轨迹近似;不能说完全消除跟踪误差。

原始摘要,性质与复杂度。 实施可行性分析;原文包含相关分析;原运算计数未核实。

原始摘要,仿真说明。 奇异问题与方法效果;原文有仿真演示;图号、峰值速度及重复次数未核实。

本文 SVD 推导。 逆增益与速度衰减;给出正则化作用的可计算解释;不替代实物实验。

目前不提供无法确认的实验表数字。若要复现实验,最有价值的图不是单一末端轨迹,而是同一横轴上的最小奇异值、关节速度峰值和末端速度误差。这样才能看见“牺牲什么,换来什么”。

比较时还应固定任务轨迹、采样周期、速度上限与后处理。若伪逆结果经过截断而阻尼结果没有截断,必须同时报告截断策略,否则无法解释差异究竟来自逆解还是限制器。

五、检查跟踪偏差、硬限位与碰撞约束

核心思想是把数值逆问题变成可调的近似问题,承认硬件能力比代数精确性更重要。它与可操作度形成互补:可操作度描述能力,阻尼逆解根据能力不足改变动作。

代价是跟踪偏差和参数选择。固定大阻尼会在正常姿态也降低准确度;过于突变的自适应阻尼可能导致指令不平滑。权重设置还涉及不同关节速度尺度,不能默认转动与移动关节的一单位成本相同。

阻尼不是碰撞避免,也不是严格的任务优先级工具。尤其把阻尼伪逆直接放入 I−J#JI-J^\#J 后,这个矩阵通常不再是真正零空间投影,辅助动作可能泄漏到主要任务。这里是由公式推出的实现提醒,不是原文已核实的实验结论。

六、追问:单纯增大阻尼能否同时解决关节硬限位和碰撞?

单纯增大阻尼能否同时解决关节硬限位和碰撞?

参考答案:不能。阻尼调节任务误差与关节运动大小的折中,但目标函数中没有因此自动出现位置硬限位或碰撞可行域。应分别检查速度增益是否被抑制,以及积分后的构型是否满足约束。若需要保证后者,必须增加相应的约束处理,不能把“数值有限”当“物理安全”。

七、在动态一致性与任务优先级中处理约束

八、自测与参考答案

1.为什么直接把伪逆输出逐关节截断不等价于阻尼最小二乘?

截断发生在解算之后,改变了关节间协作,却没有重新优化任务误差。阻尼解从一开始就在整个向量空间权衡两个目标;两者一般产生不同方向的末端误差。

2.阻尼让矩阵可逆,是否也让机器人雅可比恢复满秩?

没有。被正则化的是数值求解矩阵 JJT+λ2IJJ^T+\lambda^2I,真实运动关系仍由 JJ 决定。缺失方向仍然不能实现。

3.如果要求每个关节速度绝对不超过上限,单独选择 λ\lambda 足够吗?

通常不够。范数惩罚只鼓励小速度,不直接编码每关节边界。应使用带速度不等式的优化,或具有明确保证的限制机制,并重新评价任务误差。