【问题标题】:Inverse of a rotation Matrix not working: python, ROS [duplicate]旋转矩阵的逆不起作用:python,ROS [重复]
【发布时间】:2016-06-17 12:40:17
【问题描述】:

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

但是,在某些时候,我需要我的旋转矩阵的逆矩阵(一个 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。所以我不确定整个事情是错误的,还是只是部分错误,无论哪种方式我都不知道如何解决它,有什么想法吗?

【问题讨论】:

  • 发布实际矩阵以及如何得到逆矩阵对回答您的问题非常有帮助。
  • 如果您仔细查看发布的矩阵,它与单位矩阵非常接近。请注意,浮点数算术是近似的。

标签: python matrix inverse


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多