• No results found

Adaptive Monte Carlo Localization

4.4 Correction

4.4.1 Adaptive Monte Carlo Localization

Adaptive Monte Carlo Localization (AMCL) is een particlefilter met het doel de positie te bepalen aan de hand van laser scans van de omgeving en een reeds bekend kaart. In ROS is dit filter beschikbaar als deamclnode uit de gelijknamige package.

Net als andere particlefilters werkt het filter door een set particles bij te houden, waar elk particle een representatie van de state bevat. De particles worden bijgewerkt met de odometrie en de laser scans worden gebruikt om de likelihood van de particles te berekenen. Het systeem is adaptief; het aantal particles dat gebruikt word is afhankelijk van de likelihood van de particles.

Map creation

Voordat AMCL gebruikt kan worden voor localisatie is het vereist om een kaart te hebben van de omgeving. Deze kaart moet van het typenav_msgs/OccupancyGridzijn. Deze kaart is de basis van de localisatie en moet derhalve gelijk zijn aan de realiteit, zelf intekenen van de kaart zou kunnen maar dit is natuurlijk niet wenselijk. Gezien de achterste LIDAR scanner in het horizontale vlak hangt is het

(a) Op plein, door voetstappen is er een solid ingekleurd in de voergang.

(b) Benaderd stal, occupied ruimte van voetstappen verdwijnen omdat er toch doorheen gekeken kan worden.

(c) Stal inrijden, de plek waar de voetstap- pen stonden is nu gemarkeerd als lege ruimte.

Figuur 4.3: Creeëren van de kaart metoctomap_server, beeld van bovenaf. In rood zichtbaar de INNOVADO.

mogelijk om de metingen van deze sensor te projecteren in de wereld en zo doende een kaart op te bouwen van de boerderij.

Voor 3D representatie wordt veelal octomap[37] gebruikt. Hierbij worden solids gerepresenteerd als octree; een kubus wordt gesplitst in acht kubussen met ribbe de helft van de lengte als de ribbe van de eerste kubus. Al naar gelang van de precisie kunnen ook deze kubussen weer onderverdeeld worden. Per kubus kunnen eigenschappen bijgehouden worden, bijvoorbeeld of deze kubus occupied is of niet. In ROS is er speciaal voor mapping een node;octomap_serverwelke voor elke cell een probability bijhoudt of de cell occupied is of niet. Deze node accepteerdsensor_msgs/LaserScanmessages en gebruikt raytracing om de octomap te updaten; voor elke ray van de lidar wordt vanuit de oorsprong tot de afstand als ‘empty’ gerekend, en op de afstand waar een obstakel gedetecteerd is wordt de cell als ‘occupied’ beschouwd. Doordat elke meting een bepaalde weging heeft en de metingen niet klakkeloos als waar worden aangenomen is het systeem enigszins robuust tegen foutieve metingen en convergeert het naar een representatie van de wereld.

Voor het creeëren van de kaart kan gebruik gemaakt worden van de beschikbare ground-truth positie zoals deze uit GÖTTINGkomt. Deze positie kunnen we interpoleren met de positie zoals deze bepaald

wordt aan de hand van de odometrie. De creatie van de kaart met behulp vanoctomap_serveris te zien in Figure 4.3, hierbij wordt de octree representatie ook ‘platgeslagen’ tot eenOccupancyGridmap. Wat in deze figuur ook te zien is is het nut van de probabilistiche aanpak; in de voergang liep iemand en daardoor is dit ingkleurd als occupied, als het voertuig dichterbij de voergang komt en er achter deze occupied cellen dingen gedetecteerd worden wordt geleidelijk de correcte representatie dat er niets in de voergang staat aangenomen.

Localization

Vervolgens kan met behulp vanamclde global pose estimate berekend worden waardoor de drift van hetodomframe gecompenseerd wordt met behulp van de LIDAR scanners. Hiervoor wordt enkel de achterste laser scanner gebruikt omdat deze in het horizontale vlak gemonteerd is en daardoor uiter- mate geschikt is om deze meetwaarden te fitten in de verkregen kaart. Enkele plaatjes van convergentie van het particlefilter zijn te zien in Figure 4.4.

(a) Na eerste resample stap. (b) Nog een resample later vallen er meer unlikely states weg.

(c) Convergentie compleet.

Figuur 4.4: Resample stappen vanamcl’s particle filter.

Problemen

Het gebruik vanamclvereist een van-te-voren gedefinieerde kaart. Op een boerderij is sprake van een dynamische omgeving, met voertuigen en objecten die van dag tot dag op een andere plek staan, maar ook over een langere tijdspanne zijn er veranderingen zichtbaar. Hopen aarde, zand, gras die verschijnen en verdwijnen en voerkuilen die leeggehaald of gevuld worden. De kaart moet redelijk goed blijven kloppen om localisatie te kunnen uitvoeren.

Het initiele idee was om eenmalig een kaart te maken en deze elke dag iets bij te werken met de laser scans van die dag en zo iteratief de kaart up-to-date te houden. Het bleek echter dat het gebruik van

amclniet de gewenste eigenschappen geeft in de buiten omgeving van de boerderij.amclwerkt prima in situaties met harde muren, zoals naast de stal of in de voergang, het werkt echter veel minder goed in omgevingen die minder hard gedefinieerd zijn zoals in het kuilgebied. Als een obstakel een slope heeft dan is dit problematisch; bijvoorbeeld bij een hoop zand met een slope van 45 graden. Als de INNOVADOiets scheef staat en deze hoop zand scanned met een horizontale scanner dan verschuift de gedetecteerde grens van de hoop zand een aanzienlijk eind op. Omdat de ondergrond waarover de INNOVADOrijd niet overal even vlak is manifesteerd dit probleem zich vooral in het kuilengebied in problematische wijze. Een voorbeeld hiervan is te zien in Figure 4.5, de INNOVADOis hier geel gekleurd zodat deze niet te verwarren is met de rode particles vanamcl.

Idealiter wordt er enkel gebruik gemaakt van duidelijk gedefinieerde landmarks, zoals muren en kuilwanden. Een hoop zand is een slechte landmark en kan beter niet gebruikt worden voor de localisatie. Er is dus de noodzaak om aan te kunnen geven welke objecten wel, en welke niet voor localisatie gebruikt moeten worden. Om dit te kunnen bereiken is er gekozen om een landmark-based localisatie systeem te implementeren.