借助賽靈思 Zynq SoC 器件的處理能力和 I/O 功能,Aerotenna 實現首次 ArduPilot 兼容無人機 (UAV) 飛行
無人機 (UAV) 和無人機行業正在迅猛發展并成功進軍新的商業和消費市場。無人機的發展潛力不斷推動新的創新型應用發展,例如 3D 建模、軍事援助和交付服務。
問題在于這些應用正日漸復雜化,要求越來越高的處理能力和越來越多的 I/O(輸入 / 輸出)接口,但可用的無人機平臺并沒有以相同的步伐發展。隨著飛行所需的軟硬件的持續發展,大多數無人機平臺的功能已經達到極限。
Aerotenna 的研究小組已經成功試飛一款無人機,該無人機采用賽靈思 Zynq?-7000 All Programmable SoC 構建的板件。這次飛行標志著 Aerotenna 實施高計算強度微波傳感產品發布計劃的開始。該小組選用 Zynq SoC 的原因是其他同類解決方案無法提供所需的處理能力。采用這種新的平臺(圖 1),Aerotenna 計劃通過部署自己的微波型防撞系統來改善無人飛行體驗。
當今無人機技術的局限
無人機行業發展的主要動力一直源于飛行變得盡量經濟實惠價,簡化和刪除一切不必要的功能。若用戶想要購買的產品恰恰是能以最簡單的方式滿足用戶需求的產品,這便是件好事。但是,對 Aerotenna 這樣的開發商來說,其任務是尋求新的、復雜的應用,因此有必要開發和構建屬于自己的無人機平臺,使其能夠為自己的創意提供處理速度支持。
當今的標準無人機平臺受到的另一個重大局限是,缺乏對處理器的輸入輸出連接。因此,飛行控制系統很容易占用處理器的最大容量和 I/O 功能,給新傳感器和新應用留下的空間很小。
標準處理器板所包含的大部分 I/O 已經被飛行所需的各種組件占用殆盡。這些功能組件包括用于量化飛行器方向的慣性測量傳感器、用于判斷高度的氣壓計和高度計以及用于對用戶輸入進行解碼的 RC 接收器。任何用于添加更多特性的剩余 I/O 不能提供太多選擇,一般局限于滿足最常見的需求,比如攝像頭或用于導航的 GPS。市場上目前尚不存在一種能夠兼容多種不同類型傳感器和外部接口的單個平臺。
Aerotenna 的研發團隊認為突破這些局限的途徑是全新開發一種板件設計。Aerotenna 一直在優化一種新的無人機平臺,該平臺將在其他平臺表現差強人意的方面嶄露頭角。Aerotenna 使用賽靈思提供的 Zynq SoC 器件來實現這一目標。其優異的設計將提供新一代 UAV 所需的顯著增強的處理器速度和 I/O 功能。
為什么選擇 Zynq SoC?
Aerotenna 選擇 All Programmable Zynq SoC 作為構建我們強大平臺的基礎。Zynq SoC 芯片內部的雙核 ARM? Cortex?-A9 APU 能實現無與倫比的處理器速度。在芯片結構、多處理器功能及 I/O 訪問速度方面,市場上的廉價無人機平臺解決方案均無法與 Zynq SoC 匹敵。因此 Zynq SoC 是新一代平臺的理想選擇。
目前,市場上的大部分飛行控制平臺均基于微控制器單元 (MCU)。由于處理能力及 I/O 擴展能力有限,該架構會制約傳感器融合的潛力。
Zynq SoC 在處理能力和 I/O 功能方面具有明顯優勢:雙核 ARM 處理器與 FPGA 邏輯相結合,可實現一種軟硬件協同設計方法,從而能夠將一部分時序
關鍵型處理任務交付給可編程邏輯來處理。與基于 MCU 的平臺相比,Zynq SoC 具有更豐富的 I/O 外設和存儲器接口功能。選擇 Zynq SoC 的另一個原因是,飛行控制程序可能會相當龐大,并且要求極為高速的 CPU,而 Zynq SoC 能夠輕松地駕馭飛行控制程序的復雜性。同時,該器件還有大量剩余功能,為飛行控制程序的擴展留出了充裕的空間。
目前存在多種類型的飛行軟件程序,它們都行為各異且復雜性不同。Aerotenna 決定使用的飛行控制軟件名為 ArduPilot,這是由運行在 Dronecode 上的 APM(自動駕駛儀)提供的。它比大多數飛行控制軟件復雜,但提供大量較簡單程序所不具備的。
ArduPilot 飛行控制系統的復雜性隨著開源社區為 APM 項目添加的內容越來越多而不斷增加功能,例如路點導航和多種飛行模式,以滿足用戶的特定應用。
什么是 ARDUPILOT?
ArduPilot 是一種專為無人機構建的開源自動駕駛儀軟件程序。該軟件程序由開發人員和愛好者組成的龐大群體不斷更新和改進。從最初為開源 Arduino 微處理器構建的相當簡單的軟件起步,不斷壯大和復雜化,APM 項目如今已經兼容眾多無人機平臺。目前,該程序內含超過 70 萬行代碼,是一種非常精細的飛行控制系統。
該代碼分為兩個部分:高層次層和硬件抽象層 (HAL)。高層次層負責調度任務及根據輸入的數據做出決策。HAL 是用于訪問硬件的存儲器的低層次代碼。只需調整用于平臺專用存儲器訪問的 HAL,這種代碼結構劃分就能將整個系統移植到其他平臺。 而且,不管采用什么樣的平臺,上層次的代碼只負責以相同的方式從 HAL 中提取數據。
隨著開源社區為 APM 項目添加的內容越來越多,ArduPilot 飛行控制系統日趨復雜。因此,行業已經達到硬件的極限,正期待新一代能夠推動持續增長的平臺問世。
顯著改進
將 ArduPilot 移植到 Zynq SoC 的初步工作(由谷歌無人機討論組的 John Williams 牽頭)于 2014 年完成,該工作為將 APM 移植到同一賽靈思平臺上鋪平了道路。隨著無人機令人驚嘆的新世界的開啟,Williams 注意到 Zynq SoC 在提供定制 I/O 和實時圖像處理方面的巨大潛力。有趣的是,Williams 是開發 PetaLinux 初始工具的公司 PetaLogix 的創始人。
賽靈思于 2012 年收購了這家公司。
Aerotenna 團隊從硬件和固件兩個方向繼續推動這些設計工作,并于 2015 年 10 月完成采用 Zynq SoC 的 ArduPilot 的首飛。Aerotenna 團隊在 PetaLinux 操作系統上運行 ArduPilot 飛行控制軟件。 這一驚世壯舉標志著無人機技術和功能的一次飛躍。
在處理能力和 I/O 功能方面,Aerotenna 團隊的飛行控制解決方案遠遠領先于同類的其他無人機解決方案,這都歸功于 Zynq SoC 中的雙 ARM 內核。這一飛躍將為眾多需要更強計算能力的新無人機應用打開大門。借助于為愛好者以及開發人員構建的充足硬件接口,Aerotenna 團隊旨在確保提供切實的改進。無人機平臺是在 Linux 操作系統上運行的,由于 Linux 的可編程性和多功能性,這種平臺容納多種類型應用的靈活性更高。作為最為強大的用戶可編程操作系統之一,Linux 讓 Aerotenna 團隊得以按照自己的需要精確地定制系統。
Aerotenna 團隊在商用現成的 DJI F550 機身上完成了首次飛行測試,并計劃在更多機身上測試其基于 Zynq SoC 的飛行控制器。Aerotenna 團隊準備以八角片上駕駛儀 (OcPoC) 平臺構成部分的形式推出這款平臺。
任重道遠的征程
全新打造一套定制化飛行控制平臺是一次任重道遠的征程,這不僅需要理想的工程人員團隊,還需要完成大量的學習,才能完成。從無到有,需要對該系統做出大量的決策。為了運行飛行控制程序,必須使用操作系統。實時操作系統 (RTOS) 即時處理進入的數據,造成的緩存延遲可忽略不計。因此,RTOS 非常適用于運行飛行控制等時間敏感型任務。其缺陷在于難以將這類系統與 ArduPilot 接口,因為部分數據處理任務需要在操作系統自身重新實現。
這就是 Aerotenna 團隊轉而選擇 Linux 操作系統的原因。雖然 Linux 操作系統不是實時系統,但實現軟硬件聯合設計要容易得多,進而能將系統的多功能性最大化。賽靈思提供名為 PetaLinux 的強大嵌入式 Linux 操作系統,該系統可與 Zynq SoC 及其他賽靈思器件兼容的。
由于多軸飛行器天性不穩定,測量機身的慣性和高度是實現穩定的關鍵。
建造并運行這個系統的路線圖看起來相當復雜,Aerotenna 團隊必須克服重重嚴峻的挑戰。這個過程的第一步是使用 FPGA 開發軟件來開發系統設計,并為驅動器接口編寫和創建全新的 IP。核心是位于硬件層且能以極快速度處理數據的嵌入式流程。隨后,必須使用定制系統設計來部署 PetaLinux。最后,Aerotenna 團隊編譯并修改了 ArduPilot 系統,使之能夠在 PetaLinux 和新平臺上運行。
Aerotenna 團隊分階段解決這個問題,實現了概念驗證。Aerotenna 團隊的工作首先是接收和檢測 RC 信號,然后為單個電機供電。在最后演示該概念設計后,Aerotenna 團隊著手擴展 ArduPilot 賴以運行的 OcPoC 與傳感器間的接口。全新編寫自己的設備驅動程序是一個重大挑戰。實現成功飛行最關鍵的傳感器包括加速計、陀螺儀和氣壓計。由于多軸飛行器天性不穩定,
測量機身的慣性和高度對穩定性至關重要。所有這些都必須
通過使用正確的通信協議配置在 Aerotenna 團隊的 FPGA 硬件設計中,并最終包含到其 PetaLinux 操作系統內。
ArduPilot 代碼庫包含超過 70 萬行代碼,因此一項重大任務就是讓系統在全新的平臺上運行。由于沒有方便的界面以供調試慣性傳感器、電動機和 RC 控制器(對其他平臺一般在高質量的圖形用戶界面下完成),團隊不得不細調數百個存儲的參數值,手動調試整個系統。調試是必要的,因為每個硬件組件都有細微差別,這會導致產生的輸出略有不同。因此,必須對每個組件產生的最大值和最小值進行定義。這個過程最終為 Aerotenna 團隊帶來順暢可持續的飛行。
?
圖 2 - OcPoC 系統將成為首款受 Zynq SoC 芯片支持的商用版飛行控制平臺。
?
?
圖 3 – OcPoC 被設計為一種即飛型匣子,與 IMU 傳感器和 GPS 進行集成,在多功能 I/O 的作用下,用于同外部設備相連接。
OcPoC 介紹
OcPoC 項目(圖 2)是 Aerotenna 的無人機飛行控制平臺。借助該項目,Aerotenna 團隊計劃使用顯著提高的處理能力、I/O 擴展,以及明顯優于其他解決方案的編程靈活性來滿足無人機社區的需求。雖然 Aerotenna 團隊使用 Zynq SoC 支持其系統看似對運行當前的 ArduPilot 版本有誤宰之嫌,但 Aerotenna 團隊預計該行業將不斷擴展,而且有望提供很快得到利用的潛能。
該架構為開發人員借助他們所需的全部處理能力進行創造和設計鋪平了道路。采用這種新平臺,Aerotenna 團隊計劃為兼容 OcPoC 的成像、地圖和近距檢測領域推出新的微波技術應用。同時,Aerotenna 團隊的系統能夠借助 Zynq SoC 芯片的處理功能,執行板載數據采集與分析。
Aerotenna 團隊的平臺將提供集成 IMU 數據獲取功能,無需任何額外的傳感器設置即可開發出即飛型“匣子”(圖 3)。該團隊將同時為所有類型的無線電導航控制提供集成導航界面。讓 Aerotenna 團隊的平臺領先一步的地方在于,對任何外部傳感器數據,都能直接通過 Zynq SoC 與 ArduPilot 程序同步開展高速數據處理。這對基于 MCU 的平臺來說是不可能實現的。
Zynq SoC 的額外處理功能還能處理更復雜的飛行控制系統,以更加精細地調諧無人機的性能。這包括將 I/O 功能擴展到適應更加廣泛的外部接口與傳感器選項,例如實時視頻流、微波近距傳感器及藍牙。
Aerotenna 團隊希望,通過讓自己的平臺易于測試和開發新的構思,激勵許多其他公司和個人為無人機行業貢獻新穎的創意,不為現今可用硬件的處理局限性所阻礙。
?
評論
查看更多