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']
演示#
通过 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 -
和 runtime_car.py -