Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

De ontwikkeling van visuele SLAM-applicaties vergemakkelijken

Simultaneous Localization and Mapping (SLAM) beschrijft het proces waarbij een apparaat, zoals een robot, sensorgegevens gebruikt om een ​​beeld van zijn omgeving op te bouwen en tegelijkertijd zijn positie binnen die omgeving te bepalen. Er zijn veel verschillende manieren om SLAM te implementeren, zowel wat betreft de gebruikte software-algoritmen als de gebruikte sensoren, waaronder camera's, sonar, radar, LiDAR en basispositiegegevens, met behulp van een traagheidsmeeteenheid (IMU).

De beschikbaarheid van goedkope en kleine camera's heeft geleid tot de populariteit van monoculaire visuele SLAM-systemen, die een enkele standaardcamera gebruiken om de locatie- en kaartfuncties uit te voeren. Dergelijke visuele SLAM-systemen zijn te vinden in een breed scala aan robots, waaronder Mars-rovers en -landers , veldrobots in de landbouw, drones en mogelijk autonome voertuigen. Visual SLAM-systemen bieden ook voordelen waar GPS niet beschikbaar is, bijvoorbeeld in binnenruimtes of in grote steden, waar obstructie door gebouwen de GPS-nauwkeurigheid vermindert.

Dit artikel beschrijft het visuele basisproces SLAM, met de modules en de algoritmen die betrokken zijn bij objectherkenning en tracking en foutcorrectie. De voordelen van het overdragen van de SLAM-berekening en -functionaliteit naar speciale DSP's worden besproken en de CEVA-SLAM SDK-ontwikkelingskit wordt gebruikt als illustratie van de voordelen die kunnen worden verkregen door deze ontwikkelingsroute te volgen.

Directe en op functies gebaseerde SLAM

Er zijn veel verschillende benaderingen voor de implementatie van visuele SLAM, maar ze gebruiken allemaal dezelfde algemene methode, waarbij setpoints worden gevolgd door opeenvolgende cameraframes om hun 3D-positie te trianguleren en tegelijkertijd deze informatie te gebruiken om de camerapositie te benaderen. Tegelijkertijd gebruiken SLAM-systemen voortdurend complexe algoritmen om het verschil tussen geprojecteerde en werkelijke punten te minimaliseren - de herprojectiefout.

Visual SLAM-systemen kunnen worden geclassificeerd als direct of feature-based, afhankelijk van de manier waarop ze de informatie van een ontvangen afbeelding gebruiken. Directe SLAM-systemen vergelijken volledige afbeeldingen met elkaar en leveren rijke informatie over de omgeving, waardoor een meer gedetailleerde kaart kan worden gemaakt, maar dit gaat ten koste van de verwerkingsinspanning en snelheid. Dit artikel richt zich op feature-based SLAM-methoden, die de afbeelding doorzoeken op gedefinieerde features, zoals hoeken en “blobs” en de schatting van locatie en omgeving alleen op deze features baseren. Hoewel op kenmerken gebaseerde SLAM-methoden aanzienlijke hoeveelheden waardevolle informatie uit de afbeelding weggooien, is de wisselwerking een vereenvoudigd proces dat rekenkundig eenvoudiger te implementeren is.


Figuur 1:Direct vs Feature-based SLAM. (Bron:https://vision.in.tum.de/research/vslam/lsdslam)

Het visuele SLAM-proces

De belangrijkste stappen in op kenmerken gebaseerde SLAM zijn het extraheren van een reeks schaarse kenmerken uit de invoerbeelden, het matchen van de kenmerken verkregen uit verschillende cameraposities en het oplossen van het SLAM-probleem door de herprojectiefout van het kenmerk te minimaliseren (het verschil tussen de gevolgde locatie van een punt en waar het naar verwachting wordt gegeven aan de schatting van de camerapositie, over alle punten).

Deze stappen worden uitgevoerd met behulp van een reeks bouwstenen, die hieronder worden beschreven, die gemeenschappelijk zijn voor alle op functies gebaseerde SLAM-implementaties. Visual SLAM is een evoluerend gebied dat aanzienlijke hoeveelheden onderzoek genereert en voor elke module zijn verschillende algoritmen ontwikkeld en voorgesteld, die elk voor- en nadelen hebben, afhankelijk van de exacte aard van de SLAM-implementatie. De onderstaande beschrijving vermeldt een subset van de huidige, meest populaire algoritmen.

Feature Extraction, figuur 2, is een proces dat op efficiënte wijze nuttige informatie in een afbeelding weergeeft, zoals hoeken, randen, blobs en meer complexe objecten zoals deuropeningen en ramen als een compacte feature vector. Populaire feature-extractie-algoritmen zijn Difference of Gaussian (DoG) en Features from Accelerated Segment Test (FAST9), een hoekdetectiemethode die zeer geschikt is voor realtime videoverwerking vanwege de rekenefficiëntie.


Figuur 2:Extractie van SLAM-functies. (Bron:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

In Feature Description wordt het gebied rond elk geëxtraheerd kenmerk omgezet in een compacte descriptor die kan worden vergeleken met andere descriptors. Kenmerken kunnen bijvoorbeeld worden beschreven door hun uiterlijk of door de intensiteit van de pixels in een vlak rond het kenmerkpunt. ORB en FREAK zijn voorbeelden van populaire feature descriptor-algoritmen.

In Feature Matching worden geëxtraheerde features (descriptors) gematcht over meerdere frames. Functies worden op twee afbeeldingen gematcht door alle functies in de eerste afbeelding te vergelijken met alle functies in de tweede afbeelding. De Hamming-afstandsfunctie wordt vaak gebruikt bij het matchen van kenmerken, omdat deze efficiënt kan worden uitgevoerd in hardware met behulp van de XoR- en count-bits-functies op bitsets van gegevens zoals vectoren. De Hamming-afstand geeft een indicatie van hoeveel bits in twee vectoren verschillend zijn, wat betekent dat hoe lager de score, hoe dichter de overeenkomst.

Loop Closure is de laatste stap in het SLAM-proces en zorgt voor een consistente SLAM-oplossing, vooral wanneer lokalisatie- en mapping-operaties over een lange periode worden uitgevoerd. Lussluiting observeert dezelfde scène door niet-aangrenzende frames en voegt een beperking toe om de geaccumuleerde drift in de pose-schatting te verminderen. Net als bij de andere visuele SLAM-modules is er een verscheidenheid aan algoritmen ontwikkeld voor het sluiten van lussen, waarvan de meest populaire Bundelaanpassing, Kalman-filtering en deeltjesfiltering zijn.

VSLAM-algoritmen zijn een actief onderzoeksgebied en het bovenstaande zijn voorbeelden van een toenemend aantal technieken die de afgelopen jaren zijn ontstaan. Op functies gebaseerde SLAM-methoden hebben de voorkeur voor embedded oplossingen, omdat ze hogere verwerkingssnelheden mogelijk maken en efficiënter gebruik maken van geheugenbandbreedte. Bovendien vertonen op functies gebaseerde oplossingen een hogere mate van robuustheid in een reeks van omstandigheden, waaronder snelle veranderingen in helderheid, weinig licht, snelle camerabewegingen en occlusies.

De keuze voor een specifiek algoritme wordt bepaald door de kenmerken van de specifieke toepassing, waaronder typen kaarten, sensortypen, vereiste mate van nauwkeurigheid en nog veel meer. Veel SLAM-systemen bevatten een combinatie van algoritmen die het beste geschikt zijn voor de meest uiteenlopende scenario's.

Uitdagingen voor SLAM-implementatie

Visual SLAM-verwerking is extreem rekenintensief, waardoor traditionele, CPU-gebaseerde implementaties zwaar worden belast, wat leidt tot overmatig stroomverbruik en lage framesnelheden, met als gevolg gevolgen voor de nauwkeurigheid en de levensduur van de batterij. Ontwikkelaars van opkomende SLAM-applicaties hebben oplossingen nodig die hogere integratieniveaus en een lager stroomverbruik bieden. Ze gebruiken in hun ontwerpen steeds vaker dedicated vision processing units (VPU's). Een VPU is een type microprocessor met een architectuur die speciaal is ontworpen voor de versnelling van machine vision-taken, zoals SLAM, en die kan worden gebruikt om de vision-verwerking te ontlasten van de CPU van de hoofdtoepassing. VPU's, zoals CEVA's CEVA-XM6, figuur 3, bevatten functies zoals een laag stroomverbruik, sterke ALU's, krachtige MAC-mogelijkheden, geheugentoegang met hoge doorvoer en speciale vision-instructies. De apparaten ondersteunen ook de krachtige drijvende-kommamogelijkheden die vereist zijn voor beeldverwerkingstoepassingen.


Figuur 3:CEVA XM6 vision-verwerkingseenheid. (Bron:CEVA)

Zelfs met VPU's moet de visuele SLAM-ontwikkelaar echter nog verschillende uitdagingen overwinnen, aangezien het creëren van efficiënte code voor de verschillende SLAM-modules een niet-triviale onderneming is en het ook moeilijk kan zijn om de VPU aan de hoofdprocessor te koppelen.

Het creëren van efficiënte code is cruciaal in embedded toepassingen, waar de uitvoeringssnelheid en het stroomverbruik moeten worden geoptimaliseerd. Het coderen van visuele SLAM-modules is een complexe taak, waarbij mogelijk grote hoeveelheden gegevens moeten worden opgehaald, opgeslagen en gemanipuleerd. Bij het matchen van kenmerken worden bijvoorbeeld descriptors in het geheugen opgeslagen als 128-bits vectoren en om kenmerken over opeenvolgende frames te matchen, moeten 200 kenmerken typisch worden vergeleken met 2000 kandidaten, wat leidt tot 400.000 matchbewerkingen. De matching-operatie vereist uiteraard een grote hoeveelheid geheugen, maar ook, waar de steekproefomvang klein is, kan de hoge overhead van het ophalen en formatteren van de gegevens de efficiëntie van het gecodeerde algoritme in gevaar brengen.

Bundelaanpassing is een ander algoritme dat complexe lineaire algebra omvat, waarbij grote matrices worden gemanipuleerd. Er bestaan ​​verschillende technieken om de codering voor deze en andere VSLAM-modules te optimaliseren, maar de implementatie van deze technieken vereist een hoog niveau van visiespecifieke codeerexpertise.

Geheugenbeheer is een andere uitdaging bij beeldverwerking. Gegevens die van een afbeelding zijn vastgelegd, worden meestal in opeenvolgende geheugenlocaties geladen en werken met willekeurige patches in een afbeelding betekent omgaan met gegevens die niet op opeenvolgende geheugenlocaties zijn opgeslagen. Softwareroutines, die functie-matching uitvoeren, moeten descriptors ophalen van niet-opeenvolgende geheugenlocaties, waardoor de instellingsoverhead verder toeneemt.

VSLAM-ontwikkeltools

In de huidige omgeving is het van cruciaal belang dat een ontwikkelaar de tijd neemt om de vaardigheden en kennis te verwerven die nodig zijn om efficiënte vision-verwerkingscode te implementeren. Gelukkig bestaan ​​er een aantal tools om de versnelling van kosteneffectieve SLAM-toepassingen te vergemakkelijken; Er zijn applicatie-ontwikkelingskits beschikbaar die een combinatie bieden van vision-specifieke softwarebibliotheken, geoptimaliseerde hardware en integratietools, zodat de ontwikkelaar de vision-specifieke taken gemakkelijk van de CPU naar de VPU kan overdragen.

De CEVA SLAM SDK, figuur 4, is een toonaangevend voorbeeld van een dergelijke toolset voor applicatieontwikkeling.


Figuur 4:De CEVA SLAM SDK. (Bron:CEVA)

De CEVA SLAM SDK is gebaseerd op de CEVA XM6 DSP en CEVA NeuPro AI-processorhardware en maakt de efficiënte integratie van SLAM-implementaties in energiezuinige embedded systemen mogelijk. De SDK bevat een aantal bouwstenen, waaronder beeldverwerkingsbibliotheken die efficiënte code bieden voor het detecteren en matchen van kenmerken en voor het aanpassen van bundels. Het biedt ook ondersteuning voor lineaire algebra, het oplossen van lineaire vergelijkingen, het snel oplossen van schaarse vergelijkingen en matrixmanipulatie.

De CEVA XM6-hardware is geoptimaliseerd voor beeldverwerking met innovatieve functies zoals de parallelle laadinstructie, die het niet-opeenvolgende geheugentoegangsprobleem aanpakt, en ook een unieke, speciale instructie voor het uitvoeren van de Hamming Distance-berekening. De SDK bevat ook een gedetailleerde CPU-interface, waardoor de ontwikkelaar de functionaliteit voor beeldverwerking gemakkelijk kan integreren met de CPU van de hoofdtoepassing.

Ter illustratie van de prestaties van de SDK als ontwikkelingstool, werd een referentie-implementatie van een volledige SLAM-trackingmodule met een snelheid van 60 frames per seconde gemeten met een stroomverbruik van slechts 86 mW.

Conclusie

Visual SLAM-systemen winnen aan populariteit in een breed scala aan toepassingen, zoals agrarische veldrobots en drones. Er zijn een aantal alternatieve methoden voor de implementatie van visuele SLAM, maar met de toenemende inzet in embedded applicaties, zijn efficiëntie van codering en een laag stroomverbruik kritische factoren.

Hoewel het gebruikelijk is voor ontwikkelaars om VPU's te gebruiken om de rekenintensieve vision-verwerkingstaken van de hoofd-CPU te ontlasten, blijven er aanzienlijke uitdagingen bestaan ​​om efficiënte code te produceren en ook om de interface tussen VPU en CPU te beheren.

Omdat time-to-market een belangrijke drijfveer is, kunnen ontwikkelaars de productontwikkeling versnellen door gebruik te maken van de mogelijkheden die zijn ingebouwd in SLAM-specifieke ontwikkelingstoolkits, zoals de CEVA SLAM SDK.


Ingebed

  1. De rol van extrusie in 3D-printtoepassingen
  2. AI-toepassingen in de wereldwijde toeleveringsketen
  3. Alle toepassingen van de ftalocyaninepigmenten
  4. Alle toepassingen van basiskleurstoffen
  5. Alle toepassingen van Pigment Blue
  6. De ontwikkeling van moderne kunststoffen
  7. Een controller selecteren
  8. De toepassingen van industriële vibrators
  9. Industrie 4.0:de ontwikkeling van unieke cyberbeveiliging
  10. De impact van visueel beheer in de branche
  11. Het belang van interoperabiliteit in 3D-softwaretoepassingen