无人机开发之一:Pixhawk与Arduino简述

1. Pixhawk发展历史

  • 发展历程:APM-->PX4FMU/IO-->Pixhawk:

    1.1. Arduino简介


    Arduino就是主要以以AVR单片机为核心控制器的单片机应用开发板(当然也有其他核心的例如STM32版本的但是不是官方的,还有intel的伽利略),或者是学习板啥的,Arduino开发人员开发了简单的函数,还有许多应用库,这样就不用直接去操作寄存器了,使得没有很好的单片机基础的人员也可以使用Arduino做出自己想要的东西。Arduino的开发人员还开发了一个简洁的IDE(集成开发环境)也就是写代码,编译,调试,下载的上位机软件。

    Arduino只是一个开源的开发平台,它可以支持多种MCU,包括atmel公司的AtmelTiny系列、avr8、ARM Cortex M0、ARM Cortex M3、ST公司的ARM Cortex M3处理器,TI公司的energia平台也采用了Arduino的平台结构,可以用于开发MSP430、C2000等。

    从原理上,Arduino平台不受MCU限制,但是当前只是支持有限的MCU。当前已经支持有名的ESP8266,ESP32等ARM内核板开发。但是Arduino核心板大部分使用的是AVR单片机作为核心。Arduino有一个硬件抽象层,实现了硬件无关层和硬件相关层的分离。Arduino采用C和C++混合编程,采用成熟的开源gnu来编译。 Arduino有大量的类库支持,同时从简到繁有大量的应用例子,可以很快地基于类库和例子实现用户的应用。但是如果想了解底层的实现,也可以看到底层实现的源码。Arduino主要用于前端的以控制为主的环境,如机器人控制前端,四轴飞行器前端控制,3D打印机前端控制等。对简单的控制系统,只用Arduino开发就可以了。

1.2. APM简介

PX4FMU/IO与Pixhawk官网地址:

APM(ArduPilotMega) 是在2007年由DIY无人机社区(DIY Drones)推出的飞控产品,是当今最为成熟的开源硬件项目。APM基于Arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(IMU)。由于APM良好的可定制性,通过开源软件Mission Planner,开发者可以配置APM的设置,接受并显示传感器的数据。目前APM飞控已经成为开源飞控成熟的标杆,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。

APM以Atmega2560微处理器为主要架构,硬件包括:三轴陀螺仪、三轴加速度计、测量高度的空气压力传感器、10Hz GPS 模块、监视电池状态的电压传感器、4Mb板上数据记录存储器(任务数据自动记录,并可以导出为 KML 格式)、内建硬件失效处理器(在失控时可以返回出发点)、(可选) 三轴磁力计、(可选) 空速传感器、(可选) 电流传感器。建立在Arduino平台上的APM飞控板,等同于一个Arduino单片机,可以直接在Arduino的开发环境下进行开发。

Pixhawk世界上最出名的开源飞控的硬件厂商3DR最新推出了最新一代飞控系统。它的前世就是大名鼎鼎的APM,由于APM的处理器已经接近满负荷(APM使用8位的处理器),没有办法满足更复杂的运算处理,所以硬件厂商采用了目前最新标准的32位ARM处理器,第一代产品是PX4系列,它分为飞控处理器PX4FMU和输入输出接口板PX4IO。PX4系列可以单独使用PX4FMU(但是接线很复杂),也可以配合输入输出接口板PX4IO来使用,但是因为没有统一的外壳,不好固定,再加上使用复杂,所以基本上属于一代实验版本。通过PX4系列的经验,厂商终于简化了结构,把PX4FMU和PX4IO整合到一块板子上,并加上了骨头形状的外壳,优化了硬件和走线,也就是这款第二代产品Pixhawk。Pixhawk的特点如下:

  • 硬件透明:
    它里面用的什么芯片,什么传感器一目了然,并且几乎所有的总线、外设都会引出,这样不但以后可以兼容一些其他外设,而且对于有开发能力的用户,都很方便,但这不是关键,最关键是放心!就拿这个Pixhawk来说,他是双处理器,一个擅长于强大运算的32 bit STM32F427 Cortex M4 核心 168 MHz/256 KB RAM/2 MB Flash处理器,还有一个主要定位于工业用途的协处理器32 bit STM32F103它的特点就是安全稳定。所以就算主处理器死机了,还有一个协处理器来保障安全。至于其他传感器陀螺仪、加速度、气压计等,大家自己可以查阅官网http://www.pixhawk.com。github上有硬件板的PCB图与原理图网址。.sch和.brd文件需要使用Altium Designer viewer打开。因为原理图文件和PCB文件只有只读权限。

  • 复杂性:
    这种东西的确比商业的飞控系统复杂,先不说软件,就是这些外设接口,如果你没有电子相关的知识,恐怕还真的一头雾水。这对大多数人来说,确实是一个障碍。
  • 安全性和实用性:
    刚刚上面说到处理器的安全设计,但是软件也是一个关键的因素,目前为止,这款飞控系统有2套固件系统,一套是APM移植过来的APM Copter,另一套则是由ETH Zurich (苏黎世联邦理大学)的计算机视觉与几何实验室的PIXHAWK项目、并得到了自主系统实验室和自动控制实验室的支持 ,以及一些出色的个人,包括 APM Copter、3D Robotics 和 international 3DR distributors的开发人员。专门为PX4系列开发的固件系统。经实测两套固件都能实现稳定飞行,前期在地面上需要做好相应的初始化。ArduCopter固件使用mission plan地面站,PX4Firmware采用Qgroundcontrol地面站。

1.3. APM、PX4FMU/IO、Pixhawk三个系统比较:

(1)APM2.5与2.6是传统ardupilot飞控的最新(也是最终)版本;
(2)PX4FMU与PX4IO 是这个新飞控家族的最初两个版本: Px4FMU 概览 与 Px4IO 概览;
(3)Pixhawk是结合 PX4FMU / PX4IO改进而开发出的PX4飞控的单块电路板版本;
(4)APM 8位CPU在储存和CPU计算能力上不足;
(5)PX4FMU / PX4IO 是由一个Lorenz Meier所在的瑞士小组所开发的学校项目;
(6)PX4拥有一个32位处理器,提供更多内存、运用分布处理方式并且包含一个浮点运算协处理器;
(7)与APM相比,PX4 / Pixhawk具有其10倍以上的CPU性能和更多其他方面的改进;
(8)Pixhawk是由DIYDrones、3DR和最初的瑞士PX4团队联合开发的;
(9)开发的重点是Pixkawk,所以PX4系统的开发可能会滞后并且某些问题可能很久都不会得到解决;
(10)APM系统已经走到了它的终点,PX4FMU/IO系统只是开发Pixhawk的过渡。

1.4. 注意在GitHub上当今的一些概念:

Pixhawk是硬件平台,PX4是pixhawk的原生固件,专门为pixhawk开发的。PX4的GitHub代码,PX4的硬件信息

APM(Ardupilot Mega)也是硬件,Ardupilot是APM的固件,所以称ArduPilot固件也叫APM。APM的GitHub代码

Ardupilot由一群爱好者开发维护的,从最早的APM1,APM2开始,后来软件代码不断状大,原来的APM2的硬件不能胜任最新代码,再后来开发者就把Ardupilot代码转移到了Pixhawk平台上,兼容了Pixhawh硬件平台,所以就导致现在Pixhawk上有两套飞控代码的原因,所以在pixhawk硬件平台上可以运行PX4固件(原生固件),也可以运行APM固件。

APM固件程序比较混乱,零散。维护者多,代码风格不太统一,而且是单片机这种调用程序,不好入门。但是成熟稳定,支持硬件多。 PX4固件,在nuttx嵌入式实时操作系统上运行。采用多任务,模块化设计。相对来说方便入门,代码风格比较统一。但是支持硬件少,相比APM固件不太稳定。

1.5. 主要的历史事件:

  • 发展历史
    2007年5月 – 克里斯·安德森用乐高 mindstorm搭建无人机时,建立了 DIYDrones.com .
    2008年9月– Jordi 制作了一个可以自动飞行的传统直升机无人机并赢得了第一届Sparkfun AVC大赛.
    2009年 – 克里斯·安德森和Jordi Munoz 成立了3D Robotics(3DR)
    2009年5月 – Jordi/3DRobotics 发布了第一款Ardupilot板子 (使用红外温度传感器)
    2009年11月 – Jordi创建了ardupilot代码仓库
    2009年11月 – Jordi, Doug Weibel, Jose Julio编写了第一版使用William Premerlani的DCM算法的ArduIMU
    2009年11月 至 2010年2月 – Jason从头开始重写了 (v2.5),包括了使用中断驱动的遥控信号输入, 遥控油门保护, 返航, 悬停, 绕圈, 垂直航路修正, 更佳的稳定性, 全数字电传操纵, 系统事件, 四通道RC输出, 2线通信的数传. (Post)
    2009年12月 – Doug 推出了改善了的 Ardupilot v2.4,第一次支持基于IMU的飞行器任务飞行
    2010年 – 3d Robotics 推出了APM1
    2010年初 – Doug and Jason 发布了Ardupilot 2.6 ,改善了油门控制, 支持ArduIMU
    2010年夏天 – APM Code development:
    Jason – 任务脚本, 飞行模式, 导航
    Jose – 代码库, DCM, and 硬件传感器支持
    Doug – 高级飞行控制, 飞行日志记录, DCM
    MikeS – 参数, CLI, 高速串口, 高级硬件优化
    2010年5月 – Ardupilot合并了AeroQuad (包括Jani Hirvinen) ,开始在ArduCopterNG(海盗)进行工作。
    2010年6月 – APM 1 在SW上实现了自主任务脚本飞行
    2010年6月 – APM1首次让固定翼飞机实现了自主飞行
    2010年6月 – Jason 开发了可以在Xplane上运行的基于Perl的半实物仿真,来测试新的APM任务脚本命令 (后来整合进了Mavlink)
    2010年8月 – Jani/jDrones 收到了一款作为原始标准的四轴飞行器机架DIY套件
    2010年十月 – ArduCopterNG (AeroQuad/ArduCopter 合并后的代码) 工程被Ardupilot团队放弃了,移交给了 ArduPirates 团队以得到更长远的发展. Jason在ArduPlane的基础上使用另一种控制逻辑重写了ArduCopter,使其更加自主化。增加了悬停模式, 绕圈模式, 返航, 任务脚本, 失控保护, 起飞, 降落, 等等.
    2010年8月 – Michael Oborne发布了Mission Planner
    2010年8月 – Randy增加了对TradHeli 的支持
    2010年12月– 从初始的ArduCopterNG的代码上进行了扩展的MegaPirates成为了ardupilot第一个成功的分支
    2011年4月 – Jason在Sparkfun AVC上实现了 Arducopter的第一次完全自主任务飞行
    2011年 – 3D Robotics发布了APM2
    2011年11月 – Tridge创建了AutoTester
    2012年 – 3D Robotics发布了APM2.5/2.6
    2012年2月 – Jason让Randy来接管并成为了Arducopter的首席开发者, Doug离开了团队去获取他的博士学位而Tridge接管了ArduPlane
    2012年2月 – Marco Robustini加入并领导ArduCopter的测试者
    2012年7月 – 苏黎世联邦理工学院(Lorenz Meier,MikeS) / 3D Robotics发布了PX4
    2012年8月 – Pat Hickey 简化了硬件抽象层 (AP_HAL) 并增加了对其它板子的支持
    2012年10月 – Rob Lefebvre实现了TradHeli的第一次自主任务飞行
    2012年10月– Tridge and CanberraUAV 使用APM2 & Pandaboard赢得了Outback无人机挑战
    2012年11月 – 第一款APM2.5的山寨版出现了
    2012年12月 – Randy and Leonard 在ArduCopter(AC2.9)中加入了基于惯导的高度自动控制,得益于Jonathan Challinger成功设计出了3阶互补滤波器的原型
    2013年1月 – ardupilot的代码从googel code搬到了github
    2013年1月/2月 – 安卓版的地面站出现了 (Arthur的DroidPlanner , Kevin Hester的AndroPilot)
    2013年4月 – Paul Riseborough, Brandon Jones, Tridge编写了ArduPlane的基于L1控制器的航点飞行
    2013年5月 – Leonard and Randy 为ArduCopter的航线飞行加入了惯性导航的支持(AC3.0)
    2013年7月 – Paul Riseborough, Tridge给ArduPlane整合进了速度和高度控制
    2013年9月 – Mike McCauley, Tridge增加了对Flymaple板子的支持
    2013年11月 – ETH (Lorenz Meier,MikeS) / 3D Robotics发布了Pixhawk
    2014年1月 – Paul Riseborough, Tridge增加了扩展卡尔曼滤波器(EKF),使飞控能得到更加可靠的姿态和位置信息
    2014年5月 – Emile Castelnuovo and Tridge增加了对VRBrain板的支持
    2014年8月 – 首次实现了ArduPlane基于Linux控制板的飞行 (PixhawkFire)
    2014年9月 – Tridge & Canberra无人机使用了基于arduplane的固定翼无人机赢得了Outback挑战(Tridge’s debrief).
    2014年10月 – 开源无人机项目DroneCode启动
    2014年10月 – 第一个有关ArduPlane的报道:在佛罗里达州被成功使用于搜救,包括搜寻一架失踪的轻型飞机

猜你喜欢

转载自www.cnblogs.com/hellocxz/p/12104923.html