Airsim动态 | 带你了解Airsim结构框架
Posted 阿木实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Airsim动态 | 带你了解Airsim结构框架相关的知识,希望对你有一定的参考价值。
导语
如果要学习PX4二次开发最重要的什么?肯定是需要了解整体源码框架。同样的,AirSim架构和设计框架也是学习AirSim比较重要的一步。组件结构图能让开发者了解各个模块之间是如何进行交互,而代码结构能更加清晰明确物理引擎,物理模型,传感器模型等等文件位置,方便修改。所以本期为大家带来AirSim整体设计和架构,方便大家去开发研究。
一、组件结构图
二、代码结构 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:
官方资料: AirSim设计官方介绍: https://microsoft.github.io/AirSim/design/
AirSim代码结构介绍: https://microsoft.github.io/AirSim/code_structure/
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!
以上是关于Airsim动态 | 带你了解Airsim结构框架的主要内容,如果未能解决你的问题,请参考以下文章