AirSim 自动驾驶仿真 (3) setting.json帮助文档解析
https://blog.csdn.net/Zhaoxi_Li/article/details/107946885
文章目錄
1 json存儲位置
2 如何在車輛Car和旋翼無人機Multirotor之間進行選擇
3 可用的設置和對應默認值
SimMode
ViewMode
TimeOfDay
OriginGeopoint
SubWindows
Recording
ClockSpeed
Segmentation Settings
Camera Settings
Vehicles Settings
其他的一些設置
總結
1 json存儲位置
Windows在DocumentsAirSim,Linux在~/Documents/AirSim
第一次啟動Airsim時候將自動創建一個空的setting文件,為了避免其他問題,永遠使用ASCII保存文件
2 如何在車輛Car和旋翼無人機Multirotor之間進行選擇
如果想使用Car則在json文件設置"SimMode": "Car",如下所示
{
"SettingsVersion": 1.2,
"SimMode": "Car"
}
選擇Multirotor則設置"SimMode": "Multirotor". 如果設置"SimMode": "".則啟動Airsim時候會自動彈出一個對話框詢問使用哪個。
3 可用的設置和對應默認值
下面是所有可用的設置和其對應默認值,一些默認值為""將會根據實際使用的車輛類型進行選擇,比如ViewMode為"",對于無人機則使用"FlyWithMe",對無人車則使用"SpringArmChase"。
注意:沒有必要將所有的設置復制過去,需要什么粘貼什么即可,僅有"SettingsVersion"是需要設置的。
{
"SimMode": "",
"ClockType": "",
"ClockSpeed": 1,
"LocalHostIp": "127.0.0.1",
"RecordUIVisible": true,
"LogMessagesVisible": true,
"ViewMode": "",
"RpcEnabled": true,
"EngineSound": true,
"PhysicsEngineName": "",
"SpeedUnitFactor": 1.0,
"SpeedUnitLabel": "m/s",
"Recording": {
"RecordOnMove": false,
"RecordInterval": 0.05,
"Cameras": [
{ "CameraName": "0", "ImageType": 0, "PixelsAsFloat": false, "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
},
"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, "Visible": false},
{"WindowID": 1, "CameraName": "0", "ImageType": 5, "Visible": false},
{"WindowID": 2, "CameraName": "0", "ImageType": 0, "Visible": false}
],
"SegmentationSettings": {
"InitMethod": "",
"MeshNamingMethod": "",
"OverrideExisting": false
},
"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,
"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
}
}
}
SimMode
SimMode用來確定仿真模式,當前支持以下模式值:
"": 啟動仿真時候自定義選擇模式
"Multirotor": 使用旋翼仿真
"Car": 使用車輛仿真
"ComputerVision": 僅使用相機,無無人機和車輛
ViewMode
ViewMode確定將哪個攝影機用作默認攝影機以及攝影機將如何跟隨車輛。對于無人機,默認是"FlyWithMe",而無人車則默認是"SpringArmChase".
FlyWithMe: 以6個自由度從后面追趕車輛
GroundObserver: 從離地6’處追逐車輛,但在XY平面上保持完全自由。
Fpv: 從車輛前攝像頭觀看場景,就是車輛視角,可以理解為第一人稱視角。
Manual: 不要自動移動相機。使用箭頭鍵和ASWD鍵手動移動攝像機。
SpringArmChase: 用安裝在隱形的手臂上的攝像頭追蹤車輛,該手臂通過彈簧連接到車輛上(因此它在運動中有一些延遲)。
NoDisplay: 就是不可視化仿真器,但是子窗口、錄制和API的渲染仍處于活動狀態。此模式對于在“無頭”模式下保存資源非常有用,在這種模式下,您只對獲取圖像感興趣,而不關心在主屏幕上呈現的內容。這也可以提高記錄圖像的FPS。
OriginGeopoint
這個用來記錄經緯度和高度,起始原點也是利用這個計算出來的。所有坐標是北東地坐標系,在系統中,每個車輛從(0,0,0)點開始。時間設置也是通過這個算出來的OriginGeopoint(感覺解釋很模糊,等以后測試使用后再補充細節吧)
{
"OriginGeopoint": {
"Latitude": 47.641468,
"Longitude": -122.140165,
"Altitude": 122
},
}
SubWindows
這個設置用來確定當按下0的時候,哪個窗口是可見的。具體用法如下所示。
"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}
]
"WindowID"表示使用哪個窗口,值在0-2之間。 "ImageType"表示圖像類型,一共有8種類型,分別如下所示 Scene = 0, DepthPlanner = 1, DepthPerspective = 2, DepthVis = 3, DisparityNormalized = 4, Segmentation = 5, SurfaceNormals = 6, Infrared = 7 "CameraName"相機名稱,一共有5個相機,front_center, front_right, front_left, fpv 和back_center,為了向后兼容,用0-4對應。
Recording
按照特定的時間間隔記錄數據,比如位置、姿態、速度和對應圖像。仿真器上面有按鈕可以開始記錄。數據存在DocumentsAirSim,對應配置代碼如下所示。
"Recording": {
"RecordOnMove": false,
"RecordInterval": 0.05,
"Cameras": [
{ "CameraName": "0", "ImageType": 0, "PixelsAsFloat": false, "Compress": true }
]
},
RecordInterval指定采集兩張圖片的最小時間間隔,就是每隔多少秒采集一張圖片。
RecordOnMove指定如果車輛不動是否還采集圖像
Cameras設置相機的屬性,默認是使用相機0,并壓縮存儲。相同屬性跟SubWindows一樣,如果PixelsAsFloat為true,圖像將會存儲為pfm格式。
Camera Settings
CameraDefaults在第一級根目錄,指定所有相機的默認值,這些默認值在每個Vehicles中的相機Cameras中重寫。
屬性ImageType已經在前面介紹過了,除此之外可以設置ImageType: -1應用在外部相機(也就是顯示屏成像的相機)。
"CaptureSettings"設置的是不同種圖像屬性,比如scene, depth, disparity, surface normals和segmentation 等等。屬性Width, Height, FOV就是圖像分辨率內參相關。AutoExposureSpeed值較高可以消除圖像采集中的偽影。MotionBlurAmount設置為0以避免真值中的偽影。ProjectionMode投影模式,不太能理解,用默認perspective就行(其他參數有的跟參數有關,主要是需要設置前4個,其他默認就好)。
NoiseSettings允許想特定圖像添加噪聲,目的是模擬傳感器噪聲,干擾和偽影。默認是無噪聲添加的Enabled: false。如果需要噪聲,設置其余屬性就行。
RandContrib噪聲混合比,0表示無噪聲,1表示只有噪聲。
RandSpeed設置噪波波動的速度,1表示無波動,較高的值如1E6表示完全波動。
RandSize這決定了噪聲的粗糙程度,1表示每個像素都有自己的噪聲,而較高的值意味著超過1個像素共享相同的噪聲值。
RandDensity這決定了有多少像素會有噪聲,1表示所有像素,值越高表示像素數越少。
HorzWaveContrib添加水平凹凸/閃爍/重影效果,這決定了噪波像素與圖像像素的混合比,0表示無噪波,1表示只有噪波。
HorzWaveStrength這決定了效果的整體強度。
HorzWaveVertSize這決定了有多少垂直像素會受到效果的影響。
HorzWaveScreenSize這決定了屏幕有多大程度上受效果的影響。
其他都是各種方向噪聲,感覺用途不多,暫時不分析了,專業人士看文檔即可。
Gimbal允許凍結相機三個軸的方向,這個設置對第三人稱視角是無用的,也就是ImageType為-1,當Stabilization為0就表示相機隨著本體模型的運動而運動,值為1時候,表示完全穩定。值取值范圍為0-1,用來與車的角度進行混合,Pitch,Roll和Yaw任何一個值設為NaN,表示這個角度將隨車運動。
"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
},
Vehicles Settings
仿真器將遍歷"Vehicles"列表創建"AutoCreate": true的車輛。
Each simulation mode will go through the list of vehicles specified in this setting and create the ones that has"AutoCreate": true. 指定的每個車輛都有個key,這個key就是車的名字。如果這個設置中不存在這個屬性,則使用默認叫“PhysXCar”的車和“SimpleFlight”的無人機來填充。
"Vehicles": {
"SimpleFlight": {
"VehicleType": "SimpleFlight",
"DefaultVehicleState": "Armed",
"AutoCreate": true,
"PawnPath": "",
"EnableCollisionPassthrogh": false,
"EnableCollisions": true,
"AllowAPIAlways": true,
"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
}
}
下面對其中的一些屬性進行說明。
VehicleType: 這個屬性可以選擇PhysXCar,SimpleFlight,PX4Multirotor或ComputerVision. 不存在默認值因此這個必須被指定。
PawnPath: This allows to override the pawn blueprint to use for the vehicle. For example, you may create new pawn blueprint derived from ACarPawn for a warehouse robot in your own project outside the AirSim code and then specify its path here. See alsoPawnPaths.
DefaultVehicleState: 用于無人機的可能值,Armed或Disarmed。
AutoCreate: 如果為真,則生成此車輛。
RC: 指定車輛使用的遙控器
RemoteControlID. 控制器選擇,值為-1時候使用鍵盤控制(不支持無人機),值≥0時候指定一個連接在電腦的控制器。
X, Y, Z, Yaw, Roll, Pitch: 車輛初始化時候的位置和方向。
IsFpvVehicle: 選擇那輛車產生第一視角數據,默認是使用第一輛車作為FPV車輛,其實就是數據窗口總共就3個,必須指定一個來采集數據。
Cameras: 為每個車輛指定相機,屬性和值的使用與CameraDefaults是一樣的。如果改變前置相機的FOV為120°,那么可以按照如下的代碼對Vehicles進行修改.
"Vehicles": {
"FishEyeDrone": {
"VehicleType": "SimpleFlight",
"Cameras": {
"front-center": {
"CaptureSettings": [
{
"ImageType": 0,
"FOV_Degrees": 120
}
]
}
}
}
}
總結
以上是生活随笔為你收集整理的AirSim 自动驾驶仿真 (3) setting.json帮助文档解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql中合并列方法
- 下一篇: 有向图最长路径算法_算法数据结构 | 三