黃益凜 黃承斌 鄭卓銘 吉宏濤
【摘 要】針對(duì)當(dāng)前農(nóng)用無人機(jī)作業(yè)范圍較廣,無法實(shí)現(xiàn)人工準(zhǔn)確定位作業(yè),本文提出一種基于pixhawk開源無人機(jī),依靠飛行工作區(qū)設(shè)立的識(shí)別標(biāo)志,運(yùn)用視覺導(dǎo)航實(shí)現(xiàn)自主飛行的視覺導(dǎo)航農(nóng)用無人機(jī)。該無人機(jī)以pixhawk為基礎(chǔ),加入OpenMv、農(nóng)業(yè)設(shè)備以及控制芯片共同實(shí)現(xiàn)自主導(dǎo)航和農(nóng)用的雙重功能。
【關(guān)鍵詞】pixhawk;二次開發(fā);視覺導(dǎo)航
中圖分類號(hào): TP391.41 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2017)29-0049-002
【Abstract】Aiming at the current wide range of agricultural UAVs and the inability to locate them manually,this paper presents a visual navigation based on pixhawk open source UAVs,relying on the identification flags set up by the flight work area and using visual navigation to achieve autonomous flight Agricultural UAVs.The UAV,based on pixhawk,joins OpenMv,agricultural equipment and control chips for dual autonomous navigation and agricultural functions.
【Key words】Pixhawk;Secondary development;Visual navigation
0 緒論
在農(nóng)業(yè)方面,我國(guó)農(nóng)業(yè)機(jī)械化程度低,發(fā)展程度有待提高。而將無人機(jī)運(yùn)用在農(nóng)業(yè)上,可在一定程度上減少人力資源,提高作業(yè)效率。與農(nóng)用無人機(jī)相對(duì)應(yīng)的,選擇一種導(dǎo)航技術(shù)也是至關(guān)重要的。若只是人為操控?zé)o人機(jī)進(jìn)行噴灑作業(yè),會(huì)極大依賴于操作人的操作技術(shù),并不能很好節(jié)約資源和良好作業(yè)。利用視覺導(dǎo)航,通過算法,可讓無人機(jī)實(shí)現(xiàn)自主導(dǎo)航,這時(shí)操作者只需要打開開關(guān),然后選定坐標(biāo),便可讓無人機(jī)自行工作。針對(duì)于農(nóng)業(yè)作業(yè)或者無人機(jī)發(fā)展來說,視覺導(dǎo)航農(nóng)用無人機(jī)的存在都是合理及必要的。
1 系統(tǒng)總體方案設(shè)計(jì)
本視覺導(dǎo)航農(nóng)用無人機(jī)系統(tǒng)的方案如圖1所示。本系統(tǒng)主要由三部分組成。第一部分是無人機(jī),本系統(tǒng)所有功能的實(shí)現(xiàn)都是基于無人機(jī),因此選擇一款性能優(yōu)越的無人機(jī)顯得格外重要,本系統(tǒng)要求該無人機(jī),飛行功能正常穩(wěn)定,漂移范圍小,因此選用了市面流行的Pixhawk大四軸無人機(jī)。第二部分是視覺處理,本系統(tǒng)要實(shí)現(xiàn)視覺導(dǎo)航,必須需要處理拍攝到的圖片數(shù)據(jù)的設(shè)備,本系統(tǒng)選用了OpenMv3作為圖像處理的設(shè)備。第三部分則是為控制器,該控制器負(fù)責(zé)接收OpenMv3回傳的數(shù)據(jù),通過算法將這些數(shù)據(jù)解算為無人機(jī)的控制命令,再以Mavlink協(xié)議通過數(shù)傳模塊發(fā)送給無人機(jī),該控制器還要接收手機(jī)或PC機(jī)的命令,進(jìn)而開啟或關(guān)閉農(nóng)用設(shè)備,基于性能和資源的考慮,本系統(tǒng)選擇stm32芯片。總體上是OpenMv3處理攝像頭拍攝到圖像數(shù)據(jù),解析出無人機(jī)飛行的下一步運(yùn)動(dòng)的坐標(biāo),接收到坐標(biāo)的stm32控制芯片將該坐標(biāo)解算為無人機(jī)動(dòng)作命令,再將命令包裝Mavlink數(shù)據(jù)包通過數(shù)傳模塊發(fā)給pixhawk無人機(jī),進(jìn)而無人機(jī)做出反應(yīng)。
2 Pixhawk無人機(jī)
Pixhawk是目前市面上非常流行的一款無人機(jī),其硬件質(zhì)量可靠、軟件開源、資源齊全,飛行可靠穩(wěn)定,完全適合運(yùn)用于我們系統(tǒng)。這部分主要介紹Pixhawk硬件組成、軟件框架和開發(fā)方法。
2.1 pixhawk的硬件組成
Pixhawk無人機(jī)主要由四個(gè)電機(jī)、四個(gè)電調(diào)、電池、蜂鳴器、安全開關(guān)、數(shù)傳模塊、GPS、R9DS通信模塊以及pixhawk主板組成。而pixhawk主板的核心控制芯片采用的是以ARM Cortex M4為內(nèi)核的stm32F4系列的芯片,主板上還集成了陀螺儀、加速度計(jì)、磁力計(jì)和氣壓計(jì)等姿態(tài)測(cè)量單元。
2.2 pixhawk的軟件框架
在Pixhawk中,所有的功能被獨(dú)立以進(jìn)程模塊為單位實(shí)現(xiàn)并行工作,各個(gè)進(jìn)程獨(dú)立工作,互不干擾。因此進(jìn)程間的數(shù)據(jù)交互就尤為重要,必須存在一個(gè)能夠?qū)崟r(shí)、有序地實(shí)現(xiàn)進(jìn)程間通信的模塊。uORB正是為這種進(jìn)程間通信設(shè)計(jì)的一個(gè)重要模塊。uORB(Micro Object Request Broker)是PX4/Pixhawk系統(tǒng)中非常重要且關(guān)鍵的一個(gè)模塊,它肩負(fù)了整個(gè)系統(tǒng)的數(shù)據(jù)傳輸任務(wù),所有的傳感器據(jù)、GPS、PPM信號(hào)等都要從芯片獲取后通過uORB進(jìn)行傳輸?shù)礁鱾€(gè)模塊進(jìn)行計(jì)算處理。實(shí)際上uORB是一套跨進(jìn)程的IPC通訊模塊。
Pixhawk使用的是NuttX實(shí)時(shí)ARM系統(tǒng),uORB實(shí)際上是多個(gè)進(jìn)程打開同一個(gè)設(shè)備文件,進(jìn)程間通過此文件節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互和共享。進(jìn)程通過命名的總線交換的消息稱之為主題(topic),在Pixhawk中,一個(gè)主題僅包含一種消息類型,通俗點(diǎn)就是數(shù)據(jù)類型。每個(gè)進(jìn)程可以訂閱或者發(fā)布主題,可以存在多個(gè)發(fā)布者,或者一個(gè)進(jìn)程可以訂閱多個(gè)主題,但是一條總線上始終只有一條消息。在進(jìn)行pixhawk二次開發(fā)時(shí),可以通過訂閱傳感器數(shù)據(jù)主題實(shí)時(shí)獲得各個(gè)傳感器的數(shù)據(jù),也可以發(fā)布相關(guān)主題實(shí)現(xiàn)改變各種數(shù)據(jù)和操作無人機(jī)。Pixhawk還允許開發(fā)者創(chuàng)建新的主題??傊?,對(duì)于開發(fā)者,幾乎所有操作都是通過uORB訂閱和發(fā)布主題實(shí)現(xiàn)。
2.3 Pixhawk開發(fā)
Pixhawk可以在window和linux系統(tǒng)上進(jìn)行開發(fā)。但鑒于在window上開發(fā)存在編譯耗時(shí)的缺點(diǎn),所以本系統(tǒng)選擇在linux系統(tǒng)上開發(fā)。endprint
在開發(fā)之前,需要安裝linux系統(tǒng),可以選擇市面較好的ubuntu系統(tǒng),該系統(tǒng)擁有良好的用戶界面和新立得軟件管理器,用戶只需分出較小的硬盤空間就可以安裝使用。開發(fā)者還需下載ubuntu_sim.sh,ubuntu_sim_nuttx.sh文件,前一個(gè)文件包含px4所有構(gòu)建目標(biāo)的依賴關(guān)系,第二個(gè)則是基于nuttx硬件的依賴關(guān)系。下載完成后還需在終端中使用命令安裝它們。接下來便可以使用px4的jmavsim虛擬機(jī),如圖2所示。
2.3.1 安裝QtCreator
Qt Creator是跨平臺(tái)的Qt IDE,Qt Creator是Qt被 Nokia收購后推出的一款新的輕量級(jí)集成開發(fā)環(huán)境(IDE)。此 IDE 能夠跨平臺(tái)運(yùn)行,支持的系統(tǒng)包括 Linux、Mac OS X以及Windows。根據(jù)官方描述,Qt Creator的設(shè)計(jì)目標(biāo)是使開發(fā)人員能夠利用Qt這個(gè)應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)。圖3是Qt上px4代碼結(jié)構(gòu)。
2.3.2 安裝QGrounpControl
QGroundControl為任何MAVLink無人機(jī)提供完整的飛行控制和任務(wù)計(jì)劃。它提供ArduPilot或PX4 Pro動(dòng)力車輛的配置。其首要目標(biāo)是首次和專業(yè)用戶的易用性。它的所有的代碼都是開源的。Pixhawk的調(diào)試和校準(zhǔn)需要在該軟件上進(jìn)行。
3 OpenMV3處理圖像
Openmv是國(guó)外的一種基于micropython驅(qū)動(dòng)的可擴(kuò)展開源機(jī)器視覺模塊,這個(gè)模塊的目標(biāo)是成為“機(jī)器視覺世界的Arduino”。OpenMv到現(xiàn)在為止一共有三代,本系統(tǒng)使用最新一代OpenMv3。本系統(tǒng)通過OpenMv3模塊上采集當(dāng)前圖像信息,檢測(cè)預(yù)設(shè)的目標(biāo),當(dāng)預(yù)設(shè)目標(biāo)出現(xiàn)在當(dāng)在圖像中時(shí),將得到目標(biāo)在當(dāng)前圖像中的位置信息(x,y),還有當(dāng)前位置與目標(biāo)位置的距離s,這三個(gè)參數(shù)很重要。有了這三個(gè)參數(shù),通過相關(guān)算法,就可以很容易的解算出無人機(jī)的控制命令,不過這些計(jì)算都交給下一環(huán)節(jié)。該模塊只需通過串口,將三個(gè)參數(shù)提交給stm32。
4 數(shù)據(jù)處理過程
為實(shí)現(xiàn)視覺導(dǎo)航,OpenMV3解析返回的目標(biāo)坐標(biāo)必須進(jìn)行解算成為無人機(jī)飛行的命令,因此需要一款主控芯片?;谔幚砟芰百Y源的考慮,本系統(tǒng)選擇了stm32芯片。該芯片采用ARM公司的contex M3內(nèi)核,具有優(yōu)越的運(yùn)算處理能力,完全符合本系統(tǒng)的要求。在本系統(tǒng)中,該芯片主要負(fù)責(zé)接收OpenMv3發(fā)回的坐標(biāo)信息,通過算法解算出無人機(jī)飛行的下一步命令,再有運(yùn)用移植在該芯片的MAVLink協(xié)議將命令包裝,最后通過數(shù)傳模塊發(fā)送給pixhawk無人機(jī)。該芯片還負(fù)責(zé)接收手機(jī)或電腦對(duì)農(nóng)用設(shè)備的命令進(jìn)而控制農(nóng)用設(shè)備的狀態(tài)。 5 結(jié)語
本系統(tǒng)利用OpenCv3和stm32等模塊實(shí)現(xiàn)了視覺導(dǎo)航,實(shí)驗(yàn)中發(fā)現(xiàn)效果良好,pixhawk無人機(jī)可以根據(jù)預(yù)設(shè)的路徑飛行。定位較為準(zhǔn)確,課一定程度上節(jié)省人力及物力。 本系統(tǒng)雖然存在不完善的地方,但總體 上實(shí)現(xiàn)視覺導(dǎo)航,在農(nóng)業(yè)大范圍作業(yè)中不失為一個(gè)好的選擇。
【參考文獻(xiàn)】
[1]蘇東.基于雙目視覺的小型無人飛行器的導(dǎo)航與避障[D].成都:電子科技大學(xué),2014.
[2]陳子杰,劉永輝,趙厚寶,等.基于 PX4構(gòu)建高可靠多旋翼控制器的實(shí)現(xiàn)方法[J].軟件產(chǎn)業(yè)與工程,2014(6):38-42.endprint