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