Como girar a covariância?

11

Estou trabalhando em um EKF e tenho uma pergunta sobre conversão de quadros de coordenadas para matrizes de covariância. Digamos que eu recebo alguma medida com a matriz de covariância 6x6 . Essa medida e são fornecidas em algum quadro de coordenadas . Eu preciso transformar a medida em outro quadro de coordenadas, . Transformar a medida em si é trivial, mas eu também precisaria transformar sua covariância, correto? A tradução entre e deve ser irrelevante, mas eu ainda seria necessário para a rodar. Se eu estiver correto, como eu faria isso? Para as covariâncias entre ,(x,y,z,roeueu,pEutch,yumaW)CCG1 1G2G1 1G2xy, , meu primeiro pensamento foi simplesmente aplicar uma matriz de rotação 3D, mas isso só funciona para uma submatriz 3x3 dentro da matriz de covariância 6x6 completa. Preciso aplicar a mesma rotação nos quatro blocos?z

TheWumpus
fonte

Respostas:

8

Covariância é definida como

C=E(XXT)-E(X)E(XT)

onde, no seu caso, é seu vetor de estado e é a matriz de covariância que você já possui.XR6C

Para o estado transformado , com no seu caso, isso se tornaX=RXRR6×6

C=E(XXT)-E(X)E(XT)=E(RXXTRT)-E(RX)E(XTRT)=R E(XXT) RT-RE(X)E(XT)RT=R( E(XXT)-E(X)E(XT))RT=RCRT

Como uma ressalva, tenha cuidado com os ângulos de Euler. Esses são comportamentos não-intuitivos comuns, portanto você pode não ser capaz de simplesmente girá-los com a mesma matriz de rotação usada para a posição. Lembre-se de que eles geralmente são definidos (no mundo da robótica) em termos do sistema de coordenadas local, enquanto a posição geralmente é definida em termos do sistema de coordenadas global. No topo da minha cabeça, no entanto, não me lembro se eles precisam de tratamento especial.

ryan0270
fonte
Obrigado. Nesse caso, porém, é 3x3 e é 6x6. Acho que parte do meu problema é que não tenho certeza de como afetaria a covariância entre eixos lineares e rotação (ou mesmo a covariância dos próprios ângulos de Euler), ou seja, como devo aumentar para que seja 6x6. RCRR
TheWumpus 03/03
11
R é qualquer transformação afim arbitrária. No seu caso, o bloco 3x3 superior esquerdo e o bloco 3x3 inferior direito são a matriz de rotação (se você assumir que os ângulos de Euler podem ser rotacionados da mesma maneira ... consulte a ressalva em resposta). Os blocos fora da diagonal são zeros.
precisa saber é o seguinte
1

A biblioteca MRPT pode fazer isso por você. Você precisa usar a CPose3DPDFGaussianpara representar sua pose e covariância e depois usar o +operador.

Sob o capô, ele representa sua covariância 6DOF como uma covariância de base de quaternário 7DOF, onde a matemática é mais direta.

brice rebsamen
fonte
Seria benéfico para mostrar a matemática, bem como uma biblioteca que faz isso por você.
chutsu
0

Explicação muito intuitiva com interpretação geométrica para covariância e sua decomposição.

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

Nitish Gupta
fonte
Olá e bem-vindo à robótica! Obrigado pela sua resposta, mas preferimos que as respostas sejam independentes sempre que possível. Os links tendem a apodrecer, de modo que as respostas que dependem de um link podem se tornar inúteis se o link ao conteúdo desaparecer. Se você adicionar mais contexto a partir do link, é mais provável que as pessoas considerem sua resposta útil.
mactro