
handle: 11250/3023115
Robot-prosjektet også kjent som SLAM-prosjektet er et resultat av flere studentbidrag til et system bestående av flere roboter med trådløstilkobling til en lokal serverapplikasjon. Systemets formål er å kartlegge et innendørs område. Det er et mål at maskinutstyr som inngår i prosjektet skal være billig for å motivere smarte programvareløsninger og kunne øke tilgang på rimelige robotsystemer. Denne avhandlingens bidrag til robot-prosjektet kan ansees som todelt - en del som omhandler utvikling av programvare i tilknytning til kommunikasjonssystemet brukt mellom robotene og serveren, og en annen del som handler om utvikling av en algoritme for lokalisering og kartlegging for robotene. Hovedfokuset har vært rettet mot utvikling av programvare for en tohjulet robot laget av tidligere studenter som er basert på utviklingskortet nRF52840 portert med sanntidsoperativsystemet FreeRTOS. Programvareløsningene er utviklet i C for nRF52840-roboten, C++ for små bidrag til server applikasjonen og python for testing, logging og plotting av resultater. I forbindelse med utvikling av kommunikasjonssystemet ble en fler-trådet MQTT-SN klient laget for roboten. Ytterligere ble en Raspberry Pi konfigurert som en MQTT-SN \textit{gateway} og MQTT server. Kommunikasjonssystemet ble tatt i bruk for feilsøking, testing og innhenting av resultater fra tilstandsestimering- og kartleggingsdelen av oppgaven. Det eksisterende server-robot systemet før arbeid på oppgaven ble utført kunne beskrives som et master-slave forhold. Robotene var ansvarlige for å hente målinger fra omverdenen som ble sendt sammen med robotens posisjon og retning til serveren. Serverens oppgave var å kommandere robotene til et målområde, og bruke informasjonen sendt fra robotene til å bygge et kart og plassere robotene i kartet. Server applikasjonene har et enkelt brukergrensesnitt for å observere robotenes posisjon og kartet, i tillegg til knapper for å manuelt styre robotene. I et forsøk på å fjerne master-slave forholdet bør robotene operere autonomt (uten å måtte forholde seg til serveren) og kunne generere et kart selv. Det er et mål at server applikasjonen kun skal bli brukt som et verktøy for visualisering, datainnhenting og analyse, og ikke fungere som en sentral del av navigasjonssystemet for roboten. Som et første steg mot å gjøre robotene autonome ble en algoritme basert på et utvidet Kalman Filter utviklet for nRF52840-roboten. Algoritmen detekterer linjestykker som brukes i tilstandsestimeringen for å både kartlegge og korrektere posisjon og retningen til roboten (EKF-SLAM). Roboten bruker fire rimelige infrarødsensorer plassert på toppen av et roterende tårn for å hente data fra omgivelsene sine. Linjedetekterings-algoritmen er basert på grupperingsmetodene DBSCAN og IEPF, og minste kvadraters metode for lineær regresjon. Linjedetekterings-algoritmen ble implementert for roboten, men EKF-SLAM implementasjonen ble ikke ferdigstilt i tide. Likevel ble implementasjonen testet ettersom den først var implementert i python. For å teste algoritmen ble et dataset laget ved å bruke den utviklede MQTT-SN klienten til å sende data fra roboten samtidig som roboten kjørte rundt en labyrint og detekterte linjestykker. Resultatene tyder på at EKF-SLAM algoritmen er i stand til å estimere posisjon og retning på roboten bedre enn EKF algoritmen som kjører på roboten når roboten gjenkjenner områder den har besøkt tidligere. Kartet som genereres samtidig som roboten estimerer sin egen posisjon og retning stemmer ikke helt overens med de faktiske omgivelsene roboten prøver å kartlegge. Dette skyldes antakeligvis den enkle formen for estimering av linjestykkenes usikkerhet i linjedetektsjons-algoritmen.
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 0 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
