计算两个传感器之间的变换矩阵

计算科学 优化 Python 矩阵 算法 非线性方程
2021-12-24 05:04:16

我的问题是我是否可以计算两个传感器之间的转换矩阵。

每个传感器提供一个4×4记录的每个时间步长的矩阵。传感器正在移动并且数据中有一些噪音。我想用给定的数据计算两个传感器之间的最佳拟合变换矩阵,因为我无法测量传感器彼此的位置。

目前我正在尝试使用本文中的算法获取转换矩阵。我想问这是否是一个解决方案,或者我错过了什么。

1个回答

您链接到的论文描述了一种类似于我所看到的 Kabsch 算法的算法。它用于查找两组点之间的最小二乘旋转。对于您的情况,您完全需要其他东西。

假设传感器 1 有矩阵M1在时间 t 和传感器 2 有矩阵M2在时间 t。这意味着一个向量,其在传感器 1 的局部坐标系中的坐标是vi1, 在传感器 2 的局部坐标系中,坐标等于v一世2=2-11v一世1 所以这两个传感器之间的转换矩阵是2-11. 如果您采用该矩阵的旋转部分(基本上是 3x3 部分),它将为您提供传感器 2 和传感器 1 之间的旋转矩阵。如果您想要它们的相对位置,请采用1并从中减去翻译部分2. 这将是“世界”坐标系中传感器 1 相对于传感器 2 的位置。

如果您的传感器彼此相对移动并且您的数据嘈杂,那么简单的平均值是不够的。我建议你使用卡尔曼滤波器卡尔曼滤波器包含一个模型(例如恒定加速度模型),以及对模型准确度的连续评估,并根据输入调整模型参数。

但是,如果相对旋转在每个时间点都是相同的,并且您试图找到一个“平均”旋转来对输入进行去噪,我找到了一篇关于该主题的整篇论文:http://users.cecs.anu。 edu.au/~hongdong/rotationaveraging.pdf 我还发现了关于平均四元数的讨论,这似乎提出了一个简单的解决方案: https ://stackoverflow.com/questions/12374087/average-of-multiple-quaternions