Vis enkel innførsel

dc.contributor.advisorOnshus, Tor
dc.contributor.authorRuud Olsen, Marte Nordbotten
dc.date.accessioned2023-09-22T17:20:32Z
dc.date.available2023-09-22T17:20:32Z
dc.date.issued2023
dc.identifierno.ntnu:inspera:140443607:35443847
dc.identifier.urihttps://hdl.handle.net/11250/3091485
dc.description.abstractDenne oppgaven er skrevet som en del av et større prosjekt, kalt SLAM Robot Project, som har et overordnet mål om å bruke flere samarbeidene roboter til å utforske og kartlegge et ukjent område. Hovedformålet med denne avhandlingen har vært å implementere en måte for roboten til å komme seg tilbake til startpunktet sitt uten hjelp av serveren, en prosess som er referert til som homing procedure. Den første løsningen var å få roboten å returnere til sine tidligere destinasjoner etter tur, og på den måten komme seg tilbake til start. Denne metoden fungerer som den skal, og roboten er i stand til å kjøre innom alle posisjonene den skal til og stoppe når den har nådd startposisjonen. Hvis det samme området har blitt besøkt flere ganger, er vil roboten finne korteste vei hjem og unngå unødvendige stopp. Gjennom denne jobbing ble det klart at det var nødvendig å forbedre robotens evne til å kjøre rett fram. Parameterne til to PID-regulatorer ble tilpasset og den resulterende oppførselen analysert. I tillegg ble effekten av maksimalverdien til retningskorrigeringen undersøkt. Disse tiltakene førte til en forbedret oppførsel og robotens bevegelse ble enklere å følge, men roboten drev fortsatt mot høyre. For å redusere effekten av dette ble koden tilpasset slik at roboten justerer retningen sin oftere. Dette førte til at roboten nådde målene sine fortere og avvek mindre fra kursen. Det neste steget var å få roboten til å gå direkte tilbake til start så fort returneringsprosessen ble iverksatt. På vei hjem måtte roboten være i stand til å oppdage og unngå hindringer. Det finnes mange metoder for å unngå hindre, men robotens nåværende tilstand og dens begrensede minnekapasitet gjør at veldig komplekse metoder er utelukket på dette tidspunktet. I stedet ble en enklere variant valgt, hvor roboten begynner å returnere til tidligere destinasjoner dersom et hinder blir oppdaget. Denne funksjonaliteten ble testet og fungerer som den skal, og roboten er dermed i stand til å detektere et hinder, for så å gå tilbake til start samme vei den kom. Den er derimot ikke i stand til å stoppe tidsnok til å unngå å kollidere med hinderet. Ulike deteksjonsavstander ble testet, men selv om de påvirket robotens bevegelse var det ikke nok til å unngå at roboten kolliderte. Roboten viste enkelte ganger en uventet oppførsel mens den kjørte. Det ble klart at det vil være nødvendig å forbedre robotens posisjonsestimat, ettersom denne drifter og enkelte ganger slutter å funke, noe som får roboten til å kjøre i feil retning. I kombinasjon med en rotete kode gjør dette at alt tok lengre tid enn forventet. I tillegg til å implementere denne funksjonaliteten ble kodekvaliteten til prosjektet forsøkt forbedret i samarbeid med studentene Tran, Berg, og Kolbeinsen. En GitHub-organisasjon ble opprettet, og prosjektkoden ble splittet og plassert i sju separate repositorier. Disse ble ryddet i, gitt funksjonelle gitignore-filer, og alle unødvendige filer ble slettet. Det ble laget en dokumentasjon for å samle all informasjon på ett sted. Retningslinjer for navngivning ble lagd, og koden tilpasset til å samsvare med disse. Systemet ble betraktelig mer oversiktlig etter disse forbedringene, men det er fortsatt mye som gjenstår før kvaliteten er så god som er ønsket.
dc.description.abstractThis thesis was written as a part of a larger project, the SLAM Robot Project, which aims to use a team of collaborative mobile robots to explore and map an unknown environment. The main purpose of this thesis was to implement a way for the robot to get back to its initial position without using inputs from the server, a process referred to as the homing procedure. The first approach was to have the robot backtrack its previous targets and thus return to the start position. This functionality worked as intended, and the robot will trace its previous movements and stop when the start position is reached. If the same area has been visited more than once, the robot will find the shortest way home, and not go by unnecessary destinations. While working with the homing procedure, it became clear that an improvement in the robot's ability to drive straight ahead was necessary. Two PID controllers were tuned, and the resulting behaviour was studied. Additionally, the effect of the maximum heading correction value was examined. These efforts resulted in an improved movement and the paths created by the robot became a lot cleaner. However, the robot did still drift to the right. To combat this, a more frequent readjustment of the path was implemented. This caused the robot to reach its destinations faster as it went less off course. The next step was to have the initialization of the homing procedure cause the robot to drive straight back to its initial position. During this drive the robot needed to be able to detect obstacles and avoid them. There exist a lot of possible ways to implement obstacle avoidance, however, the state of the robot and its limited memory makes it unrealistic to implement a complex variant at this point. A simpler version was chosen, where the robot will start backtracking if an obstacle is detected. This procedure was tested and worked as intended, and the robot will return home the way it came. However, the robot is not capable of stopping in time to avoid crashing into the obstacle. Different detection distances were attempted, but while they affected the behaviour, neither was able to prevent the robot from hitting the obstacle. The robot displayed some unexpected behaviour during driving. It became apparent that an improvement of the robot's position estimate is necessary, as it is prone to drift and occasionally fails, causing the robot to drive in the wrong direction. A combination of these elements, and the fact that the code base is not well structured, caused everything to take longer than expected. In addition to implementing these features, a collaborative effort was made with the students Tran, Berg, and Kolbeinsen to improve the workflow and code quality of the SLAM Robot Project. A GitHub organization was created, and the project code was separated and put into seven repositories. The repositories were cleaned up, given functional gitignore files, and all unnecessary files were deleted. Documentation was created to gather all the relevant information in one place. A naming convention was created and implemented for the robot code. While the system was greatly improved through this work, there remains some major refactoring to get the project where it needs to be.
dc.languageeng
dc.publisherNTNU
dc.titlePath planning of a nRF52850 robot: return home without server input
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

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

Vis enkel innførsel