Am Dienstag, den 03. März 2020 veranstaltete unser Büro in München das OC|Expert Camp XXL. Dabei hielten unsere Experten von Opitz Consulting interessante Präsentationen, die einen detaillierten Einblick in die verschiedenen Bereiche unserer Branche gegeben haben. Das Studententeam in München wurde zu diesem Anlass beauftragt, vor Ort eine Demo mit dem AWS DeepRacer vorzubereiten, um den Besuchern die außergewöhnliche Hardware vorzuführen. Dieses exklusive Modellauto hat die Fähigkeit nach entsprechendem Training autonom auf dafür vorgesehenen Rennstrecken zu fahren. Opitz Consulting hatte das Auto schon mal auf den „Digital Xchange Days 2019“ in Gummersbach vorgestellt, jedoch war die Strecke, die damals benutzt wurde, zu groß für unsere Räumlichkeiten, weshalb wir ein neues gebaut haben (https://thecattlecrew.net/2019/02/12/how-to-build-a-deepracer-track/).

In diesem Artikel stellen wir den Prozess vor, wie wir dieses kleine Auto dazu gebracht haben, völlig autonom auf unserer selbstgebauten Rennstrecke zu fahren.

Das Erste, worum wir uns kümmerten, war der Bau unserer Rennstrecke. Also recherchierten wir ein wenig, stellten eine Liste der benötigten Materialien zusammen und machten uns auf den Weg zum Baumarkt, um alles einzukaufen. Die Rennstrecke bauten wir so, dass sie leicht auf- und abzubauen ist. So können wir sie jeder Zeit auch an einem anderen Ort mitnehmen. Wir kauften genügend puzzleförmige Schaumstoffmatten, um eine 4×3 Meter große Fläche abzudecken, die die Basis und die „Straße“ unserer Bahn bilden würde.  Als Nächstes besorgten wir grüne Farbe für die „Grasfläche“ außerhalb der Strecke sowie weißes und gelbes Klebeband als Grenz- und Mittellinien der Straße. Wir sind mit allen Utensilien zurück ins Büro gekommen und haben angefangen die Matten zusammen zu bauen, unsere Rennstrecke darauf aufzuzeichnen und zu malen!

Nachdem die Farbe getrocknet war, legten wir das Klebeband aus. Somit war unsere Bahn fertig!

Als Nächstes kam der technische Teil: die Erstellung und das Training eines maschinellen Lernmodells, das wir auf das Auto laden konnten und es ihm ermöglichen würde, sich selbstständig auf unserer Strecke zu bewegen, indem es nur eine Kamera an der Vorderseite des Fahrzeugs benutzt. Dieser gesamte Prozess wird im AWS in einem speziell für den DeepRacer vorgesehenen Bereich durchgeführt. Das Modell lernt mit Hilfe einer Machine Learning Strategie, die als „Reinforcement Learning“ bezeichnet wird. Dies wird als Standardansatz im Bereich der Robotik angesehen. Jeder von uns hat selbst schon mal reinforcement learning erlebt und man kann sich vorstellen, dass es genau wie das Hundetraining ist: Wenn der Hund sitzt, wenn wir es ihm sagen, bekommt er ein Leckerli. Wenn er etwas tut, was er nicht tun soll, wie z.B. auf das Bett zu springen, wird er bestraft. Wir verstärken sein gutes Verhalten und bestrafen das Schlechte. Das hat die Folge, dass der Hund gutes Verhalten mit einer Belohnung in Form des Leckerlis assoziiert. Mit einer Methode, die als „Reward Function“ bezeichnet wird, können wir die gleiche Taktik auf den Deepracer anwenden. In dieser Funktion können wir dem Modell mit Hilfe von Python-Code mitteilen, welches Verhalten belohnt und bestraft wird. Dabei werden hier die Leckerchen durch ein einfaches Punktesystem ersetzt. Wenn das Auto so fährt, wie wir es wollen, so erhält es Punkte. Wenn es stattdessen vom Kurs abweicht, werden ihm Punkte abgezogen. Nachdem man die Reward Function festgelegt hat, kann man einen von AWS angebotenen virtuellen Parcours auswählen, auf dem das Modell für eine festgelegte Zeitspanne trainieren kann. In einer virtuellen Simulation wird die Fahrt des Autos dargestellt. Dabei endet ein Versuch, wenn das Auto von der Straße abkommt oder eine ganze Runde zurücklegt hat. Nach jedem Versuch berechnet das Modell die Belohnung, die es erhalten hat und verbessert seine Fahrt, um die Punkteanzahl zu maximieren. All dies wird von AWS visualisiert, so dass der Fortschritt des Modells während desTrainings mitverfolgt werden kann.

Trainingsimulation – Der Graph zeigt den durchschnittlichen Reward-verlauf

Der einzige Sensor am Auto ist die Kamera an der Vorderseite, die 15 Bilder pro Sekunde aufnimmt. Jedes dieser Bilder wird durch das Modell geleitet, welches dann- basierend auf seiner Erfahrung aus dem Trainingsprozess – festlegt, welche Aktion in der aktuellen Situation am wahrscheinlichsten ist, um die Belohnung zu maximieren (links fahren? rechts? geradeaus?). Das Auto führt anschließend diese Aktion aus.

Nach mehreren Versuchen eine gute Strategie für unsere Reward Function zu finden (die alle darin endeten, dass das Auto gegen die Wand fuhr), beschlossen wir, einen einfacheren Ansatz zu wählen: Das Auto sollte einfach der Mittellinie unserer Strecke folgen. AWS stellt Parameter zur Verfügung, um die Mittellinie sowie die Abstände auf der Strecke innerhalb der Reward Function zu erkennen. Dies ermöglicht uns Markierungen auf der Strecke aufzustellen: Ist das Auto maximal 6 cm von der Mitte entfernt, erhält es eine hohe Belohnung. Ist es zwischen 6 und 10 cm von der Mitte entfernt, wird es weniger belohnt und wenn es weiter wegfährt, werden Punkte abgezogen. Wir wählten eine virtuelle Rennstrecke aus, die unserer eigenen ähnelte und starteten eine 3-stündigen Trainingsarbeit. Als wir das produzierte Modell geladen und im Auto fertig hatten, hatten wir trotz anfänglicher Schwierigkeiten den ersten Erfolgsmoment, da das Auto schließlich seine erste volle Runde auf unserer Strecke absolvierte! Da das Auto oftmals aus der vorgegebenen Bahn rausgekommen ist, mussten wir zurück an unseren Computer, um das gleiche Modell über längere Zeiträume zu trainieren. Nach etwa 9 Stunden Training ist das Auto fast jede Runde fehlerfrei gefahren.  Wir fühlten uns zuversichtlich und bereit unsere Arbeit bei dem bevorstehenden Event zu präsentieren.

Am Veranstaltungstag fuhr das Auto einwandfrei und beeindruckte unsere Zuschauer. Außerdem entwickelten sich viele interessante Gespräche mit neugierigen Besuchern über die modernen Technologien, die bei diesem anspruchsvollen und sehr lustigen Projekt eingesetzt wurden.

Die Demo war ein großer Erfolg und wir sind froh, dass unser Team daran beteiligt war.

Alle Beiträge von Thomas van Loo

Schreibe einen Kommentar