Bagaimana cara memutar kovarians?

11

Saya sedang mengerjakan EKF dan memiliki pertanyaan tentang konversi bingkai koordinat untuk matriks kovarians. Katakanlah saya mendapatkan beberapa pengukuran dengan sesuai 6x6 kovarians matriks . Pengukuran dan ini diberikan dalam beberapa kerangka koordinat . Saya perlu mengubah pengukuran ke bingkai koordinat lain, . Mengubah pengukuran itu sendiri sepele, tetapi saya juga perlu mengubah kovariansnya, benar? Terjemahan antara dan seharusnya tidak relevan, tetapi saya masih perlu memutarnya. Jika saya benar, bagaimana saya melakukan ini? Untuk kovarian antara ,(x,y,z,roll,pitch,yaw)CCG1G2G1G2xy, dan , pikiran pertama saya hanyalah menerapkan matriks rotasi 3D, tetapi itu hanya berfungsi untuk submatrix 3x3 dalam matriks kovarian 6x6 penuh. Apakah saya perlu menerapkan rotasi yang sama untuk keempat blok?z

The Wumpus
sumber

Jawaban:

8

Kovarian didefinisikan sebagai

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

di mana, dalam kasus Anda, adalah vektor keadaan Anda dan adalah matriks kovarians yang sudah Anda miliki.XR6C

Untuk keadaan transformasi , dengan dalam kasus Anda, ini menjadiX=RXRR6×6

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

Sebagai peringatan, berhati-hatilah dengan sudut Euler. Itu biasanya tidak intuitif dalam perilaku mereka sehingga Anda mungkin tidak dapat hanya memutar mereka dengan matriks rotasi yang sama yang Anda gunakan untuk posisi. Ingat bahwa mereka biasanya didefinisikan (dalam dunia robotika) dalam hal sistem koordinat lokal sedangkan posisi biasanya didefinisikan dalam hal sistem koordinat global. Tapi di atas kepala saya, saya tidak ingat apakah mereka membutuhkan perawatan khusus.

ryan0270
sumber
Terima kasih. Namun dalam kasus ini, adalah 3x3 dan adalah 6x6. Saya kira bagian dari masalah saya adalah bahwa saya tidak yakin bagaimana akan mempengaruhi kovarians antara sumbu linear dan rotasi (atau bahkan kovarians sudut Euler sendiri), yaitu, bagaimana saya harus menambah sehingga 6x6. RCRR
TheWumpus
1
R hanyalah sembarang transformasi affine. Dalam kasus Anda, blok 3x3 kiri atas dan blok 3x3 kanan bawah keduanya merupakan matriks rotasi (jika Anda menganggap bahwa sudut Euler dapat diputar sama ... lihat peringatan sebagai jawaban). Blok off-diagonal adalah nol.
ryan0270
1

The perpustakaan MRPT dapat melakukan ini untuk Anda. Anda harus menggunakan a CPose3DPDFGaussianuntuk mewakili pose dan kovarian Anda, lalu gunakan +operator.

Di bawah tenda itu mewakili kovarians 6DOF Anda sebagai kovarian dasar angka 7DOF, di mana matematika lebih mudah.

bs rebsamen
sumber
Akan bermanfaat untuk menunjukkan matematika serta perpustakaan yang melakukannya untuk Anda.
chutsu
0

Penjelasan yang sangat intuitif dengan interpretasi geometris untuk kovarians dan penguraiannya.

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

Nitish Gupta
sumber
Halo dan selamat datang di Robotika! Terima kasih atas jawaban Anda, tetapi kami lebih suka jawaban yang lengkap jika memungkinkan Tautan cenderung membusuk sehingga jawaban yang mengandalkan tautan dapat dianggap tidak berguna jika tautan ke konten hilang. Jika Anda menambahkan lebih banyak konteks dari tautan, kemungkinan besar orang akan menganggap jawaban Anda bermanfaat.
mactro