AirSim 设置#
设置存储在哪里?#
AirSim 按以下顺序搜索设置定义。将使用第一个匹配项
-
查看
-settings
命令行参数指定的(绝对)路径。例如,在 Windows 中:AirSim.exe -settings="C:\path\to\settings.json"
在 Linux 中./Blocks.sh -settings="/home/$USER/path/to/settings.json"
-
查找作为
-settings
参数通过命令行参数传递的 json 文档。例如,在 Windows 中:AirSim.exe -settings={"foo":"bar"}
在 Linux 中./Blocks.sh -settings={"foo":"bar"}
-
在可执行文件文件夹中查找名为
settings.json
的文件。这将是编辑器或二进制文件的实际可执行文件存储的深层位置。例如,对于 Blocks 二进制文件,搜索位置是<path-of-binary>/LinuxNoEditor/Blocks/Binaries/Linux/settings.json
。 -
在可执行文件启动的文件夹中搜索
settings.json
这是一个包含启动脚本或可执行文件的顶级目录。例如,Linux:
<path-of-binary>/LinuxNoEditor/settings.json
,Windows:<path-of-binary>/WindowsNoEditor/settings.json
请注意,此路径会根据调用位置而变化。在 Linux 上,如果从 LinuxNoEditor 文件夹内部执行
Blocks.sh
脚本,例如./Blocks.sh
,则使用前面提到的路径。但是,如果从 LinuxNoEditor 文件夹外部启动,例如./LinuxNoEditor/Blocks.sh
,则将使用<path-of-binary>/settings.json
。 -
在 AirSim 子文件夹中查找名为
settings.json
的文件。AirSim 子文件夹位于 Windows 上的Documents\AirSim
和 Linux 系统上的~/Documents/AirSim
。
该文件采用常见的 json 格式。首次启动时,AirSim 将在用户主文件夹中创建一个不带任何设置的 settings.json
文件。为避免问题,请始终使用 ASCII 格式保存 json 文件。
如何选择汽车或多旋翼飞行器?#
默认使用多旋翼飞行器。要使用汽车,只需像这样设置 "SimMode": "Car"
{
"SettingsVersion": 1.2,
"SimMode": "Car"
}
要选择多旋翼飞行器,请设置 "SimMode": "Multirotor"
。如果您想提示用户选择车辆类型,请使用 "SimMode": ""
。
可用设置及其默认值#
以下是可用设置及其默认值的完整列表。如果 json 文件中缺少任何设置,则使用默认值。某些默认值仅指定为 ""
,这意味着实际值可能会根据您使用的车辆进行选择。例如,ViewMode
设置的默认值为 ""
,对于无人机转换为 "FlyWithMe"
,对于汽车转换为 "SpringArmChase"
。
警告:不要将以下所有内容复制粘贴到您的 settings.json 中。我们强烈建议仅添加您不希望使用默认值的设置。唯一必需的元素是 "SettingsVersion"
。
{
"SimMode": "",
"ClockType": "",
"ClockSpeed": 1,
"LocalHostIp": "127.0.0.1",
"ApiServerPort": 41451,
"RecordUIVisible": true,
"LogMessagesVisible": true,
"ShowLosDebugLines": false,
"ViewMode": "",
"RpcEnabled": true,
"EngineSound": true,
"PhysicsEngineName": "",
"SpeedUnitFactor": 1.0,
"SpeedUnitLabel": "m/s",
"Wind": { "X": 0, "Y": 0, "Z": 0 },
"CameraDirector": {
"FollowDistance": -3,
"X": NaN, "Y": NaN, "Z": NaN,
"Pitch": NaN, "Roll": NaN, "Yaw": NaN
},
"Recording": {
"RecordOnMove": false,
"RecordInterval": 0.05,
"Folder": "",
"Enabled": false,
"Cameras": [
{ "CameraName": "0", "ImageType": 0, "PixelsAsFloat": false, "VehicleName": "", "Compress": true }
]
},
"CameraDefaults": {
"CaptureSettings": [
{
"ImageType": 0,
"Width": 256,
"Height": 144,
"FOV_Degrees": 90,
"AutoExposureSpeed": 100,
"AutoExposureBias": 0,
"AutoExposureMaxBrightness": 0.64,
"AutoExposureMinBrightness": 0.03,
"MotionBlurAmount": 0,
"TargetGamma": 1.0,
"ProjectionMode": "",
"OrthoWidth": 5.12
}
],
"NoiseSettings": [
{
"Enabled": false,
"ImageType": 0,
"RandContrib": 0.2,
"RandSpeed": 100000.0,
"RandSize": 500.0,
"RandDensity": 2,
"HorzWaveContrib":0.03,
"HorzWaveStrength": 0.08,
"HorzWaveVertSize": 1.0,
"HorzWaveScreenSize": 1.0,
"HorzNoiseLinesContrib": 1.0,
"HorzNoiseLinesDensityY": 0.01,
"HorzNoiseLinesDensityXY": 0.5,
"HorzDistortionContrib": 1.0,
"HorzDistortionStrength": 0.002
}
],
"Gimbal": {
"Stabilization": 0,
"Pitch": NaN, "Roll": NaN, "Yaw": NaN
},
"X": NaN, "Y": NaN, "Z": NaN,
"Pitch": NaN, "Roll": NaN, "Yaw": NaN,
"UnrealEngine": {
"PixelFormatOverride": [
{
"ImageType": 0,
"PixelFormat": 0
}
]
}
},
"OriginGeopoint": {
"Latitude": 47.641468,
"Longitude": -122.140165,
"Altitude": 122
},
"TimeOfDay": {
"Enabled": false,
"StartDateTime": "",
"CelestialClockSpeed": 1,
"StartDateTimeDst": false,
"UpdateIntervalSecs": 60
},
"SubWindows": [
{"WindowID": 0, "CameraName": "0", "ImageType": 3, "VehicleName": "", "Visible": false, "External": false},
{"WindowID": 1, "CameraName": "0", "ImageType": 5, "VehicleName": "", "Visible": false, "External": false},
{"WindowID": 2, "CameraName": "0", "ImageType": 0, "VehicleName": "", "Visible": false, "External": false}
],
"SegmentationSettings": {
"InitMethod": "",
"MeshNamingMethod": "",
"OverrideExisting": true
},
"PawnPaths": {
"BareboneCar": {"PawnBP": "Class'/AirSim/VehicleAdv/Vehicle/VehicleAdvPawn.VehicleAdvPawn_C'"},
"DefaultCar": {"PawnBP": "Class'/AirSim/VehicleAdv/SUV/SuvCarPawn.SuvCarPawn_C'"},
"DefaultQuadrotor": {"PawnBP": "Class'/AirSim/Blueprints/BP_FlyingPawn.BP_FlyingPawn_C'"},
"DefaultComputerVision": {"PawnBP": "Class'/AirSim/Blueprints/BP_ComputerVisionPawn.BP_ComputerVisionPawn_C'"}
},
"Vehicles": {
"SimpleFlight": {
"VehicleType": "SimpleFlight",
"DefaultVehicleState": "Armed",
"AutoCreate": true,
"PawnPath": "",
"EnableCollisionPassthrogh": false,
"EnableCollisions": true,
"AllowAPIAlways": true,
"EnableTrace": false,
"RC": {
"RemoteControlID": 0,
"AllowAPIWhenDisconnected": false
},
"Cameras": {
//same elements as CameraDefaults above, key as name
},
"X": NaN, "Y": NaN, "Z": NaN,
"Pitch": NaN, "Roll": NaN, "Yaw": NaN
},
"PhysXCar": {
"VehicleType": "PhysXCar",
"DefaultVehicleState": "",
"AutoCreate": true,
"PawnPath": "",
"EnableCollisionPassthrogh": false,
"EnableCollisions": true,
"RC": {
"RemoteControlID": -1
},
"Cameras": {
"MyCamera1": {
//same elements as elements inside CameraDefaults above
},
"MyCamera2": {
//same elements as elements inside CameraDefaults above
},
},
"X": NaN, "Y": NaN, "Z": NaN,
"Pitch": NaN, "Roll": NaN, "Yaw": NaN
}
},
"ExternalCameras": {
"FixedCamera1": {
// same elements as in CameraDefaults above
},
"FixedCamera2": {
// same elements as in CameraDefaults above
}
}
}
SimMode(模拟模式)#
SimMode 决定将使用哪种模拟模式。目前支持以下值: - ""
:提示用户选择车辆类型(多旋翼或汽车) - "Multirotor"
:使用多旋翼模拟 - "Car"
:使用汽车模拟 - "ComputerVision"
:仅使用相机,不使用车辆或物理
ViewMode(视图模式)#
ViewMode 决定了默认使用哪个相机以及相机如何跟随车辆。对于多旋翼飞行器,默认 ViewMode 为 "FlyWithMe"
,而对于汽车,默认 ViewMode 为 "SpringArmChase"
。
FlyWithMe
:从车辆后方以六个自由度追逐车辆GroundObserver
:从地面上方 6 英尺处追逐车辆,但在 XY 平面中具有完全自由。Fpv
:从车辆的前置摄像头查看场景Manual
:不自动移动相机。使用箭头键和 ASWD 键手动移动相机。SpringArmChase
:使用安装在通过弹簧连接到车辆(因此其运动存在一些延迟)的(隐形)臂上的相机追逐车辆。NoDisplay
:这将冻结主屏幕的渲染,但子窗口、录制和 API 的渲染保持活动状态。此模式在“无头”模式下很有用,您只对获取图像感兴趣,而不关心主屏幕上渲染的内容。这还可以提高录制图像的 FPS。
TimeOfDay(时间)#
此设置控制环境中太阳的位置。默认情况下,Enabled
为 false,这意味着太阳的位置保持环境中默认的位置,并且不会随时间变化。如果 Enabled
为 true,则太阳位置使用 OriginGeopoint
部分中指定的经度、纬度和高度,以及 StartDateTime
中以 %Y-%m-%d %H:%M:%S 格式(例如 2018-02-12 15:20:00
)指定的日期计算。如果此字符串为空,则使用当前日期和时间。如果 StartDateTimeDst
为 true,则我们调整夏令时。然后以 UpdateIntervalSecs
中指定的间隔连续更新太阳位置。在某些情况下,可能希望天体时钟比模拟时钟运行得更快或更慢。这可以使用 CelestialClockSpeed
指定,例如,值 100 表示每 1 秒模拟时钟,太阳位置前进 100 秒,因此太阳将在天空中移动得更快。
另请参阅 时间 API。
OriginGeopoint(原点地理坐标)#
此设置指定放置在 Unreal 环境中的玩家起始组件的纬度、经度和海拔高度。车辆的起点是使用此转换计算的。请注意,通过 API 公开的所有坐标都使用 SI 单位的 NED 系统,这意味着每辆车都在 NED 系统中的 (0, 0, 0) 处启动。时间设置是针对 OriginGeopoint
中指定的地理坐标计算的。
SubWindows(子窗口)#
此设置决定了当您按下 1,2,3 键时可见的 3 个子窗口中的每个窗口中显示的内容。
WindowID
:可以是 0 到 2CameraName
:是车辆上的任何可用摄像头或外部摄像头ImageType
:整数值根据ImageType 枚举决定显示哪种图像。VehicleName
:字符串允许您指定要从中获取摄像头的车辆,在设置中指定多辆车辆时使用。如果存在任何错误(例如车辆名称不正确或只有一辆车辆),则将使用第一辆车辆的摄像头。External
:如果摄像头是外部摄像头,请将其设置为true
。如果为 true,则忽略VehicleName
参数
例如,对于一辆汽车,下面分别显示了驾驶员视图、前保险杠视图和后视图作为场景、深度和表面法线。
"SubWindows": [
{"WindowID": 0, "ImageType": 0, "CameraName": "3", "Visible": true},
{"WindowID": 1, "ImageType": 3, "CameraName": "0", "Visible": true},
{"WindowID": 2, "ImageType": 6, "CameraName": "4", "Visible": true}
]
在多辆车辆的情况下,可以按以下方式指定不同的车辆 -
"SubWindows": [
{"WindowID": 0, "CameraName": "0", "ImageType": 3, "VehicleName": "Car1", "Visible": false},
{"WindowID": 1, "CameraName": "0", "ImageType": 5, "VehicleName": "Car2", "Visible": false},
{"WindowID": 2, "CameraName": "0", "ImageType": 0, "VehicleName": "Car1", "Visible": false}
]
Recording(录制)#
录制功能允许您以指定间隔录制数据,例如位置、方向、速度以及捕获的图像。您可以通过按右下角的红色录制按钮或 R 键开始录制。数据存储在 Documents\AirSim
文件夹(或使用 Folder
指定的文件夹)中,每个录制会话都有一个带时间戳的子文件夹,作为制表符分隔文件。
RecordInterval
:指定捕获两张图像之间的最小间隔(以秒为单位)。RecordOnMove
:指定如果车辆位置或方向没有改变,则不记录帧。Folder
:创建带时间戳的录制子文件夹的父文件夹。必须指定目录的绝对路径。如果未使用,则将使用Documents/AirSim
文件夹。例如"Folder": "/home/<user>/Documents"
Enabled
:是否从头开始录制,设置为true
将在模拟开始时自动开始录制。默认情况下,它设置为false
Cameras
:此元素控制用于捕获图像的摄像头。默认情况下,以压缩 png 格式录制摄像头 0 的场景图像。此设置为 json 数组,因此您可以指定多个摄像头来捕获图像,每个摄像头可能具有不同的图像类型。- 当
PixelsAsFloat
为 true 时,图像将保存为 pfm 文件而不是 png 文件。 VehicleName
选项允许您为单个车辆指定单独的摄像头。如果Cameras
元素不存在,则将记录每辆车的默认摄像头的Scene
图像。- 如果您不想录制任何图像而只录制车辆的物理数据,则指定
Cameras
元素但将其留空,如下所示:"Cameras": []
- 外部摄像头目前不支持录制
- 当
例如,下面的 Cameras
元素记录 Car1
的场景和分割图像以及 Car2
的场景 -
"Cameras": [
{ "CameraName": "0", "ImageType": 0, "PixelsAsFloat": false, "VehicleName": "Car1", "Compress": true },
{ "CameraName": "0", "ImageType": 5, "PixelsAsFloat": false, "VehicleName": "Car1", "Compress": true },
{ "CameraName": "0", "ImageType": 0, "PixelsAsFloat": false, "VehicleName": "Car2", "Compress": true }
]
有关如何修改正在录制的运动学数据的详细信息,请查看修改录制数据。
ClockSpeed(时钟速度)#
此设置允许您设置模拟时钟相对于挂钟的速度。例如,值 5.0 意味着当挂钟经过 1 秒时,模拟时钟已经过 5 秒(即模拟运行得更快)。值 0.1 意味着模拟时钟比挂钟慢 10 倍。值 1 意味着模拟实时运行。重要的是要认识到,随着模拟时钟运行得更快,模拟质量可能会下降。您可能会看到诸如物体越过障碍物等伪影,因为未检测到碰撞。但是,减慢模拟时钟(即值 < 1.0)通常会提高模拟质量。
Segmentation Settings(分割设置)#
InitMethod
确定在启动时如何初始化对象 ID 以生成分割。值 "" 或 "CommonObjectsRandomIDs"(默认)表示在启动时为每个对象分配随机 ID。这将生成带有分配给每个对象的随机颜色的分割视图。值 "None" 表示不初始化对象 ID。这将导致分割视图具有单一纯色。如果您计划使用 API 设置对象 ID,此模式很有用,并且可以为 CityEnviron 等大型环境节省大量启动延迟。
如果 OverrideExisting
为 false,则初始化不会更改已分配的非零对象 ID,否则会更改。
如果 MeshNamingMethod
为 "" 或 "OwnerName",则我们使用网格的所有者名称生成随机哈希作为对象 ID。如果为 "StaticMeshName",则我们使用静态网格的名称生成随机哈希作为对象 ID。请注意,这样无法区分同一静态网格的各个实例,但名称通常更直观。
Wind Settings(风力设置)#
此设置以世界坐标系 NED 方向指定风速。值以米/秒为单位。默认情况下,速度为 0,即无风。
Camera Director Settings(相机导向器设置)#
此元素指定用于视口中跟随车辆的摄像机设置。
FollowDistance
:摄像机跟随车辆的距离,默认为汽车 -8(8 米),其他为 -3。X, Y, Z, Yaw, Roll, Pitch
:这些元素允许您指定摄像机相对于车辆的位置和方向。位置采用 SI 单位的 NED 坐标,原点设置为 Unreal 环境中的玩家起始位置。方向以度为单位指定。
Camera Settings(相机设置)#
根级别的 CameraDefaults
元素指定所有摄像机使用的默认值。这些默认值可以在后面描述的 Vehicles
元素中的单个摄像机中被覆盖。
ImageType 元素说明#
JSON 数组中的 ImageType
元素决定了这些设置适用于哪种图像类型。有效值在ImageType 部分中描述。此外,我们还支持特殊值 ImageType: -1
,以将设置应用于外部摄像机(即您在屏幕上看到的)。
例如,CaptureSettings
元素是 json 数组,因此您可以轻松添加多种图像类型的设置。
CaptureSettings(捕获设置)#
CaptureSettings
决定如何渲染不同图像类型,例如场景、深度、视差、表面法线和分割视图。Width、Height 和 FOV 设置应该不言自明。AutoExposureSpeed 决定了眼睛适应的工作速度。我们通常将其设置为较高的值,例如 100,以避免图像捕获中的伪影。同样,我们默认将 MotionBlurAmount 设置为 0,以避免真实图像中的伪影。ProjectionMode
决定了捕获相机使用的投影,可以取值 "perspective"(默认)或 "orthographic"。如果投影模式为 "orthographic",则 OrthoWidth
决定了捕获的投影区域的宽度(以米为单位)。
有关其他设置的说明,请参阅本文。
NoiseSettings(噪声设置)#
NoiseSettings
允许向指定的图像类型添加噪声,目的是模拟相机传感器噪声、干扰和其他伪影。默认情况下不添加噪声,即 Enabled: false
。如果将 Enabled: true
,则启用以下不同类型的噪声和干扰伪影,每种都可以通过设置进一步调整。噪声效果作为虚幻引擎中名为 CameraSensorNoise 的后期处理材质实现的着色器。
相机噪声和干扰模拟演示
随机噪声#
这会添加具有以下参数的随机噪声斑点。* RandContrib
:这决定了噪声像素与图像像素的混合比例,0 表示无噪声,1 表示仅噪声。* RandSpeed
:这决定了噪声波动的速度,1 表示无波动,1E6 等更高值表示完全波动。* RandSize
:这决定了噪声的粗糙度,1 表示每个像素都有自己的噪声,而更高值表示多个像素共享相同的噪声值。* RandDensity
:这决定了总像素中有多少像素会受到噪声影响,1 表示所有像素,而更高值表示更少的像素(指数级)。
水平颠簸失真#
这会添加水平颠簸/闪烁/重影效果。* HorzWaveContrib
:这决定了噪声像素与图像像素的混合比例,0 表示无噪声,1 表示仅噪声。* HorzWaveStrength
:这决定了效果的整体强度。* HorzWaveVertSize
:这决定了有多少垂直像素会受到效果影响。* HorzWaveScreenSize
:这决定了屏幕有多少部分受到效果影响。
水平噪声线#
这会在水平线上添加噪声区域。* HorzNoiseLinesContrib
:这决定了噪声像素与图像像素的混合比例,0 表示无噪声,1 表示仅噪声。* HorzNoiseLinesDensityY
:这决定了水平线中有多少像素受到影响。* HorzNoiseLinesDensityXY
:这决定了屏幕上有多少行受到影响。
水平线失真#
这会在水平线上添加波动。* HorzDistortionContrib
:这决定了噪声像素与图像像素的混合比例,0 表示无噪声,1 表示仅噪声。* HorzDistortionStrength
:这决定了失真的大小。
云台#
Gimbal
元素允许冻结相机的俯仰、滚转和/或偏航方向。除非 ImageType
为 -1,否则此设置将被忽略。Stabilization
默认设置为 0,表示无万向节,即相机方向随身体方向在所有轴上变化。值为 1 表示完全稳定。0 到 1 之间的值充当指定固定角度(以度为单位,在世界坐标系中)在 Pitch
、Roll
和 Yaw
元素中以及车辆车身方向的权重。当 json 中省略任何角度或设置为 NaN 时,该角度不会稳定(即它随车辆车身移动)。
UnrealEngine(虚幻引擎)#
此元素包含特定于虚幻引擎的设置。在 Unity 项目中,这些将被忽略。* PixelFormatOverride
:这包含一个列表,其中包含 ImageType
和 PixelFormat
设置。每个元素允许您覆盖为 ImageType
设置指定的捕获实例化的 UTextureRenderTarget2D 对象的默认像素格式。指定此元素可防止由意外像素格式引起的崩溃(有关这些崩溃的示例,请参阅 #4120 和 #4339)。像素格式的完整列表可以在 此处 查看。
External Cameras(外部摄像机)#
此元素允许指定与连接到车辆的摄像机分开的摄像机,例如CCTV摄像机。这些是固定摄像机,不随车辆移动。元素中的键是摄像机的名称,值(即设置)与上述 CameraDefaults
相同。所有摄像机 API 都适用于外部摄像机,包括捕获图像、更改姿态等,只需在 API 调用中传递参数 external=True
。
Vehicles Settings(车辆设置)#
每种模拟模式都将遍历此设置中指定的车辆列表,并创建 "AutoCreate": true
的车辆。此设置中指定的每辆车辆都有一个键,该键成为车辆的名称。如果缺少 "Vehicles"
元素,则此列表将填充名为“PhysXCar”的默认汽车和名为“SimpleFlight”的默认多旋翼飞行器。
Common Vehicle Setting(通用车辆设置)#
VehicleType
:这可以是以下任何一种 -PhysXCar
、SimpleFlight
、PX4Multirotor
、ComputerVision
、ArduCopter
和ArduRover
。没有默认值,因此必须指定此元素。PawnPath
:这允许覆盖用于车辆的典当蓝图。例如,您可以在 AirSim 代码之外的自己的项目中为仓库机器人创建从 ACarPawn 派生新典当蓝图,然后在此处指定其路径。另请参阅PawnPaths。请注意,您必须使用您专有定义的对象名称在全局PawnPaths
对象中指定您的自定义典当蓝图类路径,并在Vehicles
设置中引用该名称。例如,{ ... "PawnPaths": { "CustomPawn": {"PawnBP": "Class'/Game/Assets/Blueprints/MyPawn.MyPawn_C'"} }, "Vehicles": { "MyVehicle": { "VehicleType": ..., "PawnPath": "CustomPawn", ... } } }
DefaultVehicleState
:多旋翼的可能值为Armed
或Disarmed
。AutoCreate
:如果为 true,则将生成此车辆(如果选定的模拟模式支持)。RC
:此子元素允许使用RemoteControlID
指定用于车辆的遥控器。值 -1 表示使用键盘(多旋翼飞行器尚不支持)。值 >= 0 指定连接到系统的众多遥控器之一。例如,Windows 中的游戏控制器面板中可以看到可用遥控器列表。X, Y, Z, Yaw, Roll, Pitch
:这些元素允许您指定车辆的初始位置和方向。位置采用 SI 单位的 NED 坐标,原点设置为 Unreal 环境中的玩家起始位置。方向以度为单位指定。IsFpvVehicle
:此设置允许指定哪个车辆摄像头将跟随以及当 ViewMode 设置为 Fpv 时将显示的视图。默认情况下,AirSim 选择设置中的第一辆车作为 FPV 车辆。Sensors
:此元素指定与车辆关联的传感器,请参阅传感器页面了解详细信息。Cameras
:此元素指定车辆的摄像头设置。此元素中的键是可用摄像头的名称,其值与上面描述的CameraDefaults
相同。例如,要将前置中央摄像头的 FOV 更改为 120 度,您可以在Vehicles
设置中使用此项
"Vehicles": {
"FishEyeDrone": {
"VehicleType": "SimpleFlight",
"Cameras": {
"front-center": {
"CaptureSettings": [
{
"ImageType": 0,
"FOV_Degrees": 120
}
]
}
}
}
}
使用 PX4#
默认情况下,我们使用 simple_flight,因此您无需进行单独的 HITL 或 SITL 设置。我们还支持"PX4",供高级用户使用。要在 AirSim 中使用 PX4,您可以将 Vehicles
设置使用以下内容
"Vehicles": {
"PX4": {
"VehicleType": "PX4Multirotor",
}
}
Additional PX4 Settings(其他 PX4 设置)#
PX4 的默认值是启用硬件在环设置。PX4 还有其他各种设置,如下所示,并附有其默认值
"Vehicles": {
"PX4": {
"VehicleType": "PX4Multirotor",
"Lockstep": true,
"ControlIp": "127.0.0.1",
"ControlPortLocal": 14540,
"ControlPortRemote": 14580,
"LogViewerHostIp": "127.0.0.1",
"LogViewerPort": 14388,
"OffboardCompID": 1,
"OffboardSysID": 134,
"QgcHostIp": "127.0.0.1",
"QgcPort": 14550,
"SerialBaudRate": 115200,
"SerialPort": "*",
"SimCompID": 42,
"SimSysID": 142,
"TcpPort": 4560,
"UdpIp": "127.0.0.1",
"UdpPort": 14560,
"UseSerial": true,
"UseTcp": false,
"VehicleCompID": 1,
"VehicleSysID": 135,
"Model": "Generic",
"LocalHostIp": "127.0.0.1",
"Logs": "d:\\temp\\mavlink",
"Sensors": {
...
}
"Parameters": {
...
}
}
}
这些设置定义了模拟器 (SimSysID, SimCompID) 和车辆 (VehicleSysID, VehicleCompID) 的 MavLink SystemId 和 ComponentId,以及允许从另一个应用程序远程控制无人机的节点,这称为离板节点 (OffboardSysID, OffboardCompID)。
如果您希望模拟器也将 mavlink 消息转发到您的地面控制应用程序(如 QGroundControl),您还可以设置该 UDP 地址,以防您想在不同的机器上运行它(QgcHostIp,QgcPort)。默认是本地主机,因此 QGroundControl 应该“正常工作”,如果它在同一台机器上运行的话。
您可以通过设置其 UDP 地址(LogViewerHostIp,LogViewerPort)将模拟器连接到此仓库中提供的 LogViewer 应用程序。
对于添加到模拟器中的每架飞行无人机,都有一组附加设置。在上面您可以看到默认名称“PX4”。当您添加新的 BP_FlyingPawn 资产时,您可以在 Unreal 编辑器中更改此名称。您将看到这些属性分组在“MavLink”类别下。此典当的 MavLink 节点可以通过 UDP 远程连接,也可以连接到本地串行端口。如果串行,则将 UseSerial 设置为 true,否则将 UseSerial 设置为 false。对于串行连接,您还需要设置适当的 SerialBaudRate。默认值 115200 适用于通过 USB 的 Pixhawk 版本 2。
当通过串行端口与 PX4 无人机通信时,HIL_* 消息和车辆控制消息共享同一串行端口。当通过 UDP 或 TCP 通信时,PX4 需要两个独立的通道。如果 UseTcp 为 false,则 UdpIp、UdpPort 用于发送 HIL_* 消息,否则使用 TcpPort。PX4 在 1.9.2 版中添加了 TCP 支持以及 lockstep
功能,因为 lockstep 的正常运行需要 TCP 提供的消息传递保证。在这种情况下,AirSim 成为 TCP 服务器,并等待 PX4 应用程序的连接。用于控制车辆的第二个通道由 (ControlIp, ControlPort) 定义,并且始终是 UDP 通道。
Sensors
部分可以为模拟传感器提供自定义设置,请参阅传感器。Parameters
部分可以在 PX4 连接初始化期间设置 PX4 参数。有关示例,请参阅设置 PX4 软件在环。
使用 ArduPilot#
AirSim 主分支和 v1.3.0
及更高版本支持 ArduPilot Copter 和 Rover 车辆。有关设置和使用方法,请参阅 使用 AirSim 的 ArduPilot SITL
Other Settings(其他设置)#
EngineSound(发动机声音)#
要关闭发动机声音,请使用设置 "EngineSound": false
。目前此设置仅适用于汽车。
PawnPaths(典当路径)#
这允许您指定自己的车辆典当蓝图,例如,您可以用自己的汽车替换 AirSim 中的默认汽车。您的车辆 BP 可以位于您自己的 Unreal 项目的内容文件夹中(即 AirSim 插件文件夹之外)。例如,如果您的项目中有一个汽车 BP 位于文件 Content\MyCar\MySedanBP.uasset
中,那么您可以设置 "DefaultCar": {"PawnBP":"Class'/Game/MyCar/MySedanBP.MySedanBP_C'"}
。XYZ.XYZ_C
是指定 BP XYZ
类的特殊表示法。请注意,您的 BP 必须派生自 CarPawn 类。默认情况下不是这种情况,但您可以在打开 BP 后使用 UE 编辑器工具栏中的“类设置”按钮重新绑定 BP,然后在“类选项”中选择“Car Pawn”作为父类设置。禁用“自动拥有玩家”和“自动拥有 AI”以及在 BP 详细信息中将 AI 控制器类设置为 None 也是一个好主意。如果您正在创建二进制文件,请确保您的资产包含在打包选项中。
PhysicsEngineName(物理引擎名称)#
对于汽车,我们目前只支持 PhysX(无论此设置中的值如何)。对于多旋翼飞行器,我们支持 "FastPhysicsEngine"
和 "ExternalPhysicsEngine"
。"ExternalPhysicsEngine"
允许通过 setVehiclePose() 控制无人机,使其保持原位直到下一次调用。它对于使用外部模拟器或沿着保存的路径移动 AirSim 无人机特别有用。
LocalHostIp Setting(本地主机 IP 设置)#
现在,当连接到远程机器时,您可能需要选择特定的以太网适配器才能访问这些机器,例如,它可能通过以太网或 Wi-Fi,或一些其他特殊的虚拟适配器或 VPN。您的 PC 可能有多个网络,并且这些网络可能不允许相互通信,在这种情况下,来自一个网络的 UDP 消息将无法通过其他网络。
因此,LocalHostIp 允许您配置如何访问这些机器。默认的 127.0.0.1 无法访问外部机器,此默认值仅在您要与之通信的所有内容都包含在单个 PC 上时使用。
ApiServerPort(API 服务器端口)#
此设置决定了 AirSim 客户端使用的服务器端口,默认端口为 41451。通过指定不同的端口,用户可以并行运行多个环境以加速数据收集过程。
SpeedUnitFactor(速度单位因子)#
速度单位转换因子,与 m/s
相关,默认值为 1。与 SpeedUnitLabel 结合使用。这可能仅用于显示目的,例如驾驶汽车时屏幕上的速度。例如,要获得以 英里/小时
为单位的速度,请使用因子 2.23694。
SpeedUnitLabel(速度单位标签)#
速度单位标签,默认为 m/s
。与 SpeedUnitFactor 结合使用。