016|奇异鲁棒逆解:允许一点偏差,换取可执行的关节运动
论文:Yoshihiko Nakamura、Hideo Hanafusa,Inverse Kinematic Solutions With Singularity Robustness for Robot Manipulator Control,1986,JDSMC 108(3):163–171。原始出版入口。
先接住前作的问题
Resolved-rate在弱奇异方向可能要求巨大关节速度,本篇承接这个逆问题,允许近似任务运动以换取有界指令。可操作度帮助诊断方向能力。
五个前置概念
五个前置概念:病态矩阵对误差有大放大;伪逆给出最小范数最小二乘解;奇异值刻画方向能力;正则化用偏差换取稳定性;硬约束明确禁止超限,而不仅在目标中惩罚它。
一、问题设定:奇异附近怎样避免不可执行的巨大关节速度
机械臂接近完全伸直时,要求夹爪沿某个方向移动一点点,可能需要关节以极高速度转动。数学上的逆解可以存在,电机却执行不了。直接截断巨大速度又会破坏各关节之间的配合。
问题设定:病态与无解不是同一件事
设期望任务速度为 ,机器人满足 。普通逆或伪逆给出 。若 满行秩,这个解能精确实现任务速度;但接近奇异时,最小奇异值很小,关节速度可能异常大。
在真正奇异点,某些任务速度方向根本不可实现;在邻近奇异点,这些方向虽然理论可实现,所需关节速度却可能超出硬件。工程控制必须同时面对两种情况,不能只在矩阵恰好不可逆时才采取措施。
这里研究的是机器人局部运动学,不是规划完整路径。输入是当前姿态、雅可比和任务速度;输出是关节速度。它没有奖励学习,也不自动计算电机力矩。若把有限速度误认为动力学可行,就忽略了加速度与力矩约束。
二、加入正则化,按奇异方向解释逆增益
采用等权教学形式,求解
第一项要求末端运动接近期望,第二项惩罚过大的关节速度。 决定折中程度。对目标求导得到
实现应解线性方程,而不是显式计算逆矩阵。正则化使被求解矩阵保持正定,即使 降秩也能给出唯一有限的优化解。这是目标的性质,不是说原机器人突然获得失去的自由度。
令 ,每个奇异方向的逆增益从 变为
当 很小,增益不再爆炸;当 远大于 ,行为接近伪逆。所实现的末端速度在该方向被乘以 ,所以抑制关节速度必然伴随任务误差。
增益 的最大值为 ,可由求导验证。这为理解数值放大提供一个简单上界,但它不是每个关节都严格满足指定速度上限的约束。如果某关节有特别低的限速,仍需要权重设计或带不等式约束的优化。
先把“求导得到”中省略的一步补上。二次目标的梯度为 ,令其为零得到 。通过奇异值分解可验证它等价于上面的任务维数形式;哪一种线性系统更小,取决于关节数和任务维数,而不是两种算法具有不同物理含义。
还可以定量检查所谓“阻尼零空间”。记 ,则 在一个非零奇异方向上保留 ,因此通常 。原创例取 ,辅助命令 经 后为 ,仍产生 的任务速度。把这种泄漏误当主任务完全解耦,会使姿态优化偷偷改变末端轨迹。
对于等权模型,由 可得 。这可以给出保守的总速度预算,却不能精确描述每个电机的不同限速。可操作度诊断弱方向,本篇承接Resolved-rate的速度逆问题并允许近似;操作空间的动态零空间还要考虑惯性,不能把这里的阻尼矩阵直接当成力矩解耦投影。
阻尼在小奇异值方向压低逆增益,同时留下任务误差。下面直接计算最弱方向的输出,将这个代价与简单速度截断区分开,再读理论和仿真范围。
三、计算阻尼逆解,用最弱方向手算误差
输入:当前 q、目标任务速度 vd、阻尼参数 lambda
J ← 计算当前任务雅可比
A ← J*J转置 + lambda平方*单位矩阵
y ← 解线性方程 A*y = vd
dq ← J转置*y
检查预测末端误差 J*dq-vd、关节速度和限位余量
若超过硬件限制,进入明确设计的约束处理
输出 dq;下一控制周期依据新状态重新计算
这是一种现代标准化教学实现。原文的 SR-inverse 还涉及可行性评价与选择,未核实其全部调度细节,不能把固定 宣称为原文唯一版本。
自构数值例子:最弱方向到底发生了什么
设 ,期望速度 。伪逆要求第二个关节速度为 100。令 ,阻尼解的第二分量为 。
此时末端第二方向实际速度只有约 ,误差很大。这个例子刻意选得极端,用来说明“关节速度变小”不是免费收益:机器人几乎放弃了当前难以实现的任务方向。
若 减小到 ,同一分量约为 ,跟踪恢复,但速度再次接近巨大伪逆值。没有一个阻尼参数能让真实缺失的运动能力凭空出现。更好的上层做法可能是换姿态、改路径或降低期望速度。
还可以把期望速度改为 。它沿强方向,阻尼影响小得多。由此可见,接近奇异不代表所有方向都一样危险,应结合任务速度在奇异向量上的投影分析。
四、区分理论、仿真主张与未核实数值

读图:曲线由正文解析公式直接计算,不是原论文仿真曲线。橙线在零附近发散,蓝线的峰值被 5 限制;右侧数值同时展示关节速度下降与任务速度损失。
理论与仿真怎样判断
出版全文及原图仍未取得。以下阻尼最小二乘是解释 SR-inverse 思想的教学推导;原稿的权重、调度函数和公式编号不作未核实归因。
原始摘要,问题定义。 逆解在奇异附近不可执行;研究重点是可行近似运动;具体机械臂设置未核实。
原始摘要,SR-inverse 描述。 替代普通逆与伪逆;方法接受笛卡尔轨迹近似;不能说完全消除跟踪误差。
原始摘要,性质与复杂度。 实施可行性分析;原文包含相关分析;原运算计数未核实。
原始摘要,仿真说明。 奇异问题与方法效果;原文有仿真演示;图号、峰值速度及重复次数未核实。
本文 SVD 推导。 逆增益与速度衰减;给出正则化作用的可计算解释;不替代实物实验。
目前不提供无法确认的实验表数字。若要复现实验,最有价值的图不是单一末端轨迹,而是同一横轴上的最小奇异值、关节速度峰值和末端速度误差。这样才能看见“牺牲什么,换来什么”。
比较时还应固定任务轨迹、采样周期、速度上限与后处理。若伪逆结果经过截断而阻尼结果没有截断,必须同时报告截断策略,否则无法解释差异究竟来自逆解还是限制器。
五、检查跟踪偏差、硬限位与碰撞约束
核心思想是把数值逆问题变成可调的近似问题,承认硬件能力比代数精确性更重要。它与可操作度形成互补:可操作度描述能力,阻尼逆解根据能力不足改变动作。
代价是跟踪偏差和参数选择。固定大阻尼会在正常姿态也降低准确度;过于突变的自适应阻尼可能导致指令不平滑。权重设置还涉及不同关节速度尺度,不能默认转动与移动关节的一单位成本相同。
阻尼不是碰撞避免,也不是严格的任务优先级工具。尤其把阻尼伪逆直接放入 后,这个矩阵通常不再是真正零空间投影,辅助动作可能泄漏到主要任务。这里是由公式推出的实现提醒,不是原文已核实的实验结论。
六、追问:单纯增大阻尼能否同时解决关节硬限位和碰撞?
单纯增大阻尼能否同时解决关节硬限位和碰撞?
参考答案:不能。阻尼调节任务误差与关节运动大小的折中,但目标函数中没有因此自动出现位置硬限位或碰撞可行域。应分别检查速度增益是否被抑制,以及积分后的构型是否满足约束。若需要保证后者,必须增加相应的约束处理,不能把“数值有限”当“物理安全”。
七、在动态一致性与任务优先级中处理约束
- 教学联系:操作空间:直接设计夹爪的动力学行为。进入力矩控制后,冗余分解还须满足动态一致条件,不能照搬速度伪逆。
- 模块组合:全身任务层级:够不到目标时,先决定什么不能牺牲。把多个任务与约束按优先级组织,显式处理彼此冲突。
八、自测与参考答案
1.为什么直接把伪逆输出逐关节截断不等价于阻尼最小二乘?
截断发生在解算之后,改变了关节间协作,却没有重新优化任务误差。阻尼解从一开始就在整个向量空间权衡两个目标;两者一般产生不同方向的末端误差。
2.阻尼让矩阵可逆,是否也让机器人雅可比恢复满秩?
没有。被正则化的是数值求解矩阵 ,真实运动关系仍由 决定。缺失方向仍然不能实现。
3.如果要求每个关节速度绝对不超过上限,单独选择 足够吗?
通常不够。范数惩罚只鼓励小速度,不直接编码每关节边界。应使用带速度不等式的优化,或具有明确保证的限制机制,并重新评价任务误差。