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