A vision for the car of the future

The car of the future was invented in the past. Technology from the 19th is highly productive and secure. Future car companies have to focus on their strength. The first thing to do is to stop any software related projects in a car company. That means, to cancel projects which have to do with self-driving cars, car control systems and onboard microcontrollers. All these kind of software controlled systems are a waste of time and have increased the costs to much. A modern cars contains not a single lines of code. It is an all mechanical car. Such a car is easy to build. Easy means, that the duration and the costs are small. Also the fuel consumption will be much lower, than in today’s overengeered cars.

Now we can talk about safety on the roads. Each year around 1 million people are dying worldwide as the result of car accidents. If the future car comes without software the car accidents will remain the same. That means, an overwhelmed human driver makes a mistake and as a result a pedestrian will die. How can this problem be solved? The answer is located outside of the cars in the infrastructure. With the mechanical car everything is great, it doesn’t need a computer or self-driving software. What is wrong is the world around the cars. Infrastructure in which cars are operating is determined by road signs, traffic lights, driving school education and speed limits. If the aim is to reduce the traffic accidents down to the half, these external factors have to be modified. That means in detail that special traffic lights for pedestrians are needed, that the police has to control the tempo limit more often and that roads have to be build different. Investing energy and money on these external factors will reduce the number of accidents.

Let me focus on the problem of traffic lights. The usual assumption is, that the driver is in charge to control his car. From a legal point of view this is right, but it ignores that the road-infrastructure allows or prevents safety at the road. Let me give an example. We have a complicated intersection and removing all the traffic lights. What will happen? After two minutes the first driver will make a mistake, after 1 hour the first serious accident is there and after 1 day, the first person is death. That means, a traffic light or a certain design of an intersection is not something which is additional but it determines how many accidents will be there. Not the car itself needs a better airbag or an automated parking system, but the road needs an upgrade.

Let us describe what a car is. It is a machine which can drive, brake or change the direction. If an accident will happen nothing is wrong with the car itself. That means, the motor is working great and the brakes are in the best condition. What is wrong is the situation in which the car was. Situation means, which position the car has, which position the opponent has, what the driver can see on the road, if a traffic light was there or not and so on.

So called self-driving cars and robotic cars are an antipattern for future cars. They will not reduce the accidents they will prevent that improvements can take place. Building self-driving car is equal to let everything the same. Self-driving cars costs a lot of money which prevents that the infrastructure gets improved. There are some visions available in which self-driving cars doesn’t need a traffic light anymore. The idea is, that the robots are exploring the intersection adhoc and the promise is, that this will reduce the accidents. Very funny. Such kind of vision is equal to give up.

Cars and traffic management is too important to let Google and Uber make their play. The best idea is to ban self-driving cars from any public road, cancel the projects, and build better intersections equipped with shinny traffic lights. If then the police will control the tempolimit very strict, and the driving school is mandatory for all drivers the traffic accidents will reduce quickly. It is simply a question of setting the right priorities, in which world do we want to life?

Advertisements

The future of the self-driving car

According to Google Waymo, the self-driving car is near. The latest generation is on the street since 1 year and the software is working stable. Only some legislative minor problems have prevented that self-driving car become a mass market and if everything is working fine, in the near future such autonomous car are able to reduce the traffic accidents down to zero.

The problem with this nice sounding vision is, that it is not possible. To understand why the self-driving car has failed we must take a look back into the past. Self-driving cars were researched since decades. It some kind of pyramid building project in which large amount of government money is put into but no return comes back. With the advent of microcomputers in the 1980s large efforts were undertaken, for example by the Ernst Dickmanns team in Germany and during the Darpa ALV project. In the year 2004 Darpa has increased the efforts and made a challenge between different universities called “Darpa Grand Challange”. Sebasitan Thrun and his team won one of these challenge and founded a spinoff at Google to bring the self-driving car into the mass-market. At the same time, other countries like China are working also hard to realize the vision of a self-driving car.

How much energy was put in the sum into self-driving cars until now? A lot, in the 1980s many millions US$ were spend for autonomous cars, and the sum was much much higher in the 2000s. Also some accidents with these cars were happening and the engineers at Google, Uber and classical car companies have invested endless of hours into the project. The result is negative. No self-driving car is available today and it won’t be available in ten or 20 years from now. The reason why is a bit complicated to explain, I’d like to explain it in detail.

Every self-driving car works with software. The software runs on a computer in the car and decides what the car is doing next. This transforms the mechanical car into a robotic one. The idea of the engineers is, to realize in software the same behavior like a human driver can provide. It is an robotics automation project. The goal is to automate the control of the car. And this is the reason why it doesn’t work. It is not possible to use a robotics system in a productive way. Like I mentioned before it is a bit difficult to explain why, so I have to go more into the details.

Suppose we want to program a robot into a pick&place robot for a factory. It’s an easy task, isn’t it. Compared to a self-driving car a pick&place robot is easy going and has only little demand for Artificial Intelligence. The surprising fact is, that worldwide not a single robot is available who is used as a pick&place robot in a real factory. The only thing what is available are research demonstration systems in the lab, in which under synthetetic conditions a robot grasp a ball and puts it in the basket. Why? The answer is, that factory automation with robots doesn’t work. The problem is, that by definition a robot is controlled by software. And software is too complicated for a factory. What is used successful in reality are non-software automation solutions which are mechanical machines.

If a robot can’t be used for factory automation in a simple pick&place task at the assembly line, a robot will never be able to do a more complicated task like controllling a self-driving car. Sure, there are many prototypes in the field, and millions of US§ are spend each year for that goal, but the engineers are not able to solve the problem. The Waymo self-driving car simply doesn’t work. The only option the engineers have is to remove all the software from the car. That means, to transform the robotic car into a normal car. This would reduce the complexity and would allow to automate the task. The problem is, that a self-driving car without the software is no longer a self-driving car. It will become a normal car, which has to be controlled a human driver.

The dilemma is, that with software in the loop, the automation projects fails, and without software in the loop, the car isn’t driving alone. That means, the longterm goal of building a self-driving car which is working in reality can’t be reached. It is similar to the goal of building a perpetual machine. That means, any attempt to solve the task with a robot car will fail. No matter which kind of software is used it is not possible to automate car-driving in that way.

That is not equal to a pessimistic outlook. There are many ways for optimizing the transport systems and reducing the traffic accidents. One example are traffic lights for pedestrians. Such an infrastructure is able to optimize the traffic. Another option are regularly lessons for drivers. What is also possible is to build trains instead of streets. All of these alternatives have in common that no software is needed to improve the traffic. And like i mentioned above, this results into a success.

Projects around self-driving cars are not completly useless. Because the engineers get paid, the team learns a lot and the public can press the like button for the latest car which drives alone. But one thing is not possible with these project: that something useful is provided at the end. All the money for self-driving cars is wasted. The people who spend the money will get nothing in return. The self-driving car will never drive at the street and people who are trying so waste their life with nonsense research. Like I mentioned before the reason why is the software in the loop. If somebody can realize a self-driving without programming a single line of code it would be an interesting project which can maybe a success. But all the self-driving car projects in past were build with software which runs on a computer. This is some kind of overrunning which results into failed automation project.

As far as i know from the history of self-driving car, in the 1950s some visions were published in which the cars are not programmed by software, but are working on a mechanical way. They were driving on a line. Such a concept can be realized in reality, such vision was more realistic to modern approaches which are going into the direction of robotics and computer controlled cars.

Automode

Perhaps I’m to pessimistic and doesn’t have understood what kind of technology Waymo is using in their robotic car? According to the presentation, the car drives without a driver and it is doing so in normal traffic. After entering the goal into the onboard computer, the car drives direct to the destination and it stops at the traffic light. Also, it will wait before the pedestrians and is able to predict other car’s trajectory. So, why I’m criticizing this wonderful technology, everthing is fine, isn’t it?

To understand the serious issue with self-driving car we must understand how software in general is working. Software forms a system by it’s own which is working by it’s own laws. The software of a self-driving car is forming a closed system. What is happening in this system is decides by software itself, not by it’s environment. It is true, that from the car’s perspective everything works fine. But the car is not alone on the street. For the other (manual driven cars) the Waymo vehicle has the color black and is called K.A.R.R., similar to the episode in the knight-rider TV series. The main feature of K.A.R.R. was that was programmed to ignore everything else and it follows it own rules. And this is exactly the same, what every self-driving car is doing. It is not the fault of the engineers, they have done a good job. The problem is, that the software is not open to it’s environment. Every malfunction with the software is produced by the software itself. And the car is not able to react to it’s environment but it will react only to it’s own subroutines. Sometimes this internal needs are similar to external requirements, but sometimes not. And there an accident is the result.

If somebody is driving a normal car with manual controled wheel and from the opposite lane a self-driving car is approaching the best what the driver can do is to drive to the right side of the street, stop the engine, call 911 and prepare for a mass casualty triggered by the robotic car. No police or judge in the world will allow a self-driving car to drive in traffic.

Was Vincent van Gogh mit selbstfahrenden Autos zu tun hat

van Gogh wird den Impressionisten zugeordnet. Er hat sich, ganz ein Kind seiner Zeit, einem naturalistischen Malstil verschrieben und die Realität ungeschönt abgebildet. Bekannt sind vor allem seine Bilder Nachtasyl und Die Kartoffelesser welche das harte Leben der einfachen Menschen zeigen. Geprägt wurde von van Gogh auch durch die Realität in den Kohlegruben in denen Bergarbeiter sehr früh gestorben sind. Ursache damals war, dass es weder Schutzkleidung gab, kein ausreichendes Licht und mangelnde medizinische Versorgung.

Heute gibt es zwar nicht mehr die Kohlegruben aus den Zeiten van Goghs, aber es gibt etwas ähnliches. Den Straßenverkehr. Würde heute van Gogh leben würde er vermutlich mit seiner Staffelei die Autobahnpolizei begleiten und all das zu Papier bringen was er täglich sieht: Auffahrunfälle, LKWs die in ein Stauende hineinfahren, eingeklemmte Väter sowie Massenunfälle mit vielen Toten. Ähnlich wie in den Kohlegruben von vor 100 Jahren wird das so hingenommen weil man keine Alternative weiß, außer eben nicht das Auto zu nutzen, was aber keine Alternative ist.

Der Ausweg ist simpel: im Grunde kann man das selbe tun, was auch damals mit den Kohlegruben gemacht wurde: sie technisch zu modernisieren. Also darüber nachzugrübeln wie man mit Erfindungen das Leben der Bergarbeiter vereinfacht bzw. auf die Gegenwart übertragen wie man das Leben der Autofahrer schont. Einen wichtigen Schritt in diese Richtung übernimmt gerade das Startup Waymo (früher als Google self-driving car bekannt) was in den USA die Straßenzulassung erhalten hat um die ersten selbstfahrenden Autos im Straßenverkehr zu testen. Wenn alles klappt, wird es irgendwann gelingen die Unfallrate von derzeit 1 Mio Toten jährlich pro Jahr zu senken.

Im Grunde ist es ziemlich einfach: man investiert einfach genügend Gehirnschmalz in eine self-driving-car Software, führt unendlich viele Tests durch und irgendwann hat man ein Auto, was fehlerfrei durch den Verkehr fährt und die Unfallrate auf 0 senkt. Das ganze ist ein Ingineurproblem. Na ja nicht nur, es ist auch eine Frage von Patentrecht und von Geldverdienen, aber das gehört in den USA zusammen.

Der Ansatz ist nicht unumstritten. Technikskeptiker weisen darum hin, dass sogenannte Selbstfahrende Autos meist mit 4 Personen besetzt sind. Der Fahrer, der die Hände immer am Lenkrad hat. Der Beifahrer mit einem schwerem Laptop auf dem Schoß. Auf dem Rücksitz noch ein Inginieur und daneben dann jemand von der Zulassungsstelle der wissen will, was die drei Herren mit dem Auto vorhaben. Andere Skeptiker sagen, dass autonome Autos niemals Realität werden, das man auch noch in 20 Jahren mit Laptops auf dem Beifahrersitz herumprogrammieren muss weil die Software doch nicht so gut ist wie erhofft. Fakt ist jedoch, dass die erste Dampfmaschine auch nicht über Nacht erfunden wurde, und bis das erste Flugzeug abgehoben ist vergingen sogar mehr als 100 Jahre. Das autonome Autos grundsätzlich möglich sind, kann man heute bereits in Computerspielen sehen. Dort fahren sie schon durch die virtuelle Stadt. Jetzt gilt es dies auch in der Realität nachzubilden.

Von dem Künstler Tom McGrath gibt es aus dem Jahr 2004 ein Ölgemälde mit dem Titel “car crash”.

Vision Zero–Anspruch und Wirklichkeit

Im obigen Clip wird “Vision Zero” vorgestellt. Zwar dürfte allen klar sein, was das Ziel ist (null Verkehrstote) doch bei der Umsetzung mangelt es derzeit gerade in Europa. Im Video werden als Maßnahmen konkret vorgestellt: Fahrradfahrer bevorzugen, Verkehrsinseln um Autos von Fußgänger zu trennen, Geschwindigkeitsreduzierte Straßen. Ein wenig oberflächlich betrachtet bedeutet Vision Zero also das Auto zum Sündenbock zu machen und mit Tempo 30 Zonen zu reglementieren. Das Problem ist, dass das Konzept nicht funktioniert. Was im obigen Video leider nicht erwähnt wird, ist, dass gerade in dem fahrradfreundlichen Niederlanden die Anzahl der Verkehrstoten sehr hoch ist. Rund 1000 Personen sterben dort jedes Jahr auf den Straßen. Hinzu kommen zahlreiche Unfälle mit Folgeschäden. Will man Vision Zero ernsthaft angehen muss man sich für autonomes Fahren bekennen. Damit lassen sich tatsächlich die Unfälle auf Null reduzieren. Leider gibt es aktuell weder in den Niederlanden noch sonstwo in Europa Anstrengungen in diese Richtung. Ja, die meisten Bibliotheken schaffen es noch nichtmal, vorhandene Forschungsliteratur über Robotik ihren Studenten zugänglich zu machen (Stichwort Paywall) so dass zwischen Vision und Realität ein riesiger Unterschied besteht.

Eine Youtube Suche nach “dutch car crash” brachte eine extrem hohe Trefferanzahl. Und das sind nur die Unfälle die mittels Dashcam aufgenommen wurden. Die Realität dürfte noch um einiges schlimmer ausfallen. Anders formuliert, wer behauptet, dass die Niederlande auf einem guten Weg sind, ihre Verkehrstoten zu senken der ignoriert die Realität.

Vision Zero in weiter Ferne

Laut der amtlichen Unfallstatistik ist die Zahl der Fahrradunfälle erstaunlich niedrig. Gerade einmal 78653 Unfälle gab es im Jahr 2014 https://www.adfc.de/presse/pressemitteilungen/zahl-der-radfahrunfaelle-gestiegen–adfc-fordert-sichere-radwege-elektronische-warnsysteme-weniger-tempo Man sollte jedoch erwähnen, dass es bei Fahrradunfällen eine extrem hohe Dunkelziffer um den Faktor 6 gibt http://www.upi-institut.de/UPI77Radunfaelle3.pdf Die tatsächliche Anzahl von Unfällen dürfte damit bei 500000 gelegen haben. Nicht weltweit, sondern nur auf Deutschland bezogen.

Patente sind unwichtig, Software ist entscheidend

https://www.heise.de/newsticker/meldung/Deutsche-Hersteller-bei-Patenten-zum-autonomen-Fahren-vorn-3813293.html Selbstfahrende Autos sind keineswegs auf Technologien angewiesen wie Kamera und Radar wie im obigen Text suggeriert, sondern was benötigt wird ist Software. Genauer gesagt benötigt man für selbstfahrende Autos schätzungsweise 10 Mio Lines of Code, im Zweifel sogar deutlich mehr. In diesen Codezeilen werden dann die Straßentrajektorien, das Mannöver bein Einparken sowie das Head-up Display spezifiziert. Die deutschen Autobauer sind bei der Softwareentwicklung nicht wirklich schlecht, siehe die Spezifikation https://en.wikipedia.org/wiki/OpenDRIVE_(specification) welche maßgeblich von Daimler, BMW und anderen ausgearbeitet wurde, aber gegenüber dem Silicon Valley gibt es was Softwareentwicklung angeht noch Defizite. Patente auf physische Sensoren und zur mechanischen Kopplung von Servomotoren mit dem Lenkrad sind nicht ausreichend, wenn die Systeme autonom fahren sollen.

Software zu patentieren ist zwar nicht generell unmöglich aber es ist schwierig. Im wesentlichen machen es Google und Co dadurch, dass sie ihre Codebasen geheim halten. Laut einem Wired Artikel sitzt der US-Amerikanische Konzern Google derzeit auf einer Codebasis von 2 Milliarden Zeilen, welches in einem riesigen Repository hinterlegt ist. https://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/ Vermutlich wird sich darin nicht nur der Code für die Suchmaschine selber befinden sondern auch Software um Autos zu steuern oder Paketdrohnen zu betreiben. Noch wichtiger als bereits geschriebener Code ist jedoch die Fähigkeit from scratch neuen Code zu erzeugen. Und hier liegen die USA und das dortige Bildungssystem sehr weit vorne. Nicht nur github als größter Hoster von OpenSource Projekten ist im Silicon Valley angesiedelt, sondern auch das objektorientierte Programmieren wurde in den vereinigten Staaten von Amerika erfunden.

Aber vermutlich weiß die Heise Redaktion es selbst am besten, und hat den Artikel nur verfasst um ihre Community aus der Reserve zu locken. Einige Diskutanten haben bereits reagiert und ebenfalls als Gegenargument angeführt, dass autonome Autos auf Software basieren:
https://www.heise.de/forum/heise-online/News-Kommentare/Deutsche-Hersteller-bei-Patenten-zum-autonomen-Fahren-vorn/Autonomes-Fahren-basiert-zum-Grossteil-auf-Software/posting-30933611/show/
https://www.heise.de/forum/heise-online/News-Kommentare/Deutsche-Hersteller-bei-Patenten-zum-autonomen-Fahren-vorn/Und-wie-gut-sind-die-deutschen-Autobauer-beim-deep-learning/posting-30933412/show/

Einer der Leser bringt es mit einer bissigen Überschrift “mit oder ohne Mogelsoftware?” auf den Punkt:
https://www.heise.de/forum/heise-online/News-Kommentare/Deutsche-Hersteller-bei-Patenten-zum-autonomen-Fahren-vorn/mit-oder-ohne-Mogelsoftware/posting-30932563/show/

Aber mal unabhängig von den Aufmerksamkeits-Gesetzen im Heise-Forum wird aller Voraussicht nach die Software für Autonome Autos, ähnlich wie auch Linux und MS-Windows nicht aus Deutschland kommen. Aber, wirklich schlecht ist Deutschland nicht aufgestellt was Softwareentwicklung angeht. Erinnert sei beispielsweise an die Glanzzeiten des Data Becker Verlages, an die Spielefirma Rainbow Arts oder Anno 1701 http://www.pcgameshardware.de/Spiele-Thema-239104/Specials/Deutsche-Wertarbeit-681808/ alles wurde in Germany programmiert. Selbst wenn Deutschland aktuell keine Ressourcen besitzt, Software für autonome Autos zu schreiben führt wohl kein Weg daran vorbei es zu versuchen.

Die gute Nachricht lautet, dass nicht alles was in den USA programmiert wird gut ist. Erinnert sei an das Programmierprojekt von George Hotz was durch die Firma comma.ai entwickelt wurde. https://github.com/commaai/research

Reaktionsgeschwindigkeit von autonomen Autos

https://robotics.stackexchange.com/questions/11625/how-quickly-can-a-driverless-vehicle-generate-control-commands In der Praxis nimmt die Frequenz mit der die Kommandos erzeugt werden eine untergeordnete Stellung ein. Eine Game-Engine arbeitet üblicherweise mit augenschonenenden 60 fps. Die Steuerung eines selbstfahrenden Autos lässt sich mit deutlich weniger realisieren. In meinem eigenen Projekt habe ich derzeit nur 2 fps in Verwendung. Das heißt, das System wartat nach jeder Aktion erstmal für eine halbe Sekunde.

for i in range(10000000):
  self.automodesteering()
  pygame.time.delay(500)
  if self.autostatus=="off":
    stopthread=True
    break
if stopthread==True: print "automode stopped"

Erstaunlicherweise reicht das bereits aus, um das Auto einer Trajektorie folgen zu lassen. Man kann den Wert zwar erhöhen, aber das ist nicht der eigentliche Flaschenhals. Auch bei Echtzeitsystemen wird die CPU keineswegs maximal ausgelastet, sondern insbesondere High-Performance Systeme zur Multi-Agenten-Simulation bestehen aus sehr vielen Leerlauf-Steps. Die Kunst besteht darin, die Systeme intelligent nichts tun zu lassen.