Rumah  >  Artikel  >  Peranti teknologi  >  GSLAM |. Seni bina dan penanda aras umum SLAM

GSLAM |. Seni bina dan penanda aras umum SLAM

王林
王林ke hadapan
2023-10-20 11:37:01766semak imbas

Tiba-tiba menemui kertas 19 tahun

GSLAM: Rangka Kerja dan Penanda Aras Umum SLAM

Kod sumber terbuka: https://github.com/zdzhaoyong/GSLAM

Pergi terus ke teks penuh untuk merasai kualiti karya ini~

1 Abstrak

Teknologi SLAM telah mencapai banyak kejayaan baru-baru ini dan menarik perhatian syarikat teknologi tinggi. Walau bagaimanapun, cara untuk antara muka dengan algoritma sedia ada atau yang baru muncul untuk melaksanakan penandaarasan dengan cekap pada kelajuan, kekukuhan dan mudah alih masih menjadi persoalan. Dalam kertas kerja ini, satu platform SLAM baharu bernama GSLAM dicadangkan, yang bukan sahaja menyediakan fungsi penilaian tetapi juga menyediakan penyelidik dengan alat berguna untuk membangunkan sistem SLAM mereka sendiri dengan pantas. Sumbangan teras GSLAM adalah sejagat. Antara muka SLAM sumber terbuka merentas platform, direka untuk mengendalikan interaksi set data input, pelaksanaan SLAM, visualisasi dan aplikasi dalam rangka kerja bersatu. Melalui platform ini, pengguna boleh melaksanakan fungsi mereka sendiri dalam bentuk plug-in untuk meningkatkan prestasi SLAM dan seterusnya mendorong aplikasi SLAM ke dalam aplikasi praktikal.

2 Pengenalan

Sejak 1980-an, Penyetempatan dan Pemetaan Serentak (SLAM) telah menjadi topik penyelidikan popular dalam bidang penglihatan komputer dan robotik. SLAM menyediakan fungsi penting untuk banyak aplikasi yang memerlukan navigasi masa nyata, seperti robotik, kenderaan udara tanpa pemandu (UAV), pemanduan autonomi dan realiti maya dan tambahan. Dalam beberapa tahun kebelakangan ini, teknologi SLAM telah berkembang pesat, dan pelbagai sistem SLAM telah dicadangkan, termasuk sistem SLAM bermata (kaedah langsung dan separa langsung berdasarkan titik ciri), sistem SLAM berbilang sensor (kaedah RGB, binokular dan bantuan inersia) dan sistem SLAM berasaskan Pembelajaran (kaedah diselia dan tidak diselia).

Namun, dengan perkembangan pesat teknologi SLAM, hampir semua pengkaji menumpukan kepada teori dan pelaksanaan sistem SLAM mereka sendiri, yang menyukarkan pertukaran idea dan tidak mudah untuk melaksanakan migrasi ke sistem lain. Ini menghalang aplikasi pesat teknologi SLAM dalam pelbagai bidang industri. Tambahan pula, pada masa ini terdapat banyak pelaksanaan sistem SLAM yang berbeza, dan cara untuk menanda aras secara berkesan kelajuan, kekukuhan dan mudah alih masih menjadi isu. Baru-baru ini, Nardi et al dan Bodin et al mencadangkan sistem penanda aras SLAM bersatu untuk menjalankan kajian eksperimen kuantitatif, setanding dan boleh disahkan dan juga meneroka pertukaran antara pelbagai sistem SLAM. Sistem ini memudahkan untuk menjalankan eksperimen penilaian menggunakan set data dan modul penilaian metrik.

Memandangkan sistem sedia ada hanya menyediakan penanda aras penilaian, makalah ini percaya bahawa adalah mungkin untuk mewujudkan platform untuk melayani keseluruhan kitaran hayat algoritma SLAM, termasuk peringkat pembangunan, penilaian dan aplikasi. Di samping itu, SLAM berasaskan pembelajaran mendalam telah mencapai kemajuan yang ketara dalam beberapa tahun kebelakangan ini, jadi adalah perlu untuk mewujudkan platform yang menyokong bukan sahaja C++ tetapi juga Python untuk menyokong penyepaduan geometri dan sistem SLAM berasaskan pembelajaran mendalam dengan lebih baik. Oleh itu, dalam kertas kerja ini, platform SLAM novel diperkenalkan yang bukan sahaja menyediakan keupayaan penilaian tetapi juga menyediakan penyelidik dengan alat berguna untuk membangunkan sistem SLAM mereka sendiri dengan pantas. Melalui platform ini, fungsi yang biasa digunakan disediakan dalam bentuk plug-in, jadi pengguna boleh menggunakannya secara langsung atau mencipta fungsi mereka sendiri untuk prestasi yang lebih baik. Diharapkan platform ini dapat mempromosikan lagi aplikasi praktikal sistem SLAM. Secara ringkasnya, sumbangan utama kertas kerja ini adalah seperti berikut:

  1. Kertas kerja ini mencadangkan platform SLAM sumber terbuka yang umum, merentas platform, yang direka untuk penyelidikan dan kegunaan komersial, mengatasi sistem penanda aras sebelumnya. Antara muka SLAM terdiri daripada berbilang fail pengepala yang ringan dan bebas pergantungan, yang memudahkan untuk berinteraksi dengan set data yang berbeza, algoritma dan aplikasi SLAM dalam bentuk pemalam dalam rangka kerja bersatu. Selain itu, JavaScript dan Python disediakan untuk menyokong aplikasi SLAM berasaskan web dan pembelajaran mendalam.
  2. Dalam platform GSLAM yang dicadangkan, tiga modul yang dioptimumkan diperkenalkan sebagai kelas utiliti, termasuk Penganggar, Pengoptimum dan Perbendaharaan Kata. Penganggar bertujuan untuk menyediakan satu set penyelesai bentuk tertutup, meliputi semua kes, dengan ketekalan sampel yang kukuh (RANSAC Optimizer bertujuan untuk menyediakan antara muka bersatu kepada masalah SLM bukan linear yang popular bertujuan untuk menyediakan perbendaharaan kata yang cekap dan mudah alih pelaksanaan beg untuk pelbagai-; pengecaman tempat berbenang dan dioptimumkan SIMD.
  3. Mendapat manfaat daripada antara muka di atas, kerja ini melaksanakan dan menilai pemalam untuk set data sedia ada, pelaksanaan SLAM dan aplikasi visualisasi dalam rangka kerja bersatu, dan penanda aras atau aplikasi yang muncul pada masa hadapan juga boleh disepadukan dengan mudah.

Yang berikut mula-mula memperkenalkan antara muka rangka kerja GSLAM dan menerangkan prinsip kerja GSLAM. Kedua, tiga komponen praktikal diperkenalkan iaitu Penganggar, Pengoptimum dan Perbendaharaan Kata. Kemudian, beberapa set data awam biasa digunakan untuk menilai pelaksanaan SLAM popular yang berbeza menggunakan rangka kerja GSLAM. Akhir sekali, kami meringkaskan kerja-kerja ini dan menantikan hala tuju penyelidikan masa hadapan.

3 Kerja Berkaitan

Penyetempatan Dan Pemetaan Serentak#🎜🎜🎜🎜🎜 Teknologi #SLAM digunakan untuk membina peta dalam persekitaran yang tidak diketahui dan penderia kedudukan dalam peta, dengan tumpuan utama pada operasi masa nyata. SLAM awal terutamanya berdasarkan penapisan Kalman lanjutan (EKF). Parameter gerakan 6 darjah kebebasan dan tanda tempat 3D secara probabilistik diwakili sebagai vektor keadaan tunggal. Kerumitan EKF klasik meningkat secara kuadratik dengan peningkatan bilangan tanda tempat, mengehadkan kebolehskalaannya. Dalam beberapa tahun kebelakangan ini, teknologi SLAM telah berkembang pesat, dan banyak sistem SLAM visual monokular telah dicadangkan, termasuk berasaskan titik ciri, kaedah langsung dan kaedah separa langsung. Walau bagaimanapun, sistem SLAM monokular kekurangan maklumat skala dan tidak dapat mengendalikan situasi putaran tulen, jadi beberapa sistem SLAM berbilang sensor lain, termasuk kaedah RGBD, binokular dan bantuan inersia muncul untuk meningkatkan keteguhan dan ketepatan.

Walaupun sebilangan besar sistem SLAM telah dicadangkan, terdapat sedikit usaha untuk menyatukan antara muka algoritma ini dan tiada perbandingan komprehensif prestasi mereka. Tambahan pula, pelaksanaan algoritma SLAM ini sering dikeluarkan sebagai boleh laku kendiri dan bukannya perpustakaan, dan selalunya tidak mematuhi mana-mana struktur standard.

Baru-baru ini, odometri visual (VO) diselia dan tidak diselia berdasarkan pembelajaran mendalam telah mencadangkan idea baru berbanding kaedah berasaskan geometri tradisional. Walau bagaimanapun, mengoptimumkan lagi konsistensi berbilang bingkai utama masih tidak mudah. GSLAM menyediakan alatan yang boleh membantu mencapai konsistensi global yang lebih baik. Melalui rangka kerja ini, lebih mudah untuk memvisualisasikan atau menilai hasil dan seterusnya mengaplikasikannya kepada pelbagai sektor industri.

Penglihatan Komputer dan Platform Robotik

Dalam bidang robotik dan komputer, Sistem Robotik (ROS) menyediakan komunikasi yang sangat mudah antara kaedah nod, digemari oleh kebanyakan penyelidik robotik. Banyak pelaksanaan SLAM menyediakan pembungkus ROS untuk melanggan data penderia dan menerbitkan hasil visualisasi. Walau bagaimanapun, ia tidak menyatukan input dan output pelaksanaan SLAM, menjadikannya sukar untuk menilai lagi sistem SLAM yang berbeza.

Diinspirasikan oleh seni bina mesej ROS, GSLAM melaksanakan kelas utiliti komunikasi antara proses serupa yang dipanggil Messenger. Ini memberikan alternatif kepada ROS dalam pelaksanaan SLAM dan mengekalkan keserasian, iaitu, semua mesej yang ditentukan ROS disokong dalam rangka kerja dan pembalut ROS dilaksanakan secara semula jadi. Terima kasih kepada reka bentuk dalam proses, mesej dihantar tanpa bersiri dan pemindahan data, dan mesej boleh dihantar tanpa kelewatan dan kos tambahan. Pada masa yang sama, muatan mesej tidak terhad kepada mesej yang ditentukan ROS, tetapi juga boleh berupa struktur data yang boleh disalin. Tambahan pula, bukan sahaja menyediakan keupayaan penilaian, tetapi juga menyediakan penyelidik dengan alat yang berguna untuk membangunkan dan menyepadukan algoritma SLAM mereka sendiri dengan pantas.

SLAM Penanda Aras

Pada masa ini terdapat beberapa sistem penanda aras SLAM, termasuk penanda aras KITTI, penanda aras TUM RGB-D dan ICL-NUIM RGB-D set data penanda aras, sistem ini hanya menyediakan keupayaan penilaian. Selain itu, SLAMBench2 memanjangkan penanda aras ini ke dalam algoritma dan set data, yang memerlukan pengguna untuk membuat pelaksanaan yang diterbitkan serasi dengan SLAMBench2 untuk penilaian, yang sukar untuk diperluaskan ke lebih banyak kawasan aplikasi. Tidak seperti sistem ini, platform GSLAM yang dicadangkan dalam kertas kerja ini menyediakan penyelesaian yang boleh memberi perkhidmatan kepada keseluruhan kitaran hayat pelaksanaan SLAM, daripada pembangunan kepada penilaian kepada aplikasi. Menyediakan penyelidik dengan alat yang berguna untuk membangunkan sistem SLAM mereka sendiri dengan pantas dan seterusnya membangunkan visualisasi, penilaian dan aplikasi berdasarkan antara muka bersatu.

4

Universal SLAM Architecture#Frame##🎜 Gambaran Keseluruhan

Rangka kerja GSLAM ditunjukkan dalam rajah. Secara keseluruhan, antara muka direka untuk mengendalikan interaksi tiga bahagian.

Memproses input pelaksanaan SLAM. Apabila menjalankan SLAM, data sensor dan beberapa parameter diperlukan. Untuk GSLAM, gunakan kelas Svar untuk konfigurasi parameter dan pemprosesan arahan. Semua data sensor yang diperlukan oleh pelaksanaan SLAM disediakan oleh pelaksanaan Set Data dan dihantar menggunakan Messenger. GSLAM melaksanakan beberapa set data SLAM visual yang popular, membolehkan anda melaksanakan pemalam set data anda sendiri secara bebas.

Pelaksanaan SLAM. GSLAM menganggap setiap pelaksanaan sebagai perpustakaan pemalam. Pembangun boleh dengan mudah mereka bentuk pelaksanaan SLAM berdasarkan antara muka GSLAM dan kelas utiliti. Pembangun juga boleh menggunakan antara muka untuk membungkus pelaksanaan tanpa memperkenalkan kebergantungan tambahan. Pengguna boleh memberi tumpuan kepada pembangunan algoritma teras tanpa mengambil berat tentang input dan output yang perlu diproses secara luaran kepada pelaksanaan SLAM.

    Bahagian visualisasi atau aplikasi menggunakan keputusan SLAM. Selepas pelaksanaan SLAM memproses bingkai input, pengguna mungkin ingin memaparkan atau mengeksploitasi keputusan. Untuk umum, keputusan SLAM hendaklah diterbitkan dalam format standard. Secara lalai, GSLAM menggunakan Qt untuk visualisasi, tetapi pengguna bebas untuk melaksanakan alat visualisasi tersuai dan menambah pemalam aplikasi seperti aplikasi penilaian.
  1. Rangka kerja ini direka bentuk agar serasi dengan pelbagai jenis pelaksanaan SLAM yang berbeza, termasuk tetapi tidak terhad kepada monokular, binokular, RGBD dan odometri inersia visual berbilang kamera dengan gabungan berbilang sensor. Platform pembelajaran mendalam moden dan pembangun lebih suka kod dalam Python, jadi GSLAM menyediakan pengikatan Python, membenarkan pembangun melaksanakan SLAM dalam Python dan memanggilnya menggunakan GSLAM, atau menggunakan Python untuk memanggil pelaksanaan SLAM berasaskan C++. Selain itu, JavaScript disokong untuk kegunaan berasaskan web.

    Kelas Antara Muka Asas

    Sesetengah struktur data yang biasa digunakan oleh antara muka SLAM termasuk tetapan/bacaan parameter, format imej, transformasi pose, model kamera dan struktur data peta. Berikut ialah pengenalan ringkas kepada beberapa kelas antara muka asas.

    Tetapan Parameter

    GSLAM menggunakan parsing parameter kecil dan kelas tetapan parameter Svar, yang hanya mengandungi fail pengepala dan bergantung pada C+ +11 , dan mempunyai ciri berikut:

    a. Sama seperti alat penghuraian parameter popular seperti Google gflags, konfigurasi pembolehubah boleh dimuatkan daripada argumen baris perintah, fail dan persekitaran sistem. Pengguna juga boleh menentukan jenis parameter yang berbeza dan memberikan maklumat pengenalan, yang akan dipaparkan dalam dokumen bantuan.

    b. Bahasa skrip kecil yang menyokong pembolehubah, fungsi dan pernyataan bersyarat untuk menjadikan fail konfigurasi lebih berkuasa.

    c. Pengikatan dan perkongsian selamat benang. Adalah disyorkan untuk mengikat pembolehubah yang kerap digunakan pada penunjuk atau rujukan, yang bukan sahaja memberikan kecekapan tetapi juga kemudahan.

    d, definisi fungsi ringkas dan panggilan daripada C++ atau skrip tulen. Pengikatan antara perintah dan fungsi membantu pembangun memisahkan kebergantungan fail.

    e. Menyokong perwakilan struktur pokok, yang bermaksud konfigurasi boleh dimuatkan atau disimpan dengan mudah menggunakan format XML, JSON dan YAML.

    Intra-Process Messaging

    Kerana ROS menyediakan kaedah komunikasi yang sangat mudah antara nod, ia digemari oleh kebanyakan penyelidik robotik. Diilhamkan oleh seni bina mesej ROS2, GSLAM melaksanakan kelas utiliti komunikasi antara proses serupa yang dipanggil Messenger. Ini menyediakan alternatif kepada ROS dalam pelaksanaan SLAM sambil mengekalkan keserasian. Disebabkan reka bentuk antara prosesnya, Messenger dapat menerbitkan dan melanggan mana-mana kelas tanpa kos tambahan. Berikut ialah pengenalan kepada lebih banyak fungsi:

    a Antara muka menggunakan gaya ROS, yang mudah untuk pengguna bermula. Dan ia menyokong semua mesej yang ditakrifkan ROS, yang bermaksud bahawa ia memerlukan sedikit kerja untuk menggantikan sistem pemesejan ROS yang asal.

    b. Memandangkan tiada siri dan pemindahan data, mesej boleh dihantar tanpa berlengah-lengah dan kos tambahan. Pada masa yang sama, muatan mesej tidak terhad kepada mesej yang ditentukan ROS, tetapi juga menyokong sebarang struktur data yang boleh disalin.

    c Kod sumber hanya termasuk fail pengepala berasaskan C++11 tanpa kebergantungan tambahan, menjadikannya mudah alih.

    d API adalah selamat untuk benang dan menyokong pemberitahuan bersyarat berbilang benang apabila saiz baris gilir lebih besar daripada sifar. Sebelum penerbit dan pelanggan bersambung antara satu sama lain, nama topik dan struktur data RTTI disemak untuk memastikan ia dipanggil dengan betul.

    3D Transforamtion

    GSLAM | 一个通用的SLAM架构和基准

    #🎜#GSLAM | 一个通用的SLAM架构和基准#🎜🎜🎜🎜🎜🎜🎜 Untuk bahagian putaran, terdapat beberapa perwakilan untuk dipilih, termasuk matriks, sudut Euler, kuaternion unit, dan algebra Lie so(3). Untuk transformasi tertentu, mana-mana satu daripadanya boleh digunakan untuk mewakilinya dan boleh ditukar kepada satu sama lain. Walau bagaimanapun, apabila mempertimbangkan pelbagai transformasi dan pengoptimuman manifold, perhatian yang teliti perlu diberikan kepada perwakilan yang dipilih. Perwakilan matriks terlebih parameter menggunakan 9 parameter, manakala putaran hanya mempunyai 3 darjah kebebasan (DOF). Perwakilan sudut Euler menggunakan tiga pembolehubah dan mudah difahami, tetapi ia menghadapi masalah kunci universal dan menyusahkan untuk pelbagai transformasi. Kuaternion unit ialah cara paling cekap untuk melakukan berbilang putaran, manakala algebra Lie ialah perwakilan biasa untuk melaksanakan pengoptimuman popular.

    GSLAM | 一个通用的SLAM架构和基准Begitu juga, algebra Lie se(3) dan sim(3) bagi jasad tegar dan transformasi persamaan ditakrifkan. GSLAM menggunakan kuaternion untuk mewakili bahagian putaran dan menyediakan fungsi untuk menukar satu perwakilan kepada yang lain. Jadual 1 menunjukkan pelaksanaan transformasi dan membandingkannya dengan tiga pelaksanaan manifold lain (Sophus, TooN dan Ceres). Memandangkan pelaksanaan Ceres menggunakan perwakilan paksi sudut, eksponen dan logaritma putaran tidak diperlukan. Seperti yang ditunjukkan dalam jadual, pelaksanaan GSLAM menunjukkan prestasi yang lebih baik kerana ia menggunakan kuaternion dan mempunyai pengoptimuman yang lebih baik, manakala TooN menggunakan pelaksanaan matriks dan berprestasi lebih baik dari segi transformasi titik.

    GSLAM | 一个通用的SLAM架构和基准

    Format imej

    Penyimpanan dan penghantaran data imej adalah salah satu fungsi terpenting dalam SLAM visual. Untuk meningkatkan kecekapan dan kemudahan, GSLAM menggunakan struktur data GImage, yang serasi dengan cv::Mat. Ia mempunyai kaunter penunjuk pintar untuk memastikan memori dikeluarkan dengan selamat dan boleh dipindahkan dengan mudah tanpa penyalinan memori. Penunjuk data diselaraskan untuk pecutan Data Berbilang Arahan Tunggal (SIMD) yang lebih mudah. Pengguna boleh menukar antara GImage dan cv::Mat dengan lancar dan selamat tanpa penyalinan memori.

    Model Kamera

    GSLAM | 一个通用的SLAM架构和基准

    Memandangkan SLAM mungkin mengandungi herotan jejari dan tangensial akibat ketidaksempurnaan pembuatan, atau imej yang ditangkap oleh kamera fisheye atau panoramik, model kamera yang berbeza dicadangkan untuk menerangkan tayangan. GSLAM menyediakan pelaksanaan termasuk OpenCV (digunakan oleh ORB-SLAM), ATAN (digunakan oleh PTAM) dan OCamCalib (digunakan oleh MultiCol-SLAM). Pengguna juga boleh dengan mudah mewarisi kelas ini dan melaksanakan model kamera lain seperti Kannala-Brandt dan model panoramik isometrik.

    Struktur Data Peta

    Untuk pelaksanaan SLAM, matlamatnya adalah untuk mencari dan menjana peta dalam masa nyata. GSLAM mengesyorkan menggunakan struktur data peta bersatu, yang terdiri daripada berbilang bingkai peta dan titik peta. Struktur data ini sesuai untuk kebanyakan sistem SLAM visual sedia ada, termasuk kaedah berasaskan ciri atau langsung.

    Bingkai peta digunakan untuk mewakili status lokasi pada masa yang berbeza, termasuk pelbagai maklumat atau hasil anggaran yang ditangkap oleh penderia, termasuk data mentah IMU atau GPS, maklumat kedalaman dan model kamera. Pelaksanaan SLAM menganggarkan hubungan antara mereka, dan hubungan antara mereka membentuk graf pose.

    Mata peta digunakan untuk mewakili persekitaran seperti yang diperhatikan oleh bingkai, biasanya digunakan oleh kaedah berasaskan ciri. Walau bagaimanapun, titik peta boleh mewakili bukan sahaja titik utama, tetapi juga GCP (Titik Kawalan Tanah), garis tepi atau objek 3D. Korespondensi mereka dengan bingkai peta membentuk graf pemerhatian, sering dipanggil graf berkas.

    5 Alat pelaksanaan SLAM

    Untuk memudahkan pelaksanaan sistem SLAM, GSLAM menyediakan kelas utiliti. Bahagian ini akan memperkenalkan secara ringkas tiga modul yang dioptimumkan, iaitu Penganggar, Pengoptimum dan Perbendaharaan Kata.

    Penganggar

    Pengiraan geometri tulen kekal sebagai masalah asas yang memerlukan penyelesaian masa nyata yang berkuasa dan tepat. Algoritma visual SLAM tradisional atau penyelesaian inersia visual moden bergantung pada algoritma penglihatan geometri untuk pemulaan, penempatan semula dan penutupan gelung. OpenCV menyediakan berbilang algoritma geometri, dan Kneip menyediakan kotak alat untuk penglihatan geometri, OpenGV, yang terhad kepada pengiraan pose kamera. Penganggar GSLAM bertujuan untuk menyediakan keluarga penyelesai bentuk tertutup yang meliputi semua kes dan menggunakan Kaedah Ketekalan Persampelan Rawak Teguh (RANSAC).

    Jadual 2 menyenaraikan algoritma yang disokong oleh Penganggar. Berdasarkan data pemerhatian yang diberikan, ia dibahagikan kepada tiga kategori. Padanan 2D-2D digunakan untuk menganggarkan kekangan epipolar atau homografi, dan pose relatif boleh diuraikan daripadanya. 2D-3D sepadan dengan menganggarkan pose mutlak pusat atau bukan pusat sistem monokular atau berbilang kamera, yang merupakan masalah PnP yang terkenal. Fungsi geometri 3D seperti pemasangan satah, dan menganggarkan transformasi SIM bagi awan dua titik juga disokong. Kebanyakan algoritma bergantung pada perpustakaan algebra linear sumber terbuka Eigen, yang merupakan perpustakaan pengepala sahaja dan tersedia pada kebanyakan platform.

    GSLAM | 一个通用的SLAM架构和基准

    Optimizer

    Pengoptimuman bukan linear ialah bahagian teras sistem SLAM geometri moden. Disebabkan oleh latitud tinggi dan jarang matriks Hessian, struktur graf digunakan untuk memodelkan masalah anggaran kompleks SLAM. Beberapa rangka kerja, termasuk Ceres, G2O dan GTSAM, dicadangkan untuk menyelesaikan masalah pengoptimuman graf umum. Rangka kerja ini digunakan secara meluas dalam sistem SLAM yang berbeza. ORB-SLAM dan SVO menggunakan G2O untuk BA dan pose pengoptimuman graf. OKVIS dan VINS menggunakan Ceres untuk pengoptimuman graf dengan faktor IMU, dan tingkap gelongsor digunakan untuk mengawal kerumitan pengiraan. Forster et al mencadangkan kaedah permulaan visual berdasarkan SVO dan menggunakan GTSAM untuk melaksanakan bahagian belakang.

    Pengoptimum GSLAM bertujuan untuk menyediakan antara muka bersatu untuk kebanyakan masalah SLAM tak linear, seperti penyelesai PnP, BA, pengoptimuman graf pose. Pemalam universal untuk masalah ini dilaksanakan berdasarkan perpustakaan Ceres. Untuk masalah khusus, seperti BA, beberapa pelaksanaan yang lebih cekap, seperti PBA dan ICE-BA, juga tersedia sebagai pemalam. Menggunakan alat pengoptimum, pembangun boleh mengakses pelaksanaan yang berbeza menggunakan antara muka bersatu, terutamanya untuk sistem SLAM berasaskan pembelajaran mendalam.

    Kosa Kata

    Pengiktirafan tempat ialah salah satu bahagian terpenting dalam sistem SLAM, digunakan untuk penempatan semula dan pengesanan gelung balik. Kaedah Bag of Words (BoW) digunakan secara meluas dalam sistem SLAM kerana kecekapan dan prestasi cemerlangnya. FabMap mencadangkan kaedah probabilistik untuk pengecaman tempat berasaskan penampilan, yang digunakan dalam sistem seperti RSLAM dan LSD-SLAM. Memandangkan ia menggunakan deskriptor titik terapung seperti SIFT dan SURF, DBoW2 membina pokok perbendaharaan kata untuk latihan dan pengesanan, menyokong deskriptor binari dan titik terapung. Refael mencadangkan dua versi DBoW2, DBoW3 dan FBoW yang dipertingkatkan, yang memudahkan antara muka dan mempercepatkan latihan dan pemuatan. Selepas itu, ORB-SLAM mengguna pakai deskriptor ORB dan menggunakan DBoW2 untuk pengesanan gelung, penempatan semula dan pemadanan pantas. Selepas itu, satu siri sistem SLAM, seperti ORB-SLAM2, VINS-Mono dan LDSO, menggunakan DBoW3 untuk pengesanan gelung balik. Ia telah menjadi alat yang paling popular untuk melaksanakan pengecaman lokasi dalam sistem SLAM.

    Diilhamkan oleh kerja di atas, GSLAM melaksanakan pelaksanaan fail pengepala sahaja bagi perbendaharaan kata DBoW3, yang mempunyai ciri-ciri berikut:

    1. Mengalih keluar pergantungan pada OpenCV, semua fungsi berada dalam fail pengepala yang hanya bergantung pada C++11 capai.
    2. Menggabungkan kelebihan DBoW2/3 dan FBoW, dengan kelajuan yang sangat pantas dan kemudahan penggunaan. Menyediakan antara muka seperti DBoW3 dan mempercepatkan deskriptor binari dan titik terapung menggunakan arahan SSE dan AVX.
    3. Penggunaan memori yang dipertingkatkan dan pemuatan dipercepat, menyimpan atau melatih perbendaharaan kata dan penukaran daripada ciri imej kepada vektor BoW.

    Jadual 3 menunjukkan perbandingan empat perpustakaan beg perkataan. Dalam percubaan, setiap nod induk mempunyai 10 nod anak, pengesanan ciri ORB menggunakan ORB-SLAM dan pengesanan SIFT menggunakan SiftGPU. Perbendaharaan kata ORB digunakan dalam hasil pelaksanaan, dengan tahap 4 dan 6 masing-masing, serta perbendaharaan kata SIFT. Kedua-dua FBoW dan GSLAM menggunakan multi-threading untuk latihan perbendaharaan kata. Pelaksanaan GSLAM mengatasi prestasi lain dalam hampir semua projek, termasuk memuatkan dan menyimpan perbendaharaan kata, melatih perbendaharaan kata baharu, menukar senarai deskriptor kepada vektor BoW untuk pengecaman tempat dan vektor ciri untuk pemadanan ciri pantas. Selain itu, pelaksanaan GSLAM menggunakan kurang memori dan memperuntukkan lebih sedikit blok memori dinamik kerana sebab utama DBoW2 memerlukan banyak memori ialah isu pemecahan.

    GSLAM | 一个通用的SLAM架构和基准

    6 Tanda Aras Penilaian SLAM

    Tanda aras sedia ada memerlukan pengguna memuat turun set data ujian dan memuat naik keputusan untuk penilaian ketepatan, yang tidak mencukupi untuk menyatukan persekitaran operasi dan menilai perbandingan prestasi yang adil. Terima kasih kepada antara muka bersatu GSLAM, penilaian sistem SLAM menjadi lebih elegan. Dengan bantuan GSLAM, pembangun hanya boleh memuat naik pemalam SLAM dan melakukan pelbagai penilaian kelajuan, kos pengiraan dan ketepatan dalam persekitaran berlabuh menggunakan sumber tetap. Dalam bahagian ini, beberapa set data dan pemalam SLAM yang dilaksanakan akan mula diperkenalkan. Kemudian, tiga pelaksanaan SLAM yang mewakili dinilai pada kelajuan, ketepatan, memori dan penggunaan CPU. Penilaian ini bertujuan untuk menunjukkan kemungkinan pelaksanaan penanda aras SLAM bersatu dengan pemalam SLAM yang berbeza.

    Set Data

    Menjalankan sistem SLAM biasanya memerlukan aliran data sensor dan konfigurasi yang sepadan. Untuk membolehkan pembangun menumpukan pada pembangunan pemalam teras SLAM, GSLAM menyediakan antara muka set data standard dan pembangun tidak perlu mengambil berat tentang input SLAM. Input penderia dalam talian dan data luar talian disediakan melalui pemalam set data yang berbeza Pemalam yang betul akan dimuatkan secara dinamik mengikut akhiran laluan set data yang diberikan. Pelaksanaan set data harus menyediakan semua aliran sensor yang diminta bersama dengan konfigurasi yang berkaitan, jadi tiada persediaan tambahan diperlukan untuk set data yang berbeza. Semua aliran sensor berbeza diterbitkan melalui Messenger, menggunakan nama topik standard dan format data.

    GSLAM telah melaksanakan beberapa pemalam dataset visual SLAM yang popular, seperti yang ditunjukkan dalam Jadual 4. Pengguna juga boleh dengan mudah melaksanakan pemalam set data berdasarkan teras GSLAM pengepala sahaja, menerbitkannya sebagai pemalam dan menyusunnya dengan aplikasi.

    GSLAM | 一个通用的SLAM架构和基准

    Pelaksanaan SLAM

    Rajah 2 menunjukkan beberapa tangkapan skrin pemalam SLAM dan SfM sumber terbuka yang dijalankan menggunakan visualizer Qt terbina dalam. Rangka kerja menyokong sistem SLAM seni bina yang berbeza, termasuk kaedah langsung, kaedah separa langsung, kaedah berasaskan ciri, dan juga kaedah SfM. Pelaksanaan DSO perlu menerbitkan hasil seperti awan titik, pose kamera, trajektori dan peta pose untuk visualisasi seperti pelaksanaan berasaskan ROS. Pengguna boleh menggunakan rangka kerja bersatu untuk mengakses pemalam SLAM yang berbeza, dan sangat mudah untuk membangunkan aplikasi berasaskan SLAM berdasarkan antara muka C++, Python dan Node-JS. Memandangkan ramai penyelidik menggunakan ROS dalam pembangunan, GSLAM juga menyediakan pemalam visualisasi ROS untuk menghantar mesej yang ditakrifkan ROS dengan lancar dan membolehkan pembangun memanfaatkan Rviz untuk paparan atau terus membangunkan aplikasi berasaskan ROS yang lain.

    GSLAM | 一个通用的SLAM架构和基准

    Penilaian

    Memandangkan kebanyakan penanda aras sedia ada hanya menyediakan set data atau tidak mempunyai kebenaran asas untuk pengguna menjalankan penilaian mereka sendiri, GSLAM menyediakan pemalam terbina dalam dan beberapa alatan skrip untuk pengkomputeran penilaian prestasi dan ketepatan.

    Jujukan nostructure-texture-near-withloop dalam set data TUM RGBD digunakan dalam kertas untuk menunjukkan pelaksanaan penilaian. Percubaan berikut menggunakan tiga pemalam SLAM monokular sumber terbuka DSO, SVO dan ORB-SLAM. Dalam semua eksperimen, komputer dengan CPU i7-6700, GPU GTX 1060 dan RAM 16GB yang menjalankan Ubuntu 16.04 64-bit telah digunakan.

    Penilaian prestasi pengiraan termasuk penggunaan memori, bilangan blok memori yang diperuntukkan, penggunaan CPU dan masa statistik yang dibelanjakan untuk setiap bingkai, seperti ditunjukkan dalam Rajah 3. Keputusan menunjukkan bahawa SVO menggunakan paling sedikit memori dan sumber CPU dan mencapai kelajuan terpantas. Dan memandangkan SVO hanyalah odometer visual dan hanya mengekalkan peta setempat dalam pelaksanaan, kosnya kekal stabil. DSO memperuntukkan lebih sedikit blok memori, tetapi menggunakan lebih daripada 100MB memori dan berkembang dengan perlahan. Satu masalah dengan DSO ialah apabila bilangan bingkai menurun di bawah 500, masa pemprosesan meningkat secara mendadak, di samping itu, masa pemprosesan bingkai utama adalah lebih lama lagi. ORB-SLAM menggunakan sumber CPU yang paling banyak, masa pengiraan adalah stabil, tetapi penggunaan memori meningkat dengan cepat, dan ia memperuntukkan dan mengeluarkan sejumlah besar blok memori kerana BAnya menggunakan perpustakaan G2O dan tidak menggunakan kaedah pengoptimuman tambahan.

    GSLAM | 一个通用的SLAM架构和基准

    Rajah 4 menunjukkan keputusan penilaian trajektori odometri. Seperti yang ditunjukkan dalam rajah, SVO lebih pantas tetapi mempunyai drift yang lebih besar, manakala ORBSLAM mencapai ketepatan tertinggi dari segi ralat sikap mutlak (APE). Memandangkan penilaian menyeluruh ialah aplikasi pemalam boleh pasang, lebih banyak metrik penilaian boleh dilaksanakan semula, seperti ketepatan awan titik.

    GSLAM | 一个通用的SLAM架构和基准

    7 Ringkasan

    Artikel ini memperkenalkan platform SLAM am baharu yang dipanggil GSLAM, yang mencadangkan sokongan daripada pembangunan, penilaian kepada aplikasi. Melalui platform ini, kit alat yang biasa digunakan disediakan dalam bentuk pemalam, dan pengguna juga boleh membangunkan modul mereka sendiri dengan mudah. Untuk menjadikan platform lebih mudah digunakan, jadikan antara muka hanya bergantung pada C++11. Selain itu, antara muka Python dan JavaScript disediakan untuk mengintegrasikan SLAM tradisional dan SLAM berasaskan pembelajaran mendalam dengan lebih baik, atau melaksanakan operasi teragih di Web.

    Dalam penyelidikan berikut, lebih banyak pelaksanaan SLAM, dokumen dan kod demonstrasi akan disediakan untuk pembelajaran dan penggunaan yang mudah. Di samping itu, integrasi SLAM tradisional dan SLAM berasaskan pembelajaran mendalam akan disediakan untuk meneroka lebih lanjut kemungkinan sistem SLAM yang tidak diketahui.

    Laman utama karya ini adalah seperti berikut:

    GSLAM: Halaman Utama

    Rasanya seperti rangka kerja untuk mempelajari prinsip setiap bahagian SLAM~

    GSLAM | 一个通用的SLAM架构和基准

    Pautan asal: https://mp.weixin .qq.com/s/ PCxhqhK3t1soN5FI0w9NFw

Atas ialah kandungan terperinci GSLAM |. Seni bina dan penanda aras umum SLAM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam