汪 赟,李捍東
(貴州大學電氣工程學院,貴陽 550025)
隨著現(xiàn)代農業(yè)的持續(xù)發(fā)展以及國家對農業(yè)政策的大力扶持,我國現(xiàn)代農業(yè)生產力和農民收入大幅度增長。但在現(xiàn)代農業(yè)發(fā)展過程中也存在著一系列問題,例如:土地資源的過度開發(fā)、在農業(yè)方面的物質投入過度使用以及農業(yè)污染等,給農業(yè)可持續(xù)發(fā)展帶來了重大挑戰(zhàn)[1]。農機自主導航監(jiān)控系統(tǒng)是現(xiàn)代化智能化農業(yè)的關鍵組成部分,在“精準農業(yè)”發(fā)展過程中,極大推動了我國傳統(tǒng)農業(yè)生產向現(xiàn)代化智能化農業(yè)發(fā)展的進程[2-2]。在此,提出一款農機自主導航監(jiān)控終端系統(tǒng),基于LabVIEW 軟件開發(fā)平臺,采用模塊化方案進行設計,在傳統(tǒng)系統(tǒng)設計基礎上做了相應的合理改善。
本系統(tǒng)開發(fā)平臺為LabVIEW,其具有良好的移植性,可根據實際需要方便地增加和減少各功能模塊。LabVIEW 將各種函數模塊化,各模塊間的數據傳遞主要通過程序之間的連線完成,簡化了編程流程,更加直觀、簡單、易學。
系統(tǒng)整體設計采用LabVIEW 隊列狀態(tài)機中的“生產者與消費者”結構,整體程序框圖如圖1。這種設計能夠讓系統(tǒng)在多線程的環(huán)境下高速運行,保證良好的執(zhí)行效率,能夠實時響應前面板不同的指令,分配不同的模塊進行工作,并可存儲和顯示相關的數據[4]。
圖1 生產者與消費者式程序結構框圖
系統(tǒng)的功能模塊包括:登錄界面模塊、人機交互界面模塊、串口通訊模塊、讀寫數據庫模塊、AB線作業(yè)路徑規(guī)劃模塊、診斷維護模塊、系統(tǒng)和車輛參數設置模塊以及動畫顯示模塊等。系統(tǒng)功能圖如圖2 所示。其中,路徑規(guī)劃采用S 型耕作路線;系統(tǒng)參數調節(jié)主要對農機車輛及農機具的傳感器高度、液壓轉向參數及機具寬度等參數進行調節(jié)設置。
圖2 農機自主導航監(jiān)控系統(tǒng)功能圖
根據對農機自主導航系統(tǒng)的功能分析,以人機交互界面易操作、友好型、簡潔性等為目標[5],設計出的系統(tǒng)主界面如圖2 所示。
圖3 導航監(jiān)控終端主界面
該界面為農機導航的狀態(tài)顯示區(qū)域,包括地塊名稱、衛(wèi)星數量、經緯度以及前進速度等[6]。最左側為功能按鈕,包括主頁面、系統(tǒng)設置、車輛參數、作業(yè)設置以及診斷維護等5 個主要功能按鈕。通過點擊各個功能按鈕,即可進入相應的功能界面。不同的功能模塊可獨立運行,通過調用LabVIEW 隊列狀態(tài)機的“生產與消費者”結構,能夠讓系統(tǒng)在多線程的環(huán)境下高速運行,保證了良好的執(zhí)行效率。
系統(tǒng)開始導航之前,需要配置系統(tǒng)及車輛的液壓轉向參數、轉向閥標定、控制參數調節(jié)、GNSS 天線距地高度、農機軸距、機具寬度以及前輪輪距等參數。以“生產者與消費者”模式(事件)、事件結構、條件結構為骨架,根據確認按鍵的按下,“生產者”循環(huán)產生命令,“消費者”循環(huán)執(zhí)行命令。數據從串口下發(fā)并收到下位機的回饋信息,車輛參數配置成功。該部分模塊的前面板界面如圖4 所示。
圖4 車輛參數前面板
為照顧到后續(xù)研究作業(yè)數據并避免在同地塊重復多次設置農機系統(tǒng)參數,需進行數據的保存與調用。系統(tǒng)數據讀寫模塊采用UDL 方式將LabVIEW與Access 數據庫進行連接[7]。以UDL 文件作為連接途徑,調用LabVIEW SQL Tookit 模塊來訪問Access的數據表。如圖5 所示為保存AB 點示意圖。
圖5 AB 點坐標存儲
在實際中最常見的耕作路線是基于農機直線耕作的S 型。這一類型路線規(guī)劃最為簡單,沒有路徑的重疊和遺漏[8]。故此系統(tǒng)作業(yè)路線模擬的是農機S 型耕作路線,如圖6 所示。
圖6 S 型耕作路線
用戶將農機駕駛到耕作的起始點,擺正車頭,點擊作業(yè)設置前面板的A 點按鍵,系統(tǒng)將接收A 點的經度、緯度、高程等地理坐標信息;然后駕車行駛到農地的另一頭,停車后點擊B 點按鍵,系統(tǒng)接收B點的經度、緯度、高程等信息。用戶根據實際需要設置行間距,設置完成后,點擊導入AB 線,主界面顯示作業(yè)路徑。在自動導航過程中,用戶根據實際需要,設置整體行偏移,重新規(guī)劃作業(yè)路線。當用戶在同一塊地進行耕作時,不需要重新標定AB 點坐標信息,只需要點擊歷史數據按鍵,數據庫中的AB 點坐標信息將以列表的形式顯示在前面板中,手動輸入AB 點的坐標信息,系統(tǒng)將以對話框形式提示用戶AB 點坐標配置成功。
AB 點坐標信息與行間距確定之后,點擊導入AB 線按鍵,“生產者”循環(huán)中,事件結構開始運行。在該分支中,繪制多條直線控件是根據首末端點坐標的不同繪制不同的直線,所以要根據AB 點的坐標、行間距以及整體偏移量進行坐標的計算,生成作業(yè)軌跡。繪制作業(yè)軌跡程序框圖如圖7 所示。
圖7 繪制作業(yè)軌跡程序框圖
當A 點與B 點緯度相同,經度不相同時,系統(tǒng)默認將A 點作為坐標原點(0,0),B 點的經度坐標作為縱坐標,系統(tǒng)根據坐標繪制出一條AB 點直線。當行間距確定后,系統(tǒng)繼續(xù)進行坐標運算,其中第一條橫向直線的末端點坐標與B 點的縱坐標相同,即橫坐標為行間距;縱坐標為B 點縱坐標,系統(tǒng)根據運算方法繪制出一系列行間距相同且互相平行的直線,即S 型耕作路線。繪制完成后,作業(yè)軌跡顯示在主頁面中。
在實際耕作中,用戶往往需要在已經規(guī)劃好的作業(yè)路徑基礎上進行整體的偏移,為實現(xiàn)這一功能,系統(tǒng)設計了作業(yè)軌跡整體偏移模塊。該模塊主要功能是進行一系列的坐標運算。
例如,當A 點與B 點緯度相同,經度不相同時,在整體偏移量編輯框中輸入偏移量后,AB 點直線發(fā)生偏移,坐標原點(0,0)不再是A 點,即A 點以偏移量為橫坐標,縱坐標為零;B 點的坐標也發(fā)生變化,橫坐標是偏移量,縱坐標是B 點的經度;第一條橫向直線也發(fā)生偏移,其直線端點坐標也發(fā)生相應的改變,即末端點的橫坐標為行間距與偏移量之和,縱坐標與B 點縱坐標相同。系統(tǒng)根據算法,繪制出一系列發(fā)生整體偏移具有相同行間距且相互平行的直線即S 型耕作路線。
為了更加直觀地在導航監(jiān)控終端系統(tǒng)上觀測到農機在地塊作業(yè)的工作情況、顯示農機在田間的具體位置,可依據農機位置及狀態(tài)等信息,在主界面上進行農機耕作的動畫繪畫[9]。例如,當農機在某一地塊按S 型路線耕作時,實際采集到的AB 點導航坐標將由系統(tǒng)轉換為界面AB 點坐標,動畫小車也將根據農機導航坐標實時沿著作業(yè)軌跡行駛。該功能以LabVIEW 的動畫模塊實現(xiàn),通過坐標的運算,實時動態(tài)地模擬農機的作業(yè)位置。動態(tài)導航顯示界面如圖8 所示。
圖8 農機動態(tài)導航
系統(tǒng)整體實機調試采用單個模塊分開調試的方式。單個模塊調試成功之后再將各個模塊整合在一起調試,這樣可以提高調試效率,縮短調試時間。
使用外部的串口設備模擬農機,發(fā)送導航信息數據。導航監(jiān)控系統(tǒng)能正確接受并顯示數據,主界面顯示清晰,功能按鍵能正常顯示。
系統(tǒng)能夠接受數據包中的AB 點坐標,作業(yè)設置界面正常顯示AB 點坐標信息;設置行間距,單擊導入AB 線,主界面正常顯示作業(yè)軌跡;在整體偏移量編輯欄中輸入參數,單擊整體偏移量按鍵,對話框提示配置成功;最后單擊導入AB 線,作業(yè)軌跡整體行偏移,測試成功。對手動輸入AB 點坐標信息繪制作業(yè)軌跡進行調試。在作業(yè)設置子頁面中,單擊歷史數據按鍵,前面板顯示AB 點坐標歷史信息,手動輸入坐標信息并設置行間距,點擊導入AB 線,主界面正常顯示作業(yè)軌跡。動畫顯示部分能夠實時繪制數據包中的坐標信息。
通過調試實驗,系統(tǒng)完全實現(xiàn)了設計預期中的功能,總體性能良好,并且體現(xiàn)出了界面簡潔、操作簡易的特點。
從農機導航的需求出發(fā),研究開發(fā)了基于虛擬儀器軟件的導航控制軟件,并進行了測試。系統(tǒng)操作簡單、使用方便、界面整潔,通過仿真試驗,與模擬的農機配合完成了數據的讀取、采集、顯示、讀寫數據庫、下發(fā)數據等功能,完成了作業(yè)軌跡規(guī)劃與動畫模擬。實際的調試也表明本導航系統(tǒng)完全能滿足實際需求,適合農田工作者使用。