Mehrere Fahrzeuge in AirSim#

Seit Release 1.2 ist AirSim vollständig für mehrere Fahrzeuge ausgelegt. Diese Funktion ermöglicht es Ihnen, problemlos mehrere Fahrzeuge zu erstellen und APIs zu deren Steuerung zu verwenden.

Mehrere Fahrzeuge erstellen#

Das ist so einfach wie die Angabe in settings.json. Das Element Vehicles ermöglicht es Ihnen, eine Liste der zu erstellenden Fahrzeuge zusammen mit ihren Anfangspositionen und -ausrichtungen anzugeben. Die Positionen werden in NED-Koordinaten in SI-Einheiten mit dem Ursprung am Player Start-Komponenten in der Unreal-Umgebung angegeben. Die Ausrichtung wird als Gier-, Nick- und Rollwinkel in Grad angegeben.

Mehrere Autos erstellen#

{
    "SettingsVersion": 1.2,
    "SimMode": "Car",

    "Vehicles": {
        "Car1": {
          "VehicleType": "PhysXCar",
          "X": 4, "Y": 0, "Z": -2
        },
        "Car2": {
          "VehicleType": "PhysXCar",
          "X": -4, "Y": 0, "Z": -2,
      "Yaw": 90
        }
  }
}

Mehrere Drohnen erstellen#

{
    "SettingsVersion": 1.2,
    "SimMode": "Multirotor",

    "Vehicles": {
        "Drone1": {
          "VehicleType": "SimpleFlight",
          "X": 4, "Y": 0, "Z": -2,
      "Yaw": -180
        },
        "Drone2": {
          "VehicleType": "SimpleFlight",
          "X": 8, "Y": 0, "Z": -2
        }

    }
}

APIs für mehrere Fahrzeuge verwenden#

Die neuen APIs seit AirSim 1.2 ermöglichen die Angabe von vehicle_name. Dieser Name entspricht den Schlüsseln in den JSON-Einstellungen (z.B. Car1 oder Drone2 oben).

Beispielcode für Autos

Beispielcode für Multirotoren

Die Verwendung von APIs für mehrere Fahrzeuge erfordert die Angabe von vehicle_name, was im Skript fest einprogrammiert sein muss oder das Parsen der Einstellungsdatei erfordert. Es gibt auch eine einfache API listVehicles(), die eine Liste (Vektor in C++) von Strings mit den Namen der aktuellen Fahrzeuge zurückgibt. Zum Beispiel, mit den obigen Einstellungen für 2 Autos -

>>> client.listVehicles()
['Car1', 'Car2']

Demo#

AirSimMultiple Vehicles Demo Video

Fahrzeuge zur Laufzeit über API erstellen#

Im neuesten Main-Branch von AirSim kann die API simAddVehicle verwendet werden, um Fahrzeuge zur Laufzeit zu erstellen. Dies ist nützlich, um viele solcher Fahrzeuge zu erstellen, ohne sie in den Einstellungen angeben zu müssen. Es gibt derzeit einige Einschränkungen, die unten beschrieben werden -

simAddVehicle nimmt die folgenden Argumente entgegen

  • vehicle_name: Name des zu erstellenden Fahrzeugs. Dieser sollte für jedes Fahrzeug eindeutig sein, einschließlich der bereits in settings.json definierten.
  • vehicle_type: Fahrzeugtyp, z.B. "simpleflight". Derzeit werden nur SimpleFlight, PhysXCar und ComputerVision in ihren jeweiligen SimModes unterstützt. Andere Fahrzeugtypen, einschließlich PX4- und ArduPilot-bezogener, werden nicht unterstützt.
  • pose: Anfangspose des Fahrzeugs
  • pawn_path: Pfad zur Fahrzeug-Blueprint. Standardmäßig leer, wodurch die Standard-Blueprint für den Fahrzeugtyp verwendet wird

Gibt zurück: bool Gibt an, ob das Fahrzeug erstellt wurde

Die üblichen APIs können verwendet werden, um das Fahrzeug nach der Erstellung mit dem Parameter vehicle_name zu steuern und mit ihm zu interagieren. Die Angabe anderer Einstellungen wie zusätzlicher Kameras usw. ist derzeit nicht möglich. Eine zukünftige Verbesserung könnte das Übergeben eines JSON-Strings von Einstellungen für das Fahrzeug sein. Es funktioniert auch mit der oben beschriebenen API listVehicles(), sodass die erzeugten Fahrzeuge in der Liste enthalten wären.

Beispiele finden Sie unter HelloSpawnedDrones.cpp -

HelloSpawnedDrones

Und runtime_car.py -

runtime_car