博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ardupilot 似乎就是APM
阅读量:4082 次
发布时间:2019-05-25

本文共 1883 字,大约阅读时间需要 6 分钟。

APM 基于Arduino的开源平台,怪不得开头几个字母一样,pilot是直升飞机的意思,所以Ardupilot的意思很明显,用Arduino做的直升飞机。

 

截图自ZN无人机课程第二期第二节

 

 

我最开始是在苍穹四轴的一篇公众号文章让我对这个词引起注意。

因为我买的是Pixhawk飞控,但在具体飞行模式解释上苍穹四轴给我发了一篇这个文章,我当时很好奇ardupilot是哪种飞控,没听说过,这个问题一直没去细查,今天在MP地面站又看到这个词,决定细察一下。似乎就是APM的意思,MP好像之前就是APM的地面站。

 

 

 

 

 

 

Ardupilot / APM 系列

APM 是在2007年由DIY无人机社区(DIY Drones)推出的飞控系统。也是迄今为止最为成熟的开源自动导航系统,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。

APM 基于Arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(IMU)。由于APM良好的可定制性,APM在全球航模爱好者范围内迅速传播开来。通过开源软件Mission Planner,开发者可以配置APM的设置,接受并显示传感器的数据,使用Google map 完成自动驾驶等功能,但是Mission Planner仅支持windows操作系统。

目前,APM飞控已经成为开源飞控成熟的标杆,针对多旋翼 APM飞控支持各种四、六、八轴产品,并且连接外置GPS传感器以后能够增稳,并完成自主起降、自主航线飞行、回家、定高、定点等丰富的飞行模式。APM能够连接外置的超声波传感器和光流传感器,在室内实现定高和定点飞行。

APM系列发展至今,APM2.5 和 APM2.6已经是ardupilot飞控最终版本,APM给我们带来非常强大的功能,非常的成熟可靠,潜能被充分挖掘出来,功能也非常的丰富。但源于APM系列8位CPU计算与存储的能力已经远远不能够满足未来的运用需求了,APM系列产品的终结也是势在必行。

APM 系列支持如下自动导航板

· PX4 – 一款32位基于ARM的自动导航仪,支持很多高级特性,使用NuttX实时操作系统

· APM2 – 一款受欢迎的AVR2560 8位自动导航仪

· APM1(已终止开发) – 一款基于AVR2560的自动导航仪,使用分离式结构

由于 ArduPilot/APM 源码基于 AP-HAL 硬件抽象层编写,使代码能支持更多自动导航板变为可能。

APM 开发语言与工具:

用于ArduPilot/APM的主要飞行代码使用C++编写。支持工具使用多语言编写,最常用的是python。

目前,主要载具代码编写为“.pde”文件,由 Arduino 构建系统得来。pde文件是预处理为.cpp文件构建的一部分。pde文件中包含的声明也能提供构建规则,说明需要包含与连接到哪些库。

地面站:

ArduPilot/APM支持多种地面站用于计划与控制飞行。飞行固件使用MAVLink协议,它允许飞机被任何MAVLink兼容设备控制。

· 使用最广泛的地面站就是 Mission Planner,使用用于 Windows 的C#语言编写。Mission Planner 的源码可以在github上查看。Mission Planner 也能通过 mono 运行在 Linux 与 MacOS 上。

· QGroundControl 也是地面站的一个选择,使用C++的Qt库编写

· 对于面相命令行与可编脚本地面站,你可以使用 MAVProxy

· 对于 android 平板,你可以使用 ArdroPilot 或者 DroidPlanner

其他特征:

主控芯片:AvrAtmega1280/2560

主要传感器:Atmega168/328.双轴陀螺,IMU(单轴陀螺,三轴加速度计。三轴磁力计模块)。气压计.AD芯片

编译环境:Arduino IDE

开发语言:arduino

开发软件:Arduino IDE界面友好简单,Arduino语言类似于C语言

采用算法:两级PID控制方式,第一级是导航级,第二级是控制级

硬件平台:APM2.5: 板载电子罗盘;APM2.6:电子罗盘外置和GPS融合了

优缺点:

优势:

1. APM使用人数多,资料丰富齐全,特别是经典款APM2.5,上手快

2. 功能完全满足使用

3. apm固件相对PX4成熟

4. 有震动,姿态的日志记录,出现问题有据可查

劣势:

1. 处理器相比F407落后,但是够用

2. 传感器分散,集成度不高

转载地址:http://cvoni.baihongyu.com/

你可能感兴趣的文章
前端模块化两兄弟——requireJS和seaJS
查看>>
CommonJS规范和实现
查看>>
深入理解express框架
查看>>
express搭建nodeJS中间层(三)
查看>>
express搭建nodeJS中间层(一)(二)
查看>>
jQuery一些技巧总结
查看>>
JavaScript call和apply的区别
查看>>
深入理解gulp自动化
查看>>
基于webpack的模块化构建
查看>>
基于Redux的ReactNative项目开发总结(一)
查看>>
基于Redux架构的单页应用开发总结(三)
查看>>
基于Redux架构的单页应用开发总结(一)(二)
查看>>
React在ES6中的用法
查看>>
如何十倍提高你的webpack构建效率
查看>>
fetch和XMLHttpRequest讲解
查看>>
ReactNative开发常用的三方模块
查看>>
ReactNative接入微信API
查看>>
ReactNative接入支付宝支付
查看>>
ReactNative坑点——Date对象正确使用
查看>>
基于Redux的ReactNative项目开发总结(二)
查看>>