gpt4 book ai didi

algorithm - 特征 - 旋转矩阵的重新正交化

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:27 28 4
gpt4 key购买 nike

在乘以很多旋转矩阵之后,由于舍入问题(去正交化),最终结果可能不再是有效的旋转矩阵

重新正交化的一种方法是遵循以下步骤:

  1. 将旋转矩阵转换为轴角表示法 ( link )
  2. 将轴角转换回旋转矩阵 ( link )

Eigen里面有什么东西吗?通过隐藏所有细节来做同样事情的库?或者有什么更好的配方吗?

由于特殊的奇点情况,必须小心处理此过程,因此,如果 Eigen 能为此提供更好的工具,那就太好了。

最佳答案

我不使用 Eigen,也懒得去查找 API,但这里有一个简单、计算成本低且稳定的程序来重新正交化旋转矩阵。此正交化程序取自 Direction Cosine Matrix IMU: Theory经过William Premerlani 和 Paul Bizard;等式 19-21。

xyz 为(稍微困惑的)旋转矩阵的行向量。让 error=dot(x,y) 其中 dot() 是点积。如果矩阵是正交的,则 xy 的点积,即 error 将为零。

error 平均分布在 xy 中:x_ort=x-(error/2)*yy_ort=y-(error/2)*x。第三行 z_ort=cross(x_ort, y_ort),根据定义正交于 x_orty_ort

现在,您仍然需要规范化 x_orty_ortz_ort,因为这些向量应该是单位向量。

x_new = 0.5*(3-dot(x_ort,x_ort))*x_ort
y_new = 0.5*(3-dot(y_ort,y_ort))*y_ort
z_new = 0.5*(3-dot(z_ort,z_ort))*z_ort

就这样,我们都完成了。

使用 Eigen 提供的 API 应该很容易实现。您可以很容易地想出其他正交化程序,但我认为它不会在实践中产生明显的差异。我在我的运动跟踪应用程序中使用了上述过程,并且效果很好;它既稳定又快速。

关于algorithm - 特征 - 旋转矩阵的重新正交化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23080791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com