Return to search

Embedded Implementation of Lane Keeping Functionality Using CNN

The interest in autonomous vehicles has recently increased and as a consequence many companies and researchers have begun working on their own solutions to many of the issues that ensue when a car has to handle complicated decisions on its own. This project looks into the possibility of relegating as many decisions as possible to only one sensor and engine control unit (ECU) — in this work, by letting a Raspberry Pi with a camera attached control a vehicle following a road. To solve this problem, image processing, or more specifically, machine learning’s convolutional neural networks (CNN) are utilized to steer a car by monitoring the path with a single camera. The proposed CNN is designed and implemented using a machine learning library for Python known as Keras. The design of the network is based on the famous Lenet, but has been downscaled to increase computation speed and to reduce memory size while still maintaining a sufficient accuracy. The network was run on the ECU, which in turn was fastened to a RC car together with the camera. For control purposes wires were soldered to the remote controller and connected to the Raspberry Pi. As concerns steering, a simple bang-bang controller was implemented. Glass box testing was used to assess the effectiveness of the code, and to guarantee a continuous evaluation of the results. To satisfy the network’s requirements in terms of both accuracy and computation speed larger experiments were performed. The final experiments showed that the network achieved sufficient accuracy and performance to steer the prototype car in real time tasks, such as following model roads and stopping at the end of the path, as planned. This shows that despite being small with moderate accuracy, this CNN can handle the task of lane-keeping using only the data of one single camera. Since the CNN could do this while running on a small computer such as the Raspberry Pi, it has been observed that using a CNN for a lane-keeping algorithm in an embedded system looks promising. / På senare tid så har intresset angående självkörande bilar ökat. Detta har lett till att många företag och forskare har börjat jobbat på sina egna lösningar till den myriad av problem som upstår när en bil behöver ta komplicerade beslut på egen hand. Detta projekt undersöker möjligheten att lämna så många av dessa beslut som möjligt till en enda sensor och processor. I detta fall så blir det en Raspberry Pi (RPI) och en kamera som sätts på en radiostyrd bil och skall följa en väg. För att implementera detta så används bildbehandling, eller mer specifikt, convolutional neural networks (CNN) från maskininlärning för att styra bilen med en enda kamera. Det utvecklade nätverket är designat och implementerat med ett bibliotek för maskininlärning i Python som kallas för Keras. Nätverkets design är baserat på det berömda Lenet men den har skalats ner för att öka prestandan och minska storleken som nätverket tar men fortfarande uppnå en anständing träffsäkerhet. Nätverket körs på RPIn, vilken i sin tur är fastsatt på en radiostyrd bil tillsammans med kameran. Kablar har kopplats och blivit lödda mellan RPIn och handkontrollen till radiostyrda bilen så att RPIn kan styra bilen. Själva styrningen lämnats åt en simpel "Bang Bang controller". Utvärdering av nätvärket och prototypen utfördes löpande under projektets gång, enhetstester gjordes enligt glasboxmetoden för att testa och verifiera olika delar av koden. Större experiment gjordes för att säkerställa att nätverket presterar som förväntat i olika situationer. Det slutgiltiga experimentet fastställde att nätverket uppfyller en acceptabel träffsäkerhet och kan styra prototypen utan problem när denne följer olika vägar samt att den kan stanna i de fall den behöver. Detta visar att trots den begränsade storleken på nätverket så kunde det styra en bil baserat på datan från endast en sensor. Detta var dessutom möjligt när man körde nätverket på en liten och svag dator som en RPI, detta visar att CNN var kraftfulla nog i det här fallet.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-230193
Date January 2018
CreatorsBark, Filip
PublisherKTH, Skolan för elektroteknik och datavetenskap (EECS)
Source SetsDiVA Archive at Upsalla University
LanguageEnglish
Detected LanguageEnglish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess
RelationTRITA-EECS-EX ; 2018:12

Page generated in 0.0029 seconds