無人機開發之一: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的報道:在佛羅里達州被成功使用於搜救,包括搜尋一架失蹤的輕型飛機


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM