新闻中心 新闻
Airsim动态 | 带你了解Airsim结构框架
新闻 2021-11-16 09:54:02

导语

如果要学习PX4二次开发最重要的什么?肯定是需要了解整体源码框架。同样的,AirSim架构和设计框架也是学习AirSim比较重要的一步。组件结构图能让开发者了解各个模块之间是如何进行交互,而代码结构能更加清晰明确物理引擎,物理模型,传感器模型等等文件位置,方便修改。所以本期为大家带来AirSim整体设计和架构,方便大家去开发研究。


一、组件结构图

微信图片_20211116094201.png

二、代码结构

1.AirLib

AirSim的大部分代码都放在AirLib中,它是一个自包含库,支持任何C++11的编译器进行编译。


AirLib 有以下几个组件:

1)物理引擎:可以快速扩展实现不同的物理模型。

代码:

https://github.com/microsoft/AirSim/tree/master/AirLib/include/physics


2)传感器模型:气压计、IMU、GPS 和磁力计的仅标头模型。

代码:

https://github.com/microsoft/AirSim/tree/master/AirLib/include/sensors


3)物理模型:车辆配置和模型的仅标题模型。目前已经在X配置中实现了MultiRotor的模型和PX4 QuadRotor的配置。例如:MultiRotorParams.hpp 中定义了几种不同的多旋翼模型,包括六轴飞行器。

代码:

https://github.com/microsoft/AirSim/tree/master/AirLib/include/vehiclesr


4)API 相关文件: 这一部分主要为API提供抽象基类,并为特定物理平台(如 MavLink)提供具体实现方式。它还拥有类似于RPC客户端和服务器的类。

代码:

https://github.com/microsoft/AirSim/tree/master/AirLib/include/api


此之外,所有常用的实用程序都在【common/】子文件夹中进行定义。而【AirSimSettings.hpp】是一个重要文件,如果要在settings.json中添加任何新字段,则需要修改这个文件内容。


AirSim支持无人机飞控的各种固件,例如它自己的 SimpleFlight、PX4 和 ArduPilot。每个固件通信的文件位于【multirotor/firmwares】文件。特定的 API接口被放在了

api/】子文件夹中。【AirLib/src/】包含“.cpp” 文件和“.hpp”文件,其中包含“.hpp” 文件中定义的是各种可实现的实验方法代码。例如,【MultirotorApiBase.cpp】中包含多转子API的基本实现,如果需要,也可以在特定固件文件中覆盖它。


2.Unreal/Plugins/AirSim

由于AirSim需要和虚幻引擎一起结合使用,所以在【source/】文件下有一个C++文件【Content/】,该文件夹包含有blueprints和assets,一些重要组件描述如下:


1[SimMode_ classes]

SimMode类有助于实现许多不同的模式,例如纯计算机视觉模式(Computer Vision mode),车辆或无人机类别位于【Vehicles/】文件中。


2[PawnSimApi]

这是所有车辆或无人机可视化的基类。每辆车都有自己的子级 (比如Multirotor,Car或者ComputerVision)Pawn 类。


3[UnrealSensors]

包含距离和激光雷达传感器的实现。


4[WorldSimApi]

实现大多数和物理模型无关的环境API。


除了这些,【PIPCamera】中包含了相机初始化,【UnrealImageCapture】与【RenderRequest】这两个文件是图像渲染代码。【AirBlueprintLib】文件中有许多用于与UE4引擎交互的实用程序和包装方法。


3.MAVLinkCom

这是由AirSim团队成员Chris Lovett开发的库,它提供C++类来与 MavLink 设备通信。这个库是独立的,可以在任何项目中使用。

更多信息,请参阅

https://microsoft.github.io/AirSim/mavlinkcom/。


三、示例程序

AirSim 团队为了方便用户使用,专门创建了一些示例程序来演示如何使用 API。比如我们前几期讲到的HelloDrone和HelloCar:(请参考:你离学会AirSim还差最后一步!这一期)都是官方提供给我们的实例。除此之外官方还提供了一个DroneShell,DroneShell 演示了模拟器正在运行一个服务器时(类似于 DroneServer),如何使用 UDP 连接到模拟器。


四、PythonClient

在最开始几期阿木所写安装教程和效果展示都是通过Python API展示的,那么PythonClient是什么呢?PythonClient包含有Python API包装文件和演示其用法的实例程序,让可以用户使用Python编程在AirSim中进行仿真。


五、虚幻框架

下面节点图说明了虚幻游戏引擎如何加载和调用 AirSim:

微信图片_20211116094451.png

官方资料:

AirSim设计官方介绍:

https://microsoft.github.io/AirSim/design/


AirSim代码结构介绍:

https://microsoft.github.io/AirSim/code_structure/



阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!


公众号:阿木实验室 ( 领取免费资料包)

官方淘宝店:阿木实验室(可购买硬件配件)

硬件咨询:yanyue199506(欢迎洽谈合作)

课程咨询:jiayue199506 (免费领取机器人工程师学习计划)




- End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。


您的浏览器版本过低,建议下载更换以下浏览器:

官方店铺

 阿木实验室

联系电话

028-87872048

扫一扫,快速加入

硬件评测

群号652692981

课程学习

群号652692981