查看: 416|回复: 0

Airsim动态 | 不了解结构框架怎么学习

[复制链接]

316

主题

362

帖子

995

积分

高级飞友

Rank: 4

积分
995
飞币
631
注册时间
2017-7-30
发表于 2022-10-27 09:20:59 | 显示全部楼层 |阅读模式
导语

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

一、组件结构图
Airsim动态 | 不了解结构框架怎么学习-1.jpg


二、代码结构1.AirLibAirSim的大部分代码都放在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动态 | 不了解结构框架怎么学习-2.jpg


官方资料:AirSim设计官方介绍:https://microsoft.github.io/AirSim/design/

AirSim代码结构介绍:https://microsoft.github.io/AirSim/code_structure/
    End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

相关帖子

您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表