登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
Airsim动态 | 不了解结构框架怎么学习
返回列表
发新帖
查看:
416
|
回复:
0
Airsim动态 | 不了解结构框架怎么学习
[复制链接]
青岛奥湾影像
青岛奥湾影像
当前离线
积分
995
窥视卡
雷达卡
316
主题
362
帖子
995
积分
高级飞友
高级飞友, 积分 995, 距离下一级还需 5 积分
高级飞友, 积分 995, 距离下一级还需 5 积分
积分
995
飞币
631
注册时间
2017-7-30
发消息
发表于 2022-10-27 09:20:59
|
显示全部楼层
|
阅读模式
导语
如果要学习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 github
,
airsim slam
,
airsim api
,
airsoft结构
,
airsim教程
相关帖子
•
airsim详细教程(三)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表