朱雯曦
(紹興職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,浙江 紹興 312000)
隨著大數(shù)據(jù)、人工智能、自動駕駛技術(shù)的快速發(fā)展,現(xiàn)代農(nóng)業(yè)生產(chǎn)逐步走向自動化、信息化和精細(xì)化。農(nóng)業(yè)機器人自動導(dǎo)航技術(shù)是農(nóng)業(yè)機械自動化、信息化和精細(xì)化的基礎(chǔ),為了使農(nóng)業(yè)機械自主導(dǎo)航能夠成功、高效地完成任務(wù),必須進行有效的路徑規(guī)則和實時定位。為此,針對農(nóng)業(yè)機器人避障和定位問題,設(shè)計了一種基于大數(shù)據(jù)的農(nóng)業(yè)機器人路徑規(guī)劃與實時同步定位系統(tǒng),可實現(xiàn)農(nóng)業(yè)機器人路徑規(guī)劃和實時定位功能。
隨著云計算、5G通訊、人工智能、互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的快速發(fā)展,使得大數(shù)據(jù)站在了發(fā)展的風(fēng)口上,越來越多的公司開始研發(fā)自己的數(shù)據(jù)庫,且各具特色,如美國甲骨文公司的Oracle、美國Sybase 公司的Sybase、美國IBM公司的Informix、美國Microsoft公司的SQL Server和Access,以及開源的MySQL等數(shù)據(jù)庫。SQL 是 1986 年由美國國家標(biāo)準(zhǔn)局(ANSI)通過的關(guān)系數(shù)據(jù)庫操作語言標(biāo)準(zhǔn),是一種結(jié)構(gòu)化查詢語言 (Structured Query Language)[53],包含通用的增、刪、改、查等 SQL 命令及相關(guān)語法。另外,MySQL是一款開源性產(chǎn)品,具有跨平臺、功能強大、操作方便和價格優(yōu)勢,因此本文設(shè)計的云端大數(shù)據(jù)采用MySQL進行搭建。
在云端服務(wù)器中, 所創(chuàng)建數(shù)據(jù)庫主要包含了ICP 點云匹配核心算法及數(shù)據(jù)的增、刪、改、查等功能。農(nóng)業(yè)機器人主要收集作業(yè)周邊環(huán)境的信息,為了確保二者之間的數(shù)據(jù)傳輸?shù)目煽啃?采用TCP/IP協(xié)議。云端大數(shù)據(jù)的結(jié)構(gòu)框架如圖1所示。

圖1 云端大數(shù)據(jù)的結(jié)構(gòu)框架
云端服務(wù)器系統(tǒng)具體操作采用實時通訊的方式,先由客戶端向數(shù)據(jù)庫服務(wù)器發(fā)出增、刪、改、查請求,然后由數(shù)據(jù)庫服務(wù)器根據(jù)通信協(xié)議進行響應(yīng)操作。客戶端與數(shù)據(jù)庫之間的交互模型如圖2所示。

圖2 客戶端與數(shù)據(jù)庫之間的交互模型
常用數(shù)據(jù)庫訪問接口有ODBC和JDBC兩種。其中,ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)是一種可用來訪問關(guān)系數(shù)據(jù)庫的編程接口,可對多種不同數(shù)據(jù)庫進行訪問,采取統(tǒng)一方式對數(shù)據(jù)庫進行處理。通過應(yīng)用程序?qū)?shù)據(jù)庫進行訪問,ODBC 管理器所擁有的數(shù)據(jù)源是基礎(chǔ),采用此方法對數(shù)據(jù)庫進行連接時,必須先配置數(shù)據(jù)源,配置流程為按順序點擊開始/控制面板/ODBC3項,進入用戶 DSN 標(biāo)簽選項,點擊添加,創(chuàng)建新數(shù)據(jù)源,選擇 SQL Server,輸入數(shù)據(jù)源名稱及服務(wù)器名稱;之后,按照創(chuàng)建的數(shù)據(jù)庫選擇登入方式及登錄名與密碼,更改默認(rèn)的數(shù)據(jù)庫為自己創(chuàng)建的數(shù)據(jù)庫,創(chuàng)建完成,可進行數(shù)據(jù)源測試。
ODBC最大的特點是可以采用統(tǒng)一的API接口去處理所有的數(shù)據(jù),本文設(shè)計的云端服務(wù)器系統(tǒng)和農(nóng)業(yè)機器人之間的信息交互采用JAVA編程,而云端服務(wù)器也采用JAVA編程,因此采用ODBC進行數(shù)據(jù)庫通信接口的開發(fā)設(shè)計。ODBC在數(shù)據(jù)庫上應(yīng)用架構(gòu)如圖3所示。

圖3 ODBC在數(shù)據(jù)庫上應(yīng)用架構(gòu)
TCP/IP協(xié)議網(wǎng)絡(luò)中傳輸層具有TCP協(xié)議及UDP 協(xié)議:TCP 是一種面向連接的協(xié)議,在數(shù)據(jù)傳輸前,必須建立可靠的連接,多用于對可靠性要求較高的場合;UDP是一種面向無連接的協(xié)議,多用于廣播、視頻通信等對可靠性要求不高的領(lǐng)域。結(jié)合平臺對數(shù)據(jù)的要求,在本地服務(wù)器與GPRS的連接中,需完成 TCP/IP的Socket 網(wǎng)絡(luò)編程。
為了保證農(nóng)業(yè)機器人和云端數(shù)據(jù)庫之間進行可靠的通信,采用基于 TCP的Socket 網(wǎng)絡(luò)編程,其過程及主要用到的函數(shù)如圖4所示。
農(nóng)業(yè)機器人作業(yè)環(huán)境具有多變、未知和開放性等特點,相對比較復(fù)雜。在實際作業(yè)過程中,農(nóng)業(yè)機器人根據(jù)設(shè)置設(shè)定的任務(wù)目標(biāo),獲取環(huán)境信息,然后將處理后的環(huán)境信息通過TCP/IP的通信協(xié)議發(fā)送給云端數(shù)據(jù)庫,由云端云計算平臺計算規(guī)劃后,將最優(yōu)的路徑結(jié)果發(fā)送回農(nóng)業(yè)機器人,農(nóng)業(yè)機器人根據(jù)該路徑進行作業(yè)。

圖4 基于 TCP 的 Socket 網(wǎng)絡(luò)編程流程
在路徑規(guī)劃中,往往根據(jù)目的地、障礙物及大小來規(guī)劃避障路徑。障礙物大小的定義為:最小外接圓直徑小于1個工作寬度(農(nóng)業(yè)機器人最大寬度)的障礙物為小障礙物,其他障礙物為大障礙物。本文研究的農(nóng)業(yè)機器人避障規(guī)劃和實時同步定位主要是針對小障礙物進行避障路徑規(guī)劃。在避障路徑規(guī)劃中,假設(shè)農(nóng)業(yè)機器人工作塊的信息已知,小障礙物的最小外接圓的半徑和中心位置也已知。
假設(shè)障礙物避障區(qū)域為圓形區(qū)域,該區(qū)域的中心位置與小障礙物的最小外接圓的中心位置相同。由于農(nóng)業(yè)機器人有最小轉(zhuǎn)彎半徑r和工作寬度w,應(yīng)考慮這些因素來確定小障礙圈區(qū)域的半徑。小障礙物的最小外接圓的半徑用R表示,小障礙物圓形區(qū)域的半徑Rc可以定義為
Rc=max{R,r-w/2}
(1)
農(nóng)業(yè)機器人通過小障礙物的路徑直線可以表達(dá)為
y=kx+b?ax+by+c=0
(2)
從式(2)可以看出:農(nóng)業(yè)機器人的移動方向由參數(shù)k控制,且k=a=tanθ。其中,θ為農(nóng)業(yè)機器人的方向角。小障礙物中心坐標(biāo)用(xo,yo)表示,則障礙區(qū)域的圓心與工作路徑之間的距離為
(3)
是否采用避障策略取決于Rc、w和d之間的關(guān)系,當(dāng)Rc+w/2>d時,如果農(nóng)業(yè)機器人仍沿原運行路徑運行,其將與小障礙物碰撞。因此,必須采取相應(yīng)的策略來避開障礙。農(nóng)業(yè)機器人避障路徑示意圖如圖5所示。

圖5 農(nóng)業(yè)機器人避障路徑示意圖
圖5中,O為障礙物,農(nóng)業(yè)機器人的避障路徑為弧AB、弧BC和弧CD組成。在規(guī)劃避障路徑時,首先根據(jù)小障礙物的位置確定兩個輔助圓O1和O2,1條輔助直線和4個特征點,4個特征點分別為A、B、C、D。其中,A為農(nóng)業(yè)機器人開始轉(zhuǎn)向無障礙的點,B為避障的起點,C為避障路徑的停止點,D為避障的終點。
為了避開最短路徑中的障礙物,輔助線必須平行于原始工作路徑,遠(yuǎn)離小障礙物圓心,且距離為r。輔助線的等式表達(dá)式為
(x-xO)2+(y-yO)2=(Rc+w/2+r)2
(4)
輔助圓和輔助線的兩個交點可以通過聯(lián)立式(3)和式(4)獲得,且沿著農(nóng)業(yè)機器人的第一和第二交叉點分別為輔助圓1的中心O1和輔助圓2的中心O2。輔助圓1和輔助圓2的半徑為農(nóng)業(yè)機器人的最小轉(zhuǎn)彎半徑r。
輔助圓1和輔助圓2的坐標(biāo)等式分別為
(x-xO1)2+(y-yO1)2=r2
(5)
(x-xO2)2+(y-yO2)2=r2
(6)
在確定每個弧形路徑的特征點后,農(nóng)業(yè)機器人的避障路徑規(guī)劃步驟如下:
1)當(dāng)農(nóng)業(yè)機器人移動到A點時,開始采取局部障礙策略;
2)從A點開始,農(nóng)業(yè)機器人沿著弧AB(以圓O1為中心,r為半徑)到達(dá)B點;
3)從B點開始,農(nóng)業(yè)機器人沿著弧BC(以圓O為中心,Rc+w/2為半徑)以最短路徑行駛至C點;
4)從C點開始,農(nóng)業(yè)機器人沿弧形CD(以圓O2為中心,r為半徑)到達(dá)到D點;
5)從D點開始,農(nóng)業(yè)機器人繼續(xù)沿著原有的路徑前進。
最終,小障礙物的避障路徑被確定為由弧AB,弧BC和弧CD組成的分段弧。
本文構(gòu)建的基于大數(shù)據(jù)的農(nóng)業(yè)機器人路徑規(guī)劃與實時同步定位系統(tǒng),通過農(nóng)業(yè)機器人搭載的工業(yè)相機采集周邊環(huán)境的圖像,同時使用紅外測距傳感器,對周邊的障礙物距離進行采集。由于定位算法計算量較大,時間較長,不適合在農(nóng)業(yè)機器人控制系統(tǒng)中處理。因此,通過網(wǎng)絡(luò)通信將農(nóng)業(yè)機器人采集到的環(huán)境信息實時發(fā)送給云端數(shù)據(jù)庫,由云端服務(wù)器通過海量數(shù)據(jù)計算模塊進行處理。農(nóng)業(yè)機器人實時定位結(jié)構(gòu)框架如圖6所示。

圖6 實時定位結(jié)構(gòu)框架
農(nóng)業(yè)機器人控制系統(tǒng)主要完成數(shù)據(jù)信息的采集,而云服務(wù)器則利用數(shù)據(jù)庫保存參數(shù)信息,并結(jié)合云計算的高效計算,運用數(shù)學(xué)模型,進行地圖更新、路徑規(guī)劃和實時定位等功能。
農(nóng)業(yè)機器人大數(shù)據(jù)云架構(gòu)主要由云平臺數(shù)據(jù)庫、云計算、無線路由器、農(nóng)業(yè)機器人、紅外傳感器和工業(yè)相機組成。農(nóng)業(yè)機器人路徑規(guī)劃與實時定位系統(tǒng)根據(jù)紅外測距傳感器和工業(yè)相機采集的環(huán)境信息,結(jié)合機器人自身的移動方向等,通過無線路由器將參數(shù)信息采用TCP/IP的方式發(fā)送給云服務(wù)器;云服務(wù)器保存機器人的需求和環(huán)境參數(shù),實現(xiàn)地圖的搭建、更新,路徑規(guī)劃和實時定位等功能。大數(shù)據(jù)云架構(gòu)如圖7所示。
大數(shù)據(jù)云架構(gòu)采用華為公司的彈性云服務(wù)器ECS,該彈性云服務(wù)器采用16核CPU,內(nèi)存高達(dá)64G,數(shù)據(jù)帶寬可以達(dá)到10M,是一種可隨時自助獲取、可彈性伸縮的云服務(wù)器,具有可靠、安全、靈活、高效的特點。彈性云服務(wù)器架構(gòu)如圖8所示。

圖7 大數(shù)據(jù)云架構(gòu)圖

圖8 彈性云服務(wù)器架構(gòu)
為了驗證所提出的基于大數(shù)據(jù)的農(nóng)業(yè)機器人路徑規(guī)劃與實時同步定位方法的有效性,根據(jù)云平臺和農(nóng)業(yè)機器人的性能參數(shù),利用MatLab進行了仿真實驗。仿真結(jié)果如圖9所示。

圖9 MATLAB仿真結(jié)果
仿真實驗表明:機器人能夠在多障礙物的情況下,順利進行了從起點到終點的無碰撞移動,實現(xiàn)了路徑規(guī)劃和同步定位功能。
針對農(nóng)業(yè)機器人避障和定位問題,設(shè)計了一種基于大數(shù)據(jù)的農(nóng)業(yè)機器人路徑規(guī)劃與實時同步定位系統(tǒng)。系統(tǒng)采用大數(shù)據(jù)云平臺,研究了單個小障礙物的避障策略,提出了避障路徑規(guī)劃算法和實時同步定位系統(tǒng)。MatLab仿真研究表明:該方法所研究的路徑規(guī)劃和實時定位可以避免農(nóng)業(yè)機器人作業(yè)路徑中的小障礙,有利于保證農(nóng)業(yè)機器人的安全,能夠為其他相關(guān)領(lǐng)域的避障路徑規(guī)劃提供參考。