我正在开发EKF,并且对协方差矩阵的坐标框架转换有疑问。假设我得到了带有对应的6x6协方差矩阵$ C $的测量值$(x,y,z,roll,pitch,yaw)$。该度量和$ C $在某些坐标系$ G_1 $中给出。我需要将测量值转换为另一个坐标系$ G_2 $。转换测量本身并不容易,但我还需要转换其协方差,对吗? $ G_1 $和$ G_2 $之间的转换应该无关紧要,但是我仍然需要旋转它。如果我是正确的,我将如何做?对于$ x $,$ y $和$ z $之间的协方差,我的第一个念头是简单地应用3D旋转矩阵,但这仅适用于完整6x6协方差矩阵中的3x3子矩阵。我是否需要对所有四个块应用相同的旋转?

#1 楼

协方差定义为

$ \ begin {align}
C&= \ mathbb {E}(XX ^ T)-\ mathbb {E}(X)\ mathbb {E}( X ^ T)
\ end {align} $

其中,在您的情况下,$ X \ in \ mathbb {R} ^ 6 $是您的状态向量,而$ C $是

对于转换后的状态$ X'= RX $,在您的情况下,其中$ R \ in \ mathbb {R} ^ {6 \ times 6} $ br />
$ \ begin {align}
C'&= \ mathbb {E}(X'X'^ T)-\ mathbb {E}(X')\ mathbb {E}( X'^ T)
\\
&= \ mathbb {E}(RXX ^ TR ^ T)-\ mathbb {E}(RX)\ mathbb {E}(X ^ TR ^ T)
\\
&= R〜\ mathbb {E}(XX ^ T)〜R ^ T-R \ mathbb {E}(X)\ mathbb {E}(X ^ T)R ^ T
\\
&= R \ big(〜\ mathbb {E}(XX ^ T)-\ mathbb {E}(X)\ mathbb {E}(X ^ T)\ big) R ^ T
\\
&= RCR ^ T
\ end {align} $

作为警告,请小心欧拉角。这些通常在行为上是不直观的,因此您可能无法简单地使用与位置相同的旋转矩阵来旋转它们。请记住,它们通常是在局部坐标系下定义的(在机器人世界中),而位置通常是根据全局坐标系定义的。但是,我不记得他们是否需要特殊对待。

评论


$ \ begingroup $
谢谢。不过,在这种情况下,$ R $是3x3,$ C $是6x6。我猜我的问题的一部分是我不确定$ R $将如何影响线性轴和旋转之间的协方差(甚至是欧拉角本身的协方差),即我应该如何增加$ R $使其为6x6 。
$ \ endgroup $
– TheWumpus
2014年3月3日在18:14

$ \ begingroup $
$ R $只是任意仿射变换。在您的情况下,左上方的3x3块和右下方的3x3块都是旋转矩阵(如果您假设欧拉角可以旋转相同的角度,请参见答案)。非对角线块为零。
$ \ endgroup $
–ryan0270
2014年3月3日在21:23

#2 楼

MRPT库可以为您完成此任务。您需要使用CPose3DPDFGaussian来表示您的姿势和协方差,然后使用+运算符。

在引擎盖下,它会将您的6DOF协方差表示为7DOF四元数基数协方差,在数学上更简单。 />

评论


$ \ begingroup $
展示数学以及为您提供帮助的库将是有益的。
$ \ endgroup $
–chutsu
19-4-10在10:04



#3 楼

非常直观的解释,带有针对协方差及其分解的几何解释。

http://www.visiondummy.com/2014/04/geometric-interpretation-covariance-matrix/

评论


$ \ begingroup $
您好,欢迎来到机器人技术!感谢您的回答,但我们希望答案尽可能独立存在。链接容易腐烂,因此,如果链接到内容的内容消失了,依赖于链接的答案将变得无用。如果您从链接中添加更多上下文,那么人们很可能会发现您的答案很有用。
$ \ endgroup $
–mactro
17年2月24日在9:17