AirSim 中的多车辆#

自 1.2 版本发布以来,AirSim 已完全支持多车辆。此功能允许您轻松创建多辆车并使用 API 控制它们。

创建多辆车#

这就像在 settings.json 中指定它们一样简单。 Vehicles 元素允许您指定要创建的车辆列表以及它们的初始位置和方向。位置以 NED 坐标(SI 单位)指定,原点设置在 Unreal 环境中的 Player Start 组件。方向以度数表示的偏航角、俯仰角和滚转角指定。

创建多辆汽车#

{
    "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
        }
  }
}

创建多架无人机#

{
    "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
        }

    }
}

使用 API 控制多辆车#

自 AirSim 1.2 以来的新 API 允许您指定 vehicle_name。此名称对应于 JSON 设置中的键(例如,上面 Car1 或 Drone2)。

汽车示例代码

多旋翼飞行器示例代码

使用 API 控制多车辆需要指定 vehicle_name,这需要在脚本中硬编码或需要解析设置文件。还有一个简单的 API listVehicles(),它返回一个包含当前车辆名称的字符串列表(C++ 中为向量)。例如,对于上面 2 辆汽车的设置 -

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

演示#

AirSimMultiple Vehicles Demo Video

通过 API 在运行时创建车辆#

在 AirSim 的最新主分支中,可以使用 simAddVehicle API 在运行时创建车辆。这对于创建许多此类车辆而无需在设置中指定它们非常有用。目前这有一些限制,如下所述 -

simAddVehicle 接受以下参数

  • vehicle_name:要创建的车辆的名称,对于每辆车,包括设置中定义的任何现有车辆,此名称都应是唯一的
  • vehicle_type:车辆类型,例如“simpleflight”。目前仅支持 SimpleFlight、PhysXCar、ComputerVision 及其各自的 SimMode。其他车辆类型,包括 PX4 和 ArduPilot 相关类型,不受支持
  • pose:车辆的初始姿态
  • pawn_path:车辆蓝图路径,默认为空,使用车辆类型的默认蓝图

返回:bool 车辆是否已创建

创建车辆后,可以使用常用 API 和 vehicle_name 参数来控制和与车辆交互。目前无法指定其他设置,例如附加摄像头等,未来的增强功能可以是为车辆传递设置的 JSON 字符串。它也适用于上面描述的 listVehicles() API,因此生成的车辆将包含在列表中。

有关一些示例,请查看 HelloSpawnedDrones.cpp -

HelloSpawnedDrones

runtime_car.py -

runtime_car