Anreicherung von Aimsun Next-Simulationen mit der Benutzeroberfläche (API)

Technischer Hinweis Nr. 65

Von Dimitris Triantafyllos

Dezember 2021

Was ist die Aimsun Next API?

Die Aimsun Next API ist eine Sammlung von Funktionen in Python oder C++, mit denen du Informationen lesen und Maßnahmen während einer mesoskopischen, mikroskopischen oder hybriden mesoskopisch-mikroskopischen Simulation durchführen kannst. Mit der API kannst du Änderungen vornehmen, während die Simulation läuft, während du bei der Skripterstellung alle Änderungen vornehmen musst, bevor die Simulation startet.

Du kannst die API auch nutzen, um eine externe Anwendung mit der Simulation zu verbinden. Auf der Teilstrecke innerhalb von Aimsun Next kann die API mit der Simulation Engine kommunizieren, auf der Teilstrecke mit der externen Anwendung.

Wo kann ich die Aimsun Next API nutzen?

Die häufigste Anwendung der Aimsun Next API ist die Emulation von Intelligent Transportation Systems (ITS), Advanced Fahrer Assistance Systems (ADAS) und Connected Fahrzeug (CV) Anwendungen: zum Beispiel die Implementierung von benutzerdefinierten Algorithmen für die Bevorrechtigung von Signalgruppen und die adaptive Verkehrssteuerung, die Anwendung von Verkehrsmanagement im laufenden Betrieb, die Steuerung von Parametern für das Fahrverhalten von Fahrzeugen usw. Der Funktionsumfang der API hängt von der Simulations-Engine ab:

Sowohl in mesoskopischen als auch in mikroskopischen Simulationen kannst du:

  1. Lies die Statistiken des Outputs,
  2. Lies den Zustand der Lichtsignalanlagen ab,
  3. Ändere den Zustand der Signalgruppen.

In einer mikroskopischen Simulation (oder im mikroskopischen Bereich einer hybriden Meso-Mikro-Simulation), kannst du:

  1. Lies die Daten des Detektors ab,
  2. Lies den Status der einzelnen Fahrzeuge (Quelle, Ziel, Verhaltensparameter, aktueller Weg, Position, Geschwindigkeit, Beschleunigung usw.),
  3. Führe neue Fahrzeuge ein,
  4. Übernimm die Kontrolle über die Fahrzeuge (lege Position und Geschwindigkeit fest, ändere ihr Ziel oder ihren Weg),
  5. Trigger für Verkehrsmanagementmaßnahmen.

In einer mesoskopischen Simulation kannst du:

  1. Lies den Status der einzelnen Fahrzeuge (Quelle, Ziel, aktuelle Strecke oder Abbiegebeziehung, Einfahrt- und Ausfahrt-Zeit)
  2. Führe neue Fahrzeuge ein.

Beispiel: Implementierung einer Anwendung für vernetzte Fahrzeuge durch Steuerung der Fahrzeuge über API

Im folgenden Beispiel verwenden wir die API, um die Geschwindigkeit und den Fahrstreifen der Fahrzeuge, die sich einem Knoten vereinigen, zu kontrollieren. Dies ist eine sehr einfache (wahrscheinlich vereinfachte) Implementierung eines kooperativen Knotens, der für vernetzte Fahrzeuge eingesetzt wird.

Zeitschritt 1: Wir setzen alle Fahrzeuge, die die Strecke vor dem Knoten vereinigen, als verfolgt ein, damit wir ihre Geschwindigkeit und ihr Ziel Fahrstreifen bei Bedarf ändern können. Dies geschieht durch den Aufruf der Funktion

				
					int AKIVehSetAsTracked(int aidVeh)
				
			

in dem AAPIEnterVehicleSection Callback

Zeitschritt 2: Bei jedem Simulationsschritt ermitteln wir die Anzahl der Fahrzeuge auf den ausgewählten Strecken mithilfe der folgenden Funktion:

				
					int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)
				
			

Zeitschritt 3: Dann lesen wir den Status dieser Fahrzeuge mit

				
					int AKIVehStateGetVehicleInfSection(int aidSec, int indexveh)
				
			

Zeitschritt 4: Als Nächstes ändern wir die Geschwindigkeit der Fahrzeuge vor dem Knoten mit

				
					int AKIVehTrackedModifySpeed(int aidVeh, double newSpeed)
				
			

Beachte, dass du mit dieser Funktion nur eine Geschwindigkeit einstellen kannst, die niedriger ist als die vom Folgefahrzeug-Modell berechnete Geschwindigkeit. Wenn du nicht an die Geschwindigkeit des Folgefahrzeugs gebunden sein willst, kannst du stattdessen die folgende Funktion verwenden:

				
					int AKIVehTrackedForceSpeed (int aidVeh, double newSpeed)
				
			

Zeitschritt 5: Im Abschnitt des Knotens vereinigen wir die ganz linke Fahrspur als Zielfahrstreifen, indem wir

				
					AKIVehTrackedModifyLane (int aidVeh, int nextLane)
				
			

Zeitschritt 6: Wenn die Fahrzeuge die Strecke des Knotens vereinigen, setzen wir die Fahrzeuge durch einen Aufruf zurück auf nicht verfolgt

				
					int AKIVehSetAsNoTracked(int aidVeh)
				
			

in dem AAPIExitVehicleSectionc allback

Ausführen der Beispiel-API

  1. Laden Sie die folgenden Beispieldateien herunter und stellen Sie sicher, dass sich alle Dateien im gleichen Verzeichnis befinden:
  • Aimsun Datei controlling-vehicles.ang
  • API Datei controlling-vehicles.py
 
  1. Kopiere die py Datei von Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py in demselben Verzeichnis, in dem die controlling-vehicles.py Datei gespeichert ist.
 

Hinweis: Denke daran, dass die Aimsun AAPI Datei mit der aktuell verwendeten Aimsun Version übereinstimmen muss. Du kannst sie hier abrufen:

Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro/AAPI.py

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

Die Erweiterung der Aimsun Next Benutzeroberfläche (API) kann mit einem Python Skript implementiert werden. Dieses Python-Skript ist eine ASCII-Datei (mit der Erweiterung: „.py„), die in jedem Texteditor bearbeitet werden kann. Dieses Python Skript wird mit der Aimsun Next Software im Aimsun_Next_installation_Ordner bereitgestellt (Rechtsklick auf die Aimsun Next Verknüpfung > Wähle „Standort der Datei öffnen“).

  1. Kopiere die py Datei von Aimsun_Next_installation_folder/programming/Aimsun Next API/python/samples/Micro OR Meso/sample.py im Arbeitsverzeichnis (es wird empfohlen, sie in dasselbe Verzeichnis wie die ANG-Datei zu legen, damit Aimsun Next die relativen Wege automatisch erkennen kann, wenn es in ein anderes Verzeichnis verschoben wird.
  2. Kopiere die py Datei von Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py in demselben Verzeichnis, in dem auch die Datei sample.py gespeichert ist.
  3. Du kannst die Python Skript Datei (py) unter einem Namen deiner Wahl speichern. Behalte die Datei sample.py als Backup-Datei, falls du eine andere API programmieren musst.
  4. Öffne die umbenannte Python-Skript-Datei. Im oberen Teil wird das AAPI-Modul importiert, um die Interpretation der Funktion von C++ nach Python zu ermöglichen. Dieses Modul arbeitet als Benutzeroberfläche zwischen dem Python Skript und Aimsun Next (Interpreter mit Python Code und Bibliotheken). Das Aimsun Next Mikroskopische API-Modul hat sieben High-Level-Funktionen, die zwischen dem API-Modul und dem Simulationsmodell kommunizieren: AAPILoad(), AAPIInit(), AAPISimulationReady(), AAPIManage(…), AAPIPostManage(…), AAPIFinish(), AAPIUnLoad(). Außerdem gibt es acht zusätzliche Funktionen, die aufgerufen werden, wenn bestimmte Ereignisse eintreten: AAPIEnterVehicle(…), AAPIExitVehicle(…), AAPIEnterVehicleSection(…), AAPIExitVehicleSection(…), AAPIPreRouteChoiceCalculation(…), AAPIVehicleStartParking(…), AAPIEnterPedestrian(…), AAPIExitPedestrian(…). Weitere Informationen über die Aimsun Next Mesoskopische API findest du auf der Aimsun Next Manual > Aimsun Next API > Architecture > Simulation Management.
  5. Im Aimsun Next Manual findest du eine vollständige Liste der Funktionen, mit denen du Kontrollpläne verwalten und Änderungen in den mikroskopischen oder mesoskopischen Simulationen vornehmen kannst. Zugriff auf die Aimsun Next Manual > Aimsun Next API > Manage Control Plans/Microscopic Simulation/Mesoscopic Simulation. Außerdem findest du eine Schritt-für-Schritt-Anleitung, wie du eine API erstellst, und kannst die API-Beispiele finden.
  6. Start coding –
  7. Um den Kodierungsstatus zu testen, lädst du die API in Aimsun. Als nächstes öffnest du ein Dynamisches Szenario
  8. Zugriff auf die Registerkarte Aimsun Next APIs
  9. Füge die py in den Aimsun Next APIs hinzu und wähle sie aus.
  10. Drücke OK und klicke dann mit der rechten Maustaste auf das Replication > Run Animated Simulation (for microscopic simulation). Beobachte nun die gedruckten Meldungen deines Codes im Log-Fenster (um das Log-Fenster zu aktivieren, gehe zu Hauptmenü > Fenster > Windows > Log (o).

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

Weitere technische Hinweise

Wie man Kreisverkehre kodiert – Teil 1

November 2019: Tessa Hayman erklärt verschiedene Methoden der Codierung von Kreisverkehren für verschiedene Kreisverkehre, um eine korrekte Spurnutzung und ein Spurwechselverhalten von der Ein- bis zur Ausfahrt zu gewährleisten.

  • Hast du eine Frage? Nimm Kontakt auf.

    Wir sind hier um zu helfen!

  • Hast du eine Frage? Nimm Kontakt auf.

    Wir sind hier um zu helfen!

TEILEN

Zitieren Aimsun Next

Aimsun Next 23

Aimsun (2023). Aimsun Next 23 User’s Manual, Aimsun Next Version 23.0.0, Barcelona, Spanien. Zugriff am: July. 19, 2023. [Online].
Verfügbar: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

Aimsun (2021). Aimsun Next 20.0.5 User’s Manual, Aimsun Next Version 20.0.3, Barcelona, Spanien. Accessed on: May. 1, 2021. [In software].
Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html

Aimsun Next 23

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 23 User’s Manual}​​​​​,
author = {​​​​​​​​Aimsun}​​​​​​​​,
edition = {​​​​​​​​​​​​​​​Aimsun Next 23.0.0}​​​​​​​​​​​​​​​,
address = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,
year = {​​​​​​​​​​​​​​​2023. [Online]}​​​​​​​​​​​​​​​,
month = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,
url = {​​​​​​​​​​​​​​​https://docs.aimsun.com/next/23.0.0/}​​​​​​​​​​​​​​​,
}​​​​​​​​​​​​​​​


Aimsun Next 20.0.5

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 20.0.5 User’s Manual}​​​​​​​​,
author = {​​​​​​​​Aimsun}​​​​​​​​,
edition = {​​​​​​​​​​​​​​​Aimsun Next 20.0.5}​​​​​​​​​​​​​​​,
address = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,
year = {​​​​​​​​​​​​​​​2021. [In software]}​​​​​​​​​​​​​​​,
month = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,
url = {​​​​​​​​​​​​​​​qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html}​​​​​​​​​​​​​​​,
}​​​​​​​​​​​​​​​

Aimsun Next 23

TY – COMP
T1 – Aimsun Next 23 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 23.0.0
Y1 – 2023
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Verfügbar: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

TY – COMP
T1 – Aimsun Next 20.0.5 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 20.0.5
Y1 – 2021
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spanien
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html