反转旋转矩阵不工作:python,ROS

时间:2016-06-17 12:40:17

标签: python matrix inverse

为了将图像从机器人的相机框架转换为基础框架,我需要它的旋转矩阵,我有。

然而,在某些时候,我需要我的旋转矩阵的逆,这是一个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。所以我不确定整件事情是错误的,还是仅仅是其中的一部分,无论哪种方式,我都不知道如何解决它,任何想法?

2 个答案:

答案 0 :(得分:1)

您的结果是单位矩阵。像“-2.77555756e-17”这样的数字是计算单元有限精度的结果。

您可以参考https://en.wikipedia.org/wiki/Numerical_errorhttps://en.wikipedia.org/wiki/Round-off_error

答案 1 :(得分:1)

实际上,您显示的矩阵是在浮点计算范围内的单位矩阵。

Python将浮点数存储在8字节IEEE标准中,该标准可以存储15或16个有效十进制数字。分割产生的大多数数字不能准确存储,只能大致存储。当您使用接近1的数字进行计算时,您将获得接近1E-15的“零”值。

所有“零”值的绝对值都小于1E-15,因此您应该将它们视为零。不精确的数字来自计算矩阵的逆矩阵时出现的除法。