PX4-1-开源飞控项目
分享完工具系列,我們開始PX4飛控技術的分享,寫分享相對于自己寫筆記要難很多,在整理自己筆記的過程中也重新思考很多問題。
飛控技術的分享系列更多分享的是思路和框架。對于PX4這種大型開源項目,源碼的學習和思路框架的學習同樣重要,專于源碼容易迷失在代碼之中,找不到方向。
當然個人的水平和編輯能力有限,如果有理解不一樣的地方,歡迎私信我討論,我會在后續的分享中更正。
我們后面主要分享的是PX4這一個開源飛控,當然目前世界上有很多的優秀開源飛控項目,在開始PX4的分享之前,我們先聊一下一些著名的開源飛控項目。他們都有哪些,有什么特點等等。
-
Cleanflight/betaflight/Baseflight/MultiWii
-
crazyflie
-
paparazzi
-
fprime
-
ardupilot
-
PX4
以上是我接觸過的主要開源飛控,目前還比較活躍的開源項目,如果大家有了解其它優秀的開源飛控項目,歡迎私信我,我補充進去。
Cleanflight/betaflight/Baseflight/MultiWii
這是一個系列的開源項目,歷史非常悠久。
這個系列的飛控在穿越機等小四軸上使用非常廣泛。
-
c編寫,stm32官方庫,代碼非常簡潔
-
功能也比較有限,姿態融合算法沒有使用ekf,使用的是MahonyAHRS算法
它比較適合飛控入門,學習一些基礎知識。
crazyflie
crazyflie也是一款微型四軸飛行器開源項目
-
同樣使用c編寫,stm32官方庫,
-
使用了ekf融合算法,代碼比較簡潔
想要研究基本的ekf算法的可以看看這個代碼,入門比較簡單
paparazzi
Paparazzi 項目起始于2003年,由法國民航大學發起的一套軟硬件開源無人機項目,它提供了一整套完整的無人機軟硬件解決方案。
-
使用c編寫,libopencm3開源庫
-
代碼規模較大,支持固定翼、多旋翼、小車等
-
有完善的傳感器融合算法和飛行模式控制應用
fprime
fprime是經過飛行驗證的多平臺開源飛行軟件框架(一個組件驅動的框架),可以快速開發和部署太空飛行及其他嵌入式軟件應用程序,美國首個火星飛行器即使用該軟件框架。
實際上它不屬于開源飛控,是一個軟件框架,可以應用于無人平臺中,也在美國太空設備中得到應用,證明它的可靠性。它本身沒有飛行控制相關的代碼算法,當然作為一個非常好的軟件框架,大家可以往里面填充自己的算法和設備,實現一個飛控軟件。
ardupilot(APM)/PX4
把這兩個項目放在一起描述,因為它們是目前最為成熟完善的開源飛控項目,非常強大,且充滿活力,相信大家都有一定了解了。
它們的共同點:
-
不同于其它大部分開源飛控使用c開發,他們都主要使用c++開發,代碼的封裝比較復雜,理解上有一定的難度
-
支持非常豐富的無人設備:多旋翼、固定翼、VTOL、小車、水下航行器、飛艇等等
-
支持的硬件非常豐富,基本支持目前主流的開源飛控硬件
-
都擁有非常豐富的軟件包,傳感器驅動、導航算法軟件包、控制軟件棧、仿真環境等等
-
使用了一些相同的中間件軟件:Mavlink、uavcan
它們本身有非常密切的關系,但是由于開源協議的不同(APM使用GPL-3,PX4使用BSD-3協議),兩個項目目前處于獨立開發狀態。它們在源碼框架上的一些不同:
-
使用的RTOS不同:APM目前使用ChibiOS,而PX4使用Nuttx,當然他們都支持linux系統
-
消息機制不同:PX4使用uORB的微消息代理機制進行任務間的數據傳遞和消息同步等,任務間耦合校低;APM的模塊封裝在libraries中的各個類模塊中,在應用層(ArduCopter、ArduPlane、Rover等)通過實例化具體的類來完成具體的功能,比如傳感器、EKF、位置控制、motor等模塊,模塊間的數據傳遞通過類的輸入輸出接口完成。
-
任務框架不同:PX4的每個任務均運行在獨立的task和工作隊列中;APM的應用層自己實現了一個調度器(AP_Scheduler)
-
代碼框架的復雜程度上PX4會比APM復雜一些,模塊的封裝程度更高,在task、uorb、傳感器的驅動封裝上更為復雜一些,當然如果僅僅使用的話只要參考demo也能非??斓娜腴T。
當然它們有很多的不同點,我個人認為PX4偏向于學院風格,而APM是應用風格,我更喜歡PX4的代碼框架,后面的分享也會圍繞PX4展開。
下一期分享將簡單分析px4的代碼架構。
這個博客轉載自我個人的微信公眾號,這里會不定期更新一些我整理的無人機相關知識和個人設計,歡迎添加關注。
總結
以上是生活随笔為你收集整理的PX4-1-开源飞控项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: erp物料报废 oracle_物料报废处
- 下一篇: office提示错误1902该怎么解决