Lokalisasi dan Pemetaan Simultan (SLAM) menggambarkan proses di mana perangkat, seperti robot, menggunakan data sensor untuk membangun gambaran lingkungan sekitarnya dan secara bersamaan menentukan posisinya dalam lingkungan itu. Ada banyak cara berbeda untuk mengimplementasikan SLAM, baik dalam hal algoritme perangkat lunak yang digunakan dan juga sensor yang digunakan, yang mungkin mencakup kamera, Sonar, Radar, LiDAR, dan data posisi dasar, menggunakan unit pengukuran inersia (IMU).
Ketersediaan kamera yang murah dan kecil telah mendorong popularitas sistem Monocular Visual SLAM, yang menggunakan satu kamera standar untuk melakukan fungsi lokasi dan pemetaan. Sistem SLAM visual seperti itu dapat ditemukan di berbagai robot, termasuk penjelajah dan pendarat Mars. , robot lapangan di bidang pertanian, drone dan, berpotensi, kendaraan otonom. Sistem SLAM visual juga menawarkan keuntungan saat GPS tidak tersedia, misalnya di area dalam ruangan atau di kota besar, di mana penghalang oleh bangunan mengurangi akurasi GPS.
Artikel ini menjelaskan proses SLAM visual dasar, yang mencakup modul dan algoritme yang terlibat dalam pengenalan objek, pelacakan, dan koreksi kesalahan. Keuntungan dari pembongkaran komputasi dan fungsionalitas SLAM ke DSP khusus dibahas dan kit pengembangan CEVA-SLAM SDK digunakan sebagai ilustrasi manfaat yang dapat diperoleh dengan mengikuti rute pengembangan ini.
SLAM Langsung dan Berbasis Fitur
Ada banyak pendekatan berbeda untuk penerapan SLAM visual, tetapi semuanya menggunakan metode keseluruhan yang sama, melacak titik-titik setel melalui bingkai kamera berurutan untuk membuat triangulasi posisi 3D mereka sementara secara bersamaan menggunakan informasi ini untuk memperkirakan pose kamera. Secara paralel, sistem SLAM terus menggunakan algoritme kompleks untuk meminimalkan perbedaan antara titik yang diproyeksikan dan titik aktual – kesalahan proyeksi ulang.
Sistem SLAM visual dapat diklasifikasikan sebagai langsung atau berbasis fitur, menurut cara mereka menggunakan informasi dari gambar yang diterima. Sistem SLAM langsung membandingkan seluruh gambar satu sama lain, memberikan informasi yang kaya tentang lingkungan, memungkinkan pembuatan peta yang lebih detail tetapi dengan mengorbankan upaya dan kecepatan pemrosesan. Artikel ini berfokus pada metode SLAM berbasis fitur, yang mencari gambar untuk fitur yang ditentukan, seperti sudut dan "gumpalan" dan mendasarkan estimasi lokasi dan lingkungan hanya pada fitur ini. Meskipun metode SLAM berbasis fitur membuang sejumlah besar informasi berharga dari gambar, pertukarannya adalah proses yang disederhanakan yang secara komputasi lebih mudah untuk diterapkan.
Gambar 1:SLAM Langsung vs Berbasis Fitur. (Sumber:https://vision.in.tum.de/research/vslam/lsdslam)
Proses SLAM visual
Langkah-langkah utama dalam SLAM berbasis fitur adalah ekstraksi satu set fitur sparse dari gambar input, pencocokan fitur yang diperoleh dari pose kamera yang berbeda dan pemecahan masalah SLAM dengan meminimalkan kesalahan proyeksi ulang fitur (perbedaan antara lokasi titik yang dilacak dan di mana diperkirakan akan diberikan perkiraan pose kamera, di semua titik).
Langkah-langkah ini diselesaikan dengan menggunakan satu set blok penyusun, yang dijelaskan di bawah, yang umum untuk semua implementasi SLAM berbasis fitur. Visual SLAM adalah area berkembang yang menghasilkan sejumlah besar penelitian dan berbagai algoritma telah dikembangkan dan diusulkan untuk setiap modul, yang masing-masing memiliki pro dan kontra, tergantung pada sifat implementasi SLAM yang tepat. Deskripsi di bawah ini menyebutkan subset dari algoritme paling populer saat ini.
Ekstraksi Fitur, gambar 2, adalah proses yang secara efisien mewakili informasi yang berguna dalam sebuah gambar, seperti sudut, tepi, gumpalan dan objek yang lebih kompleks seperti pintu dan jendela sebagai vektor fitur yang ringkas. Algoritme ekstraksi fitur yang populer mencakup Difference of Gaussian (DoG) dan Features from Accelerated Segment Test (FAST9), metode deteksi sudut yang sangat cocok untuk pemrosesan video waktu nyata karena efisiensi komputasinya.
Gambar 2:Ekstraksi Fitur SLAM. (Sumber:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)
Dalam Deskripsi Fitur, wilayah di sekitar setiap fitur yang diekstraksi diubah menjadi deskriptor ringkas yang dapat dicocokkan dengan deskriptor lainnya. Fitur dapat dideskripsikan, misalnya, dengan penampilannya, atau dengan intensitas piksel dalam tambalan di sekitar titik fitur. ORB dan FREAK adalah contoh algoritme deskriptor fitur yang populer.
Dalam Pencocokan Fitur, fitur yang diekstraksi (deskriptor) dicocokkan dengan beberapa bingkai. Fitur dicocokkan di dua gambar dengan membandingkan semua fitur di gambar pertama dengan semua fitur di gambar kedua. Fungsi jarak Hamming umumnya digunakan dalam pencocokan Fitur karena dapat dilakukan secara efisien di perangkat keras menggunakan fungsi XoR dan hitung-bit pada kumpulan bit data seperti vektor. Jarak Hamming memberikan indikasi berapa banyak bit dalam dua vektor yang berbeda, artinya semakin rendah skornya, semakin dekat kecocokannya.
Loop Closure adalah langkah terakhir dalam proses SLAM dan memastikan solusi SLAM yang konsisten, terutama ketika operasi pelokalan dan pemetaan dilakukan dalam jangka waktu yang lama. Penutupan loop mengamati pemandangan yang sama dengan bingkai yang tidak berdekatan dan menambahkan batasan di antara mereka untuk mengurangi akumulasi penyimpangan dalam perkiraan pose. Seperti modul SLAM visual lainnya, berbagai algoritme telah dikembangkan untuk penutupan loop, dengan yang paling populer adalah Penyesuaian Bundel, penyaringan Kalman, dan penyaringan partikel.
Algoritma VSLAM adalah area penelitian aktif dan di atas adalah contoh dari peningkatan jumlah teknik yang muncul dalam beberapa tahun terakhir. Metode SLAM berbasis fitur lebih disukai untuk solusi tertanam karena memungkinkan kecepatan pemrosesan yang lebih cepat dan penggunaan bandwidth memori yang lebih efisien. Selain itu, solusi berbasis fitur menunjukkan tingkat ketahanan yang lebih tinggi di berbagai kondisi, termasuk perubahan cepat dalam kecerahan, tingkat cahaya rendah, pergerakan kamera yang cepat, dan oklusi.
Pilihan algoritma tertentu didorong oleh karakteristik aplikasi tertentu, termasuk jenis peta, jenis sensor, tingkat akurasi yang diperlukan dan banyak lagi. Banyak sistem SLAM menggabungkan kombinasi algoritme yang paling sesuai untuk berbagai skenario terluas.
Tantangan penerapan SLAM
Pemrosesan SLAM visual sangat intensif secara komputasi, menempatkan beban tinggi pada implementasi tradisional berbasis CPU, yang mengarah pada konsumsi daya yang berlebihan dan frekuensi gambar yang rendah, dengan konsekuensi yang berdampak pada akurasi dan masa pakai baterai. Pengembang aplikasi SLAM yang baru muncul memerlukan solusi yang menawarkan tingkat integrasi yang lebih tinggi dan konsumsi daya yang lebih rendah. Mereka semakin banyak menggunakan unit pemrosesan visi (VPU) khusus dalam desain mereka. VPU adalah jenis mikroprosesor dengan arsitektur yang dirancang khusus untuk percepatan tugas visi mesin, seperti SLAM, dan yang dapat digunakan untuk membongkar pemrosesan visi dari CPU aplikasi utama. VPU, seperti CEVAs CEVA-XM6, gambar 3, menyertakan fitur seperti konsumsi daya yang rendah, ALU yang kuat, kemampuan MAC yang kuat, akses memori throughput yang tinggi, dan instruksi visi khusus. Perangkat juga akan mendukung kemampuan floating-point yang kuat yang dibutuhkan oleh aplikasi pemrosesan gambar.
Gambar 3:Unit pemrosesan visi CEVA XM6. (Sumber:CEVA)
Meskipun dengan VPU, pengembang visual SLAM masih harus mengatasi beberapa tantangan karena membuat kode yang efisien untuk modul SLAM yang berbeda adalah pekerjaan yang tidak sepele dan juga sulit untuk menghubungkan VPU ke prosesor utama.
Pembuatan kode yang efisien sangat penting dalam aplikasi yang disematkan, di mana kecepatan eksekusi dan konsumsi daya harus dioptimalkan. Pengkodean modul SLAM visual adalah tugas yang kompleks, berpotensi membutuhkan pengambilan, penyimpanan, dan manipulasi data dalam jumlah besar. Dalam pencocokan fitur, misalnya, deskriptor disimpan dalam memori sebagai vektor 128-bit dan, untuk mencocokkan fitur di seluruh bingkai yang berurutan, 200 fitur biasanya harus dibandingkan dengan 2000 kandidat, yang mengarah ke 400.000 operasi pencocokan. Operasi pencocokan jelas membutuhkan sejumlah besar memori, tetapi juga, jika ukuran data sampel kecil, overhead yang tinggi untuk mengambil dan memformat data dapat membahayakan efisiensi algoritme yang dikodekan.
Penyesuaian bundel adalah algoritma lain yang melibatkan aljabar linier kompleks, yang melibatkan manipulasi matriks besar. Berbagai teknik tersedia untuk mengoptimalkan pengkodean untuk modul ini dan modul VSLAM lainnya, tetapi penerapan teknik ini memerlukan keahlian pengkodean khusus visi tingkat tinggi.
Manajemen memori adalah tantangan lain dalam pemrosesan gambar. Data yang diambil dari gambar biasanya dimuat ke lokasi memori berurutan dan bekerja dengan tambalan acak dalam gambar berarti berurusan dengan data yang tidak disimpan di lokasi memori berurutan. Rutinitas perangkat lunak, yang melakukan pencocokan fitur, harus mengambil deskriptor dari lokasi memori yang tidak berurutan, yang semakin meningkatkan overhead penyiapan.
Alat Pengembangan VSLAM
Dengan kecepatan-ke-pasar yang kritis di lingkungan saat ini, tidak selalu praktis bagi pengembang untuk meluangkan waktu untuk memperoleh keterampilan dan pengetahuan yang diperlukan untuk menerapkan kode pemrosesan visi yang efisien. Untungnya, ada sejumlah alat untuk memfasilitasi percepatan aplikasi SLAM yang hemat biaya; kit pengembangan aplikasi tersedia yang menyediakan kombinasi perpustakaan perangkat lunak khusus visi, perangkat keras yang dioptimalkan, dan alat integrasi untuk memungkinkan pengembang memindahkan tugas spesifik visi dengan mudah dari CPU ke VPU.
CEVA SLAM SDK, gambar 4, adalah contoh utama dari perangkat pengembangan aplikasi semacam itu.
Gambar 4:CEVA SLAM SDK. (Sumber:CEVA)
Berdasarkan CEVA XM6 DSP dan CEVA NeuPro AI prosesor hardware, CEVA SLAM SDK memungkinkan integrasi implementasi SLAM yang efisien ke dalam sistem tertanam berdaya rendah. SDK memiliki sejumlah blok penyusun termasuk pustaka pemrosesan gambar yang menyediakan kode yang efisien untuk pendeteksian dan pencocokan fitur serta penyesuaian bundel. Ini juga memberikan dukungan untuk aljabar linier, penyelesaian persamaan linier, penyelesaian persamaan renggang cepat, dan manipulasi matriks.
Perangkat keras CEVA XM6 dioptimalkan untuk pemrosesan gambar dengan fitur-fitur inovatif seperti instruksi beban paralel, yang menangani masalah akses memori yang tidak berurutan, dan juga instruksi khusus yang unik untuk mengeksekusi perhitungan Jarak Hamming. SDK juga menyertakan antarmuka CPU yang mendetail, memungkinkan pengembang untuk dengan mudah mengintegrasikan fungsionalitas pemrosesan visi dengan CPU aplikasi utama.
Sebagai ilustrasi kinerja SDK sebagai alat pengembangan, implementasi referensi modul pelacakan SLAM penuh yang berjalan pada 60 frame per detik diukur memiliki konsumsi daya hanya 86mW.
Kesimpulan
Sistem SLAM visual semakin populer di berbagai aplikasi, seperti robot dan drone bidang pertanian. Ada sejumlah metode alternatif untuk implementasi visual SLAM tetapi, dengan meningkatnya penerapan dalam aplikasi yang disematkan, efisiensi pengkodean dan konsumsi daya yang rendah merupakan faktor penting.
Meskipun pengembang biasanya menggunakan VPU untuk membongkar tugas pemrosesan penglihatan intensif komputasi dari CPU utama, tantangan signifikan tetap ada untuk menghasilkan kode yang efisien dan juga untuk mengelola antarmuka antara VPU dan CPU.
Dengan waktu untuk memasarkan pendorong utama, pengembang dapat mempercepat pengembangan produk dengan memanfaatkan kemampuan yang dibangun ke dalam perangkat pengembangan khusus SLAM seperti CEVA SLAM SDK.