Open-Source-System für autonomes Fahren.

Autor: Zen und die Kunst der Computerprogrammierung

1. Einleitung

Mit der kontinuierlichen Entwicklung von Smartphones, Smart-TVs, Smart Homes und anderen Bereichen ist die neue Technologie selbstfahrender Autos allmählich ausgereift. Als neuartiger autonomer Fahrmodus kann das fahrerlose Autosystem die Fahrtrichtung und -geschwindigkeit bestimmen, indem es die Umgebung erfasst und die Verkehrsbedingungen analysiert, wodurch die Aufmerksamkeit des Fahrers, die Zeit und der physische Verbrauch reduziert und die Fahreffizienz verbessert werden. Daher ist es eine sehr anspruchsvolle Aufgabe für Entwickler autonomer Fahrzeugsysteme. Gleichzeitig floriert die Open-Source-Community in diesem Bereich. Heutzutage gibt es unzählige Open-Source-Projekte rund um selbstfahrende Autos, und jedes Projekt wächst. Von Infrastruktur und Software-Stacks bis hin zu Entwicklungstools, Hardwareplattformen und Algorithmusmodellen gibt es Open-Source-Projekte in allen Bereichen des autonomen Fahrens, die den Aufbau des gesamten Systems stark unterstützen. Für diejenigen, die selbstfahrende Autosysteme implementieren möchten, ist daher die Auswahl eines Open-Source-Projekts, das zu ihnen passt, zu einem wichtigen Teil geworden.

2.Grundlegende Konzepte und Terminologie

Lassen Sie uns zunächst einige grundlegende Konzepte und Terminologien verstehen, die mit autonomen Fahrsystemen verbunden sind.

2.1. Definition eines selbstfahrenden Systems „Selbstfahren“ bezieht sich auf ein Fahrzeugsystem, bei dem die Maschine das Gehen, Fahren, Navigieren, Vermeiden von Hindernissen und andere Funktionen des Fahrzeugs steuert. Nach Angaben der internationalen Standardisierungsorganisation IEEE heißt es GTA V-Standard.

2.2. Klassifizierung selbstfahrender Autoplattformen Selbstfahrende Autoplattformen können in zwei Kategorien unterteilt werden: hardwarebasierte Plattformen und softwarebasierte Plattformen.

2.3 Die Klassifizierung von Hardwareplattformen umfasst hauptsächlich vier Typen: Lidar, Kamera, Lidar + Kamera und Tiefenkamera.

2.4. Lidar Lidar ist ein kleiner Sensor zur Entfernungsmessung und Identifizierung von Zielen. LiDAR behält während der Bewegung einen festen Winkel bei, scannt die Umgebung und gibt Energie ab.

2.5. PTZ Das PTZ ist ein Gerät für selbstfahrende Autos, das zum Ausrichten der Route und zum Aufnehmen von Bildern verwendet wird. Durch die kardanische Drehung kann das Fahrzeug gute visuelle Effekte erzielen.

2.6. Computer Vision Unter Computer Vision (Computer Vision) versteht man die Technologie und Methoden, die es Maschinen ermöglichen, über visuelle Fähigkeiten zu verfügen. Es nutzt moderne Bildverarbeitungstechnologie, um Informationen wie Objekte, Gesichter von Personen, Bewegungen und Strukturen im Bild zu analysieren.

2.7. Tiefenkamera Eine Tiefenkamera ist eine Kamera, die die Tiefe eines Objekts quantitativ messen kann. Seine Besonderheit besteht darin, dass es den Abstand zwischen allen Objekten im dreidimensionalen Raum spüren und den Abstand zwischen dem Ziel und der Kamera berechnen kann, um den spezifischen Standort des Ziels zu bestimmen.

2.8. Fahrwerkssteuerung Die Fahrwerkssteuerung ist eines der komplexesten und wichtigsten Module in autonomen Fahrzeugen. Die Fahrwerkssteuerung umfasst Spursteuerung, Leistungssteuerung, mechanische Gerätesteuerung usw.

2.9. GNSS/GPS GNSS/GPS (Global Navigation Satellite System/Global Positioning System) ist ein Satellitenpositionierungssystem, das die globale Positionierung von Fahrzeugen ermöglichen kann. GNSS wird häufig in fahrerlosen Autos eingesetzt, da es Autos ohne externe Störungen, Zeitverzögerung und Drift mit präzisen Positionsinformationen versorgen kann.

2.10. AGV (Automated Guided Vehicle) AGV (Automated Guided Vehicle) ist ein automatisch geführtes Fahrzeug. Dabei handelt es sich um ein Auto, bei dem ein fahrerloses Auto mit einem speziell entwickelten Leitsystem zusammenarbeitet, um eine autonome Fahrt zu erreichen.

2.11. ROS (Robot Operating System) ROS (Robot Operating System) ist ein Open-Source-Roboter-Betriebssystem. Es handelt sich um ein Framework zum Erstellen und Ausführen verschiedener Anwendungen auf Robotern.

2.12. OCR (Optische Zeichenerkennung) OCR (Optische Zeichenerkennung) bezieht sich auf die Zeichenerkennung durch eine Kamera oder andere Mittel. In selbstfahrenden Autos wird OCR verwendet, um in der Umgebung vorhandene Textinformationen zu erhalten.

2.13. RNN (Recurrent Neural Network) RNN (Recurrent Neural Network) ist ein wiederkehrendes neuronales Netzwerk. Es handelt sich um ein auf Berechnungen basierendes neuronales Netzwerk, das Sequenzdaten effektiv verarbeiten kann.

2.14. CNN (Convolutional Neural Network) CNN (Convolutional Neural Network) ist ein Faltungs-Neuronales Netzwerk. Es handelt sich um ein tiefes neuronales Netzwerk, das hauptsächlich zur Bilderkennung, Klassifizierung und Regression verwendet wird.

2.15. SSD (Single Shot MultiBox Detector) SSD (Single Shot MultiBox Detector) ist ein praktischer einstufiger Multi-Box-Detektor. Es erkennt und prognostiziert Zielpositionen in Bildern schnell und genau.

2.16. YOLO (You Only Look Once) YOLO (You Only Look Once) ist ein weiterer praktischer einstufiger Mehrbilddetektor. Im Gegensatz zu SSD nutzt YOLO keine gemeinsamen Funktionsebenen, sodass die Erkennung schneller und genauer erfolgt.

3. Erläuterung der Grundprinzipien des Algorithmus, spezifischer Arbeitsschritte und mathematischer Formeln

Für Nachwuchsentwickler ist es sehr wichtig, die Prinzipien autonomer Fahrsysteme zu verstehen. Werfen wir einen Blick auf die Hauptprinzipien autonomer Fahrsysteme.

3.1. Computer-Vision-Technologie Unter Computer-Vision-Technologie versteht man die Technologie und Methoden, die es Maschinen ermöglichen, über visuelle Fähigkeiten zu verfügen. Es nutzt moderne Bildverarbeitungstechnologie, um Informationen wie Objekte, Gesichter von Personen, Bewegungen und Strukturen im Bild zu analysieren.

3.2. Deep-Learning-Technologie Deep-Learning-Technologie ist eine maschinelle Lerntechnologie, die auf neuronalen Netzen basiert. In unbemannten Fahrsystemen wird Deep-Learning-Technologie in drei Aspekten eingesetzt: Pfadplanung, Entscheidungshilfe und Lidar.

3.3. Pfadplanung Unter Pfadplanung versteht man das Fahrverhalten des Autos. Es bezieht sich auf ein Optimierungsproblem, das aus mehreren Elementen besteht. Dazu gehören Flugbahnplanung, Geschwindigkeitsplanung und Querkontrolle.

3.4. Entscheidungshilfe Die Entscheidungshilfe bezieht sich auf das Verhalten, Entscheidungen über Fahrspurlinien, Szenen und interaktive Umgebungen auf der Grundlage sensorischer Informationen zur Steuerung des Autofahrens zu treffen. Die Entscheidungshilfe umfasst die Erkennung von Straßenbetten, Umgebungswahrnehmung, Straßenmarkierungen, Verkehrszeichenerkennung, Parkwarnung usw.

3.5. Lidar Lidar ist ein kleiner Sensor zur Entfernungsmessung und Identifizierung von Zielen. LiDAR behält während der Bewegung einen festen Winkel bei, scannt die Umgebung und gibt Energie ab. LiDAR wird zur Zielerkennung, Umgebungserkennung und Szenenwahrnehmung in unbemannten Fahrsystemen eingesetzt.

3.6. Vergleichende Forschung Um die Vor- und Nachteile unbemannter Fahrsysteme vergleichen zu können, sind in der folgenden Tabelle einige hervorragende Arbeiten zur vergleichenden Forschung aufgeführt.

Modell Algorithmus Datensatz Bewertungsindex
Verhaltensklonen DDPG CARLA Durchschnittlicher Verschiebungsfehler (ADE)
Zielerkennung Schnelleres RCNN + SSD COCO, KITTI Karte
maschinelles Lernen JEDOCH CelebA Inception-Score

Der obige Datensatz gilt für den oben genannten Wettbewerb. Im Folgenden stellen wir das typische Entwicklungsmodell für unbemannte Fahrsysteme im Open-Source-Software-Engineering vor.

3.7. Typische Entwicklungsmodelle im Open-Source-Software-Engineering 3.7.1. Open-Source-Fahrzeugsteuerungsbibliothek und -Simulator Im Open-Source-Software-Engineering besteht ein typisches Entwicklungsmodell in der Verwendung der Open-Source-Fahrzeugsteuerungsbibliothek (Open Source Autonomous Driving Library, OSADL) und Simulator. OSADL ist beispielsweise die Blueprint-Funktion in der Unreal Engine. Auf diese Weise können Entwickler vertraute Programmiersprachen zur Steuerung des Autos nutzen und den Simulator auch zum Entwickeln und Testen nutzen.

3.7.2 Chassis-Hardware und Antriebsmodule Wenn Sie ein komplettes fahrerloses System entwickeln möchten, müssen Sie neben Chassis-Hardware und Antriebsmodulen auch eine große Anzahl von Software- und Algorithmusmodulen installieren. Entwickler müssen das Fahrprinzip des Fahrgestells, die Übertragungsmethode von Steuersignalen, die Schnittstellenspezifikationen von Gimbal und Lidar sowie einige häufig verwendete Algorithmusmodelle wie Spurlinienplanung, Wahrnehmung, Verfolgung usw. verstehen.

3.7.3. Zielerkennung und Kartenerstellung Zielerkennung und Kartenerstellung sind Schlüsselmodule des unbemannten Fahrsystems. Dieses Modul muss viele Schlüsselprobleme lösen. Wie erkennt man beispielsweise ein Auto? Wie erstellt man eine genaue Karte? Wie gehe ich mit Interaktionen mit der Umwelt um? Wie lässt sich die Rechenkomplexität reduzieren? Wie können die vom Algorithmus generierten Ergebnisse den Anforderungen entsprechen? Dies sind Details, die berücksichtigt werden müssen.

3.7.4 Entwicklungstools und Datensätze Um die Entwicklungseffizienz zu verbessern, müssen Entwickler eine einheitliche Entwicklungsumgebung, Tools und Datensätze verwenden. Eine einheitliche Entwicklungsumgebung kann Entwicklern dabei helfen, die Effizienz der Zusammenarbeit zu verbessern; Tools können Entwicklern die Bereitstellung, das Debuggen und die Dokumentation erleichtern; und Datensätze können Entwicklern qualitativ hochwertige Daten zum Trainieren von Modellen bereitstellen.

4. Spezifische Codebeispiele und Erklärungen

Basierend auf den oben genannten Prinzipien und Algorithmusbeschreibungen werden im Folgenden Codebeispiele und Erläuterungen zu mehreren Open-Source-Projekten gegeben.

(1) Pylot – Python-basiertes autonomes Fahrsystem

Pylot ist ein autonomes Fahrsystem, das auf Basis der Open-Source-Software CARLA und TensorFlow entwickelt wurde. Durch einen durchgängigen Entwicklungsprozess ist es diesem Projekt gelungen, ein voll funktionsfähiges, skalierbares, sicheres und zuverlässiges autonomes Fahrsystem zu entwickeln.

Pylot enthält die folgenden Module:

  • Simulator (Carla-Simulator): Mit dem Open-Source-CARLA-Simulator können unser Pylot-System und das tatsächliche Auto visualisiert und simuliert werden.
  • Wahrnehmungsmodul: Verantwortlich für die Erfassung, Verarbeitung und Aggregation von Zielerkennungs-, Lidar- und Kameradaten.
  • Planungsmodul: Verwendet einen A*-Suchalgorithmus, um Fahrspurlinien zu generieren.
  • Steuermodul: Das Steuermodul nutzt das LSTM- oder DQN-Netzwerk, um das Modell durch Deep Reinforcement Learning zu trainieren.
  • HD-Kartenmodul: Speichert die gesamten HD-Kartendaten und nutzt Punktwolkendaten und GPS-Daten zur Kartenmodellierung.
  • Visualisierungsmodul: Das Visualisierungsmodul dient zur Darstellung von Karten, Fahrspurlinien, Hindernissen und im Simulator beobachteten Daten.

Die gesamte Systemarchitektur von Pylot ist in der Abbildung oben dargestellt. Unter ihnen sind das Wahrnehmungsmodul, das Planungsmodul, das Steuerungsmodul und das HD-Kartenmodul jeweils für unterschiedliche Teams verantwortlich, es gibt jedoch Austausch, Kommunikation und Zusammenarbeit zwischen ihnen. Daher umfasst das Projekt eine Vielzahl von Rollen wie Software-Ingenieure, Embedded-Ingenieure, Experten für maschinelles Lernen und Experten auf dem Gebiet des autonomen Fahrens.

(2) SemanticKITTI – Unbemanntes Fahrsystem basierend auf semantischer Segmentierung

SemanticKITTI ist ein unbemanntes Fahrsystem, das auf semantischer Segmentierung basiert. Dieses Projekt stellt verschiedene Datensätze und Werkzeuge für den Aufbau autonomer Fahrsysteme bereit. SemanticKITTI bietet außerdem APIs, die zum Trainieren, Bewerten und Begründen von unbemannten Fahrsystemen verwendet werden können.

SemanticKITTI enthält die folgenden Teilprojekte:

  • Daten: Stellt verschiedene Datensätze bereit, einschließlich Punktwolken, Beschriftungen, Vorverarbeitungsskripte, Datensatzbrowser usw.
  • Bewertung: Bietet verschiedene Metriken zur Bewertung autonomer Fahrsysteme.
  • Modelle: Bietet verschiedene Modelle für den Aufbau autonomer Fahrsysteme.
  • ssc: Bietet ein semantisches Segmentierungs-Toolkit.
  • Tools: Bietet Tools zum Analysieren von Datensätzen, einschließlich Datensatzbrowsern, Tools zum Zusammenführen von Datensätzen usw.
  • Tutorials: Bietet Tutorials zum Erlernen der Verwendung der SemanticKITTI-API.

Die Gesamtarchitektur von SemanticKITTI ist in der Abbildung oben dargestellt. Das Projekt verfügt über eine große Menge an Open-Source-Code und Datensätzen, an der Entwicklung sind jedoch nur wenige Personen beteiligt. Darüber hinaus greift das Projekt auf die aktuelle technologische Entwicklungsrichtung unbemannter Fahrsysteme zurück, darunter Deep Learning, Reinforcement Learning, Zielerkennung und andere auf neuronalen Netzen basierende Technologien.

(3) Scenenet-DA – Szenenverständnis und Navigation mithilfe von GAN

Scenenet-DA ist ein Open-Source-Projekt, das GANs zum Verständnis und zur Navigation von Szenen verwendet. Dieses Projekt baut ein Szenenverständnissystem für autonome Fahrzeuge auf, das auf multiperspektivischen Deep-Learning-Methoden basiert. Ziel dieses Prozesses ist es, eine Pixeldarstellung der gesamten Szene zu generieren, einschließlich aller Pixel unter verschiedenen Blickwinkeln und Positionen sowie Navigationsanweisungen.

Scenenet-DA umfasst die folgenden Module:

  • Autoencoder: Wird zum Generieren von Pixeldarstellungen von Szenen verwendet.
  • Generator: Wird verwendet, um fehlende Pixel in der Szene zu generieren.
  • Prädiktor: Wird verwendet, um vorherzusagen, zu welchem ​​Objekttyp jedes Pixel gehört.
  • Aggregator: Wird verwendet, um Features aus verschiedenen Perspektiven zusammenzuführen.
  • Navigator: Wird zum Generieren von Navigationsanweisungen verwendet.

Ansichten in Scenenet-DA umfassen Links-, Rechts-, Vorder- und Rückansichten sowie Ansichten in eine bestimmte Richtung. Dieses Projekt verfügt über eine große Anzahl verwandter Artikel und Codes zum Szenenverständnis und zur Navigation, auf die Sie verweisen und daraus lernen können.

5. Zukünftige Entwicklungstrends und Herausforderungen

Es gibt viele potenzielle Herausforderungen bei fahrerlosen Systemen. Die größte Herausforderung besteht darin, die Leistung zu verbessern. Derzeit müssen die Genauigkeit, Robustheit und Ausführungsgeschwindigkeit unbemannter Fahrsysteme verbessert werden. Darüber hinaus müssen die Wahrnehmung, Entscheidungsfindung, Ausführung und andere Module des Systems verbessert werden. Aktuelle Navigationsalgorithmen unterstützen beispielsweise nur gerade Straßen. Zur Optimierung des Steuerungsmoduls müssen auch neue Methoden des maschinellen Lernens eingeführt werden, beispielsweise Deep Reinforcement Learning.

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/133446472
Recomendado
Clasificación