Saya mencoba mengubah sembarang vektor dalam bingkai Cartesian menjadi bingkai Cartesian yang berbeda . Baik dan memiliki asal yang sama. Saya telah berkonsultasi dengan Dynamics Flight Dynamics and Control oleh Wayne Durham, dan memahami solusi buku itu sebagai berikut:
Gunakan roll yaw-pitch-roll standar { } (biasanya disebut { masing-masing }) / pesanan. Ada tiga matriks transformasi, satu untuk setiap sumbu. Pertama, putar tentang sumbu z . Panggil matriks transformasi karena ia beralih dari ke frame perantara . diberikan sebagai
Untuk beralih dari ke , Anda kemudian memutar sumbu y' menggunakan T _ {\ mathscr {F ''}, \ mathscr {F '}} = \ begin {bmatrix} cos (\ theta_ {y}) & 0 & -sin (\ theta_ {y}) \\ 0 & 1 & 0 \\ sin (\ theta_ {y}) & 0 & cos (\ theta_ {y}) \\ \ end {bmatrix}
Akhirnya, untuk beralih dari ke , Anda kemudian memutar tentang sumbu x menggunakan
Matriks transformasi komposit dapat dibuat dengan mengalikan transformasi ini bersama-sama. Masing-masing langkah transformasi pada vektor generik diberikan dalam buku ini (dan saya buat ulang di bawah ini) untuk menunjukkan penentuan pesanan.
Jadi (ketat dalam urutan ini).
Masalah saya muncul ketika saya mengkodekan transformasi ini menjadi MATLAB dan menguji beberapa contoh yang dapat saya verifikasi secara kualitatif (dengan beberapa sumbu koordinat yang saya buat dari kayu).
Matriks transformasi yang berfungsi adalah . Jadi, agar transformasi bekerja seperti yang saya harapkan, saya perlu melipatgandakan matriks dalam urutan terbalik dan mengambil transposinya. Apa yang salah?
sumber
Jawaban:
Misalkan Frame 1 adalah frame koordinat dunia dan Frame 2 frame robot lokal.
Hal yang sedikit membingungkan di sini adalah ketika Anda mengubah dari Frame 1 ke Frame 2, Anda mengatakan bahwa Anda ingin ... mengubah frame 1 ke frame 2. Anda ingin mengambil semua poin frame 1, dan meletakkannya di frame 2. Anda ingin mengukur di mana titik-titik dalam frame 1 berada, tetapi dalam sistem koordinat frame 2.
Ini adalah masalah karena apa yang mungkin ingin Anda lakukan adalah mengukur / mengendalikan bingkai robot (posisi) dalam sistem koordinat bingkai dunia. Anda peduli apakah kendaraan Anda 10 derajat di atas cakrawala , atau koordinat global dari end effector, dll. Ini berarti (setidaknya kontra-intuitif untuk saya), jika Anda ingin melihat apa yang dibaca di koordinat frame 1, maka Anda perlu mengimpornya ke dalam bingkai 1.
Jadi, jika Anda ingin menggunakan koordinat frame 1 untuk mengukur objek dalam frame 2, Anda perlu mengambil transformasi dari frame 1 ke frame 2. Untuk memainkan sekali lagi, matematika Anda memberi:
Anda dapat melihat bahwa input Anda adalah , Anda mentransformasikan input dengan , dan kemudian output Anda diukur dalam koordinat frame 2 .v1 T
Apa yang Anda malah ingin lakukan adalah untuk mengambil invers transformasi. Ini memberi Anda hal berikut:
Saya akan menunjukkan secara singkat bahwa Anda menggunakan untuk matriks transformasi, tetapi cara Anda mendefinisikannya itu benar-benar matriks rotasi ; semua fungsi Anda adalah matriks 3x3.T TF
Dalam peristiwa apa pun, transformasi atau rotasi, itu tidak masalah! Matriks rotasi adalah bagian 3x3 kiri atas dari matriks transformasi 4x4, dan mengambil transpose dari matriks rotasi sama dengan mengambil kebalikan dari matriks rotasi yang sama.
Jadi koordinat Anda salah karena Anda tidak mengukur poin yang Anda berikan dalam bingkai yang Anda kira. Ini "bekerja" ketika Anda mengambil transpos karena itu sebenarnya sama dengan terbalik , yang berarti Anda membalik arah arah transformasi.
sumber
Anda sebenarnya tidak melakukan kesalahan apa pun. Hanya saja aljabar Matrix, yang sangat disesalkan oleh sebagian orang, sebenarnya tidak mendefinisikan bagaimana Anda perlu mengemas data Anda ke dalam matriks. Pilihanmu.
Jadi pertanyaannya adalah apakah Anda menganggap bahwa vektor di dalam matriks Anda menjadi kolom atau baris. Ini disebut kolom utama atau baris utama. Apa yang Anda dapatkan hanyalah solusi yang dialihkan, dan urutan perhitungan terbalik. Itu terjadi, beberapa literatur berada di baris utama dan beberapa di kolom notasi utama. Ini semua pertanyaan apakah Anda ingin melihat objek bentuk atau bentuk di luar, pilihan Anda. Tetapi Anda harus menyadari hal ini atau berakhir dengan masalah seperti ini, atau mereka tidak hanya masalah definisi.
Menggunakan qaternions atau metode lain tidak membuat Anda mengalami masalah yang sama.
sumber