首页 > 其他分享 >AirSim 自动驾驶仿真 (6) 设置采集参数和属性

AirSim 自动驾驶仿真 (6) 设置采集参数和属性

时间:2023-11-02 18:05:09浏览次数:45  
标签:仿真 center AirSim 采集 front true ImageType 属性

https://cloud.tencent.com/developer/article/2011384

1.配置文件在哪

默认情况下,文件位于用户目录下的AirSim文件夹,比如在Windows下,文件位于C:\Users\admin\Documents\AirSim,如下。

C:\Users\dongdong\Documents\AirSim

 

 

2.配置文件长什么样

打开配置文件可以看到,这是一个标准的json格式文件。如果没有这个文件,AirSim会在启动的时候自动新建一个空白的文件。

 

3.有哪些属性可以改

这个问题便是本文的核心内容,这里列举出一些常用的属性,下面分别进行介绍。完整的属性介绍与默认值列表,还是请参考官方文档

3.1 采集平台选择

AirSim支持汽车和多旋翼无人机两种采集平台,通过SimMode属性进行设置。该属性默认值为空,也即用户手动选择。

 

 

 

 

3.2 视角模式选择

AirSim支持多种视角模式,通过ViewMode进行设置。对于Car,默认值为SpringArmChase,对于Multirotor,默认值为FlyWithMe

 

 

 

 

 

 

 

 

 

3.3 地理原点设置

AirSim支持设置仿真场景的真实地理位置,通过OriginGeopoint属性设置,默认为(0,0,0),分别对应纬度、经度和高程。我们可以按下面的格式设置位置。

  "OriginGeopoint": {
    "Latitude": 30,
    "Longitude": 120,
    "Altitude": 122
  }

  

3.4 仿真光照设置

用于控制仿真场景中太阳的位置(根据不同时间)与光照,由TimeOfDay属性控制,默认为false。也就是光照恒定且不随时间变化。而如果设为true,则会根据指定的时间、位置计算出太阳位置与光照,当然同样也不会随时间变化。如果想让光照随时间变化,需要将StartDateTimeDst属性设为true,并指定更新频率UpdateIntervalSecs。这样,场景就会以一定的频率根据时间和位置(刚刚上面提到的OriginGeoPoint属性)计算光照。如下展示了设置光照的一个具体例子:

 

  "TimeOfDay": {
    "Enabled": true,
    "StartDateTime": "2021-12-01 23:30:00",
    "CelestialClockSpeed": 1,
    "StartDateTimeDst": false,
    "UpdateIntervalSecs": 60
  }

  

 

3.5 可视化窗口设置

AirSim支持数据采集的过程中实时展示采集的数据,这主要通过SubWindows属性进行设置。进一步,它又包含多个属性:

  • WindowID: 指定SubWindow的ID,0,1,2三者之一。
  • CameraName: 相机名称,枚举类型属性。对于Car,有front_centerfront_rightfront_leftfpvback_center可选;对于Multirotor,有front_centerfront_rightfront_leftbottom_centerback_center可选;对于ComputerVision,可选相机种类与Multirotor相同。当然,在AirSim中,为了向下兼容(Backward Compatibility),依然保留了相机索引,可以通过01234来分别获取对应相机。
  • ImageType: 影像类型,枚举类型属性。Scene=0DepthPlanar=1DepthPerspective=2DepthVis=3DisparityNormalized=4Segmentation=5SurfaceNormals=6Infrared=7。其中Scene=0就是普通的RGB影像,DepthVis=3就是场景的可视化深度图,Segmentation=5就是场景的语义分割图。更详细的介绍参考官方文档
  • VehicleName: 采集平台的名称,在有多个采集设备的时候会比较有用。
  • External: 如果为外部相机就设为true,如果为true,VehicleName属性就被忽略。
  "SubWindows": [
    {"WindowID": 0, "ImageType": 0, "CameraName": "front_center", "Visible": true},
    {"WindowID": 1, "ImageType": 3, "CameraName": "front_center", "Visible": true},
    {"WindowID": 2, "ImageType": 5, "CameraName": "front_center", "Visible": true}
  ]

  

如下展示了一个简单的例子:展开三个子窗口,显示front_center相机的RGB影像、深度图以及语义分割影像:

 

3.6 录制设置

如前面的博客所说,开始和结束录制按键盘R键即可。数据录制主要由Recording属性控制,同样的,里面又有一些子属性:

  • RecordInterval: 指定两帧影像之间的最小时间间隔,单位秒。
  • RecordOnMove: 指定如果采集平台不动的时候就停止录制,动的时候再录制。
  • Folder: 指定录制数据的输出文件夹,默认是放在Documents/AirSim下面。
  • Enabled: 指定是否从启动环境就开始录制,默认为false。
  • Cameras: 指定录制哪些相机的内容。默认情况下是以压缩的png格式录制camera 0(front_center)的RGB(scene)数据。如果只想录制采集平台的物理数据,把Cameras属性设为空即可:"Cameras": []
  • PixelsAsFloat: 是否以pfm(portable float map)格式保存数据而不是png文件。

下面展示的是录制front_center相机的RGB、深度和语义分割数据的示例。

 

 "Recording": {
    "RecordInterval": 0.05,
    "Cameras": [
        { "CameraName": "front_center", "ImageType": 0, "PixelsAsFloat": false, "Compress": true },
        { "CameraName": "front_center", "ImageType": 3, "PixelsAsFloat": false, "Compress": true },
        { "CameraName": "front_center", "ImageType": 5, "PixelsAsFloat": false, "Compress": true }
    ]
  }

  

 

3.7 相机设置

我们也可以指定相机的一些参数,如视场角、影像分辨率等,这些参数主要由CameraDefaults属性控制。进一步又包含CaptureSettingsNoiseSettingsGimbal这三个子属性。如下是一个简单的示例。

  "CameraDefaults": {
    "CaptureSettings": [
      {
        "ImageType": 0,
        "Width": 1920,
        "Height": 1080,
        "FOV_Degrees": 90,
        "AutoExposureSpeed": 100,
        "AutoExposureBias": 0,
        "AutoExposureMaxBrightness": 0.64,
        "AutoExposureMinBrightness": 0.03,
        "MotionBlurAmount": 0,
        "TargetGamma": 1.0,
        "ProjectionMode": "",
        "OrthoWidth": 5.12
      },
      {
        "ImageType": 3,
        "Width": 1920,
        "Height": 1080,
        "FOV_Degrees": 90,
        "AutoExposureSpeed": 100,
        "AutoExposureBias": 0,
        "AutoExposureMaxBrightness": 0.64,
        "AutoExposureMinBrightness": 0.03,
        "MotionBlurAmount": 0,
        "TargetGamma": 1.0,
        "ProjectionMode": "",
        "OrthoWidth": 5.12
      },
      {
        "ImageType": 5,
        "Width": 1920,
        "Height": 1080,
        "FOV_Degrees": 90,
        "AutoExposureSpeed": 100,
        "AutoExposureBias": 0,
        "AutoExposureMaxBrightness": 0.64,
        "AutoExposureMinBrightness": 0.03,
        "MotionBlurAmount": 0,
        "TargetGamma": 1.0,
        "ProjectionMode": "",
        "OrthoWidth": 5.12
      }
    ]
  }

  

这样我们就可以捕获1920×1080分辨率的数据了,如下图所示。另外需要注意的是,对于双目相机而言,双目相机默认的基线长度为25cm,详情参考这个文档

4.参考资料

  • [1] https://microsoft.github.io/AirSim/settings
  • [2] https://microsoft.github.io/AirSim/image_apis/#available-cameras
  • [3] https://microsoft.github.io/AirSim/image_apis/#available-imagetype-values
  • [4] https://microsoft.github.io/AirSim/sensors
  • [5] https://github.com/microsoft/AirSim/blob/master/docs/image_apis.md

标签:仿真,center,AirSim,采集,front,true,ImageType,属性
From: https://www.cnblogs.com/gooutlook/p/17805923.html

相关文章

  • 通过tide库如何使用Rust语言采集汽车之家
    身边许多有车的朋友,在日常用车养车过程中,经常会碰到这样那样的问题,很多人都喜欢去汽车之家寻求帮助。那么今天,我将为大家带来的是使用tide库来编写的一个爬虫程序,并使用Rust语言来采集汽车之家的相关内容,不是特别难,有需要的朋友可以看看学习一下喔。```rustusetide::{Request,Re......
  • Go语言和net库结合,轻松搞定喜马拉雅视频采集
    昨天一个小哥问我,能不能用Go语言和net库编写一个采集喜马拉雅视频的采集程序,因为网站上有太多他需要的学习资源,所以来找我帮忙。我大概看了下网站策略,这个爬虫写起来不是特别难,现在就给大家简单分享一下。```gopackagemainimport("fmt""io/ioutil""net/http""net/url""str......
  • 如何通过HWebkit库配合Haskell语言采集链家图片
    链家是一个专业提供二手房源、楼盘等信息的网站,需要二手房的朋友,链家可是个首选的资源平台。今天我们将使用HWebkit库编写一个爬虫程序,然后使用Haskell语言来采集链家平台的相关图片,快来学习一下吧。```haskellimportNetwork.HTTP.Webkit--定义代理主机和端口proxyHost::Str......
  • 简单使用C语言通过Microhttpd库采集淘宝
    前段时间给大家分享过不少采集淘宝相关内容的方法,昨天有个朋友让我来帮他用C语言编写一个采集淘宝的爬虫程序,并且还要通过Microhttpd库来实现。这一点都难不倒我,下面我就将我的代码示例给大家分享一下,有需要的朋友赶紧来取。```c#include#include#include#include#defineHTTP......
  • 怎样使用Go语言+NET库搞定饿了么采集
    饿了么是一个集在线外卖、新零售、即时配送和餐饮供应链等业务的一个平台,也是我们日常中使用比较多的一个平台。每次点外卖的时候,那么多的商家,我们要比对价格、看评价,看看到底怎么点餐比较划算,这是一个Go语言的爬虫程序,所以今天,我就使用net库来实现对饿了么内容的采集,方便我们每次......
  • 如何使用Haskell语言和tagsoup库相结合采集同花顺财经相关视频
    今天要给大家带来的是一个使用Haskell语言和tagsoup库相结合的爬虫程序,主要是用来采集同花顺财经上的相关视频。前段时间一个粉丝跟我要了好久,由于太忙了,一直拖到现在。正好给大家分享一下,一起学习交流。```haskellimportNetwork.HTTPimportText.HTML.TagSoup--定义一......
  • Intrepid—总线采集测试仿真工具
    产品概述    VehicleSpy是英特佩斯推出的简单易用的高性价比总线工具,包含分析软件和采集调试硬件,具备对各类总线数据的网络监控、诊断、总线分析、数据采集、节点仿真、自动化测试等功能,目前支持的总线类型包含CAN、CANFD、LIN、FlexRay、车载以太网等各类总线格式。 ......
  • (4)PC端微信UI自动化-微信联系人采集(C#)
    ​ 在进行一系列操作之前,我们需要采集到微信中的联系人和群聊信息软件运行效果演示  接下来我们如何采集到微信中的联系人列表呢?(1)找到通讯录按钮UI元素执行点击操作。(2)找到联系人面板并执行面板滚动操作(3)滚动过程中获取面板List对象中的ListItem项中的各个子元素......
  • Python如何去采集APP数据?我下面提供下思路和结构代码
    当涉及到采集APP数据时,Python是一个强大的工具,因为它具有丰富的库和框架,能够帮助你轻松地获取所需的信息。无论是分析竞争对手的市场表现,还是监控用户行为,Python都可以成为你的数据采集和分析的得力助手。本文将介绍如何使用Python采集APP数据的方法,包括Web抓取、API调用和数据清......
  • 拼多多详情 API 接口数据采集及营销策略渠道店铺业务增长
    拼多多详情API接口可以提供丰富的商品信息和销售数据,通过数据采集和分析,企业可以制定更加精准的营销策略,促进业务增长。以下是使用拼多多详情API接口进行数据采集和营销策略制定的步骤和方法:步骤1:获取拼多多详情API接口的访问权限在拼多多开放平台注册并创建应用,获取API密......