Application of a real-time operating system to enhance the microcontroller software of an autonomous model car
Abstract
Prosjektseminaret Autonomes Fahren ved det Tekniske Universitetet i Darmstadt er ein læringsplattform der studentar får praktisk erfaring med å programmere ein førarlaus bil i målestokk 1:10 med mål om deltaking i Carolo-Cupen. I dette arbeidet forbedrar vi mikrokontrollerprogramvaren som tek hand om dei underliggjande fysiske komponentene i sjølvkjøringssystemet ved å nytte innvevd-sanntidsoperativsystemet FreeRTOS. Vi viser at løysinga vår aukar sjansane for å imøtekome harde sanntidskrav og reduserar den maksimale responstida frå 467.28 ms ned til berre 3.24 ms i eit konstruert overlastingsscenario. Sanntidsfordelane har ein kostnad på 45% auka minnebruk samanlikna med den noverande løysinga, men sidan halvpartan av minnet fortsatt står ubruka er dette ikkje eit problem. Saman med det har vi implementert ein lavnivå hastigheitsregulator med gjennomsnittleg aksellerasjonstid på 478 ms for hastigheiter i området 0.5 m/s — 1.5 m/s, noko som forlengar brukstida til bilmodellande som vert bruka i dag ved å sørgje for kompatibilitet med den kommande generasjonen. I tillegg har vi refaktorert kodeklonar som tek omsyn om forskjellar på bilmodellane ved å nytte konfigurasjonsval på kompilatornivå, noko som gjer kildekoden enklare å vedlikehalde. The Project Seminar Autonomes Fahren at the Technical University of Darmstadt serves as a learning platform where students can get hands-on experience with programming an automated driving system in a 1:10 scale, targeting participation in the Carolo-Cup. In this work, we enhance the microcontroller software in charge of the underlying hardware of the driving system by applying the embedded real-time operating system FreeRTOS. Our solution is proven to increase the chances of meeting hard real-time constraints, reducing the maximum response time from 467.28 ms down to only 3.24 ms in a constructed overload scenario. The real-time benefits come at the cost of 45% increased memory usage compared to the present solution, but as about 50% of the memory is still unused, this is not a problem. With it, a low-level speed controller has been implemented with an average initial acceleration time of 478 ms for speeds in the range 0.5 m/s — 1.5 m/s, increasing the lifetime of currently used car models by ensuring compatibility with the upcoming generation. At last, code clones addressing hardware differences between car models have been refactored by using compile time configuration options, improving the maintainability of the software's source code.