Software-Review zum autonomen Fahren


Nachdem ich in früheren Blog-Postings bereits die Software von George Hotz sowie den Sourcecode der Stanford University zum Autonomen Fahren begutachtet habe, folgt diesmal die Cornell University. Diese hat den Code zur Urban Challange ebenfalls veröffentlicht, https://code.google.com/archive/p/cornell-urban-challenge/ Dieser wirkt wesentlich moderner und sehr viel ausgefeilter als die beiden erstgenannten Kandidaten. Zwar gab es schon im Beitrag der Stanford Uni soetwas wie Finite State Machines um komplexe Mannöver auszuführen, aber die Cornell University hat das ganze zur Vollendung gebracht. Vielleicht zunächst einige allgemeine Informationen. Das Archiv ist stolze 60 MB groß, entpackt sind es über 200 MB und als Programmiersprachw wurde C# verwendet. Das ist zwar noch nicht ganz mein Favorit in Sachen optimale Programmiersprache, der Code ließt sich aber deutlich besser als das was Stanford online gestellt hat, wo man noch mit C++ und Pointern unterwegs war. Der wichtigste Teil befindet sich im Verzeichnet trunk/arbiter und zwar der High-Level-Planner. Dort ist nicht nur der A* Pfadplanner enthalten sondern dort findet sich auch sehr umfangreicher Code der viele Behaviors des Autos definiert. Im Grunde sieht die Software so ähnlich aus wie man es erwarten könnte. Es wurde eine Programmiermethode verwendet die als „Scripting AI“ bekannt ist und normalerweise in der AutoIt Szene verwendet wird. Das heißt, jedes Detail wie Lanechange, Parking, Lanefollowing wurde manuell in Sourcecode erstellt (in C# selbstverständlich). Und wenn man ein anderes Verhalten möchte, muss man den Code manuell ändern. Es wird zwar Gebrauch gemacht von allgemeinen Datenstrukturen wie z.b. um die Trajektorie zu speichern, doch der meiste Code ist sehr speziell auf die Situation hin zugeschnitten. Eigentlich müsste man nicht von Programmcode sondern eher von Markro-Actions sprechen. Das heißt, in dem Code ist das gesammelte Wissen der Autofahrer gespeichert. Wie das Cornell Team den vielen Code erstellt hat ist ihr Geheimnis, nach einem Codegenerator sieht es jedoch nicht aus. Stattdessen kam vermutlich das selbe Prinzip zum Einsatz wie auch die Gaming-Branche einsetzt um Bots zu scripten: viel Manpower in Verbindung mit agiler Software-Entwicklung.

Und hier dürfte auch die Erklärung zu finden sein, warum Cornell den Code so einfach als OpenSource veröffentlicht. Der Code ist zwar in der Lage das Auto zu steuern, doch das eigentliche Asset ist das Team, was den Code erstellt hat. Nehmen wir mal an, man möchte eine Änderung haben, dann wird man sich wohl an die ursprünglichen Programmierer wenden müssen, weil die am ehesten wissen wie das geht. Und hieraus kann man auch ableiten, wie man den Code reverse Engineeren kann. Der Code selber zurückzuübersetzen braucht man zwar nicht, weil er schon als C# Quelltext vorliegt und von jedem Entwicklungslabor mit Internet-Anschluss eingesehen werden kann. Nur, worauf es wirklich ankommt ist die Fähigkeit, diesen oder ähnlichen Code nochmal from Scratch zu schreiben. Das heißt, nicht der Code sondern das Projekt als solche ist das entscheidene.

Ein erstes Fazit zeigt, dass Team Cornell seine Hausaufgaben gemacht hat. Perfekt ist zwar das ganze noch nicht und vermutlich nochnichtmal gut genug um es im echten Verkehr einzusetzen, von allen OpenSource Projekten ist der Code jedoch der am höchsten entwickelte.

Eine Kurzbeschreibung mit einem wissenschaftlichen Anspruch findet sich auf http://archive.darpa.mil/grandchallenge/TechPapers/Team_Cornell.pdf

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s