Movement Control of Real-time Embedded Robot and Server System using MATLAB-generated C-code
Master thesis
Permanent lenke
https://hdl.handle.net/11250/3094267Utgivelsesdato
2023Metadata
Vis full innførselSamlinger
Sammendrag
Systemet er en tohjulet robot som kommuniserer med en java server. Den tar imot posisjonskommandoer fra serveren og beveger seg mot den lokasjonen. Denne masteroppgaven er en fortsettelsepå spesialiseringsprojectet Kolbeinsen 2022. Rapporten inneholder nødvendig informasjon omhvordan robot systemet fungerer og om den nye implementasjonen av bevegelseskontrollsystemet.MATLAB generert kode er brukt. controller_api() er den MATLAB genererte funksjonen somkalkulerer pådrag for hvert av de to hjulene og estimerer robotens posisjon. controller_api()inneholder en estimator() og en regulator(). For å styre roboten mot et mål, vil den først roteremot målet for så å bevege seg rett. Implementasjonen av gyroskopmålinger i rotate_robot() ogPID-regulator i move_forward() er viktige deler av utvkilingen i denne rapporten. I tillegg, hardet vært satt fokus på programvarekvalitet slik at det blir enklere for nye utviklere å vedlikeholdekoden.
vControllerApiTask(), tidligere kalt vApiTask(), har blitt endret slik at den virker sammen medjava serveren. Alle variabler som hører til controller_api() har blitt initialisert og virker sammenmed denne tasken. Gyroskopmålingene har blitt kalibrert slik at de ikke drifter når man leser av,men implementasjonen av dette er en mulig kilde for feil.Det implementerte systemet har blitt testet. Disse testene inkluderer; innledende tester for gyroscope og system, integrasjonstester for PID-regulator og server integrasjonstester for hele systemet.Nøyaktig posisjon har blitt logget med Opti Track Motive og test prosedyrer bestående av firkanttester og linje tester har blitt utført.
Bidrag har blitt gitt til GitHub Organisasjonen. Sammen med de andre studentene har det blittutført koderengjøringsøkter, diskusjoner om navn konvensjoner og utvikling av en wiki. Videre, harden nye matlab-robot-koden blitt lastet opp som et eget repository i organisasjonen. Det inneholderen README-fil for å sette opp matlab-roboten, den modifiserte robot-applikasjonskoden i c ogMATLAB-filer utviklet i dette prosjektet.
Roboten klarer nå å bevege seg i en rett linje. Den kan også motta flere kommandoer på radmed god presisjon. Dette er grunnet ny implementasjon av en PID-regulator for å kjøre rett frem,og gyroskopmålinger til estimator ved rotasjon. Siden roboten ikke har noen måte å rette oppposisjonsestimatet hvis den begynner å drifte, vil den over tid miste oversikten over hvor den er.Dette er spesielt tilfellet hvis roboten tar en sti til målet bestående av mange kurver eller sklir påhjulene. The system is a two wheeled robot that communicates with a java server. It takes set pointcommands from the server and travels to the given location. This master thesis was a continuationproject from the specialization project Kolbeinsen 2022. The master thesis contains necessaryinformation about how the robot system works and about the implementation of a new movementcontrol system.
MATLAB was used to generate C code. controller_api() is the MATLAB generated function thatcalculates the input for each wheel robot and estimates the position of the robot. controller_api()is a function that contains an estimator() and regulator(). To control the robot towards a setpointit, the robot will first rotate towards the target and then move straight. Two core additions to thesystem are the implementation of gyroscope readings to the rotate_robot() function and a PIDregulator in the move_forward() function of the regulator(). Additionally, a focus has been puton software quality to make it easier to understand and maintain in the future.vControllerApiTask(), previously called vApiTask(), has been modified such that it works withthe java server. All the variables required to run the new MATLAB generated code have beeninitialized and works together with this task. The gyroscope readings have been calibrated suchthat it does not drift, but this calibration implementation stands as a possible source of error.The implemented system have been tested during development. These tests includes; initial testsfor gyroscope and system, integration tests for PID controller and server integration tests for thewhole system. Ground truth pose was captured with Opti Track Motive and test procedures suchas line tests and square tests were conducted.
Contributions have been made to the Github Organization. Collaborative work includes codecleaning sessions and discussions about name conventions and the development of a documentationwiki. Moreover, the newly developed matlab-robot-code has been uploaded as its own repositoryto the organization. It contains a README for setting up the MATLAB robot, relevant reports,robot-application C code and MATLAB files developed in this project.
The robot are now able to move in a straight line and can be sent several commands in successionwith good accuracy. This is due to the implementation of a PID controller for moving straight andgyroscope measurements for feedback while rotating. However, because the robot has no aidingmeasurement, it will over time lose track of where it is. This is especially the case if the robotmoves in a path involving several curves or slips on the wheels.