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