Unsere Softwarestruktur
Das Herz unserer Autos ist die Software. Damit werten wir die Sensordaten aus und bestimmen die Fahrtrichtung und Geschwindigkeit.
Wir verlassen uns auf etablierte, quelloffene Software
Unsere Software ist in C++ geschrieben. Wir versuchen so weit es geht, den aktuellsten C++ Standard zu verwenden.
Die Basis unseres Systems bildet das Robot Operating System (ROS). Darüber hinaus verwenden wir Eigen für Lineare Algebra, Ceres als Non-linear least squares solver und OpenCV für Bildverarbeitung.
Code-Qualität spielt ein große Rolle für uns. Daher verwenden wir gtest und rostest um Unit- und Integrationtests zu schreiben. Durch statische Code-Analyse mit z.B. clang-tidy können wir weitere Fehler frühzeitig finden.
Die Kommunikation Zwischen dem Rechner und dem BUS-System wird über protobuf realisiert. Auf unseren Microcontrollern läuft ChibiOS.
Unsere Simulation ist in Python implementiert unter der Verwendung des Simulationstools Gazebo.
Machine Learning wird genutzt, um Schilder während der Fahrt zu erkennen. Dazu nutzen wir ein YOLOv5 Netz zur Objekterkennung, das auf über 7000 Bildern trainiert wurde. Unsere Datensätze und Modelle werden mit DVC versionskontrolliert gespeichert. Vom Labeln im Label Studio bis hin zum Trainieren und Evaluieren des Modells sind alle Schritte automatisiert.
KITcar auf Github
Wir versuchen Software-Tools, die uns bei der Entwicklung unserer Autos helfen, auf Github zu veröffentlichen.
KITcar Simulation
Bei KITcar verfügen wir über eine umfangreiche Simulation unseres Autos. Mit ihr kann das komplette Verhalten des Autos auf virtuellen Strecken simuliert werden. Es ist sehr aufwendig (und meistens gar nicht möglich) das echte Auto auf verschiedenen Strecken zu testen. Die Simulation erlaubt hier viel Spielraum und ist daher ein interessantes und praktisches Tool um die Entwicklung zu vereinfachen und zu beschleunigen. Das gesamte Git-Repository ist auf kitcar-gazebo-simulation verfügbar.