無人機開發之一: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的報道:在佛羅里達州被成功使用於搜救,包括搜尋一架失蹤的輕型飛機
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章