Skip to content
Главная " IT ir technologijos " SLAM technologijos navigacijoje

SLAM technologijos navigacijoje

Kaip robotai išmoko orientuotis erdvėje geriau už mus

Įsivaizduokite, kad atsibundate visiškai tamsiame, nežinomame kambaryje. Jūsų rankose – tik žibintuvėlis. Kaip surasite išėjimą? Tikriausiai pradėsite šviestuvu apšviesti aplinką, įsiminti, kur stovi baldai, kur yra sienos, ir pamažu sudarysit galvoje kambario planą. Būtent šitaip – tik daug greičiau ir tiksliau – veikia SLAM technologija, kuri šiandien padeda robotams, dronams ir net jūsų dulkių siurbliui orientuotis erdvėje.

SLAM – tai Simultaneous Localization and Mapping, arba lietuviškai – vienu metu vykstanti lokalizacija ir žemėlapio sudarymas. Skamba sudėtingai? Iš tikrųjų esmė paprasta: įrenginys vienu metu ir kuria aplinkos žemėlapį, ir nustato savo poziciją tame žemėlapyje. Tarsi bandytumėte piešti miesto planą ir tuo pačiu metu žymėti, kur patys esate, nežinodami nei vieno, nei kito.

Ši technologija atsirado ne iš tuščios vietos. Dar 1980-ųjų pabaigoje mokslininkai svarstė, kaip padaryti, kad robotai galėtų savarankiškai judėti uždarose patalpose be GPS. Juk GPS signalai pastatuose veikia prasčiau nei lauke, o kartais visai neveikia. Reikėjo kažko kito – ir SLAM tapo tuo sprendimu, kuris pakeitė robotikos pasaulį.

Sensoriai – roboto akys ir ausys

Kad SLAM veiktų, robotui reikia “pojūčių”. Žmogus turi akis, ausis, lytėjimo pojūtį. Robotas naudoja sensorius – ir jų pasirinkimas labai priklauso nuo to, kur ir kaip tas robotas dirbs.

Lazeriniai diapazonų matavimo prietaisai (LIDAR) yra vienas populiariausių variantų. Šie įrenginiai išsiunčia lazerio spindulius į visas puses ir matuoja, per kiek laiko jie atsimušę grįžta atgal. Taip robotas “mato” kliūtis ir nustato atstumus iki jų. LIDAR duomenys būna labai tikslūs – iki kelių centimetrų, o kartais net milimetrų. Dėl to šią technologiją mėgsta naudoti savaeigiai automobiliai ir pramoniniai robotai.

Kameros – kitas dažnas pasirinkimas. Viena kamera gali duoti vaizdą, bet sunkiai įvertina atstumą. Todėl dažnai naudojamos stereo kameros – dvi kameros, kaip mūsų akys, kurios leidžia matyti gylį. Yra ir RGB-D kameros (kaip Microsoft Kinect), kurios vienu metu užfiksuoja spalvotą vaizdą ir gylio informaciją. Kameros privalumas – jos pigesnės už LIDAR ir gali atpažinti objektus, spalvas, tekstūras.

Inerciniai matavimo įtaisai (IMU) papildo vaizdą. Jie matuoja pagreitį ir kampinį greitį, padėdami robotui suprasti, kaip jis juda – ar sukasi, ar greitėja, ar lėtėja. Tai ypač naudinga, kai robotas juda greitai arba kai kiti sensoriai trumpam “apanka” – pavyzdžiui, kai kamera patenka į pernelyg šviesią ar tamsią vietą.

Matematika už kulisų – kaip robotas skaičiuoja

Dabar pats įdomiausias dalykas – kaip robotas iš sensoriaus duomenų sukuria žemėlapį ir nustato savo vietą? Čia prasideda rimta matematika, bet pabandysiu paaiškinti be sudėtingų formulių.

Pagrindinis iššūkis – netikrumas. Sensoriai niekada nėra 100% tikslūs. Kamera gali būti šiek tiek iškreipta, lazeris gali neteisingai atspindėti nuo blizgių paviršių, o roboto ratai gali šiek tiek paslysti ant grindų. Kiekvienas matavimas turi paklaidą, ir tos paklaidos kaupiasi.

SLAM algoritmai naudoja tikimybinį požiūrį. Vietoj to, kad sakytų “aš esu tiksliai čia”, robotas galvoja: “greičiausiai esu čia, bet yra nedidelė tikimybė, kad esu šiek tiek į šoną”. Tas pats su žemėlapiu – kiekvienas objektas žemėlapyje turi tikimybinį pasiskirstymą.

Vienas populiariausių metodų vadinamas Extended Kalman Filter (EKF). Jis nuolat atnaujina roboto pozicijos ir žemėlapio įvertinimą, kai ateina nauji duomenys. Kitas metodas – dalelių filtras (particle filter), kuris veikia tarsi simuliuotų šimtus ar tūkstančius galimų roboto pozicijų ir pamažu atmestų tas, kurios nedera su stebimais duomenimis.

Moderniuose SLAM algoritmuose dažnai naudojamas grafų optimizavimas. Robotas kuria grafą, kuriame mazgai yra jo pozicijos skirtingais laiko momentais, o briaunos – matavimų ryšiai. Kai robotas grįžta į jau matytą vietą (tai vadinama “loop closure”), jis gali patikslinti visą ankstesnį maršrutą ir žemėlapį.

Vizualinis SLAM – kai robotas mato kaip mes

Pastarąjį dešimtmetį ypač populiarus tapo vizualinis SLAM (V-SLAM arba Visual SLAM), kuris remiasi tik kameromis. Kodėl? Nes kameros pigios, kompaktiškos ir duoda daug informacijos.

Vizualinio SLAM principas – ieškoti charakteringų taškų vaizde. Algoritmai (pavyzdžiui, SIFT, SURF, ORB) randa kampus, kraštus, tekstūrų ypatumus – tokius dalykus, kuriuos lengva atpažinti kitame kadre. Kai robotas juda, jis stebi, kaip tie taškai juda vaizde, ir iš to apskaičiuoja savo judėjimą.

ORB-SLAM yra vienas žinomiausių atvirojo kodo vizualinio SLAM algoritmų. Jis gali veikti realiu laiku net paprastame kompiuteryje ir sukurti gana tikslų trimatį žemėlapį. Naudoja tris gijas: vieną sekimui, kitą lokaliam žemėlapio sudarymui, trečią – ciklų uždarymui ir visuotiniam optimizavimui.

Kitas įdomus pavyzdys – LSD-SLAM, kuris vietoj atskirų taškų naudoja tiesias linijas ir pusiau tankius žemėlapius. Tai leidžia geriau veikti aplinkose su mažai tekstūrų – pavyzdžiui, baltose patalpose ar ilguose koridoriuose.

Vizualinis SLAM turi ir trūkumų. Jis prastai veikia tamsoje, per daug šviesoje (kai kamera “apanka”), ar judant labai greitai (kai vaizdas sulietas). Todėl dažnai derinamas su kitais sensoriais.

Kur SLAM jau dirba šiandien

Galbūt nė nežinote, bet SLAM technologija jau seniai įsikūrė jūsų namuose. Šiuolaikiniai robotai dulkių siurbliai – Roomba, Roborock, Xiaomi – visi naudoja SLAM. Jie nuskaito jūsų namus, sukuria žemėlapį ir efektyviai planuoja maršrutą, kad nepraleistų nė vieno kampo ir nevažinėtų du kartus per tą pačią vietą.

Sandėliuose ir gamyklose SLAM naudojantys mobilūs robotai veža prekes, nevažinėja į žmones ir dinamiškai prisitaiko prie besikeičiančios aplinkos. Jei kas nors pastato dėžę koridoriuje, robotas tai pamatys ir apeina.

Dronai su SLAM gali skraidyti uždarose patalpose be GPS. Tai svarbu gelbėjimo operacijose – pavyzdžiui, skraidant per sudegusį pastatą ar urvas. Dronas kuria žemėlapį realiu laiku ir gali parodyti gelbėtojams, kokia vidaus struktūra.

Papildytoji realybė (AR) taip pat remiasi SLAM principais. Kai naudojate AR programėles telefone – pavyzdžiui, IKEA programėlę, kuri leidžia “pastatyti” virtualius baldus jūsų kambaryje – telefonas naudoja ARKit (Apple) ar ARCore (Google), kurie viduje turi SLAM algoritmus. Jie seka telefono judėjimą ir “prisega” virtualius objektus prie realaus pasaulio.

Savaeigiai automobiliai – čia SLAM vaidina svarbų vaidmenį, nors ne vienintelį. Automobilis turi labai tikslų žemėlapį ir naudoja SLAM, kad nustatytų savo poziciją tame žemėlapyje, net kai GPS signalas silpnas ar netikslus. Tai ypač svarbu mieste tarp aukštų pastatų.

Problemos, su kuriomis dar kovojama

Nors SLAM technologija nuėjo toli, ji vis dar nėra tobula. Yra keletas iššūkių, kuriuos mokslininkai ir inžinieriai dar sprendžia.

Dinamiškos aplinkos – tai viena didžiausių problemų. Klasikinis SLAM daro prielaidą, kad aplinka stacionari – sienos nejuda, baldai stovi vietoje. Bet kas nutinka, kai aplinkoje vaikšto žmonės, važinėja mašinos, kas nors perkelia kėdes? Robotas gali sumaišyti, nes jo matomi objektai “šokinėja”. Naujesni algoritmai bando atskirti statinius ir dinamiškus objektus, bet tai sudėtinga.

Ilgas eksploatavimo laikas – kai robotas dirba valandų valandas ar net dienas, žemėlapis tampa vis didesnis, o skaičiavimai – vis lėtesni. Reikia būdų, kaip efektyviai valdyti didelius žemėlapius, galbūt juos “užmiršti” tas dalis, kurios nebereikalingos.

Skalė – SLAM, kuris gerai veikia kambaryje, gali turėti problemų dideliame pastate ar mieste. Kuo didesnė teritorija, tuo daugiau kaupiasi paklaidos. Yra hierarchinių SLAM metodų, kurie kuria kelis skirtingo detalumo žemėlapius, bet tai vis dar aktyvi tyrimų sritis.

Skirtingos aplinkos sąlygos – SLAM, kuris puikiai veikia viduje su geru apšvietimu, gali žlugti lauke saulėtą dieną (per daug šviesos) ar rūke (per mažai matomų detalių). Universalaus sprendimo kol kas nėra.

Energijos suvartojimas – SLAM algoritmai reikalauja nemažai skaičiavimų, o tai reiškia energijos sąnaudas. Mažiems robotams ar dronams, kurie turi ribotas baterijas, tai problema. Ieškoma būdų, kaip optimizuoti algoritmus, kad jie veiktų efektyviau.

Dirbtinis intelektas ateina į pagalbą

Pastaraisiais metais į SLAM sritį įsiveržė giluminiai neuronų tinklai ir kitos dirbtinio intelekto technologijos. Ir tai keičia žaidimo taisykles.

Tradicinis SLAM remiasi geometrija – ieško taškų, linijų, plokštumų. Bet dirbtinis intelektas gali “suprasti” semantiką – atpažinti, kad tai durys, tai stalas, tai langas. Semantinis SLAM ne tik kuria geometrinį žemėlapį, bet ir žymi, kas yra kas. Tai leidžia robotui geriau suprasti aplinką ir priimti protingesnius sprendimus. Pavyzdžiui, robotas žino, kad durys gali būti atidarytos ar uždarytos, o tai dinamiškas elementas.

Neuronų tinklai taip pat gali padėti spręsti klasikines SLAM problemas. Pavyzdžiui, “loop closure” aptikimas – kada robotas grįžta į jau matytą vietą – gali būti daug tikslesnis naudojant giluminius tinklus, kurie išmoko atpažinti vietas net po didelių pokyčių (kita dienos šviesa, perstumti baldai).

Yra ir bandymų visiškai pakeisti tradicinius SLAM algoritmus neuronų tinklais. Idėja – išmokyti tinklą tiesiogiai iš sensoriaus duomenų nustatyti roboto judėjimą ir kurti žemėlapį. Kol kas tokie metodai nepasiekia tradicinių algoritmų tikslumo, bet tai sparčiai besivystanti sritis.

Ką ateitis žada SLAM technologijai

SLAM jau dabar veikia įspūdingai, bet ateityje taps dar galingesnis ir universalesnis. Keletas krypčių, kuriomis technologija vystosi:

Kolaboratyvus SLAM – kai ne vienas, o keletas robotų kartu kuria žemėlapį. Kiekvienas robotas mato dalį aplinkos, o jie dalijasi informacija ir sukuria bendrą, tikslesnį žemėlapį. Tai naudinga paieškos ir gelbėjimo operacijose, kai keletas dronų tyrinėja didelę teritoriją.

Ilgalaikis SLAM – robotai, kurie gali dirbti toje pačioje aplinkoje mėnesius ar metus, prisimindami, kaip ji keičiasi. Pavyzdžiui, biuro robotas žinotų, kad pirmadieniais konferencijų salėje būna papildomos kėdės, o penktadieniais jų mažiau.

Tobulesnis semantinis supratimas – robotai, kurie ne tik žino, kad tai durys, bet ir supranta, kaip jas atidaryti, ar kad liftas veža į kitą aukštą. Tai jau artėja prie tikro dirbtinio intelekto.

Miniatiūrizacija – SLAM technologija mažuose įrenginiuose. Jau dabar yra specialių mikroschemų, kurios spartina SLAM skaičiavimus. Ateityje net maži dronai ar net vabzdžių dydžio robotai galės turėti SLAM.

Jei domitės SLAM ir norite patys pabandyti, yra keletas gerų atvirojo kodo projektų: ORB-SLAM3, RTAB-Map, Cartographer (Google). Daugelis veikia su ROS (Robot Operating System), kuris yra standartas robotikos bendruomenėje. Galite pradėti nuo simuliacijų – pavyzdžiui, Gazebo simuliatoriuje – ir pereiti prie realaus roboto, kai pasijusite pasiruošę.

Kai technologija tampa kasdieniu įrankiu

SLAM – tai viena iš tų technologijų, kurios dirba užkulisiuose, bet keičia mūsų kasdienybę. Nuo dulkių siurblio, kuris nebesitrenkia į baldus, iki savaeigių automobilių, kurie galbūt netrukus taps norma – visur veikia tie patys principai: vienu metu kurti žemėlapį ir nustatyti savo vietą jame.

Įdomiausia tai, kad SLAM vis dar tobulėja. Kas keleri metai atsiranda naujų algoritmų, kurie veikia greičiau, tiksliau, efektyviau. Dirbtinio intelekto integracija atveria visiškai naujas galimybes. O tai reiškia, kad robotai, kurie šiandien atrodo įspūdingi, po dešimtmečio atrodys kaip pirmieji nerangūs prototipai.

Jei kada nors stebėjotės, kaip jūsų robotas siurblys metodiškai valo namus, nepamirškite – už to slypi sudėtinga matematika, protingi algoritmai ir dešimtmečiai tyrimų. SLAM technologija – tai puikus pavyzdys, kaip fundamentiniai moksliniai tyrimai virsta praktiniais įrankiais, kurie padaro mūsų gyvenimą patogesnį. Ir tai tik pradžia – įdomiausios SLAM taikymo galimybės dar laukia prieš akis.