Vis enkel innførsel

dc.contributor.advisorOnshus, Tor
dc.contributor.authorAndersen, Thomas
dc.date.accessioned2022-10-01T17:25:37Z
dc.date.available2022-10-01T17:25:37Z
dc.date.issued2022
dc.identifierno.ntnu:inspera:102231297:34094943
dc.identifier.urihttps://hdl.handle.net/11250/3023115
dc.description.abstractRobot-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.
dc.description.abstractThe robot-project, also known as the SLAM-project, involves student contributions to a system comprising of several robots wirelessly connected to a local server application. The system intends to use the robots to map out an indoor environment. It is a goal that the hardware components involved should be of low-cost in order to motivate smart software solutions and increased accessibility of affordable robotics systems. This thesis' contributions to the robot-project may be seen as twofold - one part involving embedded software development of the communication system used between robots and the server, and the second part comprising development of a Simultanous Localization and Mapping (SLAM) algorithm for the robots. The main focus has been directed at implementing software for a differential drive robot built by previous student contributions based around the nRF52840 Development Kit ported with FreeRTOS. The software implementations are written in C for the nRF52840 based robot, C++ for minor contributions to the server application and python for testing, logging and plotting results. In regards to the development of the communication system, a multi-threaded MQTT-SN client was developed for the robot. Furthermore, a Raspberry Pi was configured to run as a MQTT-SN gateway and broker. The developed communication system was extensively used for both debugging, testing and recording results from the state estimation and mapping part of the assignment. The existing server-robot system before work on this thesis was carried out could be characterized by a master-slave relationship. The robots were responsible for collecting measurements of their surrounding environment, and these measurements along with the robot's pose were sent to the server. The server would command the robots to move to a given target position, and use the information provided by the robot to concurrently build a map and place the robot inside the map. The server application has a simple GUI for observing the robot's position and the incrementally generated map, as well controls for human operators for commanding the robots. In an attempt to remove the master-slave relationship, the robots should be able to operate autonomously (without server interaction) and generate a map by themselves. Thus, rendering the server application only a tool for visualization, data collection and analysis. I.e. the aim is to demote the server application from being a core part of the robot's navigation system. As a first step towards making the robots of the SLAM-project fully autonomous, a feature-based Extended Kalman Filter (EKF)-SLAM algorithm intended for the nRF52840 robot was developed. The robot utilizes a set of four low-end infrared sensors mounted on top of a rotating tower for exteroceptive sensing. Line segments are used as features, and are used in the state estimation framework provided by the Kalman filter for fusion with odometry and inertial measurements in order to simultaneously provide estimates of the robot's two-dimensional position and heading, and build a map. The line extraction algorithm is based upon the density based clustering method known as DBSCAN, the Iterative Endpoint Filter (IEPF), and minimum-square-error line fitting. The feature extraction algorithm was implemented for the nRF52840 robot, however, due to time constraints of the project the EKF-SLAM algorithm implementation for the robot was not finished. Testing of the SLAM approach was still conducted as the algorithm was developed initially in python. Testing the algorithm was done by creating a dataset utilizing the developed MQTT-SN client to publish data from the robot running the line extraction algorithm whilst navigating through a maze. The results show that the EKF-SLAM algorithm outperforms the pose estimates of the EKF currently running on the nRF52840 robot in the presence of loop-closures. However, the generated map appears slightly skewed and displaced likely due to the simplistic closed-form line uncertainty method used in the line extraction process.
dc.languageeng
dc.publisherNTNU
dc.titleSparse IR sensor EKF-SLAM for MQTT-SN/Thread connected robot
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail
Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel