AirSim (三) ---理解篇-帧率FPS:理解影响帧率的因素-Camera Views 相机视图

本文详细介绍了如何管理AirSim的相机视图以优化仿真性能,包括降低分辨率、限制帧率以及影响因素。通过编辑settings.json文件和使用simRunConsoleCommand API,可以调整分辨率和限制最大FPS。此外,还探讨了相机视图对CPU和GPU的影响,以及如何通过‘NoDisplay’模式和‘RecordInterval’设置进一步提高性能。
摘要由CSDN通过智能技术生成


帧率的范畴涉及到:由AirSim发布数据的频率,相机捕捉图像的频率等。如何修改设置或采用什么方法,才能按照期望的帧率进行图像捕捉,以及发布数据并记录下来呢?

1. 相机视图 Camera Views

Camera Views是显示在屏幕上的相机视图,通过simGetImages API获取。关于获取图像的API介绍,可参考:点击我
在这里插入图片描述
从左到右分别为深度视图、分割视图和FPV视图。有关各种可用视图的描述,请参阅Image APIs

2. 如何程序中获取相机视图?

可参考Image APIs:点击我
你可以进行如下操作:

  1. 如何利用python或C++获取单幅图(可指定PNG或未压缩的RGB)?
  2. 如何使用numpy进行图像操作?
  3. 如何添加额外的车机意外的摄像头?
    除了每辆车的默认摄像头外,还可以通过设置添加更多的摄像头到车辆上,或外置外部摄像头(没有连接到任何车),通过settings来配置,可参见之前的介绍—配置篇。

3. 相机视图对仿真性能的影响

渲染这些视图确实会影响仿真的FPS性能,因为渲染增加了GPU的额外工作负担。

下面展示了打开这些视图时对FPS的影响。
在这里插入图片描述

  1. 没有子视图打开的normal state:每帧16毫秒,这意味着保持了一个不错的稳定的60帧/秒(这是目标FPS帧/秒)
  2. 即使在最糟糕的情况下,仿真器仍然可以正常运行和飞行,因为physics与rendering是分离的。然而,如果延迟太高,例如以至于与PX4硬件的通信由于CPU过于繁忙而中断,那么飞行可能会由于离线控制消息的超时而停止运行。

下面展示了打开这些视图对CPU的影响,可能有点令人惊讶的结果是:对CPU的影响也不是微不足道的
在这里插入图片描述

4. 降低AirSim运行的分辨率、限制最大帧率

AirSim二进制程序,像是CityEnviron,需要强大beefy的GPU才能顺利运行。
可以通过在Windows上编辑run.bat文件来在低分辨率模式下运行(如果run.bat不存在,可创建),例如

start CityEnviron -ResX=640 -ResY=480 -windowed

对于Linux二进制文件,使用Blocks.sh或对应的shell脚本,如

./Blocks.sh -ResX=640 -ResY=480 -windowed

也可以使用simRunConsoleCommand() API来限制最大FPS,如

>>> import airsim
>>> client = airsim.VehicleClient()
>>> client.confirmConnection()
Connected!
Client Ver:1 (Min Req: 1), Server Ver:1 (Min Req: 1)

>>> client.simRunConsoleCommand("t.MaxFPS 10")
True

5. 改变分辨率和相机参数

要改变分辨率,FOV视场角等,可以使用settings.json来配置。

例如,下面为设置场景捕捉scene capture的参数所添加的settings.json。

{
  "SettingsVersion": 1.2,
  "CameraDefaults": {
      "CaptureSettings": [
        {
          "ImageType": 0,
          "Width": 256,
          "Height": 144,
          "FOV_Degrees": 90,
          "AutoExposureSpeed": 100,
          "MotionBlurAmount": 0
        }
    ]
  },
  "SimMode": "ComputerVision"
}

上面配置中,采用的是“Computer Vision”模式。如果忽略任何设置,则将使用默认值的设置。有关更多信息,请参阅设置文档 settings doc。如果使用的是立体相机,目前左右之间的距离是固定在25厘米。

6. FPS影响因素总结

settings>>RecordInterval记录两帧图像之间的时间间隔(秒)
settings>>“NoDisplay”:冻结主屏幕的渲染,但子窗口、记录和API仍然是活跃的。在“headless”模式下,即若只对获取图像感兴趣,而不关心在主屏幕上渲染什么,这个模式有助于节省资源,可以改善记录图像的FPS
采用normal不打开子视图。注意physics与rendering是分离的,即使打开子视图,导致渲染帧率下降,最糟糕的情况下,仿真器仍然可以正常运行和飞行,除非延迟太大影响了与vehicle的正常通信
simRunConsoleCommand()可以用该API来API来限制最大FPS
run.bat文件编辑该文件,使得虚拟环境在低分辨率模式下运行:start CityEnviron -ResX=640 -ResY=480 -windowed

7. AirSim发布数据时增加频率的思路

增加频率方法参考资料:

  1. #2369
    《Running SLAM system on AirSim · Issue #2369 · microsoft/AirSim (github.com)》
  2. 修改airsim的rob包实现高频率
  3. 总结bolg:AirSim中获取视觉、惯性数据方法研究
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值