登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
Airsim动态 | 不了解结构框架怎么学习
返回列表
发新帖
查看:
443
|
回复:
0
Airsim动态 | 不了解结构框架怎么学习
[复制链接]
青岛奥湾影像
青岛奥湾影像
当前离线
积分
1122
窥视卡
雷达卡
358
主题
405
帖子
1122
积分
金牌飞友
金牌飞友, 积分 1122, 距离下一级还需 1878 积分
金牌飞友, 积分 1122, 距离下一级还需 1878 积分
积分
1122
飞币
715
注册时间
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
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表