Mavros: Penerbitan mengubah kedua arah salah

Dibuat pada 20 Jul 2019  ·  5Komentar  ·  Sumber: mavlink/mavros

Komentar bahwa Anda perlu memublikasikan transformasi dengan cara lain tidak benar.

https://github.com/mavlink/mavros/blob/bdc5c7386f9451ac244b5a85c087ad620fd3a989/mavros/src/lib/uas_data.cpp#L57

Hanya satu dari ini yang harus digunakan:

https://github.com/mavlink/mavros/blob/366a9a74847b2e231035b47fa06651527a4556b9/mavros/src/lib/uas_data.cpp#L56 -L58

Mereka akan berkelahi satu sama lain dan menyebabkan reparenting terus menerus sedemikian rupa sehingga pada waktu tertentu yang terakhir diterima akan menang. Kemungkinan versi pertama yang diuji menyebabkan pohon terputus dengan mengasuh ulang secara tidak sengaja dan menambahkan panggilan kedua menutupinya.

Dan saat saya melihat kode ini. Lebih bersih dan lebih efisien untuk memublikasikan vektor transformasi statis untuk memanfaatkan latching daripada memublikasikan urutan transformasi individual.

bug

Semua 5 komentar

Kami membawa ini ke sini sebelumnya: https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522

@TSC21 FYI

@jkflying @baumanta Bisakah kalian mencoba menguji apakah ada masalah cap waktu dengan penerbit duplikat dihapus?

@tfoote Anda benar dengan komentar Anda tentang masalah #388 . Loop tf di mavros tampaknya bertanggung jawab untuk selalu mendapatkan tf di ros::Time::now().

Saya menempatkan pendengar tf dalam kode penghindaran yang mengambil transformasi pada stempel waktu pointcloud terakhir dan di ros::Time::now() dan mencetak kedua transformasi. Saat drone bergerak, saya berharap transformasinya sedikit berbeda. Menggunakan Mavros 0.29.2. kedua transformasi selalu identik meskipun stempel waktunya tidak. Menggunakan Mavros PR #1252 transformasinya berbeda.

Oke, saya menduga mengapa kode plugin odom tidak berfungsi adalah karena batasan topik yang tidak jelas - Anda tidak dapat memublikasikan pesan yang berbeda ke topik yang terkunci dari proses yang sama.

Lihat https://github.com/ros/ros_comm/issues/146 dan https://answers.ros.org/question/261815/how-can-i-access-all-static-tf2-transforms/.

Solusi untuk ini adalah membuat vektor dari semua transformasi dan mempublikasikannya dalam satu bidikan (teruskan ke fungsi TF2 khusus http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85688b60a2236e9d81ff )

Apakah halaman ini membantu?
0 / 5 - 0 peringkat