JetRacer: Spurführung mit künstlicher Intelligenz: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Evrard.leuteu-feukeu@stud.hshl.de (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(26 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Projekte]]  
 
[[Kategorie:JetRacer]]  
[[Category:Projects]]
[[Datei:JetRacer Waveshare.jpg|thumb|rigth|500px|Abb. 1: JetRacer AI Pro von Waveshare]]
[[Category:JetRacer]]
[[File:JetRacer Waveshare.jpg|thumb|right|500px|Fig. 1: JetRacer AI Pro from Waveshare]]
 
{| class="wikitable"
{| class="wikitable"
|-
|-
| '''Autor:'''  || [[Benutzer:Evrard_Leuteu-Feukeu|Evrard Leuteu]]
| '''Author:'''  || [[User:Evrard_Leuteu-Feukeu|Evrard Leuteu]]
|-
|-
| '''Art:''' || Projektarbeit
| '''Type:''' || Project Work
|-
|-
| '''Starttermin''': || TBD
| '''Start Date:''' || TBD
|-
|-
| '''Abgabetermin''': || TBD
| '''Submission Date:''' || TBD
|-
|-
| '''Betreuer''': || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
| '''Supervisor:''' || [[User:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|}
|}
== Einführung ==
 
== [[Installation der virtuellen Maschine VirtualBox|Installation der virtuellen Maschine VirtualBox]] ==
== Introduction ==
== Aufgabenstellung ==
 
# Einarbeitung in das bestehende Framwework
The goal of this project was to optimize the JetRacer’s AI for autonomous navigation on the test circuit of the [[Labor_Autonome_Systeme|Autonomous Systems Laboratory]] at HSHL. The JetRacer was required to drive counterclockwise in the right lane as fast and robustly as possible using MATLAB® and a self-developed PD controller.
# Optimierung der KI für den Rundkurs im Labor [[Labor_Autonome_Systeme|Autonome Systeme]] (Geschwindigkeit, Robustheit).
 
# Optimierung des Reglers (z. B. PD-Regler)
Tasks included training a neural network, limiting maximum speed to approximately 1 m/s, taking videos during laps, and deploying the system using GPU Coder.
# Nutzung von MATLAB zum Anlernen des Jetson Nano.
 
# Drive the JetRacer in the right lane counterclockwise with the gamepad controller. Limit the speed via Software to a maximum (e. g. 1 m/s).
# Familiarization with the existing framework.
# Optimization of the AI for the circuit in the [[Labor_Autonome_Systeme|Autonomous Systems Laboratory]] (speed, robustness).
# Optimization of the controller (e.g., PD controller).
# Use of MATLAB to train the Jetson Nano.  
# Drive the JetRacer in the right lane counterclockwise with the gamepad controller. Limit the speed via Software to a maximum (e.g., 1 m/s).
# Take a video while driving a lap with MATLAB<sup>®</sup> using a MATLAB<sup>®</sup>-script.
# Take a video while driving a lap with MATLAB<sup>®</sup> using a MATLAB<sup>®</sup>-script.
# Load the pretrained NN.
# Load the pretrained NN.
# Train the pretrained NN with MATLAB<sup>®</sup> with a MATLAB<sup>®</sup>-App (GUI) by clicking the desired path in the images.
# Train the pretrained NN with MATLAB<sup>®</sup> with a MATLAB<sup>®</sup>-App (GUI) by clicking the desired path in the images.
# Option: Use classic lane tracking algorithms to teach the NN automatically.
# Option: Use classic lane tracking algorithms to teach the NN automatically.
# Write a PD-contoller that uses the NN to drive in the right lane. Program this in MATLAB<sup>®</sup> and let it run on the JetRacer-GPU using GPU Coder.
# Write a PD controller that uses the NN to drive in the right lane. Program this in MATLAB<sup>®</sup> and let it run on the JetRacer GPU using GPU Coder.
# Goal: the car should drive autonomously several laps in the right lane as fast as possible.
# Goal: the car should drive autonomously several laps in the right lane as fast as possible.
<!--
<!--
# Nutzung von ROS2 zum Anlernen des Jetson Nano.
# Use of ROS2 to train the Jetson Nano.
# Bewertung der Vor- und Nachteile der Programmierumgebungen.  
# Evaluation of the advantages and disadvantages of the programming environments.
# Auswahl einer KI-Entwicklungsumgebung
# Selection of an AI development environment.
-->
-->
# Dokumentation nach wissenschaftlichem Stand im HSHL-Wiki
# Documentation according to scientific standards in the HSHL Wiki.
 
== Requirements ==


== Anforderungen ==
The project requires prior knowledge in the following subjects. If you do not meet the requirements, you must acquire these skills during the course of the project using literature or online courses.
Das Projekt erfordert Vorwissen in den nachfolgenden Themengebieten. Sollten Sie die Anforderungen nicht erfüllen müssen Sie sich diese Kenntnisse anhand im Rahmen der Arbeit anhand von Literatur/Online-Kursen selbst aneignen.


* Erfahrungen mit Künstlicher Intelligenz/Deep Learning
* Experience with Artificial Intelligence/Deep Learning
* Programmierung in C++, Python
* Programming in C++, Python
* Dokumentenversionierung mit SVN
* Document versioning with SVN


== Anforderungen an die wissenschaftliche Arbeit ==
== Requirements for Scientific Work ==
* Wissenschaftliche Vorgehensweise (Projektplan, etc.), nützlicher Artikel: [[Gantt-Diagramm| Gantt Diagramm erstellen]]
* Wöchentlicher Fortschrittsberichte (informativ), aktualisieren Sie das [[Diskussion:JetRacer:_Spurf%C3%BChrung_mit_k%C3%BCnstlicher_Intelligenz|Besprechungsprotokoll]] - Live Gespräch mit Prof. Schneider
* Projektvorstellung im Wiki
* Tägliche Sicherung der Arbeitsergebnisse in SVN
* Tägliche Dokumentation der geleisteten Arbeitsstunden
*[[Studentische_Arbeiten_bei_Prof._Schneider|Studentische Arbeiten bei Prof. Schneider]]
*[[Anforderungen_an_eine_wissenschaftlich_Arbeit| Anforderungen an eine wissenschaftlich Arbeit]]


==Projektplan==
* Scientific approach (project plan, etc.), useful article: [[Gantt-Diagram|Create a Gantt diagram]]
* Weekly progress reports (informative), update the [[Discussion:JetRacer:_Lane_Following_with_Artificial_Intelligence|Meeting Minutes]] – live discussion with Prof. Schneider
* Project presentation in the Wiki
* Daily backup of project results in SVN
* Daily documentation of working hours
* [[Student_Projects_with_Prof._Schneider|Student Projects with Prof. Schneider]]
* [[Requirements_for_Scientific_Work|Requirements for Scientific Work]]


<br clear = all>
== Project Plan ==
[[File:Project work.png|frame|Fig. 0: Gantt_Diagram]]
[[Datei:Project work.jpg]]


== SVN-Repositorium ==
*[https://svn.hshl.de/svn/HSHL_Projekte/trunk/JetRacer/ SVN-Repositorium]


== Getting started ==
== Previous Work and Researched on The Topic ==
Lesen Sie zum Einstieg diese Artikel
*Apu, M. L.: ''[[JetRacer: Spurführung mit künstlicher Intelligenz und MATLAB/Simulink]]''. Projektarbeit<br>
*Siddiquy, T.: ''[[Automated lane following of a Waveshare JetRacer with artificial intelligence]]. Bachelorarbeit<br>
*Kamal, A.: ''[[JetRacer: Optimierung der Streckenführung]]''. Projektarbeit
*Kamal, A.: ''[[JetRacer: Optimierung der Streckenführung]]''. Projektarbeit
*[[Gantt-Diagramm| Gantt Diagramm erstellen]]
== Theoretical Background ==
*[[Wiki-Artikel_schreiben | Tipps zum Schreiben eines Wiki-Artikels]]
*[[Software_Planung| PAP Designer Einstieg]]
*[[Software_Versionsverwaltung_mit_SVN| Einführung in SVN]]


The NVIDIA® Jetson Nano™ is a small, powerful computing platform ideal for embedded AI projects. It allows the execution of real-time video analysis, neural network inference, and hardware-accelerated image processing using tools like MATLAB® and GPU Coder.


== [[Understand the existing system framework]] ==
Classical lane detection algorithms and steering control (e.g., PD controllers) are fundamental in autonomous driving and were combined with neural networks to improve the JetRacer’s decision-making.


== [[Optimize AI for speed and robustness in the lab]] ==
Convolutional Neural Networks (CNNs) are a core part of this project. They process images in layers—first detecting edges and shapes, then combining them to recognize lanes. Pooling layers reduce data size while preserving important features, helping the model run faster on limited hardware. The final layers (fully connected or “dense” layers) interpret these features and output the steering decision.
== [[Improve the controller (e.g., PD controller)]] ==
== [[Use MATLAB to train on Jetson Nano]] ==
== [[Drive JetRacer counterclockwise using a gamepad, limiting speed (e.g., 1 m/s)]] ==
== [[Record a lap using a MATLAB script]] ==
== [[Load and retrain a pretrained NN with a MATLAB GUI]] ==
== [[Optionally, automate NN training with classic lane tracking]] ==
== [[Develop a PD controller using the NN, coded in MATLAB for JetRacer GPU]] ==


In training, the following notion should be understood:
*'''Epochs''': represent full passes through the dataset. More epochs typically improve learning up to a point, but too many can lead to overfitting.
*'''Root Mean Square Error (RMSE)''': measures how far off the model’s predictions are—lower RMSE values indicate more accurate steering predictions.
*'''Accuracy''': measures the percentage of correct predictions. In classification models (like predicting discrete steering directions), accuracy helps track how well the model is learning to choose the correct class. Higher accuracy indicates better model performance, especially when validation accuracy is also high.
*'''Loss''': indicates how badly the model is performing. It is a numerical value that shows how far the model’s predictions are from the actual labels. During training, the goal is to minimize the loss function. A low training loss means the model is learning well; a low validation loss means it can generalize to new data.
*'''Validation''': refers to the process of checking how well the model performs on unseen data (not used for training). A separate validation dataset is used to measure generalization performance and avoid overfitting.
*'''Overfitting''': happens when the model learns the training data too well, including noise and outliers, but fails to perform well on new data. Signs of overfitting include high training accuracy but low validation accuracy.
*'''Underfitting''': occurs when the model is too simple or not trained enough to capture the patterns in the data. Both training and validation accuracy remain low.
*'''Batch''': a batch is a small group of training samples processed together before updating the model. Training on batches (instead of the full dataset) helps improve efficiency and generalization. The number of samples in one batch is called the '''batch size'''.
*'''Learning Rate''': controls how big the model’s updates are during training. If it’s too high, the model may skip the optimal solution; if too low, training may be very slow or get stuck.
*'''Training vs. Validation Accuracy/Loss''': while training accuracy/loss shows how well the model fits the training data, validation accuracy/loss indicates how well it performs on unseen data. A good model has both high accuracy and low loss on both datasets, with a small gap between them.




== Summary==
Regression approaches output continuous values but were unstable during testing. This project instead uses **classification**, where each image maps to one of a few predefined steering categories (e.g., left, center, right). This gave better performance and more predictable behavior.
* Firstly connecting to the Jetracer and MATLAB according to the [https://de.mathworks.com/help/coder/nvidia/ref/jetson.html#mw_82bd63bc-9f39-4bf7-8b06-794227589348] MATLAB documentation, which help up to setup the full process.
* For modeling the project it can be make as simple as possible to understand the steps to follow, in this paper [https://www.researchgate.net/publication/289116142_Implementation_and_evaluation_of_image_processing_techniques_on_a_vision_navigation_line_follower_robot],it shows some of the ideas and implementation can be done.
* A outline of the line following algorithm diagram can be:
    [[Datei:Model diagram.png|frame]]


== Model Architecture ==


The JetRacer's steering model uses a **Convolutional Neural Network (CNN)**, a type of AI designed to process images and make decisions based on what it “sees”.


The CNN works like this:


*1. '''Input Layer''': Receives a grayscale image, resized to 224×224 pixels.
*2. '''Convolutional Layers''': These scan the image to find patterns (like lines or edges). Early layers detect simple shapes; deeper layers recognize more complex patterns like lanes.
*3. '''ReLU Activation''': This function makes sure only useful data passes through to the next layer.
*4. '''Pooling Layers''': These reduce the image size while keeping important features, which makes the network faster and less sensitive to noise.
*5. '''Flatten Layer''': Turns the filtered image into a 1D list of numbers.
*6. '''Fully Connected Layers''': These make the final decision by combining the information and outputting a single steering command.
*7. '''Output Layer''': The final result is a classification—e.g., turn left, go straight, or turn right.




This setup is small enough to run efficiently on the Jetson Nano, and accurate enough to follow the lane smoothly.


This model, trained on camera images with corresponding steering labels, helps the JetRacer stay in its lane without human intervention.


* Firstly the camera configuration, Detecting the Jetracer camera then creating a video input object to set all the parameter like frame rate, resolution and others. Then the image acquisition can start its video labeling. [https://de.mathworks.com/help/supportpkg/usbwebcams/ug/webcam.html]


* For image acquisition after setting up camera, it start capturing image on fixed parameter which has been set. Image Processing for the line following starts as a capture the lane data from track, then convert it to grayscale image. Also applying edge detection(Canny), thresholding to locate the line and process the data. Then it continues the loop for the full process.
== [[Understand the Existing System Framework]] ==
 
[[Datei:Image-processing.png|frame]]


== [[Optimize AI for Speed and Robustness in the Lab]] ==


== [[Improve the Controller (e.g., PD Controller)]] ==


== [[Use MATLAB to Train on Jetson Nano]] ==


== [[Drive JetRacer Counterclockwise Using a Gamepad, Limiting Speed (e.g., 1 m/s)]] ==


== [[Record a Lap Using a MATLAB Script]] ==


== [[Load and Retrain a Pretrained NN with a MATLAB GUI]] ==


== [[Optionally, Automate NN Training with Classic Lane Tracking]] ==


== [[Develop a PD Controller Using the NN, Coded in MATLAB for JetRacer GPU]] ==


== [[Autonomous Driving Analysis, sumarry And Conclusion]] ==


* After getting all the data its time for analyze and make it setup for the Jetracer. While from the frame capture extracting the following line feature is main goal. Line positioning, direction of car, prediction of the path to follow next is also part of the process. All the analysis process the speed and steering control gets calculated to create a PID controller.
== [[Walkthrough all Matlab Code Used In This Project]] ==


* Controlling the Jetracer with PID controller has various complex steps to follow such as maintaining the speed, line, steering angle. Setting up the PID values to minimum at first then after identifying the error rate of the predicted line. Then tuning the parameters of the PID help to get the control results.


* The structure of the model is divided in various part: 
main.m: Contains the main loop and integrates other modules.
camera.m: Contains code for camera initialization.
processimage.m: Handles image processing & find line to follow.
PID_controller.m: Manages the PID control logic.
adjustSteering.m: Contains the code to adjust the Jetracer's steering.


== Mögliche Folgethemen ==
* Kreuzungserkennung
* Vorfahrterkennung
* Hinderniserkennung und Umfahrung
* Schildererkennung


== Nützliche Artikel ==
== SVN Repository ==
 
*[https://svn.hshl.de/svn/HSHL_Projekte/trunk/JetRacer/ SVN Repository]
 
== Getting Started ==
 
To get started, read the following articles:
* Siddiquy, T.: ''[[Automated lane following of a Waveshare JetRacer with artificial intelligence]]. Bachelor's Thesis''
* Kamal, A.: ''[[JetRacer: Optimization of Lane Following]]. Project Work''
* [[Gantt-Diagram|Create a Gantt Diagram]]
* [[Writing_Wiki_Articles | Tips for Writing a Wiki Article]]
* [[Software_Planning|Introduction to PAP Designer]]
* [[Software_Version_Management_with_SVN|Introduction to SVN]]
 
 
== Useful Articles ==
 
* [https://de.mathworks.com/videos/matlab-and-simulink-robotics-arena-deep-learning-with-nvidia-jetson-and-ros--1542015526909.html Deep Learning with MATLAB, NVIDIA Jetson, and ROS]
* [https://de.mathworks.com/videos/matlab-and-simulink-robotics-arena-deep-learning-with-nvidia-jetson-and-ros--1542015526909.html Deep Learning with MATLAB, NVIDIA Jetson, and ROS]
* [https://github.com/NVIDIA-AI-IOT/jetracer NVidia: JetRacer]
* [https://github.com/NVIDIA-AI-IOT/jetracer NVidia: JetRacer]
* [https://www.formulaedge.org/what-is-jetracer formulaedge.org]
* [https://www.formulaedge.org/what-is-jetracer formulaedge.org]
* [https://www.waveshare.com/wiki/JetRacer_AI_Kit Waveshare Wiki]
* [https://www.waveshare.com/wiki/JetRacer_AI_Kit Waveshare Wiki]
* [https://de.mathworks.com/matlabcentral/answers/2072946-matlab-to-control-jetracer-jetson-nano-tx1-motor/?s_tid=ans_lp_feed_leaf FAQ: Matlab to control jetracer(jetson nano tx1) motor]
* [https://de.mathworks.com/matlabcentral/answers/2072946-matlab-to-control-jetracer-jetson-nano-tx1-motor/?s_tid=ans_lp_feed_leaf FAQ: MATLAB to control JetRacer (Jetson Nano TX1) motor]
* [https://arxiv.org/html/2404.06229v1 Towards Autonomous Driving with Small-Scale Cars: A Survey of Recent Development]
* [https://arxiv.org/html/2404.06229v1 Towards Autonomous Driving with Small-Scale Cars: A Survey of Recent Development]
* [https://www.mathworks.com/help/ros/ug/lane-detection-in-ros2-using-deep-learning-with-matlab.html Lane Detection in ROS 2 Using Deep Learning with MATLAB]
* [https://www.mathworks.com/help/ros/ug/lane-detection-in-ros2-using-deep-learning-with-matlab.html Lane Detection in ROS 2 Using Deep Learning with MATLAB]
Zeile 139: Zeile 164:
* [https://www.mathworks.com/videos/machine-learning-with-simulink-and-nvidia-jetson-1653572407665.html Machine Learning with Simulink and NVIDIA Jetson]
* [https://www.mathworks.com/videos/machine-learning-with-simulink-and-nvidia-jetson-1653572407665.html Machine Learning with Simulink and NVIDIA Jetson]
* [https://www.researchgate.net/publication/365940001_Comparative_Transfer_Learning_Models_for_End-to-End_Self-Driving_Car Comparative Transfer Learning Models for End-to-End Self-Driving Car]
* [https://www.researchgate.net/publication/365940001_Comparative_Transfer_Learning_Models_for_End-to-End_Self-Driving_Car Comparative Transfer Learning Models for End-to-End Self-Driving Car]
* [https://www.researchgate.net/publication/349219294_Multi-task_deep_learning_with_optical_flow_features_for_self-driving_cars Multi-task deep learning with optical flow features for self-driving cars]
* [https://www.researchgate.net/publication/349219294_Multi-task_deep_learning_with_optical_flow_features_for_self-driving_cars Multi-task Deep Learning with Optical Flow Features for Self-Driving Cars]
* [https://www.mathworks.com/help/reinforcement-learning/ug/train-dqn-agent-for-lane-keeping-assist.html Train DQN Agent for Lane Keeping Assist]
* [https://www.mathworks.com/help/reinforcement-learning/ug/train-dqn-agent-for-lane-keeping-assist.html Train DQN Agent for Lane Keeping Assist]
* [https://www.researchgate.net/publication/372281750 Real-Time End-to-End Self-Driving Car Navigation]
* [https://www.researchgate.net/publication/372281750 Real-Time End-to-End Self-Driving Car Navigation]
Zeile 145: Zeile 170:
* [https://developer.nvidia.com/embedded/learn/jetson-ai-certification-programs Jetson AI Courses and Certifications]
* [https://developer.nvidia.com/embedded/learn/jetson-ai-certification-programs Jetson AI Courses and Certifications]
* [https://forums.developer.nvidia.com/ NVIDIA Developer Forums]
* [https://forums.developer.nvidia.com/ NVIDIA Developer Forums]
* [[ChatGPT Anleitung für einen Lane Following Algorithmus]]
* [[ChatGPT Guide for a Lane Following Algorithm]]


== Literatur ==
== Literature ==
S<span style="font-variant:small-caps">chreiber</span>, C.: ''KI-gestützte „Follow-Me“-Funktion am Beispiel des JetRacer''. Mittweida, Hochschule Mittweida – University of Applied Sciences, Fakultät Ingenieurwissenschaften,
 
Masterarbeit, 2023. URL: [https://monami.hs-mittweida.de/frontdoor/deliver/index/docId/14754/file/MA_55114_Christian-Schreiber_geschwaerzt.pdf]
S<span style="font-variant:small-caps">chreiber</span>, C.: ''AI-Supported "Follow-Me" Function Using the JetRacer as an Example''. Mittweida, Hochschule Mittweida – University of Applied Sciences, Faculty of Engineering Sciences, Master's Thesis, 2023. URL: [https://monami.hs-mittweida.de/frontdoor/deliver/index/docId/14754/file/MA_55114_Christian-Schreiber_geschwaerzt.pdf]


----
----
zurück zum Hauptartikel: [[Studentische_Arbeiten|Studentische Arbeiten]]
 
back to the main article: [[Student_Projects|Student Projects]]

Aktuelle Version vom 12. Juni 2025, 20:51 Uhr

Fig. 1: JetRacer AI Pro from Waveshare
Author: Evrard Leuteu
Type: Project Work
Start Date: TBD
Submission Date: TBD
Supervisor: Prof. Dr.-Ing. Schneider

Introduction

The goal of this project was to optimize the JetRacer’s AI for autonomous navigation on the test circuit of the Autonomous Systems Laboratory at HSHL. The JetRacer was required to drive counterclockwise in the right lane as fast and robustly as possible using MATLAB® and a self-developed PD controller.

Tasks included training a neural network, limiting maximum speed to approximately 1 m/s, taking videos during laps, and deploying the system using GPU Coder.

  1. Familiarization with the existing framework.
  2. Optimization of the AI for the circuit in the Autonomous Systems Laboratory (speed, robustness).
  3. Optimization of the controller (e.g., PD controller).
  4. Use of MATLAB to train the Jetson Nano.
  5. Drive the JetRacer in the right lane counterclockwise with the gamepad controller. Limit the speed via Software to a maximum (e.g., 1 m/s).
  6. Take a video while driving a lap with MATLAB® using a MATLAB®-script.
  7. Load the pretrained NN.
  8. Train the pretrained NN with MATLAB® with a MATLAB®-App (GUI) by clicking the desired path in the images.
  9. Option: Use classic lane tracking algorithms to teach the NN automatically.
  10. Write a PD controller that uses the NN to drive in the right lane. Program this in MATLAB® and let it run on the JetRacer GPU using GPU Coder.
  11. Goal: the car should drive autonomously several laps in the right lane as fast as possible.
  12. Documentation according to scientific standards in the HSHL Wiki.

Requirements

The project requires prior knowledge in the following subjects. If you do not meet the requirements, you must acquire these skills during the course of the project using literature or online courses.

  • Experience with Artificial Intelligence/Deep Learning
  • Programming in C++, Python
  • Document versioning with SVN

Requirements for Scientific Work

Project Plan

Datei:Project work.png
Fig. 0: Gantt_Diagram


Previous Work and Researched on The Topic

Theoretical Background

The NVIDIA® Jetson Nano™ is a small, powerful computing platform ideal for embedded AI projects. It allows the execution of real-time video analysis, neural network inference, and hardware-accelerated image processing using tools like MATLAB® and GPU Coder.

Classical lane detection algorithms and steering control (e.g., PD controllers) are fundamental in autonomous driving and were combined with neural networks to improve the JetRacer’s decision-making.

Convolutional Neural Networks (CNNs) are a core part of this project. They process images in layers—first detecting edges and shapes, then combining them to recognize lanes. Pooling layers reduce data size while preserving important features, helping the model run faster on limited hardware. The final layers (fully connected or “dense” layers) interpret these features and output the steering decision.

In training, the following notion should be understood:

  • Epochs: represent full passes through the dataset. More epochs typically improve learning up to a point, but too many can lead to overfitting.
  • Root Mean Square Error (RMSE): measures how far off the model’s predictions are—lower RMSE values indicate more accurate steering predictions.
  • Accuracy: measures the percentage of correct predictions. In classification models (like predicting discrete steering directions), accuracy helps track how well the model is learning to choose the correct class. Higher accuracy indicates better model performance, especially when validation accuracy is also high.
  • Loss: indicates how badly the model is performing. It is a numerical value that shows how far the model’s predictions are from the actual labels. During training, the goal is to minimize the loss function. A low training loss means the model is learning well; a low validation loss means it can generalize to new data.
  • Validation: refers to the process of checking how well the model performs on unseen data (not used for training). A separate validation dataset is used to measure generalization performance and avoid overfitting.
  • Overfitting: happens when the model learns the training data too well, including noise and outliers, but fails to perform well on new data. Signs of overfitting include high training accuracy but low validation accuracy.
  • Underfitting: occurs when the model is too simple or not trained enough to capture the patterns in the data. Both training and validation accuracy remain low.
  • Batch: a batch is a small group of training samples processed together before updating the model. Training on batches (instead of the full dataset) helps improve efficiency and generalization. The number of samples in one batch is called the batch size.
  • Learning Rate: controls how big the model’s updates are during training. If it’s too high, the model may skip the optimal solution; if too low, training may be very slow or get stuck.
  • Training vs. Validation Accuracy/Loss: while training accuracy/loss shows how well the model fits the training data, validation accuracy/loss indicates how well it performs on unseen data. A good model has both high accuracy and low loss on both datasets, with a small gap between them.


Regression approaches output continuous values but were unstable during testing. This project instead uses **classification**, where each image maps to one of a few predefined steering categories (e.g., left, center, right). This gave better performance and more predictable behavior.

Model Architecture

The JetRacer's steering model uses a **Convolutional Neural Network (CNN)**, a type of AI designed to process images and make decisions based on what it “sees”.

The CNN works like this:

  • 1. Input Layer: Receives a grayscale image, resized to 224×224 pixels.
  • 2. Convolutional Layers: These scan the image to find patterns (like lines or edges). Early layers detect simple shapes; deeper layers recognize more complex patterns like lanes.
  • 3. ReLU Activation: This function makes sure only useful data passes through to the next layer.
  • 4. Pooling Layers: These reduce the image size while keeping important features, which makes the network faster and less sensitive to noise.
  • 5. Flatten Layer: Turns the filtered image into a 1D list of numbers.
  • 6. Fully Connected Layers: These make the final decision by combining the information and outputting a single steering command.
  • 7. Output Layer: The final result is a classification—e.g., turn left, go straight, or turn right.


This setup is small enough to run efficiently on the Jetson Nano, and accurate enough to follow the lane smoothly.

This model, trained on camera images with corresponding steering labels, helps the JetRacer stay in its lane without human intervention.


Understand the Existing System Framework

Optimize AI for Speed and Robustness in the Lab

Improve the Controller (e.g., PD Controller)

Use MATLAB to Train on Jetson Nano

Drive JetRacer Counterclockwise Using a Gamepad, Limiting Speed (e.g., 1 m/s)

Record a Lap Using a MATLAB Script

Load and Retrain a Pretrained NN with a MATLAB GUI

Optionally, Automate NN Training with Classic Lane Tracking

Develop a PD Controller Using the NN, Coded in MATLAB for JetRacer GPU

Autonomous Driving Analysis, sumarry And Conclusion

Walkthrough all Matlab Code Used In This Project

SVN Repository

Getting Started

To get started, read the following articles:


Useful Articles

Literature

Schreiber, C.: AI-Supported "Follow-Me" Function Using the JetRacer as an Example. Mittweida, Hochschule Mittweida – University of Applied Sciences, Faculty of Engineering Sciences, Master's Thesis, 2023. URL: [1]


→ back to the main article: Student Projects