Robot kami memiliki array sensor 12 sonar yang berbentuk seperti ini:
The sensor sonar sendiri cukup bagus. Kami menggunakan filter low-pass untuk menangani kebisingan, dan bacaannya tampaknya cukup akurat. Namun, ketika robot menemukan permukaan datar seperti dinding, sesuatu yang aneh terjadi. Sonar tidak menunjukkan bacaan yang mengindikasikan dinding, sebaliknya, tampak seperti permukaan melengkung.
Plot di bawah ini dibuat ketika robot itu menghadap tembok. Lihat kurva di garis biru, dibandingkan dengan garis merah lurus. Garis merah diproduksi dengan menggunakan kamera untuk mendeteksi dinding, di mana garis biru menunjukkan bacaan sonar yang disaring.
Kami percaya kesalahan ini disebabkan oleh crosstalk, di mana pulsa sensor satu sonar memantul dari dinding pada sudut dan diterima oleh sensor lain. Ini adalah kesalahan sistematis, jadi kita tidak bisa benar-benar menghadapinya seperti halnya dengan kebisingan. Apakah ada solusi di luar sana untuk memperbaikinya?
sumber
Jawaban:
Ini adalah masalah umum, dan salah satu dari banyak masalah. Penginderaan akustik adalah bidang studi yang rumit, yang sebagian besar dihabiskan untuk menebak jalur gelombang suara apa yang diambil antara mengirim dan menerimanya. Seperti yang Anda perhatikan, dengan asumsi bahwa itu langsung keluar dan langsung kembali akan menghasilkan hasil yang aneh dalam praktek.
Untuk benar-benar menyelesaikannya, Anda harus menggunakan sistem yang menempatkan frekuensi unik dan / atau panjang nada pada setiap sensor. Ini dapat diambil ke ekstrem yang signifikan, misalnya Modulasi Lebar Pulsa Pseudo-Random Hopping Frekuensi untuk Menghilangkan Crosstalk Sensor Sonar pada Robot Seluler .
Ada juga solusi berteknologi rendah, yang konsepnya cukup mudah. Jika Anda hanya ingin mendeteksi crosstalk, itu adalah masalah menembakkan pulsa sensor tunggal di antara penembakan pulsa semua sensor. Jika Anda mendeteksi pulsa balik dengan sensor lain, Anda tahu bahwa Anda berada dalam situasi crosstalk.
Dalam praktiknya, ini cukup boros: perhatikan bahwa ini secara efektif membagi dua jumlah sampel yang dapat Anda ambil. Jadi, Anda dapat meningkatkan penerapannya dengan membagi sensor menjadi grup di mana setiap anggota grup cukup jauh dari yang lain sehingga tidak akan menerima crosstalk. Versi paling kuat dari pendekatan ini adalah untuk membuat kelompok itu sendiri menjadi pseudorandom yang tidak hanya memungkinkan kesalahan rata-rata keluar dari waktu ke waktu tetapi membantu deteksi crosstalk pada basis sensor individu.
Dalam kasus khusus Anda, Anda memiliki manfaat tambahan dari sensor kamera yang telah Anda perlihatkan mengembalikan nilai yang lebih benar untuk rentang. Strategi untuk menggabungkan pengukuran yang terpisah (dan mungkin bertentangan) menjadi satu perkiraan yang lebih akurat adalah topiknya sendiri yang sangat luas (disebut fusi , contoh 1 , contoh 2 ), tetapi yang sangat relevan dengan apa yang Anda lakukan di sini.
sumber
Beberapa sensor, seperti Maxbotix MB1200 XL-MaxSonar-EZ0, memiliki sistem rangkaian daisy yang dibangun di mana satu sensor memicu sensor berikutnya setelah selesai pengukurannya. Dengan cara ini Anda dapat memiliki N sensor dan memastikan bahwa hanya satu yang menembak sekaligus tetapi ada sensor berikutnya yang menyala segera setelah yang pertama telah mengumpulkan kembalinya. Solusi ini sederhana tetapi jelas sangat mengurangi jumlah data yang Anda dapatkan per satuan waktu. Solusi Ian jauh lebih dekat ke optimal.
sumber
Apakah mungkin menggunakan beberapa sensor ultrasonik pada robot tunggal? Ya: "Menggunakan Beberapa Sensor Sonar" .
Seperti yang sudah Anda ketahui, satu sensor sering menerima gema ping yang dikirim oleh sensor lain. Ada beberapa cara untuk menangani sensitivitas silang, kira-kira dalam urutan yang paling sederhana terlebih dahulu:
PS: Pernahkah Anda melihat "Infrared vs. Ultrasonic - Yang Harus Anda Ketahui" ?
(Ya, saya sudah mengatakan ini sebelumnya, di "Multiple Ultrasonic Rangefinder Question" .)
sumber