无人机开发之一: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的报道:在佛罗里达州被成功使用于搜救,包括搜寻一架失踪的轻型飞机

原文地址:https://www.cnblogs.com/hellocxz/p/12104923.html

时间: 2024-10-09 22:23:06

无人机开发之一:Pixhawk与Arduino简述的相关文章

开发一个小项目的流程简述

(1) 需求分析=>你要做什么 [需求分析师] (2) 设计我们的数据库.文档 [架构.项目经理] (3) 设计界面=>静态页面 [前端人员] (4) 编码==> [程序员php] (5) 测试阶段[测试工程师(白盒测试/黑盒测试)] (6) 实施阶段[实施工程师] 1.表的设计 create table student( id int, name varchar(20) not null default '', chinese decimal(5,2) not null default

中型WPF客户端开发项目总结(3.1) - 简述项目结构

项目的背景.需求收集.设计等涉及商业隐私,所以这些内容不是本栏目的重点. 主结构 由于主要是我一个人开发,而且目前也不涉及数据库操作,所以没有经典三层或是其它高大上的结构. global文件夹中存放的是一些跟.sln文件同级的文件,包括.gitignore.Directory.Build.props. 发布脚本.清理脚本等文件. Directory.Build.props 介绍:https://docs.microsoft.com/en-us/visualstudio/msbuild/custo

给iOS开发新手送点福利,简述UIDatePicker的用法

1.Locale 设置DatePicker的地区,即设置DatePicker显示的语言. 1.跟踪所有可用的地区,取出想要的地区 NSLog(@"%@", [NSLocale availableLocaleIdentifiers]); 2. 设置日期选择控件的地区 [datePicker setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]]; 效果: [datePicker setLo

给iOS开发新手送点福利,简述UIImagePickerController的属性和用法

1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;         // 检查指定源是否在设备上可用. [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary];  //检查照片源是否可用 2.allowsEditing 默认NO 是否允许编辑 [imagePick

无人机开发之三:飞行器入门理论知识

3. 飞行器入门理论知识 3.1. 名词解释: 惯性测量单元 IMU (InertialMeasurementUnit) 姿态航向参考系统 AHRS (Attitudeand Heading Reference System) 地磁角速度重力 MARG (Magnetic,Angular Rate, and Gravity) 微机电系统 MEMS (MicroElectrical Mechanical Systems) 自由度维数 DOF (Dimension OfFreedom) 无人驾驶飞行

Arduino开发板制作

Arduino UNO 介绍 ,Arduino开发板制作 教程: Arduino制作 Arduino UNO 图 Arduino是什么 Arduino是一款便捷灵活.方便上手的开源电子原型平台.包含硬件(各种型号的Arduino板)和软件(Arduino IDE).构建于... Arduino制作物料 教程: Arduino制作 物料即各种元器件元器件清单 元器件购买 淘宝 Arduino制作工具 教程: Arduino制作 制作Arduino相关设备.工具和耗材所需设备 喷墨打印机如MP280

[arduino]-序言:面向仅有C语言基础之人的单片机开发板

arduino_是一个项目_也是一个商业公司,但其核心价值是_构建在社区上的,开源的,低门槛的单片机开发板. 单片机_是一种低性能的_计算机,这个名字源于其_把所有需要的硬件_全部做到_单个_芯片中去. 开发板_是一种特殊的电路板,上面不仅搭载了单片机,还可以包括: --为单片机_供电的电源 --便于_连接其他硬件的_接线柱(/座/孔/盘) --便于_与其他硬件_相互通讯的_芯片.连接器 --特定的芯片.按钮.开关 市面上有许多_早于arduino出现的_专业开发板, 事实上_arduino系列

Arduino物联网开发实例教程

blinker解决方案 blinker是一套跨硬件.跨平台的物联网解决方案,提供APP端.设备端.服务器端支持,使用公有云服务进行数据传输.可用于智能家居.数据监测等领域,可以帮助用户更好更快地搭建物联网项目. blinker具备哪些优势 1. 支持多种连接方式blinker提供当前最流行的连接方式支持,如蓝牙.WiFi.NBiot/GPRS,可以应对大多数物联网场景需求.2. 支持多种开发平台blinker提供Arduino.freeRTOS(即将支持)支持库,可以使用AVR / ARM /

Arduino智能小车制作报告

Arduino智能小车制作报告 制作成员:20135224陈实  20135208贺邦  20135207王国伊 前提: Arduino,是一个开源的单板机控制器,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O接口版,并且具有使用类似Java,C语言的Processing Wiring开发环境.选择Arduino作为智能小车的控制板,因为它的小巧但功能强大,能够方便的和传感器还有各种电子元件连接,而且还能和很多软件如Flash.Processing进行连接互动,但是最重