A. kk是開源飛控嗎
是。kk是一個很有趣的開源飛控,由於其硬體要求低,價格大眾化,所以雖然性能有限,還是有著廣泛的使用群體。我也有一個kk飛控板,並且我下載了kk的源碼進行研究,比較麻煩的是,kk的源碼是用匯編肆迅寫的,很多人是看不懂的。
開源飛控介紹
在紛繁復雜的無人機產品中,四旋翼飛行器以其結構簡單、使用方便、成本低廉等優勢,最先進入了大眾的視線。但是,這種飛行器對飛行控制能力的要求是最高的,因此它刺激了大批基於MEMS感測器的開源飛控的出現。
開源的概念最早被應用於開源軟體,開放源代碼促進會用其描述那些源碼可以被公眾使用的軟體,並且此軟體的使用、修改和發行也不受許可證的限制。開源軟體的發展亂擾逐漸與硬體相結合,產生了開源硬體。硬體與軟體不同之處是實物資源應該始終致力於創造實物商品。
每一個開源項目均擁有自己的論壇,由團隊或個人進行管理,論嘩雹旦壇定期發布開源代碼,而對此感興趣的程序員都可以下載這些代碼,並對其進行修改,然後上傳自己的成果,管理者從眾多的修改中選擇合適的代碼改進程序並再次發布新版本。形成「共同開發、共同分享」的良性循環。
B. PX4-8-UAVCAN與開源飛控
本文深入探討了PX4和APM使用的CAN通信協議框架UAVCAN。近期PX4固件的更新,以及src/drivers/uavcan/libuavcan子模塊倉庫的更改,促使我們關注UAVCAN的細節。
從v1.12版本開始,src/drivers目錄下新增了一個名為uavcan_v1的模塊,但並未在多個board配置中使用。與此同時,UAVCAN正在進行重大變更,協議由v0.9升級到v1版本。src/drivers/uavcan/libuavcan目錄下為v0.9版本,而新增的uavcan_v1模塊則是v1版本。
在比較兩個版本的區別時,我們關注了CAN拓展幀id的定義。通過對比legacy.uavcan.org/Speci...和uavcan.org/specificatio...文檔,可以發現v0.9和v1版本在Priority、Message type ID、Service not message、Source node ID等欄位的定義上存在顯著差異,並不兼容。
DroneCAN是UAVCAN v0.9版本的繼承者,UAVCAN v0.9版本已不再維護,不推薦在新設計中使用。UAVCAN在legacy.uavcan.org/主頁中強調了這一點。PX4和APM開源飛控項目選擇繼續維護v0.9版本協議,命名為DroneCAN v1,認為其在商用無人機行業中表現穩健、功能豐富,得到廣泛部署和行業支持。
此次UAVCAN v1與DroneCAN v1的分離對開源飛控與UAVCAN未來的影響值得持續關注。對於學習者而言,UAVCAN是一個優秀的學習項目,其兩個主要庫libcanard(C語言實現)、libuavcan(C++實現)的代碼框架將在後續分享中探討。
回顧往期分享,包括AcmeROS-1-系統架構、PX4-7-飛控參數、AcmeGCS-9-目標框選跟蹤、AcmeIot-2-基於PX4硬體的Nuttx開發環境。本系列將不定期更新無人機相關知識,歡迎關注。