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