Software für driverless car


https://github.com/CPFL/Autoware

Die Software Autoware kommt aus Japan und enthält ein Kurztutorial auf English. Danach besteht die Software aus verschiedenen Modulen: Lokalisierung, Objekterkennung, Steuerung, 3D Mapping. Es kommt rviz aus dem ROS Universum zum Einsatz um die Bildaten darzustellen und nach den Screenshots zu urteilen ist Autoware zugleich jene Software welche in den Massenmedien häufiger gezeigt wird, wenn auf den Bildschirm des Fahrzeuges Ubuntu zu sehen ist. Aber, obwohl es ein guter Anfang ist, ist die Software viel zu wenig entwickelt um damit echte Autos zu steuern. Man kann damit vielleicht herumspielen um beim Carolo Cup mitzufahren, aber für einen echten Autopiloten fehlt da noch so einiges.

In der japanischen Sektion der Anleitung finden sich nähere Details darüber wie die Steuerung funktioniert. Danach werden Waypoints berechnet die dann abgefahren werden. Sicherlich keine schlechte Idee, das Problem ist nur das auch das nicht ausreicht. Autoware hat keine Taxonomie, keine Ontologie, keine cogntive Planner nichts dergleichen. Auch eine Blackboard Architektur oder auch nur Hinweise über Verkehrsregeln fehlen komplett. Man könnte sagen, dass fast das komplette Wissen was man als Mensch benötigt um ein Auto zu steuern in der Software nicht implementiert ist.

Nicht viel besser sieht es im Elcano Projekt https://github.com/elcano/elcano aus. Auch dort besteht die Software aus Einzelmodulen die ineinander wirken. Für einen ersten Prototypen sicherlich gut gemacht, aber noch sehr weit entfernt von einer praxistauglichkeit.

Auch bei kommerziellen Anbietern (konkret Mobileye) hat man seine Hausaufgaben nicht gemacht. Dort wird in einem Paper erläutert wie die Planning Komponente funktioniert, https://www.mobileye.com/wp-content/uploads/2016/01/Long-term-Planning-by-Short-term-Prediction.pdf Leider taucht das Wort „Reinforcement Learning“ darin auf, was nichts gutes verheißt. Das der Unfall des Tesla Cars unter Verwendung einer Mobileye Software zustande kam, lässt die Vermutung zu, dass die propritäre Software nur unwesentlich weiter entwickelt ist, als die oben genannte OpenSource Software. Auf der Homepage des Unternehmens wird noch auf ein weiteres Paper verlinkt was die Technologie beschreibt https://arxiv.org/abs/1610.03295 Auch dort wird wiederum DeepLearning und Reinforcement Learning als here-to-stay bezeichnet. Wenn man bedenkt, dass Intel gerade 17 Mrd US$ für den Kauf von Mobileye ausgegeben hat, dann war das kein gutes Geschäft. Mit dieser Technologie jedenfalls wird kein echtes Auto im Straßenverkehr unterwegs sein, soviel ist sicher.

Überhaupt scheint DeepLearning im Autonomen Fahren viel zu hoch gehandelt zu werden. Auch die Software von Udacity nutzt neuronale Netze um damit die Lenkeinstellung zu regeln. Und nvidia verkauft dazu dann die passende Hardware. Also ich bin ganz sicher kein Experte für autonomes Fahren, aber ich gebe zu bedenken, dass neuronale Netze keine richtigen Computerprogramme sind, sondern analoge Osszilatoren deren Sinusschwingung per Zufallsgenerator bestimmt werden und die wissenschaftlich gesehen kompletter Unfug sind. Da kann man genausogut zur Bestimmung der Fahrrichtung des Autos auf ein magisches Amulett verwenden, was durch original Weihwasser von Fiat Lux gesegnet wurde.

Also, wenn ich es nicht besser wüsste würde ich sagen, dass Mobileye und die anderen Hersteller vor allem versuchen, die Einführung von autonomen Fahrzeugen zu boykottieren. Das geht am besten dadurch, dass man eine Software ausliefert die unfähig ist, auch nur die simpelsten Tests zu absolvieren dass dann aber vermarktet als wäre es die Offenbarung des heiligen Johannes.

Auch am MIT gab es vor einiger Zeit eine Vorlesung zum Thema „deeplearning & self-driving car“. Es ist ein wenig traurig sowas sagen zu müssen, aber da lohnt noch nichtmal der kontroverse Diskurs. Eine derartigen Ansatz kann man nur komplett ignorieren und eine Gegenöffentlichkeit schaffen in der man dann echte driverless Cars erforscht.

Zum Abschluss noch einen der wenigen Lichtblicke. In http://www.diva-portal.org/smash/get/diva2:907048/FULLTEXT01.pdf wird ein behavior Tree vorgestellt, mit dem man in einer Unity3D Simulation driverless-cars steuern kann. Das ganze ist noch auf einem sehr niedrigen Niveau, zeigt aber zumindest in die richtige Richtung.

FAHRLÄSSIGKEIT
Das eigentliche Problem beim selbst-fahrenden Auto ist eine ungute Mischung aus inkompetenten Programmiern plus übermütigen Fahrern. Es gibt bei Youtube mehrere Videos die „deeplearning“ im Live-Einsatz in einem selbstfahrenden Auto zeigen. Das heißt, offenbar glauben die Fahrer tatsächlich, dass sie mit dieser Technologie Künstliche Intelligenz besäßen die ihr Auto zu steuern vermag. Wenn man diesen Unfug nicht stoppt, wird der Crash des Tesla Autos nicht der letzte seiner Art gewesen sein. Auch die oben erwähnte MIT Vorlesung macht den unguten Eindruck, als ob die zahlreichen Zuhörer tatsächlich das glauben, was da an der Tafel steht um dann für Mobileye oder andere Firmen neuronale Netze in Autos einzusetzen.

Grundsätzlich glaube ich schon, dass self-driving Cars technisch möglich sind, aber jedenfalls nicht so, wie es derzeit nvidia, Intel, Mobileye usw. propagieren. Hier https://www.youtube.com/watch?v=4kkZv9qwj_o ist das erwähnte Video, was von einer „learned Control“ Steuerung spricht. Gemeint ist vermutlich ein neuronales Netz was ausgehend von manuellen Lenkbewegungen seinen Fehlerwert minimiert, jedenfalls deutet die Schaukarte rechts im Bild darauf hin. Also wenn in dem Video wirklich das passiert, wonach es aussieht, und das neuronale Netz die Steuerung übernommen hat, dann wäre das kein self-driving car sondern ein self-suicide-car.

NEURONALE NETZE
Ich möchte die Kritik an DeepLearning auf eine etwas sachlichere Stufe stellen. Bei neuronalen Netzen handelt es sich um Blackbox-Optimierungsverfahren. Programmiert wird dort nur der Solver, also nach welcher Methode die Parameter fluktuieren. Um ein neuronles Netz aufzusetzen was Bilder erkennt oder als Regler das Lenkrad steuert, reichen weniger als 100 Lines of Code aus. Aus Sicht der Effizienz mag das wie ein Wunder klingen, weil die Software-Entwickler fein raus sind, leider haben derartige programmierte Neuronale Netze das große Problem, dass sie nicht das tun was sie sollen und das es nicht möglich ist, Fehler zu identifizieren. Rein theoretisch ist es zwar möglich, Super Mario oder Autosimulationen mittels neuronalem Netz zu spielen, aber ernsthaft in Erwägung zieht das niemand. Im Grunde war die Idee mit einem Neuronalen Netz ein Auto zu steuern anfangs als Witz gedacht, offenbar haben einige die Pointe nicht verstanden und sie glauben jetzt, dass man ohne Programmieren High-End-Software entwickeln könne. Nach dem Motto: was kümmert mich das Wasserfallmodell, was interessieren mich Bugreports oder was nützen schon Finite State Machine, ich habe ja mein 16 layer DeepNeuralNetwork was auf Superschneller Hardware läuft und damit bin ich unbesiegbar.

Mit dazu beigetragen hat auch das Gebiet der propablistischen Robotik welches besagt, dass man einfach einen Zufallsgenerator nutzt um darüber dann die Entscheidungen des Systems zu definieren, und das man einfach nur den Fehlerwert auf unter 0,1% zu drücken braucht um ein produktives System zu erhalten. Leider wird diese Ansicht von Leuten vertreten die nicht besonders gut programmieren können und nicht in der Lage sind, die Schwächen dieses Ansatzes zu verstehen. Böse formuliert werden neuronale Netze von den schlechteren Informatikern gepusht was dazu führt, dass die Softwarequalität nicht nur sinkt, sondern zugleich auch noch Illusionen erzeugt, die nicht einlösbar sind.

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