嗨,我正在尝试在我的骨架系统中实现 IK,并且正在在线阅读一些文章,其中一种方法是使用雅可比矩阵的伪逆矩阵。但是,我已经看到了伪逆的 2 种形式,我想知道这两种表示的区别是什么。
第一种形式是 J+ = ((Jt*J).inverse()) * Jt
第二种形式是 J+ = Jt * ((J*Jt).inverse())
老实说,我什至不确定他们是如何得到第二种形式的,我目前只能推导出第一种形式。
任何帮助,将不胜感激!
嗨,我正在尝试在我的骨架系统中实现 IK,并且正在在线阅读一些文章,其中一种方法是使用雅可比矩阵的伪逆矩阵。但是,我已经看到了伪逆的 2 种形式,我想知道这两种表示的区别是什么。
第一种形式是 J+ = ((Jt*J).inverse()) * Jt
第二种形式是 J+ = Jt * ((J*Jt).inverse())
老实说,我什至不确定他们是如何得到第二种形式的,我目前只能推导出第一种形式。
任何帮助,将不胜感激!
通常,矩阵的逆具有将其与任一侧的原始矩阵相乘产生单位矩阵的性质。
A * A^-1 = A^-1 * A = I
然而,对于伪逆来说,这不再适用了。对于伪逆,顺序很重要(仅从矩阵可能不是正方形的事实来看)。你的第一种形式是左乘,你的第二种形式是右乘:
J+ * J = I <= J+ = (J^T * J)^-1 * J^T
J * J+ = I <= J+ = J^T * (J * A^T)^-1
如果您使用伪逆求解线性系统,当您有列向量时使用第一种形式(即J x = b
as J+ J x = I x = x = J+ b
),当您有行向量时使用第二种形式(即x J = b
)。