【Airsim】各种设置详解

2024-01-08 12:12
文章标签 设置 详解 airsim

本文主要是介绍【Airsim】各种设置详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

警告: settings.json 中仅添加不需要默认值的设置,其他保留默认

ref

https://github.com/microsoft/AirSim/blob/main/docs/settings.md

设置

设置存储位置

AirSim 按以下顺序搜索设置定义。将使用第一个匹配项:

  1. 查看-settings命令行参数指定的(绝对)路径。例如,在 Windows 中:AirSim.exe -settings=“C:\path\to\settings.json” 在 Linux 中./Blocks.sh -settings=“/home/$USER/path/to/settings.json”

  2. 查找由-settings参数作为命令行参数传递的 json 文档。例如,在 Windows 中:AirSim.exe -settings={“foo”:“bar”} 在 Linux 中./Blocks.sh -settings={“foo”:“bar”}

  3. 在可执行文件的文件夹中查找名为 的文件settings.json。这将是存储编辑器或二进制文件的实际可执行文件的深层位置。例如,对于 Blocks 二进制文件,搜索的位置是<path-of-binary>/LinuxNoEditor/Blocks/Binaries/Linux/settings.json

  4. 在启动可执行文件的文件夹中搜索 settings.json

这是包含启动脚本或可执行文件的顶级目录。例如Linux:<path-of-binary>/LinuxNoEditor/settings.json,Windows:<path-of-binary>/WindowsNoEditor/settings.json

请注意,此路径会根据其调用位置而变化。在 Linux 上,如果Blocks.sh从 LinuxNoEditor 文件夹内执行脚本(例如./Blocks.sh),则使用前面提到的路径。但是,如果从 LinuxNoEditor 文件夹外部启动,例如./LinuxNoEditor/Blocks.sh,则将/settings.json使用。

  1. 在 AirSim 子文件夹中查找名为settings.json. AirSim 子文件夹位于Documents\AirSimWindows 和~/Documents/AirSimLinux 系统上。

该文件采用通常的json 格式。首次启动时,AirSim 将settings.json在用户主文件夹中创建没有设置的文件。为避免出现问题,请始终使用 ASCII 格式保存 json 文件。

车辆、无人机、cv模式切换

轿车和多旋翼如何选择?
默认是使用多旋翼。要使用汽车简单设置"SimMode": "Car"如下:

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

SimMode 确定将使用哪种模拟模式。以下是当前支持的值:

"":提示用户选择车辆类型多旋翼或汽车
"Multirotor":使用多旋翼模拟
"Car":使用汽车模拟
"ComputerVision":仅使用相机,不使用车辆或物理

默认设置

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

屏幕显示的视图模式

ViewMode 确定默认使用哪个摄像头以及摄像头如何跟随车辆。对于多旋翼飞行器,默认 ViewMode 为 ,“FlyWithMe"而对于汽车,默认 ViewMode 为"SpringArmChase”。

FlyWithMe:6个自由度从后面追车
GroundObserver:从距地面 6 英尺的高度追逐车辆,但在 XY 平面内具有完全自由度。
Fpv:从车辆前置摄像头查看场景
Manual:不自动移动相机。使用箭头键和 ASWD 键手动移动摄像机。
SpringArmChase:用安装在通过弹簧连接到车辆的(隐形)手臂上的摄像机来追逐车辆(因此它在运动中有一些延迟)。
NoDisplay:这将冻结主屏幕的渲染,但子窗口、录制和 API 的渲染仍保持活动状态。此模式对于在“无头”模式下节省资源很有用,在“无头”模式下,您只对获取图像感兴趣,而不关心主屏幕上渲染的内容。这也可能会提高录制图像的 FPS。

时间

此设置控制太阳在环境中的位置。默认情况下Enabled为 false,这意味着太阳的位置保留在环境中的默认位置,并且不会随时间变化。如果Enabled为 true,则使用在字符串格式%Y-%m-%d %H:%M:%SOriginGeopoint中指定的日期部分中指定的经度、纬度和海拔高度来计算太阳位置,例如。如果该字符串为空,则使用当前日期和时间。如果为真,那么我们将调整夏令时。然后,太阳的位置按照 中指定的时间间隔不断更新。在某些情况下,可能希望天体时钟比模拟时钟运行得更快或更慢。这可以使用 来指定,例如,值 100 表示模拟时钟每 1 秒,太阳的位置就会提前 100 秒,因此太阳在天空中的移动速度会更快。StartDateTime2018-02-12 15:20:00StartDateTimeDstUpdateIntervalSecsCelestialClockSpeed

另请参阅时间 API。

原点地理点

此设置指定放置在 Unreal 环境中的 Player Start 组件的纬度、经度和海拔高度。车辆的起始点是使用此变换计算的。请注意,通过 API 公开的所有坐标均使用 SI 单位的 NED 系统,这意味着每辆车在 NED 系统中从 (0, 0, 0) 开始。一天中的时间设置是根据 中指定的地理坐标计算的OriginGeopoint。

子窗口

此设置确定按 1、2、3 键时可见的 3 个子窗口中的每一个中显示的内容。

WindowID: 可以是 0 到 2
CameraName:车辆上任何可用的摄像头或外部摄像头
ImageType:整数值决定根据ImageType enum显示哪种图像。
VehicleName:字符串允许您指定使用摄像头的车辆,在设置中指定多个车辆时使用。如果出现任何错误,例如车辆名称不正确或只有一辆车,则将使用第一辆车的摄像头。
Externaltrue:如果相机是外接相机,则设置为。如果为 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}]

记录

记录功能允许您以指定的时间间隔记录位置、方向、速度等数据以及捕获的图像。您可以通过按右下角的红色录制按钮或 R 键开始录制。数据存储在每个记录会话的带有时间戳的子文件夹中的Documents\AirSim文件夹(或使用 指定的文件夹)中,作为制表符分隔的文件。Folder

RecordInterval:指定捕获两个图像之间的最小间隔(以秒为单位)。
RecordOnMove:指定如果车辆的位置或方向没有改变,则不记录帧。
Folder:创建包含录音的带有时间戳的子文件夹的父文件夹。必须指定目录的绝对路径。如果不使用,则将Documents/AirSim使用文件夹。例如"Folder": “/home//Documents”
Enabled:是否从头开始录音,设置为true模拟开始时自动开始录音。默认情况下,它设置为false
Cameras:此元素控制使用哪些相机来捕获图像。默认情况下,来自摄像机 0 的场景图像记录为压缩 png 格式。此设置是 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 }
]

查看修改记录数据,了解有关如何修改正在记录的运动学数据的详细信息。

捕捉设置

决定CaptureSettings如何渲染不同的图像类型,例如场景、深度、视差、表面法线和分割视图。宽度、高度和 FOV 设置应该是不言自明的。AutoExposureSpeed 决定眼睛适应的速度。我们通常设置为较高的值,例如 100,以避免图像捕获中出现伪影。同样,我们默认将 MotionBlurAmount 设置为 0,以避免地面真实图像中出现伪影。决定ProjectionMode捕捉相机使用的投影,可以取值“透视”(默认)或“正交”。如果投影模式为“正交”,则OrthoWidth确定捕获的投影区域的宽度(以米为单位)。

自动曝光:https://docs.unrealengine.com/5.3/en-US/auto-exposure-in-unreal-engine/

噪音设置

允许NoiseSettings向指定的图像类型添加噪声,目的是模拟相机传感器噪声、干扰和其他伪影。默认情况下不添加噪声,即Enabled: false。如果您进行设置Enabled: true,则启用以下不同类型的噪声和干扰伪影,每个都可以使用设置进一步调整。噪声效果通过在虚幻引擎中作为后处理材质创建的着色器来实现,称为CameraSensorNoise

这篇关于【Airsim】各种设置详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583413

相关文章

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2