Technische Artikel

Entwicklung der Längsregelung für ein selbstfahrendes Taxi

Von Alan Mond, Voyage Auto


Der erste Fahrgast, der in einem selbstfahrenden Taxis von Voyage, jetzt Cruise, fuhr, war eine blinde Frau namens Bev. Auf die Frage, wie ihr die Fahrt gefiel, antwortete Bev, dass sie sich sicher fühlte – dass sich die Fahrt viel sanfter anfühlte als in einigen Fahrzeugen, die von sehenden Menschen gefahren wurden.

Als kleines Start-up, das mit vielen größeren Unternehmen konkurriert, die an Technologien für das autonome Fahren arbeiten, will Voyage so schnell wie möglich iterieren. Eines der Ziele ist es, die Zeit zwischen der Erforschung von Ideen auf dem Whiteboard und der Umsetzung dieser Ideen auf der Straße zu minimieren. Daher hat sich das Entwicklerteam auf eine klar umrissene Aufgabe konzentriert: den ersten Taxidienst speziell für den Betrieb in kleinen Siedlungen zu entwickeln (Abbildung 1), einhergehend mit der Verfeinerung des Designs in mehreren Iterationen. Das Team verwendete Docker-Container, um Systemabhängigkeiten zu verwalten, sowie das Robot Operating System (ROS) als Middleware für Wahrnehmung, Bewegungsplanung und Steuerung. Statt die MPC-Algorithmen (Model Predictive Control, modellprädiktive Regelung) für das Längsregelungssystem manuell zu codieren, verwendeten die Entwickler Model-Based Design mit MATLAB® und Simulink®.

Das Team von drei Ingenieuren konnte das erste Brems- und Beschleunigungsregelungssystem in nur zwei Monaten fertigstellen.

Abbildung 1: Ein selbstfahrendes Voyage-Taxi im Einsatz in der Siedlung The Villages in Florida.

Abbildung 1: Ein selbstfahrendes Voyage-Taxi im Einsatz in der Siedlung The Villages in Florida.

Begrenzen der Komplexität des selbstfahrenden Autos

Selbstfahrende Autos enthalten mehrere komplexe Systeme, um die Umgebung zu erfassen, einen Weg zu einem Ziel zu planen und die Lenkung und Geschwindigkeit zu steuern (Abbildung 2). Eine weitere große Herausforderung für Design und Implementierung dieser Systeme entsteht durch alle Objekte und Gefahren in der Umgebung. Darunter sind etwa Kreuzungen, Fußgängerüberwege, Kreisverkehre, Baustellen, Fußgänger, Haarnadelkurven, Einbahnstraßen, Tiere und Geschwindigkeitsbegrenzungen sowie das unvorhersehbare Fahrverhalten anderer Fahrzeuge.

Abbildung 2: Systemübersicht für ein selbstfahrendes Voyage-Taxi.

Abbildung 2: Systemübersicht für ein selbstfahrendes Voyage-Taxi.

Um die Aufgaben des Regelungsdesigns zu vereinfachen, entschied sich Voyage, seine ersten selbstfahrenden Taxis in Seniorensiedlungen einzusetzen, die als strategische Partner agieren (Abbildung 3). Diese Siedlungen sind nicht nur gut kartiert und klar abgegrenzt, sondern geben auch Geschwindigkeitsbegrenzungen vor, typischerweise 40 km/h.

Abbildung 3: Luftaufnahme der Seniorensiedlung The Villages.

Abbildung 3: Luftaufnahme der Seniorensiedlung The Villages.

Schneller Entwicklungsbeginn mit einem Beispiel für eine adaptive Geschwindigkeitsregelung

Zunächst untersuchte das Team, wie es die Längsregelung so schnell wie möglich sicher umsetzen konnte. Es entschied sich dafür, mit dem Beispiel für eine adaptive Geschwindigkeitsregelung (Adaptive Cruise Control, ACC) von MATLAB zu beginnen. Dieses Beispiel umfasst ein Simulink-Modell, das MPC verwendet, um ein ACC-System zu implementieren, das eine Sollgeschwindigkeit oder einen bestimmten Abstand von einem vor ihm fahrenden Fahrzeug einhalten kann (Abbildung 4).

Abbildung 4: Simulink-Modell eines adaptiven Geschwindigkeitsregelungssystems.

Abbildung 4:  Simulink-Modell eines adaptiven Geschwindigkeitsregelungssystems. 

Nachdem das Entwicklerteam dieses Modell heruntergeladen und einige vorläufige Simulationen in Simulink durchgeführt hatte, generierte es mit der Robotics System Toolbox™ und Simulink Coder™ aus dem Modell C++-Code für einen eigenständigen ROS-Knoten. Die gesamte Software für das selbstfahrende Taxi von Voyage ist modular aufgebaut und jedes Subsystem – Wahrnehmung, Wegplanung, Längsregelung und andere – wird als ROS-Knoten ausgeführt. Innerhalb von drei Tagen war der generierte Code für die ACC im Fahrzeug ausführungsbereit.

Erstellung einer eigenen modellprädiktiven Regelung von Grund auf

Obwohl das ACC-Modell in Simulink Potenzial hatte, konnte es nicht alle Anforderungen von Voyage erfüllen. Beispielsweise war das Losfahren und Anhalten des Fahrzeugs zu ruckartig, und es stellte sich heraus, dass Fahrgäste besonders empfindlich auf diese Art von Bewegung reagieren. (Ein Fahrgast im Taxi bemerkt nicht unbedingt, wie gut die Erkennungs- und Wahrnehmungsalgorithmen funktionieren, aber er spürt sofort, wie gut die Längsregelung funktioniert.)

Das Entwicklerteam ging erneut ans Reißbrett und entwarf ein System von Grund auf. Es verwendete buchstäblich ein Whiteboard und erstellte ein kinematisches Modell, das die Bewegung des Taxis mithilfe grundlegender Mathematik beschrieb. Das Team implementierte dieses kinematische Modell in Simulink und verwendete es als Grundlage für den Entwurf der Regelung. Anschließend passten die Entwickler die Parameter des MPC-Modells an ihre Anforderungen an und fügten Logik zur Behandlung von Randfällen und Szenarien hinzu, für die das ursprüngliche MPC-Modell nicht optimal war, wie z. B. Stop-and-Go-Verkehr.

In diesen frühen Entwicklungsphasen wurden mit der Robotics System Toolbox Gigabyte an Daten aus rosbag-Protokolldateien in die MATLAB-Umgebung importiert und alle ROS-Topics herausgefiltert, die für die Längsregelung nicht relevant sind. Auf die importierten Daten konnte dann wie auf jede andere MATLAB-Variable zugegriffen werden, was die Analyse und Arbeit mit ihnen erleichterte.

Die Entwickler simulierten das Regelungsmodell in Simulink, um sicherzustellen, dass seine Ausgaben, die Gaspedalstellung und die Bremspedalstellung plausibel waren und dass sich das Modell verhielt wie für die angestrebten Eingabedatensätze erwartet.

Durchführung von Tests im Fahrzeug

Die Simulationen gaben dem Entwicklerteam genügend Vertrauen in sein Regelungsdesign, um es im Auto auszuprobieren und selbst als erste Fahrgäste einzusteigen. Die Entwickler generierten C++-Code aus dem neu entworfenen Regelungsmodell für einen ROS-Knoten und stellten den Knoten in einem Docker-Container für das Fahrzeug bereit. Mit Docker konnten sie ein Bild ihrer Produktionsumgebung mit allen notwendigen Abhängigkeiten erstellen und dieses Bild während der Entwicklung und der Tests konsistent pflegen und replizieren.

Bei den ersten Tests im Fahrzeug zeigte sich sofort, dass die Regelung beim Beschleunigen und Bremsen zu aggressiv war. Obwohl die während der Simulationen erstellten Diagramme scheinbar sanfte Geschwindigkeitsänderungen zeigten, war das tatsächliche Fahrerlebnis alles andere als sanft. Diese Erkenntnis zeigte, wie wichtig es ist, mit Model-Based Design schnell vom Konzept zu praktischen Tests auf der Straße zu gelangen. Die Entwickler konnten die Qualität ihres Designs im Labor einfach nicht gut genug beurteilen, sondern mussten sie als Fahrgäste im Auto erleben.

Sie führten mehrere Entwurfsiterationen durch und optimierten dabei Parameter und Beschränkungen, einschließlich der Grenzen für Beschleunigung und Ruck sowie der Zeitkonstanten und der Aktualisierungsrate für die MPC-Ausgaben. Sie richteten ROS-Parameter im Simulink-Modell ein, um es ihren Kollegen zu erleichtern, Parameter direkt über das ROS zu kalibrieren. Auch ohne Erfahrung mit Simulink können die Kollegen Parameterwerte somit schnell aktualisieren.

Erstellen virtueller Fahrzeuge zum Testen von Bremsszenarien

Da es unsicher wäre, Szenarien zu testen, in denen ein anderes Fahrzeug in die Fahrspur des Voyage-Taxis einbiegt, erstellten die Entwickler einen neuartigen ROS-Knoten, um ein Phantomhindernis zu simulieren – im Wesentlichen ein virtuelles Fahrzeug, das in verschiedenen Abständen vom Taxi positioniert werden kann.  Sie erstellten dieses virtuelle Fahrzeug in Simulink und parametrisierten es, sodass sie es beispielsweise mit null Geschwindigkeit starten lassen und die Geschwindigkeit schrittweise erhöhen konnten. Sie generierten Code für den ROS-Knoten mit Simulink Coder und nutzten den Knoten dann, um die Bremsleistung der Regelung zu testen und zu optimieren. Mit diesem Knoten, dessen Entwicklung nur wenige Stunden dauerte, konnten sie virtuelle Hindernisse vor ihrem Taxi erzeugen, um zu sehen, wie es reagierte, und dann sein Verhalten anpassen, bis es sicher und reibungslos anhielt.

Auf der Straße

Die mit Model-Based Design entwickelte Längsregelung ist in selbstfahrenden Taxis in den von Voyage bedienten Seniorensiedlungen im Einsatz. Die Nachfrage wächst: Die Nutzung der Taxis steigt wöchentlich um 10 %. Das Ingenieurteam lernt aus Daten, die während dieser Fahrten gesammelt werden, und verfeinert die Steuerung entsprechend weiter.

Veröffentlicht 2018

Artikel für verwandte Branchen anzeigen