黃益凜 黃承斌 鄭卓銘 吉宏濤
【摘 要】針對(duì)當(dāng)前農(nóng)用無(wú)人機(jī)作業(yè)范圍較廣,無(wú)法實(shí)現(xiàn)人工準(zhǔn)確定位作業(yè),本文提出一種基于pixhawk開源無(wú)人機(jī),依靠飛行工作區(qū)設(shè)立的識(shí)別標(biāo)志,運(yùn)用視覺(jué)導(dǎo)航實(shí)現(xiàn)自主飛行的視覺(jué)導(dǎo)航農(nóng)用無(wú)人機(jī)。該無(wú)人機(jī)以pixhawk為基礎(chǔ),加入OpenMv、農(nóng)業(yè)設(shè)備以及控制芯片共同實(shí)現(xiàn)自主導(dǎo)航和農(nóng)用的雙重功能。
【關(guān)鍵詞】pixhawk;二次開發(fā);視覺(jué)導(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ā)展程度有待提高。而將無(wú)人機(jī)運(yùn)用在農(nóng)業(yè)上,可在一定程度上減少人力資源,提高作業(yè)效率。與農(nóng)用無(wú)人機(jī)相對(duì)應(yīng)的,選擇一種導(dǎo)航技術(shù)也是至關(guān)重要的。若只是人為操控?zé)o人機(jī)進(jìn)行噴灑作業(yè),會(huì)極大依賴于操作人的操作技術(shù),并不能很好節(jié)約資源和良好作業(yè)。利用視覺(jué)導(dǎo)航,通過(guò)算法,可讓無(wú)人機(jī)實(shí)現(xiàn)自主導(dǎo)航,這時(shí)操作者只需要打開開關(guān),然后選定坐標(biāo),便可讓無(wú)人機(jī)自行工作。針對(duì)于農(nóng)業(yè)作業(yè)或者無(wú)人機(jī)發(fā)展來(lái)說(shuō),視覺(jué)導(dǎo)航農(nóng)用無(wú)人機(jī)的存在都是合理及必要的。
1 系統(tǒng)總體方案設(shè)計(jì)
本視覺(jué)導(dǎo)航農(nóng)用無(wú)人機(jī)系統(tǒng)的方案如圖1所示。本系統(tǒng)主要由三部分組成。第一部分是無(wú)人機(jī),本系統(tǒng)所有功能的實(shí)現(xiàn)都是基于無(wú)人機(jī),因此選擇一款性能優(yōu)越的無(wú)人機(jī)顯得格外重要,本系統(tǒng)要求該無(wú)人機(jī),飛行功能正常穩(wěn)定,漂移范圍小,因此選用了市面流行的Pixhawk大四軸無(wú)人機(jī)。第二部分是視覺(jué)處理,本系統(tǒng)要實(shí)現(xiàn)視覺(jué)導(dǎo)航,必須需要處理拍攝到的圖片數(shù)據(jù)的設(shè)備,本系統(tǒng)選用了OpenMv3作為圖像處理的設(shè)備。第三部分則是為控制器,該控制器負(fù)責(zé)接收OpenMv3回傳的數(shù)據(jù),通過(guò)算法將這些數(shù)據(jù)解算為無(wú)人機(jī)的控制命令,再以Mavlink協(xié)議通過(guò)數(shù)傳模塊發(fā)送給無(wú)人機(jī),該控制器還要接收手機(jī)或PC機(jī)的命令,進(jìn)而開啟或關(guān)閉農(nóng)用設(shè)備,基于性能和資源的考慮,本系統(tǒng)選擇stm32芯片。總體上是OpenMv3處理攝像頭拍攝到圖像數(shù)據(jù),解析出無(wú)人機(jī)飛行的下一步運(yùn)動(dòng)的坐標(biāo),接收到坐標(biāo)的stm32控制芯片將該坐標(biāo)解算為無(wú)人機(jī)動(dòng)作命令,再將命令包裝Mavlink數(shù)據(jù)包通過(guò)數(shù)傳模塊發(fā)給pixhawk無(wú)人機(jī),進(jìn)而無(wú)人機(jī)做出反應(yīng)。
2 Pixhawk無(wú)人機(jī)
Pixhawk是目前市面上非常流行的一款無(wú)人機(jī),其硬件質(zhì)量可靠、軟件開源、資源齊全,飛行可靠穩(wěn)定,完全適合運(yùn)用于我們系統(tǒng)。這部分主要介紹Pixhawk硬件組成、軟件框架和開發(fā)方法。
2.1 pixhawk的硬件組成
Pixhawk無(wú)人機(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)等都要從芯片獲取后通過(guò)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)程間通過(guò)此文件節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互和共享。進(jìn)程通過(guò)命名的總線交換的消息稱之為主題(topic),在Pixhawk中,一個(gè)主題僅包含一種消息類型,通俗點(diǎn)就是數(shù)據(jù)類型。每個(gè)進(jìn)程可以訂閱或者發(fā)布主題,可以存在多個(gè)發(fā)布者,或者一個(gè)進(jìn)程可以訂閱多個(gè)主題,但是一條總線上始終只有一條消息。在進(jìn)行pixhawk二次開發(fā)時(shí),可以通過(guò)訂閱傳感器數(shù)據(jù)主題實(shí)時(shí)獲得各個(gè)傳感器的數(shù)據(jù),也可以發(fā)布相關(guān)主題實(shí)現(xiàn)改變各種數(shù)據(jù)和操作無(wú)人機(jī)。Pixhawk還允許開發(fā)者創(chuàng)建新的主題??傊瑢?duì)于開發(fā)者,幾乎所有操作都是通過(guò)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)系。下載完成后還需在終端中使用命令安裝它們。接下來(lái)便可以使用px4的jmavsim虛擬機(jī),如圖2所示。
2.3.1 安裝QtCreator
Qt Creator是跨平臺(tái)的Qt IDE,Qt Creator是Qt被 Nokia收購(gòu)后推出的一款新的輕量級(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無(wú)人機(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ī)器視覺(jué)模塊,這個(gè)模塊的目標(biāo)是成為“機(jī)器視覺(jué)世界的Arduino”。OpenMv到現(xiàn)在為止一共有三代,本系統(tǒng)使用最新一代OpenMv3。本系統(tǒng)通過(guò)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ò)相關(guān)算法,就可以很容易的解算出無(wú)人機(jī)的控制命令,不過(guò)這些計(jì)算都交給下一環(huán)節(jié)。該模塊只需通過(guò)串口,將三個(gè)參數(shù)提交給stm32。
4 數(shù)據(jù)處理過(guò)程
為實(shí)現(xiàn)視覺(jué)導(dǎo)航,OpenMV3解析返回的目標(biāo)坐標(biāo)必須進(jìn)行解算成為無(wú)人機(jī)飛行的命令,因此需要一款主控芯片?;谔幚砟芰百Y源的考慮,本系統(tǒng)選擇了stm32芯片。該芯片采用ARM公司的contex M3內(nèi)核,具有優(yōu)越的運(yùn)算處理能力,完全符合本系統(tǒng)的要求。在本系統(tǒng)中,該芯片主要負(fù)責(zé)接收OpenMv3發(fā)回的坐標(biāo)信息,通過(guò)算法解算出無(wú)人機(jī)飛行的下一步命令,再有運(yùn)用移植在該芯片的MAVLink協(xié)議將命令包裝,最后通過(guò)數(shù)傳模塊發(fā)送給pixhawk無(wú)人機(jī)。該芯片還負(fù)責(zé)接收手機(jī)或電腦對(duì)農(nóng)用設(shè)備的命令進(jìn)而控制農(nóng)用設(shè)備的狀態(tài)。 5 結(jié)語(yǔ)
本系統(tǒng)利用OpenCv3和stm32等模塊實(shí)現(xiàn)了視覺(jué)導(dǎo)航,實(shí)驗(yàn)中發(fā)現(xiàn)效果良好,pixhawk無(wú)人機(jī)可以根據(jù)預(yù)設(shè)的路徑飛行。定位較為準(zhǔn)確,課一定程度上節(jié)省人力及物力。 本系統(tǒng)雖然存在不完善的地方,但總體 上實(shí)現(xiàn)視覺(jué)導(dǎo)航,在農(nóng)業(yè)大范圍作業(yè)中不失為一個(gè)好的選擇。
【參考文獻(xiàn)】
[1]蘇東.基于雙目視覺(jué)的小型無(wú)人飛行器的導(dǎo)航與避障[D].成都:電子科技大學(xué),2014.
[2]陳子杰,劉永輝,趙厚寶,等.基于 PX4構(gòu)建高可靠多旋翼控制器的實(shí)現(xiàn)方法[J].軟件產(chǎn)業(yè)與工程,2014(6):38-42.endprint