Improved Pose Control of SLAM Robots
Master thesis
Permanent lenke
https://hdl.handle.net/11250/3125923Utgivelsesdato
2024Metadata
Vis full innførselSamlinger
Beskrivelse
Full text not available
Sammendrag
Dette prosjektet hadde som form ̊al ̊a bidra til en forbedret kjøreevne av SLAM-robotene gjen-nom ̊a ta en nærmere kikk p ̊a posisjonsestimatoren samt posisjonskontrolleren i programvareninstallert p ̊a Nordic Semiconductor sitt mikrokontrollerkort nRF52840DK ombord roboten. For-bedringspunktene hadde enda ikke blitt identifisert, annet enn at det i det forløpende fordypning-sprosjektet ble bekreftet at de kan relateres til posisjonskontrolleren, heller enn estimatoren. Meduspesifiserte forbedringspunkter ble det definert en mer generell problemstilling for ̊a hjelpe med ̊a lede form ̊alet med arbeidet i riktig retning.Den valgte problemstillingen ble til slutt formulert slik:Hvordan kan kjøreevnen og kontrollsystemene til SLAM robotene videre optimaliserestil ̊a forholde seg p ̊alitelige og holde seg til lineære kjøreegenskaper?Den generelle formuleringen av problemstillingen tillater prosjektet ̊a gjennomføres p ̊a et mer dy-namisk vis, med mulighet for snevring eller utvidelse av arbeidsomfanget avhengig av hvilke oppda-gelser som gjøres underveis i løpet samtidig som det fremdeles kan overholde det samme sluttm ̊alet.For ̊a besvare spørsm ̊alet vil først hele arbeidsomfanget undersøkes for ̊a finne tegn til feil eller for-bedringspunkter. N ̊ar de er funnet, vil testomfanget kunne snevres inn for ̊a finne flere indikasjoner.Denne iterative tilnærmingen viste seg ̊a være en effektiv metode for ̊a isolere ̊arsakene i de høyereniv ̊aene for ̊a grave dypere ned i systemet med form ̊al om ̊a ha isolert problemet til slutt.Prosjektet opplevde en treg start grunnet variert kodekvalitet og oppsettsanvisninger som ikkevar helt komplette. Dette førte til en samarbeidsinnsats mellom de fire studentene som jobbet p ̊arobotene, for ̊a rydde opp i koden og implementere ordentlig versjonsh ̊andteringsverktøy. Etterdenne omstruktureringen gjennomgikk jeg en flytting som resulterte i at jeg ikke lenger haddetilgang p ̊a MQTT serveren som var satt opp p ̊a lesesalen. Av denne ̊arsak ble omfanget ogs ̊autvidet til ̊a inkludere oppsett av en ny Raspberry Pi-enhet til ̊a støtte MQTT-infrastrukturen slikat det kunne igjen overføres data. I tillegg ble noen gamle python-script tilpasset og utvidet for ̊astøtte dataoverføringen for ̊a gjøre analysene.Etter disse digresjonene, kunne den iterative testprosessen endelig igangsettes. Utdata fra b ̊adeposisjonskontrolleren og motorfartskontrolleren ble analysert, og det ble fort sett at utdataverdieneovergikk en verdi ansett som motorens maksimale kapasitet, noe som etterlot reguleringseffektenute av rekkevidde ettersom alle overg ̊aende verdier ble kuttet av ved hjelp av en kode som er satttil ̊a begrense disse verdiene. Motorene ville derfor kun vise en generell 100% effekt, forovermatetoppførsel. Introduksjonen av en skaleringsverdi p ̊a utdataen for hjulhastighetsreferansen s ̊a ut til ̊agjøre en forskjell p ̊a oppførselen til systemet, ettersom det ble sett at roboten fremviste endringeri kursen som tegn p ̊a en reguleringseffekt. Jo lavere skaleringsverdien var, jo tydeligere kom dettefrem, noe som fulgte til at roboten dro mindre og mindre mot venstre, og etterhvret ville ogs ̊asystemet begynne ̊a kompensere for feilen ved ̊a trekke roboten tilbake mot riktig kurs og stoppenær m ̊alet. Det var en ting som derimot forble uendret, hvilket var at roboten trakk mot venstrei begynnelsen av kjøringen, noe som skjedde ved enhver kjøring.En ferdig implementert løsning kom ikke i havn, men fra oppdagelsene har det absolutt blitt lagtgrunn for ̊a kunne besvare problemstillingens spørsm ̊al og tydelig definere det videre arbeidet.For ̊a kunne beskytte motorene befinner det seg en kodestyrt avgrensning som kutter ned alleoverskridende verdier fra kontrolleren. En skaleringsverdi burde implementeres i forkant av denneavgrenseren for ̊a forsikre om at reguleringsegenskapene til kontrolleren faktisk kommer seg gjen-nom, ettersom det ble observert at disse for det meste ligger i omr ̊adet over avgrensningsverdien.Det er sett og bekreftet at dette tillater roboten ̊a justere kjøreretningen tilbake etter den førstesvingen og kompensere for andre feil. Denne svingen som fremdeles forekommer, synes ̊a skyldesutstyrskarakteristikken i motorene, da den ene motoren er observert ̊a trekke et mye høyere p ̊adragi seksjoner der kjøringen holder seg lineær. Motorene mottar likt p ̊adrag ved oppstart, noe som kanforklare svingen ettersom de krever forskjellige p ̊adrag. En utskiftning av motorer eller kompensas-jon av p ̊adragsdifferansen m ̊a introduseres for ̊a mitigere dette, som i tillegg til skaleringsverdienvil kunne etablere mer fornuftige kjøreegenskaper This project carried the purpose of contributing to an improved driving performance of the SLAMrobots by analyzing the pose estimator and pose controller of the software installed on the NordicSemiconductor Micro-Controller Unit nRF52840 DK onboard the robot. The points of improve-ment were not yet identified, other than verifying that they were related to the robot controlfunctionality, rather than the estimator, which was done in the specialization project leading upto this. With the points of improvement not specified, a problem description with a more generalnature was chosen in order to direct the purpose of the work.The specified problem statement ended up stating:How can the driving performance and control systems of the SLAM robots be furtheroptimized to conform to reliable operation and linear driving properties?The general nature of the statement allows the project to be more dynamically performed, open tonarrowing or extension of the scope as discoveries were made along the way, while still maintainingthe same goals and purpose. To answer this question, the whole scope would need a general analysisto find any signs of errors or improvement factors. Once found, the scope would narrow down andlook for new designations. This iterative approach was an efficient way of eliminating the higherlevel causes and dig deeper, with the end goal of having isolated the problem.A slow project start was caused by varied code quality and startup manuals that weren’t allcomplete. This prompted a cooperative effort between the four students working with the robot,to perform code cleanups and implement proper version handling tools. After the restructuring, Irelocated cities and was no longer able to use the MQTT server which was set up in the sharedworkspace of the students. Hence, the work would also include setting up another Raspberry Piunit to support the MQTT infrastructure of the system, allowing for transmission of data. Someold python scripts were adapted and repurposed, along with some extensions to the robot code, tosupport data transmission of the desired types to help analyze the system behaviour.After the sidetracking, the iterative test process could commence. The output from both the posecontroller and the motor speed controller were analyzed, and it was quickly seen the output valueswould exceed the maximum duty capabilities of the motors, leaving the effect from the regulatorsout as the regulated values would all be limited by saturation and the motor would just display a100% duty feed-forward behaviour. Introducing a scaling factor on the speed reference output fromthe pose controller would seem to change this behaviour, seeing as the robot would start showingsigns of regulation in its movement. The lower the scale, the less the robot would deviate from thecourse, and at some point it would even readjust the heading back towards the target. One thingthat would not be corrected by this scaling factor would however be the initial turn towards theleft, which occurred on each test run.This project did not reach all the way to implementing a proposed solution, but from what wasgathered an answer to the problem statement could be formulated and a clear path could be laidfor further work. In order to protect the motors, the code has a limiter that cuts off any exceedingvalues. A scaling factor should be implemented ahead of this limitation in order for the controlvalues to pass through, as they mostly lie above the limit value. This is seen to allow the robot toreadjust for its initial turn and compensate for the error. The initial left turn that still remains,is likely due to hardware properties of one of the motors as it is seen that the left motor requiresa much higher output than the right to generate a straight trajectory. During the first few stepswhen the robot is accelerating they accelerate at the same rate until a certain point, which may bewhy the robot turns before the regulation kicks in. The motors should be investigated evaluatedwhether a replacement should be done, or whether the controller can be adjusted to compensatefor this offset, as an addition to the scaling factor, in order to achieve a sensible driving.