Part I · 第 3 章 多元与向量微积分 · 3.4

机器人雅可比

关节在转,手爪怎么动?反过来,想让手爪以某个速度走,关节该转多快?手爪要推一个物体,各个关节要出多大力矩?这三个问题共用同一个矩阵:机械臂雅可比。它的每一列都有一个朴素的几何含义:关节到手爪的"杠杆臂"转 90°。看懂这一点,奇异位形、可操作度椭圆、力与速度的对偶、数值逆运动学就都顺理成章了。

约 30 分钟 前置:1.12 SVD · 1.13 最小二乘与伪逆 · 3.3 雅可比 5 个交互

    1为什么机器人需要它

    用遥操作手柄或者视觉伺服去控制机械臂,你想要的是"手爪朝这个方向、以这个速度走",电机能听懂的却是"每个关节转多快"。中间的翻译官就是雅可比 \(J(\boldsymbol\theta)\):

    • 速度运动学:\(\mathbf v = J(\boldsymbol\theta)\,\dot{\boldsymbol\theta}\),关节速度 → 手爪速度。
    • 微分/数值逆运动学:\(\dot{\boldsymbol\theta} = J^{+}\mathbf v\),手爪速度 → 关节速度。每一步迭代都要解一次。
    • 静力学:\(\boldsymbol\tau = J^\top \mathbf F\),手爪受力 → 关节力矩。力控制、阻抗控制、接触力估计都靠它。
    • 奇异性与可操作性:\(J\) 什么时候"失去一个方向"?手臂在哪些姿态下又快又灵活?

    3.3 节已经说过雅可比是局部线性变换,并且对两连杆臂做了求导。这一节换一个角度:不求导,直接从几何出发造出雅可比,然后用它搭一个能用的逆运动学求解器。(等到 5.10 节学了指数积公式,会看到同样的结构在三维中的推广。)

    2直觉:一次只转一个关节,手爪画一段圆弧

    考虑平面内的串联臂,每个关节都是转轴垂直于纸面的转动关节。先只转第 \(i\) 个关节,其余关节锁住:位于第 \(i\) 个关节之后的整条手臂变成一个刚体,绕关节 \(i\) 的转轴转动,手爪自然绕这个轴心画一段圆弧。圆弧的半径,就是关节 \(i\) 到手爪的距离 \(\|\mathbf r_i\|\),其中 \(\mathbf r_i = \mathbf p_{\text{tip}} - \mathbf p_i\),称为杠杆臂。

    刚体绕定轴转动时,距离轴心 \(r\) 的点速度大小是 \(\omega r\),方向垂直于杠杆臂。平面里"垂直"有一个现成的算子:把 \(\mathbf r\) 逆时针转 90°,即 \(\hat{\mathbf z}\times\mathbf r = (-r_y,\;r_x)\)。所以关节 \(i\) 以单位角速度转动时,手爪的速度就是

    $$ \mathbf J_i \;=\; \frac{\partial \mathbf p_{\text{tip}}}{\partial \theta_i} \;=\; \hl{z}{\hat{\mathbf z}\times}\;\hl{lever}{\big(\mathbf p_{\text{tip}} - \mathbf p_i\big)} \;=\; \begin{bmatrix} -(y_{\text{tip}} - y_i) \\ \;\;x_{\text{tip}} - x_i \end{bmatrix}. $$

    下图是一条三连杆臂。选一个关节,看它的杠杆臂(虚线)、手爪走的圆弧,以及速度箭头 \(\mathbf J_i\)。拖动关节上的圆圈改变姿态,箭头始终垂直于虚线,长度等于虚线的长度。

    FIG 1杠杆臂与单关节速度
    三个关节分别用红、绿、蓝表示(后面雅可比的三列也用同样的颜色)。粗弧线是只转这个关节 ±0.5 rad 时手爪的轨迹;实心箭头是单位角速度下手爪的速度 \(\mathbf J_i\),暗淡的箭头是另外两列(箭头均按 0.6 倍长度绘制)。拖动圆圈:关节 \(k\) 处的圆圈决定第 \(k\) 根连杆的朝向。
    • 依次选中三个关节,观察红、绿、蓝箭头:离手爪越远的关节,箭头越长。
    • 把手臂折回,让关节 2 的箭头比关节 3 的更短。关节 3 的箭头长度永远等于什么?
    核心洞见

    雅可比的第 \(i\) 列 = 把关节 \(i\) 到手爪的杠杆臂转 90°。转得越"外面"的关节杠杆臂越长,对手爪速度的贡献越大;手爪每个时刻的速度,就是各关节贡献的叠加:\(\mathbf v = \sum_i \dot\theta_i\,\mathbf J_i\)。

    3动手玩:关节速度的叠加

    现在三个关节同时转。用滑块给出关节角速度 \(\dot\theta_1,\dot\theta_2,\dot\theta_3\):红、绿、蓝箭头是 \(\dot\theta_i\mathbf J_i\),首尾相接地从手爪出发,终点连成的琥珀色箭头就是手爪的速度 \(\mathbf v\)。紫色虚线是"按这个速度真实运动一小段时间"时手爪走过的路径。因为雅可比只是一阶近似,时间越短,琥珀色预测与真实位置越贴合。

    FIG 2速度叠加实验室
    箭头按 1 s 的位移画出(单位 m/s 对应 1 m)。琥珀色空心圆圈是 \(\mathbf p + \mathbf v\,T\),紫色路径是关节匀速转动 \(T\) 秒、手爪的真实轨迹,终点的实心紫点是真实位置。读数里的"几何 − 数值"是用上面的杠杆臂公式算出的雅可比,与对 FK 做数值差分得到的雅可比的最大差,应当在 \(10^{-10}\) 量级(极小)。
    试一试
    • 用三个滑块让手爪竖直向上运动:\(v_y>0.6\),\(|v_x|<0.04\)。
    • 切换成"2 连杆"。能否让手爪向任意方向运动?换成"3 连杆",同样的手爪速度有几种关节速度组合?

    注意:2 个关节、2 维速度,方程数等于未知数,解唯一;3 个关节、2 维速度,未知数比方程多一个,满足同一个 \(\mathbf v\) 的关节速度有无穷多组,它们之间相差一个"手爪完全不动"的关节运动。这叫冗余,后面的逆运动学与零空间控制里会反复遇到。

    4第二、第三视角:椭圆与力

    可操作度椭圆与奇异位形

    1.12 节说过:矩阵把单位圆变成椭圆,半轴就是奇异值。这里的"单位圆"是所有满足 \(\|\dot{\boldsymbol\theta}\|\le 1\) 的关节速度,它在 \(J\) 的作用下变成手爪速度的一个椭圆,即可操作度椭圆:椭圆越圆,手爪在各个方向上都同样灵活;椭圆被压扁成线段,说明某个方向上无论关节怎么转,手爪都走不动,这就是奇异位形。右图是 \(J\) 的两个奇异值 \(\sigma_1\ge\sigma_2\) 随肘部角度 \(\theta_2\) 的变化曲线。

    FIG 3可操作度椭圆
    工作空间:|θ̇| ≤ 1 的速度椭圆
    σ₁, σ₂ 随 θ₂ 变化
    琥珀色椭圆的半轴是 \(\sigma_1\)、\(\sigma_2\),方向是 \(JJ^\top\) 的特征向量。右图中红线是 \(\sigma_1\),绿线是 \(\sigma_2\),竖直虚线标出当前的 \(\theta_2\)。2 连杆时 \(\sigma_2\) 在 \(\theta_2 = 0, \pm\pi\) 处降到 0。
    • 用"2 连杆",把手臂拉直,让 \(\sigma_2<0.03\):椭圆变成一条线段。线段沿什么方向?
    • 用"3 连杆",把椭圆调成几乎正圆(\(\sigma_1/\sigma_2<1.15\),读数里的 κ)。再试"2 连杆":这组连杆长度下它最好只能到约 1.19(在 \(\theta_2\approx\pm3\pi/4\)),因为两连杆要做到严格正圆需要 \(l_1=\sqrt2\,l_2\)。

    力的对偶:\(\boldsymbol\tau = J^\top\mathbf F\)

    让手爪顶住一个物体、对它施加力 \(\mathbf F\),各关节需要多大力矩来"撑住"?用虚功原理:手爪位移 \(\delta\mathbf x = J\,\delta\boldsymbol\theta\) 时,手爪做的功 \(\mathbf F^\top\delta\mathbf x\) 必须等于各关节做的功 \(\boldsymbol\tau^\top\delta\boldsymbol\theta\)。对任意 \(\delta\boldsymbol\theta\) 成立,就得到 \(\boldsymbol\tau = J^\top\mathbf F\)。几何上更直观:\(\tau_i = \mathbf J_i\cdot\mathbf F = \hat{\mathbf z}\cdot(\mathbf r_i\times\mathbf F)\),就是力 \(\mathbf F\) 对关节 \(i\) 的力矩。

    于是同一个矩阵管着两件事:\(J\) 把关节速度映到手爪速度,\(J^\top\) 把手爪的力映到关节力矩。速度椭圆的长轴方向"容易动",在这个方向上,同样的关节力矩只能撑起很小的力;速度椭圆的短轴方向"难动",同样的力矩却能撑起很大的力。力椭圆(紫色)的半轴恰好是 \(1/\sigma_i\):形状与速度椭圆互为倒数。

    FIG 4手爪的力与关节力矩
    τ₁
    τ₂
    τ₃
    拖动琥珀色手柄设定手爪力 \(\mathbf F\)(1 m 对应 1 N),拖动关节圆圈改变姿态。红色竖线是关节力矩上限 \(\tau_{\max}\),超限的力矩条变红。浅琥珀色椭圆是速度椭圆,紫色椭圆是力椭圆 \(\{\mathbf F : \|J^\top\mathbf F\|\le 1\}\),半轴超过 4 N 的部分被截断。
    • 让手爪力 \(\|\mathbf F\|\ge 1\) N,而所有关节力矩都几乎为 0(\(\|\boldsymbol\tau\|<0.12\))。提示:什么姿态下,沿着手臂推一把,关节完全不需要出力?
    速度与力:一个矩阵,两个方向

    \(\mathbf v = J\dot{\boldsymbol\theta}\)(关节 → 手爪)和 \(\boldsymbol\tau = J^\top\mathbf F\)(手爪的力 → 关节)。奇异位形下手爪沿某个方向"走不动",同一个方向上手爪却能"顶得住",结构本身承担了载荷,关节力矩为零:这是为什么伸直的手臂可以举很重的东西,也是为什么这样的姿态在力控制里不可靠,因为这个方向上对力几乎没有控制能力。

    5再看数学

    提示:把鼠标悬停在公式中带底色的符号上,FIG 1 中对应的元素会被高亮。

    从正运动学求导,验证几何公式

    \(n\) 连杆平面臂,连杆长 \(l_k\),第 \(k\) 根连杆的绝对朝向 \(\phi_k = \theta_1+\cdots+\theta_k\)。手爪位置与关节 \(i\) 的位置是:

    $$ \mathbf p_{\text{tip}} = \sum_{k=1}^{n} l_k \begin{bmatrix}\cos\phi_k\\ \sin\phi_k\end{bmatrix},\qquad \mathbf p_i = \sum_{k=1}^{i-1} l_k \begin{bmatrix}\cos\phi_k\\ \sin\phi_k\end{bmatrix}. $$

    \(\theta_i\) 只出现在 \(\phi_k\)(\(k\ge i\))里,且 \(\partial\phi_k/\partial\theta_i = 1\),因此

    $$ \frac{\partial\mathbf p_{\text{tip}}}{\partial\theta_i} = \sum_{k=i}^{n} l_k\begin{bmatrix}-\sin\phi_k\\ \cos\phi_k\end{bmatrix} = \hat{\mathbf z}\times\Big(\sum_{k=i}^{n} l_k\begin{bmatrix}\cos\phi_k\\ \sin\phi_k\end{bmatrix}\Big) = \hat{\mathbf z}\times\big(\mathbf p_{\text{tip}} - \mathbf p_i\big). $$

    求导和杠杆臂两条路给出同一个结果。对 \(n=2\) 就是 3.3 节的 \(J = \begin{bmatrix}-l_1s_1-l_2s_{12} & -l_2s_{12}\\ l_1c_1+l_2c_{12} & l_2c_{12}\end{bmatrix}\);第二列只含 \(l_2\),因为关节 2 之后只有一根连杆。

    完整的平面雅可比与三维的推广

    手爪的朝向 \(\phi_n = \sum_i\theta_i\),对每个 \(\theta_i\) 的偏导都是 1,即角速度 \(\omega = \sum_i\dot\theta_i\)。把位置和朝向合在一起,平面臂的完整雅可比是 \(3\times n\) 的:

    $$ \begin{bmatrix} v_x\\ v_y\\ \omega\end{bmatrix} = \begin{bmatrix} \ci{\mathbf J_1} & \cj{\mathbf J_2} & \cdots & \mathbf J_n\\ \ci{1} & \cj{1} & \cdots & 1\end{bmatrix}\begin{bmatrix}\dot\theta_1\\ \dot\theta_2\\ \vdots\\ \dot\theta_n\end{bmatrix}, \qquad \mathbf J_i = \hat{\mathbf z}\times(\mathbf p_{\text{tip}}-\mathbf p_i). $$

    三维空间里,每个转动关节有转轴方向 \(\hat{\boldsymbol\omega}_i\) 和轴上一点 \(\mathbf q_i\),对应的列是 \(\begin{bmatrix}\hat{\boldsymbol\omega}_i\times(\mathbf p_{\text{tip}}-\mathbf q_i)\\ \hat{\boldsymbol\omega}_i\end{bmatrix}\):上半部分仍然是"转轴叉乘杠杆臂",下半部分是转轴本身(1.8 节的叉积);平移关节的列则是 \(\begin{bmatrix}\hat{\mathbf a}_i\\ \mathbf 0\end{bmatrix}\),\(\hat{\mathbf a}_i\) 是滑动方向。这就是 \(6\times n\) 的几何雅可比,5.10 节会用 twist 把它写得更紧凑。

    用 SVD 读椭圆

    设 \(J = U\Sigma V^\top\)(1.12 节)。单位关节速度球 \(\|\dot{\boldsymbol\theta}\|\le1\) 的像是速度椭圆,半轴为 \(\sigma_i\),沿 \(U\) 的第 \(i\) 列。力椭圆 \(\{\mathbf F:\|J^\top\mathbf F\|\le1\}\):因为 \(\|J^\top\mathbf F\|^2 = \sum_i\sigma_i^2(\mathbf u_i\cdot\mathbf F)^2\),半轴是 \(1/\sigma_i\),方向相同。常用的标量指标有:

    $$ w(\boldsymbol\theta) = \sqrt{\det\!\big(JJ^\top\big)} = \sigma_1\sigma_2, \qquad \kappa(J) = \frac{\sigma_1}{\sigma_2}, \qquad \sigma_{\min}(J). $$

    \(w\) 是 Yoshikawa 可操作度,正比于椭圆面积;\(\kappa\) 是条件数,等于 1 时椭圆是正圆(各向同性);\(\sigma_{\min}\) 衡量离奇异有多远。对 2 连杆,\(J\) 是方阵,\(w = |\det J| = l_1l_2|\sin\theta_2|\)(3.3 节)。

    逆运动学:从 \(J^{-1}\) 到伪逆与阻尼最小二乘

    目标位置 \(\mathbf t\),当前手爪位置 \(\mathbf p\),误差 \(\mathbf e = \mathbf t - \mathbf p\)。把 \(\mathbf e\) 当作"想要的位移",在当前姿态线性化(3.3 节),每一步解 \(J\,\Delta\boldsymbol\theta\approx\mathbf e\),更新 \(\boldsymbol\theta\leftarrow\boldsymbol\theta+\Delta\boldsymbol\theta\),重新计算 \(J\),重复。解法有三种常见选择:

    $$ \Delta\boldsymbol\theta = \underbrace{\alpha\,J^\top\mathbf e}_{\text{transpose}},\qquad \underbrace{J^{+}\mathbf e = J^\top(JJ^\top)^{-1}\mathbf e}_{\text{pseudo-inverse}},\qquad \underbrace{J^\top\big(JJ^\top+\lambda^2 I\big)^{-1}\mathbf e}_{\text{damped least squares}}. $$

    伪逆(1.13 节)在 \(J\) 行满秩时给出所有解里 \(\|\Delta\boldsymbol\theta\|\) 最小的一个。它在奇异点附近出问题:\(\|J^+\| = 1/\sigma_{\min}\to\infty\),关节被要求以极大速度转动。阻尼最小二乘(Nakamura–Hanafusa、Wampler)在 \(JJ^\top\) 上加 \(\lambda^2I\),等价于最小化 \(\|J\Delta\boldsymbol\theta-\mathbf e\|^2+\lambda^2\|\Delta\boldsymbol\theta\|^2\):奇异值 \(\sigma\) 对应的放大倍数从 \(1/\sigma\) 变成 \(\sigma/(\sigma^2+\lambda^2)\),最大不超过 \(1/(2\lambda)\),用一点精度换取稳定。转置法不需要求逆,只是沿代价 \(\tfrac12\|\mathbf e\|^2\) 的负梯度(3.2 节)\(J^\top\mathbf e\) 走,收敛慢但永远安全,6.3 节会说明这正是梯度下降。

    冗余与零空间

    当 \(n>2\)(位置任务),\(J\) 有非平凡零空间(1.6 节):\(J\mathbf n = \mathbf 0\) 的关节运动不改变手爪位置,称为自运动。\(3\) 连杆臂的位置雅可比是 \(2\times3\),零空间是一维的,方向可以用两行的叉积得到:\(\mathbf n\propto\mathbf j_1\times\mathbf j_2\)(\(\mathbf j_k\) 是 \(J\) 的第 \(k\) 行,1.8 节)。一般地,所有解为

    $$ \dot{\boldsymbol\theta} \;=\; J^{+}\mathbf v \;+\; \big(I - J^{+}J\big)\,\mathbf z,\qquad \mathbf z\ \text{arbitrary}. $$

    第一项把任务完成,第二项把任意的"次要目标" \(\mathbf z\)(远离关节限位、躲避障碍、保持肘部朝上)投影到零空间里,不干扰主任务。

    6机器人中的它:用雅可比做逆运动学

    下图是真实的迭代流程:拖动目标(黄色菱形),三连杆臂每一步按所选方法计算 \(\Delta\boldsymbol\theta\),直到误差足够小。右侧画出每次迭代的误差(对数坐标),可以比较三种方法。把目标拖到伸直的边界附近,看伪逆法发生什么;把目标拖出可达范围,看阻尼最小二乘如何"尽量靠近"。

    底部的"自运动"按钮让手臂沿零空间运动:手爪纹丝不动,肘部却在扫过一圈。这是冗余机械臂能"绕开障碍物而不打断任务"的原因。

    FIG 5雅可比逆运动学
    误差 ‖e‖(对数)vs 迭代次数
    每一步的关节增量长度被限制在 0.6 rad 以内(真实控制器的速度限幅)。伪逆法在 \(\sigma_{\min}\) 很小时会"想"走很大的一步,读数里的"未限幅的步长"就是它;阻尼最小二乘的 \(\lambda\) 可以用滑块调节。
    • 用任意方法让误差降到 \(10^{-3}\) 以下。
    • 先把目标拖到可达范围边缘(半径略小于 2.3)并用"连续迭代"让手臂几乎伸直,再把目标拖到可达范围之外(半径大于 2.3):选"伪逆",看未限幅的步长有多大;然后换"阻尼最小二乘"重做同样的操作。
    • 到达目标后点"自运动",让手臂在手爪不动的情况下变形至少 1.5 rad(关节角的总变化)。
    真实系统里

    遥操作 / 末端笛卡尔控制:Franka、UR 等机械臂的笛卡尔速度模式,本质上每个控制周期(几百 Hz 到 1 kHz)都在算 \(\dot{\boldsymbol\theta}=J^{+}\mathbf v\),并在奇异点附近加阻尼或减速。数值 IK 求解器(KDL、MoveIt 的 IK 插件等)都是上面三种方法的变体,再加关节限位与零空间次要任务。力控制与阻抗控制:用 \(\boldsymbol\tau = J^\top\mathbf F\) 把期望的笛卡尔力变成关节力矩。接触力估计:反过来,从关节力矩估计手爪受力,需要求 \(J^\top\) 的(伪)逆,在奇异方向上估计会失真。规划:采样式规划器常常用 \(\sigma_{\min}\) 或可操作度 \(w\) 避开奇异位形。

    7常见误区

    误区 1:忽略雅可比所在的坐标系

    \(\mathbf J_i\) 里的 \(\mathbf p\) 是在某个坐标系里写的(基座系?工具系?)。基座系里的 \(J\) 与工具系里的 \(J\) 相差一个旋转(以及三维里的伴随变换,5.8 节)。把基座系的速度指令塞进工具系的雅可比,手爪会朝着奇怪的方向走。

    误区 2:把一次计算的 \(J\) 用于大步长

    \(J\) 随姿态变化,\(\mathbf v = J\dot{\boldsymbol\theta}\) 只是瞬时关系。FIG 2 里把预览时间 \(T\) 拉大,真实路径就会弯离直线预测。位移指令要拆成许多小步,每一步重新计算 \(J\)(FIG 5 正是这样做的)。

    误区 3:直接求 \(J^{-1}\)

    冗余臂的 \(J\) 不是方阵,没有逆;方阵时在奇异点附近 \(J^{-1}\) 的元素爆炸。工程里几乎总是用伪逆加阻尼(或 SVD 截断小的奇异值),并对关节速度限幅。\(\|J\|\) 本身并不大,不代表 \(J^{-1}\) 安全。

    误区 4:混合不同量纲的行

    完整雅可比的上半部分是 m/rad,下半部分是 rad/rad(无量纲)。对这样的 \(6\times n\) 矩阵直接做 SVD 或求"可操作度",数值取决于你用米还是毫米,没有物理意义。要么分别分析平移和旋转两块,要么先按任务给各行加权。

    误区 5:奇异位形只在"工作空间边界"

    伸直、折回确实发生在边界上,但许多机械臂(例如手腕三个轴中有两个共线的"万向节锁")在工作空间内部也有奇异位形,手爪恰好经过时同样会出问题。路径规划必须检查沿途的 \(\sigma_{\min}\),而不仅仅是起点和终点。

    8小练习

    1. 两连杆臂 \(l_1=l_2=1\),姿态 \(\boldsymbol\theta = (0,\ \pi/2)\)。它的雅可比是?
    手爪在 \((1,1)\),关节 1 在原点,关节 2 在 \((1,0)\)。杠杆臂 \(\mathbf r_1=(1,1)\),\(\mathbf r_2=(0,1)\),各转 90°:\(\mathbf J_1=(-1,1)\),\(\mathbf J_2=(-1,0)\)。所以 \(J=\begin{bmatrix}-1&-1\\1&0\end{bmatrix}\),\(\det J=1=l_1l_2\sin\theta_2\),与公式吻合。
    2. 同样的臂与姿态,手爪向下压桌面,对桌面施加 \(\mathbf F=(0,-10)\) N。关节需要输出的力矩 \(\boldsymbol\tau\)(单位 N·m)是?
    \(\boldsymbol\tau=J^\top\mathbf F=\begin{bmatrix}-1&1\\-1&0\end{bmatrix}\begin{bmatrix}0\\-10\end{bmatrix}=\begin{bmatrix}-10\\0\end{bmatrix}\)。直观检查:手爪施加的力 \(\mathbf F\) 对原点的力矩是 \(\mathbf r_1\times\mathbf F = 1\cdot(-10)-1\cdot0=-10\);对肘部(\((1,0)\))的杠杆臂 \((0,1)\) 与力平行,力矩为 0。注意符号约定:\(\mathbf F\) 是手爪施加给外界的力;若改问"撑住一个挂在手爪上的向下重物",外力是 \(\mathbf F_{\text{ext}}\),关节要输出 \(-J^\top\mathbf F_{\text{ext}}=(10,0)\)。
    3. 平面 3 连杆臂只关心手爪位置(2 维),雅可比是 \(2\times3\),非奇异时它的零空间有几维?
    秩–零化度定理(1.6 节):零空间维数 = 列数 − 秩 = \(3-2=1\)。这一维就是 FIG 5 里的"自运动":关节在变,手爪不动。
    4. 对冗余臂,\(\dot{\boldsymbol\theta}=J^{+}\mathbf v\) 是满足 \(J\dot{\boldsymbol\theta}=\mathbf v\) 的所有关节速度里的哪一个?
    所有解是 \(J^{+}\mathbf v\) 加上零空间里的任意向量;零空间向量与 \(J^{+}\mathbf v\)(它在 \(J\) 的行空间里)正交,所以加上它们只会增大范数。伪逆给出的是最小范数解。
    5. 手臂靠近奇异位形时,为什么常用阻尼最小二乘 \(J^\top(JJ^\top+\lambda^2I)^{-1}\) 代替伪逆?
    对奇异值 \(\sigma\),放大倍数是 \(\sigma/(\sigma^2+\lambda^2)\),当 \(\sigma=\lambda\) 时取最大值 \(1/(2\lambda)\)。它并不改变真实的 \(J\)(真实的奇异性还在),也不比伪逆更精确(远离奇异点时两者几乎一样,近处它故意有一点偏差)。

    9延伸阅读

    • K. Lynch & F. Park, Modern Robotics, Ch. 5 — 速度运动学与静力学:雅可比、奇异位形、可操作度椭球、力椭球
    • B. Siciliano, L. Sciavicco, L. Villani & G. Oriolo, Robotics: Modelling, Planning and Control, Ch. 3 — 微分运动学与静力学,几何雅可比、冗余度与零空间
    • S. R. Buss, Introduction to Inverse Kinematics with Jacobian Transpose, Pseudoinverse and Damped Least Squares Methods (2004) — 对三种迭代 IK 的简明比较,本节 FIG 5 的参照
    • T. Yoshikawa, Manipulability of Robotic Mechanisms, Int. J. Robotics Research 4(2), 1985 — 可操作度指标的出处
    • Y. Nakamura & H. Hanafusa, Inverse Kinematic Solutions with Singularity Robustness for Robot Manipulator Control, J. Dynamic Systems, Measurement, and Control 108, 1986 — 阻尼最小二乘用于奇异点附近的逆运动学