Mavros: Ulangi konversi bingkai antara NED dan ENU

Dibuat pada 10 Feb 2015  ·  21Komentar  ·  Sumber: mavlink/mavros

bug documentation

Komentar yang paling membantu

Saya melihat ini:
http://wiki.ros.org/geometry/CoordinateFrameConventions dan
http://www.ros.org/reps/rep-0103.html

Ada sejumlah masalah dengan grafik (dan jika itu mewakili orientasi, kodenya):

Akibatnya tidak ada perbedaan antara body frame dan world frame pada putaran nol, dan konversi antara NED dan ENU adalah sama untuk kedua frame, masing-masing menggunakan referensi global / lokal.

Semua 21 komentar

Mungkin seseorang dapat mengomentari keadaan saat ini? Saya kekurangan waktu untuk menyaring kode saat ini, tetapi saya akan dengan senang hati meninjau transformasi.

@LorenzMeier Lihat PR #208.

@LorenzMeier Sebenarnya, ini adalah konvensi saat ini yang kami gunakan:

body-fixed NED → ROS ENU: (xyz)→(x -y -z) atau (wxyz)→(x -y -zw)
NED lokal → ROS ENU: (xyz)→(yx -z) atau (wxyz)→(yx -zw)

image

Saya tidak dapat memverifikasi kebenaran diagram ini, tetapi inilah yang menurut saya sedang kita lakukan sekarang.

Ya itu skema saya. Saya dapat mengkonfirmasinya, dan saya menggunakan dan menjelaskannya pada tesis saya.

Catatan: Konversi ini adalah apa yang kami setujui beberapa bulan yang lalu dan saya dapat mengonfirmasinya di Rviz.

Masalahnya bukan pada konversi yang sebenarnya melainkan ketika konversi tertentu digunakan.

Saya melihat ini:
http://wiki.ros.org/geometry/CoordinateFrameConventions dan
http://www.ros.org/reps/rep-0103.html

Ada sejumlah masalah dengan grafik (dan jika itu mewakili orientasi, kodenya):

Akibatnya tidak ada perbedaan antara body frame dan world frame pada putaran nol, dan konversi antara NED dan ENU adalah sama untuk kedua frame, masing-masing menggunakan referensi global / lokal.

Saya sebagian besar setuju dengan apa yang dikatakan @LorenzMeier . Namun, kecuali saya sangat keliru setiap bingkai koordinat pada grafik di atas kecuali yang kanan bawah adalah sistem koordinat tangan kiri. Mungkin Anda salah memberi label sumbu x dan y dalam legenda grafik?

Terlepas dari itu saya setuju bahwa mengubah fron ENU ke NED adalah sama apakah itu untuk ground frame atau body frame. Pada bingkai bodi, nama ENU atau NED tidak masuk akal, tetapi saya pikir tetap saja mengonversi dari bingkai koordinat yang digunakan di ROS ke FCU harus selalu sama.

Saya belum memeriksa metode konversi yang diposting @mhkabir di atas. Pikir kita perlu mendapatkan grafik yang benar terlebih dahulu sebelum melakukan matematika

@thedinuka Maukah Anda menyiapkan yang baru di Paint atau sesuatu, menurut apa yang tampaknya benar bagi Anda . ;)

Saya memiliki file asli, dapat mengubahnya kemudian mengirim yang baru (tidak perlu menggunakan cat @mhkabir). Hal tentang tangan kanan dan kiri tampaknya benar. Tetapi saya masih memiliki keraguan sehubungan dengan memiliki dua konversi yang berbeda, dan ketika saya melakukan gambar itu saat itu, saya juga mengalaminya. Jadi mungkin kita perlu memeriksa kodenya, karena dari apa yang saya ingat, sebagian besar implementasi menggunakan konversi di atas.

Sambil menunggu versi grafik yang dimodifikasi oleh @TSC21 , saya telah memikirkan ini lebih banyak dan tampaknya lebih rumit daripada yang saya kira sebelumnya. Saya agak setuju dengan @TSC21. Ada dua pasang transformasi koordinat yang berbeda yang perlu kita pikirkan.

1) Transformasi dari konvensi ROS bingkai tetap tubuh ke konvensi Pixhawk bingkai tetap tubuh.
2) Transformasi dari konvensi ROS dari bingkai tetap bumi ke konvensi Pixhawk dari bingkai tetap bumi.

Meskipun ada dokumentasi baik di sisi ROS dan Pixhawk tentang konvensi yang digunakan untuk kerangka koordinat tetap tubuh, saya tidak dapat menemukan informasi spesifik tentang konvensi yang digunakan di sisi Pixhawk tentang kerangka koordinat Inersia (atau Bumi Tetap). Jika saya harus menebak maka saya akan mengatakan bahwa di sisi Pixhawk, tanpa adanya GPS, bingkai koordinat Tetap Bumi sejajar dengan orientasi awal bingkai tetap tubuh, tetapi saya tidak 100% yakin apakah ini adalah kasusnya. Jadi untuk mencegah kesalahan dan kebingungan, saya akan, untuk saat ini, hanya mempertimbangkan rangka bodi tetap.

Menyampaikan dokumentasi [1] untuk ROS dan [2] untuk Pixhawk, saya telah membuat diagram berikut.
body_coordinate_frames

Setelah kita memiliki diagram kerangka koordinat untuk kedua (1) dan (2) di atas diverifikasi, dikonfirmasi dan disetujui, maka matematika untuk melakukan transformasi aktual pada sisi mavros sangat mudah.

[1] http://www.ros.org/reps/rep-0103.html
[2] https://pixhawk.org/dev/know-how/frames_of_reference

Silakan lihat juga #148 (konversi kovariasi).

Ini dapat membantu ros-infrastructure/rep#95

Apakah kita berakhir mendapatkan suatu tempat dengan ini? Apakah konversi saat ini dari ENU/NED, kerangka tubuh/dunia sudah benar? Saya menanyakan ini karena kami perlu mengulangi kemungkinan @blackcoder mendapatkan rotasi yaw pada FCU saat mengirim data penglihatan karena kami melakukan kesalahan.
@vooon , @mhkabir , @tonybaltovski , @thedinuka ping!

@thedinuka Terlihat bagus untuk saya.

Jika saya harus menebak maka saya akan mengatakan bahwa di sisi Pixhawk, dengan tidak adanya > GPS, bingkai koordinat Tetap Bumi sejajar dengan orientasi awal dari > bingkai tetap tubuh

Sebenarnya tidak perlu GPS. Kami sudah memiliki referensi yaw global dari majalah. Itu berarti bingkai EF diputar menggunakan yaw ini.

Hai,
Saya memetakan kembali topik dari mocap_optitrack ke vision_pose/pose di mavros. namun mav tidak dapat terbang dengan benar, jadi saya mengubah kode berikut
vision_position_estimate(cap.toNSec() / 1000,
posisi.y(), posisi.x(), -posisi.z(),
roll, -pitch, -yaw); // ??? silakan periksa!
ke
vision_position_estimate(cap.toNSec() / 1000,
posisi.y(), posisi.x(), -posisi.z(),
roll, -pitch, -yaw + 1,57);
yaitu ubah -yaw menjadi -yaw + 1,57.
saat mengonversi body frame dari ENU ke NED, mavros sekarang menggunakan
(xyz)-->(x,-y,-z)
(w,x,y,z)-->(x,-y,-z,w), jadi kita peroleh
ENU ---> NED
gulung ----> gulung
nada -----> - nada
yaw ----->-yaw.
namun saya pikir kita keliru bahwa yaw didasarkan pada sumbu x di bingkai dunia (ketika x di bingkai tubuh bersama dengan x di bingkai dunia, yaw adalah 0), dan memiliki rotasi 90 derajat. jadi kita harus membuat -yaw + 1,57. yaitu
ENU ---> NED
gulung ----> gulung
nada -----> - nada
yaw ----->-yaw+1,57.
setelah saya mengubahnya, mav dapat terbang dengan benar. jadi saya pikir plugin lain juga seperti ini.

@congleetea yang tampaknya sah. Bisakah Anda menerapkan transformasi yang sama ke plugin setpoint dan lihat apa hasilnya? juga, apakah data yang berasal dari topik local_position datang dengan orientasi yang benar tanpa Anda menerapkan konversi yang sama?

Silakan lihat juga #148 (konversi kovariasi).

Ini juga harus kita perhitungkan.

PR #317 mengubah konversi.

Saya telah menguji percakapan ini

NED(Pixhawk)->ENU(ROS)
(X,Y,Z)->(X,-Y,-Z)

ENU(ROS)->NED(Pixhawk)
(X,Y,Z)->(X,-Y,-Z)

Itu bekerja dengan baik baik di rviz dan hubungan asmara nyata.

@supermice yang mengonfirmasi # 317 jadi terima kasih! :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat