为了将图像从机器人的相机框架转换为基础框架,我需要它的旋转矩阵,我有。
然而,在某些时候,我需要我的旋转矩阵的逆,这是一个3x3矩阵,来计算一些其他参数。获得的参数完全没有意义,所以我检查了逆是否实际上是正确的,事实证明,它不是。
当我乘以两个矩阵时,我没有得到单位矩阵。相反,我有一个形式矩阵
([[ 1.00000000e+00, 0.00000000e+00, -2.77555756e-17],
[ -1.11022302e-16, 1.00000000e+00, -2.77555756e-17],
[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00]]))
看起来很奇怪,但它不包含主对角线上的1和0。所以我不确定整件事情是错误的,还是仅仅是其中的一部分,无论哪种方式,我都不知道如何解决它,任何想法?
答案 0 :(得分:1)
您的结果是单位矩阵。像“-2.77555756e-17”这样的数字是计算单元有限精度的结果。
您可以参考https://en.wikipedia.org/wiki/Numerical_error和https://en.wikipedia.org/wiki/Round-off_error
答案 1 :(得分:1)
实际上,您显示的矩阵是在浮点计算范围内的单位矩阵。
Python将浮点数存储在8字节IEEE标准中,该标准可以存储15或16个有效十进制数字。分割产生的大多数数字不能准确存储,只能大致存储。当您使用接近1的数字进行计算时,您将获得接近1E-15的“零”值。
所有“零”值的绝对值都小于1E-15,因此您应该将它们视为零。不精确的数字来自计算矩阵的逆矩阵时出现的除法。