当前位置: 首页 > web >正文

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感觉有必要记录下。

  • AirSim 官方文档:https://microsoft.github.io/AirSim/
  • Cosys-AirSim 官方文档:https://cosys-lab.github.io/Cosys-AirSim/

【Note】:AirSim 和 Cosys-AirSim 在外部相机配置和使用方面有较大差异,如果你用的是较新的 AirSim 版本发现原生的配置方案没有生效建议试下 Cosys-AirSim 的配置方案,这两个在大多数情况下是兼容 settings.json 文件的。


1. Cosys-AirSim 配置方案

文档溯源

对于 Cosys-AirSim 而言配置外部固定位置监控相机主要参考下面的官方文档:

  • Cosys-AirSim Settings Doc:https://cosys-lab.github.io/Cosys-AirSim/settings/

和原生 AirSim 不同,Cosys-AirSim 将外部相机定义为载具的一个对象,只不过可以通过设置标签来固定相机,我感觉这么做的一个原因是 API 中获取相机图片的接口需要传入一个载具名。

但当你打开链接后找到原生 AirSim 中对应位置的示例 settings 后实际上看不到有关外部相机配置的描述,同时搜索 ExternalCamera 也返回的是无结果。

在这里插入图片描述

实际上你需要返回链接的最上方找到 Cosys-AirSim Settings 标签中 settings_example.json 链接并打开:

  • settings_example.json 文件:https://cosys-lab.github.io/Cosys-AirSim/settings_example.json
    在这里插入图片描述

打开链接后找到 Vehicles 字段中的 Cameras 属性就可以发现控制相机是内部相机还是外部相机的标签为 ExternalExternalLocal

在这里插入图片描述

那么最精简的配置格式如下:

{"ClockSpeed": 1,"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md","SettingsVersion": 1.2,"SimMode": "Multirotor","ViewMode": "SpringArmChase","Vehicles": {"drone_1": {"Cameras": {"fpv_cam": {// ...},"FixedCamera": {"External": true,           // 外部标志位"ExternalLocal": true,      // 外部标志位// ...}},"Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0,"VehicleType": "SimpleFlight","X": 0.0, "Y": 0.0, "Z": 0.0}},"SubWindows": [{"WindowID": 0,"ImageType": 0,"CameraName": "fpv_cam","Visible": true},{"WindowID": 2,"ImageType": 0,"CameraName": "FixedCamera","Visible": true}]
}

配置示例

下面给出一个简单的配置 setting.json 示例,包含一个搭载 1080p 分辨率相机的FPV无人机 + 一个和 4K 分辨率的地面监控相机:

{"ClockSpeed": 1,"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md","SettingsVersion": 1.2,"SimMode": "Multirotor","ViewMode": "SpringArmChase","Vehicles": {"drone_1": {"Cameras": {"fpv_cam": {"CaptureSettings": [{"FOV_Degrees": 90,"Width": 1080,"Height": 720,"ImageType": 0,"Framerate": 30}],"Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0,"X": 0.4, "Y": 0.0, "Z": 0.0},"FixedCamera": {"Pitch": 30.0, "Roll": 0.0, "Yaw": 0.0,"X": 0.4, "Y": 0.0, "Z": 0.0,"External": true,"ExternalLocal": true,"CaptureSettings": [{"FOV_Degrees": 90,"Width": 4096,"Height": 2048,"ImageType": 0,"Framerate": 30}]}},"Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0,"VehicleType": "SimpleFlight","X": 0.0, "Y": 0.0, "Z": 0.0}},"SubWindows": [{"WindowID": 0,"ImageType": 0,"CameraName": "fpv_cam","Visible": true},{"WindowID": 2,"ImageType": 0,"CameraName": "FixedCamera","Visible": true}]
}

启动程序后控制无人机就可以看见两个子图中的画面存在差异:

在这里插入图片描述


2. AirSim 配置方案

文档溯源

对于原生 AirSim 配置外部固定位置监控相机主要参考的是下面的官方文档:

  • AirSim Settings Doc:https://microsoft.github.io/AirSim/settings/

进入链接后下拉找到 Aviable Settings and Their Defaults 这个标签就可以看到示例 settings.json 内容:

在这里插入图片描述

重点关注示例中的 ExternalCameras 字段,这个字段表示外部相机配置,该字段与 Vehicles 字段是同级的,不能将该字段放在无人机字段下面,去除掉冗余内容后最精简版本如下:

{"ClockSpeed": 1,"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md","SettingsVersion": 1.2,"SimMode": "Multirotor","ViewMode": "SpringArmChase","Vehicles": {"SimpleFlight": {"Cameras": {"FPVCamera":{   // 机载相机名// ...}}}},"ExternalCameras": {"FixedCamera": {       // 外部监控相机名// ...}},"SubWindows": [{"WindowID": 0,"ImageType": 0,"CameraName": "FPVCamera",  // 机载相机名"Visible": true},{"WindowID": 2,"ImageType": 0,"CameraName": "FixedCamera",    // 外部监控相机名"Visible": true}]
}

配置示例

下面给出一个简单的配置 setting.json 示例,包含一个搭载 1080p 分辨率相机的FPV无人机 + 一个和 4K 分辨率的地面监控相机:

{"ClockSpeed": 1,"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md","SettingsVersion": 1.2,"SimMode": "Multirotor","ViewMode": "SpringArmChase","Vehicles": {"drone_1": {"Cameras": {"fpv_cam": {"CaptureSettings": [{"FOV_Degrees": 90,"Width": 1080,"Height": 720,"ImageType": 0,"Framerate": 30}],"Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0,"X": 0.4, "Y": 0.0, "Z": 0.0}},"Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0,"VehicleType": "SimpleFlight","X": 0.0, "Y": 0.0, "Z": 0.0}},"ExternalCameras": {"FixedCamera": {"CaptureSettings": [{"FOV_Degrees": 90,"Width": 4096,"Height": 2048,"ImageType": 0,"Framerate": 30}],"Pitch": 30.0, "Roll": 0.0, "Yaw": 0.0,"X": 5.0, "Y": 0.0, "Z": 0.0}},"SubWindows": [{"WindowID": 0,"ImageType": 0,"CameraName": "fpv_cam","Visible": true},{"WindowID": 2,"ImageType": 0,"CameraName": "FixedCamera","Visible": true}]
}

然后运行程序操作手柄就可以看见两个监控子窗中的画面内容存在差异:

在这里插入图片描述

【Note】:如果你开启程序后发现两个子窗口的画面是同步的,并且第二个窗口画面还比较模糊,这是因为 AirSim 版本问题,建议使用上面 Cosys-AirSim 的配置方案重试。

http://www.xdnf.cn/news/13103.html

相关文章:

  • 初识Docker——容器化革命核心概念
  • 解决HuggingFace不能git clone的问题
  • 基于Spring的Java公共资源模块开发与最佳实践
  • 在 Word中生成目录(Table of Contents, TOC)
  • MaaS与CC有哪些契合点
  • 在 Windows 11/10 中打开任务管理器的 6 种方法(无需 Ctrl+Alt+Delete)
  • npm符号链接
  • 象棋移动-第16届蓝桥STEMA省考Scratch真题第1题
  • 智能体革命:企业如何构建自主决策的AI代理?
  • UML 2.0 图的细分类别及其应用
  • win操作系统安装C++语言开发环境之一, vscode +MinGW ,流程
  • 02-性能方案设计
  • 【Pandas】pandas DataFrame ffill
  • 书籍“之“字形打印矩阵(8)0609
  • 精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
  • 6.9-QT模拟计算器
  • 第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
  • 【微服务基石篇】服务间的对话:RestTemplate、WebClient与OpenFeign对比与实战
  • 安装VMware虚拟机
  • CR还是VR?3ds Max效果图渲染器选择指南与实战策略
  • JavaScript 中给变量赋值
  • Spring Boot SQL数据库功能详解
  • SpringCloud微服务架构下的日志可观测解决方案(EFK搭建)
  • 脚本安装Doris2.10和Doris Manager
  • 2.2.3 07年T1文章精读
  • 词法分析器
  • 无人机侦测与反制技术的进展与应用
  • 从零开始了解数据采集(二十九)——什么是黑灯工厂?
  • Qt开发输入法-接Qt 相关 编译流程及交叉编译 部署所遇到的问题总结
  • Qt 窗口