Modellierung verbundener Fahrzeuge mit Aimsun API: Kooperative adaptive Geschwindigkeitsregelung

Technischer Hinweis Nr. 22

Januar 2017

Von Paolo Rinelli und Dimitris Triantafyllos

Wussten Sie, dass Sie das Aimsun micro Advanced Programming Interface (API) verwenden können, um einige Anwendungen für vernetzte Fahrzeuge zu modellieren, wie z. B. die kooperative adaptive Geschwindigkeitsregelung (CACC)?

Für diese Anwendung benötigen Sie Funktionen zum:

  • Lesen des Zustands eines Fahrzeugs und des vorausfahrenden Fahrzeugs (um zu prüfen, ob sich beide innerhalb der maximalen Kommunikationsreichweite des Systems befinden, und um die Informationen zu lesen, die zwischen den beiden übertragen werden würden, z. B.: Position, Geschwindigkeit, Beschleunigung usw.)
  • Modifizieren Sie die Verhaltensparameter eines Fahrzeugs, um den Übergang von der menschlichen zur maschinellen Steuerung zu emulieren
  • Steuern Sie die Geschwindigkeit eines Fahrzeugs während der Simulation

Die API stellt alle Funktionen zur Durchführung dieser Aufgaben zur Verfügung.

Kooperative adaptive Geschwindigkeitsregelung

Die kooperative adaptive Geschwindigkeitsregelung stützt sich auf die Kommunikation zwischen den Fahrzeugen, um auf die Geschwindigkeit, den Abstand und die Beschleunigung des/der führenden Fahrzeugs/Fahrzeuge zuzugreifen und die Geschwindigkeit oder Beschleunigung zu berechnen, die das nachfolgende Fahrzeug annehmen sollte.


TSS Aimsun connected vehicles Schematic representation of a vehicle string with V-V communication and object sensors

Schematische Darstellung eines Fahrzeugstrangs mit V-V-Kommunikation und Objektsensoren (Quelle: TNO report, 2007-D-R0280/B, Design and evaluation of an Integrated Full-Range Speed Assistant, March 20th, 2007)


Ein Beispiel für die CACC-Logik ist (siehe Bart van Arem et al., The Impact of Cooperative Adaptive Cruise Control on Traffic Flow Characteristics, 2006):


ad = k3a + k2ev + k1ex, k1, k2, k3 > 0

wo:


ad ist die Beschleunigung, die der Folger anwenden soll
a ist die Beschleunigung des Vorspanns
ev,i ist der Geschwindigkeitsfehler, gleich der relativen Geschwindigkeit zwischen Leader und Follower
exi ist der Abstandsfehler, gleich der Differenz zwischen dem gewünschten Abstand xd,i und das aktuelle Spiel xr,i
k1, k2, k3 sind Reglerrückführungsverstärkungen für Beschleunigung a, Geschwindigkeit vx und Abstandsfehler ex


Aimsun Mikro-API-Implementierung

Der beigefügte Quellcode zeigt ein Beispiel für die Implementierung der oben beschriebenen CACC-Logik. Die Implementierung stützt sich auf die folgende Funktionalität.

Alle Fahrzeuge, die in das Netzwerk einfahren, müssen als getrackt eingestellt werden, damit Sie ihre Geschwindigkeit nachträglich ändern können.

Erläuterung: Ein Fahrzeug als nachgeführt einstellen

int AKIVehSetAsTracked(int aidVeh)

Schritt 1

Bei jedem Simulationsschritt erhalten wir die Anzahl der Fahrzeuge in einem einzelnen einspurigen Abschnitt* mit Hilfe der folgenden Funktion:

Erläuterung: Lesen Sie die Gesamtzahl der Fahrzeuge in einem Abschnitt ab

int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)

* In diesem Beispiel ist das Finden des Führenden trivial, da es nur einen Abschnitt und eine Spur gibt und die API die Fahrzeuge vom Ende zum Anfang des Abschnitts geordnet zurückgibt. Sie sollten diese Funktion neu schreiben, wenn Sie komplexere Situationen mit mehreren Fahrspuren und Abschnitten behandeln wollen.


Ermitteln Sie den Zustand jedes Fahrzeugs und den seines Leitfahrzeugs mit der folgenden Funktion:

Erläuterung: Lesen Sie die Informationen eines Fahrzeugs in einem Abschnitt

infVeh = AKIVehStateGetVehicleInfSection(id, i)

Schritt 2

Prüfen Sie, ob der Abstand zwischen den beiden Fahrzeugen innerhalb der maximalen Kommunikationsreichweite des Systems liegt; in diesem Fall wird CACC aktiviert. Die Aktivierung von CACC wird durch Änderung einiger Fahrzeugparameter modelliert, die das menschliche Fahrverhalten widerspiegeln.

Um die Verhaltensparameter eines Fahrzeugs zu ändern, zum Beispiel reactionTime, reactionTimeAtStop, reactionTimeAtTrafficLight, sensitivityFactor, minDistanceVeh, verwenden Sie die folgende Funktion*:

Erläuterung: Ändern Sie die statischen Parameter eines Raupenfahrzeugs. Statische Parameter sind solche, die einmalig beim Erzeugen des Fahrzeugs eingestellt wurden

StaticInfVeh AKIVehTrackedSetStaticInf(int aidVeh)

* Vergessen Sie nicht, die Anfangswerte dieser Parameter zwischenzuspeichern, um sie wiederherstellen zu können, wenn die CACC deaktiviert wird.


Schritt 3

Berechnen Sie die Geschwindigkeit mit der oben beschriebenen CACC-Formel und wenden Sie die neue Geschwindigkeit mit der folgenden Funktion an:

Erläuterung: Ändern Sie die Geschwindigkeit eines Kettenfahrzeugs für den nächsten Simulationsschritt

int AKIVehTrackedModifySpeed(int aidVeh, double newSpeed)

Beachten Sie, dass Aimsun Ihnen nicht erlaubt, eine höhere Geschwindigkeit einzustellen, als die, die es unter Anwendung der Standard-Autofollowing berechnet. Die Fahrzeugparameter, die wir bei aktiviertem CACC einstellen, zielen darauf ab, dass die Standardgeschwindigkeit des nachfolgenden Fahrzeugs weniger restriktiv ist als die CACC-Geschwindigkeit.

Wenn der Führer eines CACC-Fahrzeugs den Zug verlässt, muss das nachfolgende Fahrzeug in den manuellen Fahrzustand zurückkehren. Dies wird durch die Wiederherstellung der Anfangswerte der Fahrzeugparameter erreicht.

Ausführen der Beispiel-API

Laden Sie die folgenden Beispieldateien herunter und stellen Sie sicher, dass sich alle Dateien im gleichen Verzeichnis befinden:

Denke daran, dass die Aimsun AAPI-Datei mit der aktuell verwendeten Aimsun-Version übereinstimmen muss. Du kannst es hier abrufen: C:\Programmdateien\TSS-Transport Simulation Systems\Aimsun\Programmierung\Aimsun API\AAPIPython\Micro

Verfahren
  1. Starte Aimsun und öffne dann die mitgelieferte CACC.ang Datei
  2. Führe die Replikation aus. Siehe Log-Fenster für detailliertes Feedback über den Betrieb der CACC

Lizenz: Beachte, dass du eine API-Lizenz benötigst, um dieses Beispiel auszuführen. Für mehr Informationen, kontaktiere bitte info@aimsun.com

  • Hast du eine Frage? Nimm Kontakt auf.
  • Hast du eine Frage? Nimm Kontakt auf.

TEILEN

Share on linkedin
Share on twitter
Share on email