Implementing Bluetooth LE on a MATLAB controlled nRF52840 robot
Master thesis
![Thumbnail](/ntnu-xmlui/bitstream/handle/11250/3023830/no.ntnu%3ainspera%3a91918311%3a20965102.pdf.jpg?sequence=5&isAllowed=y)
Permanent lenke
https://hdl.handle.net/11250/3023830Utgivelsesdato
2022Metadata
Vis full innførselSamlinger
Sammendrag
Robotprosjektet består av flere roboter som jobber sammen med en serverapplikasjon skrevet i Java for å kartlegge et område. Som del av dette prosjektet eksisterer MATLAB-roboten. Denne roboten er basert på et nRF52840-DK og er delvis programmert med MATLAB. Mer spesifikt, så er regulatoren og estimatoren implementert i MATLAB og MATLAB Coder blir brukt til å generere C-kode fra de implementerte MATLAB-funksjonene. Den genererte C-koden blir brukt inni et program laget til roboten som er skrevet i C-kode.
Den første utgaven av MATLAB-roboten hadde ikke Bluetooth-funksjonalitet, som førte til at implementasjon av Bluetooth på roboten er hovedarbeidet i denne rapporten. Implementasjonen ble utført i vekslende stadier som består av sammenfletting av eksisterende robot-program og jevnlig testing av det redigerte programmet mens det var under endring.
Sluttproduktet fra denne oppgaven er en robot med en regulator og estimator fra MATLAB som kan koble seg til Javaserveren og ta imot kommandoer fra den. Roboten klarer kun å følge den første kommandoen fra serveren. Når roboten mottar flere kommandoer, setter den seg fast i en gjentakende bevegelse som innæbærer at den roterer 90 grader om sin egen akse, og beveger seg ikke framover. Grunnen til denne gjentakende bevegelsen ble undersøkt, men ingen definitiv årsak ble funnet.
Avslutningsvis fungerer MATLAB-roboten når den består av et reguleringssystem implementert i MATLAB i tillegg til å ha en stabil Bluetooth-funksjonalitet. Den synlige oppførselen til roboten endret seg under arbeidet, og årsakene til endringen var en kombinasjon av robotapplikasjonen og maskinvare. The robot project consists of several robots working in concert with a server application written in Java to map out an area. Within this project, the MATLAB robot exists. This specific robot is based on an nRF52840-DK and is partially programmed from MATLAB. That is, the controller and estimator is implemented in MATLAB and MATLAB Coder is used to generate C code from the implemented MATLAB functions. The generated C code is used within an application for the robot which is written in C code.
The first iteration of the MATLAB robot did not have Bluetooth functionality, which caused Bluetooth implementation to be a central part of the objective for this thesis. The implementation was performed in alternating stages characterized by code merging and testing the edited application on the robot.
The final product from this thesis is a robot with a controller and estimator created in MATLAB, which is able to connect to the Javaserver and receive commands from it. The robot is able to follow only the first command from the server. When the robot receives further commands it gets stuck in a program loop where it periodically turns 90 degrees on its own axis and does not move laterally. The reason for this program loop was investigated, but no clear cause was found.
To conclude, the MATLAB robot is able to include a control system implemented in MATLAB as well as a stable Bluetooth functionality. The observable behaviour of the robot changed during the work, with reasons for the change being a combination of the robot application and the hardware.