譚福生 栗連政 孫龍龍 袁國(guó)慶* 馬耀名 王雨萌 陳嘉和
(1 遼寧工程技術(shù)大學(xué)電氣與控制工程學(xué)院,遼寧葫蘆島,125105;2 機(jī)器視覺檢測(cè)安徽省重點(diǎn)實(shí)驗(yàn)室,安徽蕪湖,241005)
正所謂,民以食為天,農(nóng)業(yè)的重要性不言而喻。但是要想提高農(nóng)業(yè)生產(chǎn)力還是要靠工業(yè)和自動(dòng)化的力量。本文中的大田播種是指最近農(nóng)業(yè)部“小田變大田”大背景下,在農(nóng)田中進(jìn)行較大面積的農(nóng)作物種植。大田播種通常涉及將種子或幼苗按照一定間距和深度排列在農(nóng)田的地表或土壤中。這個(gè)過程可以手工完成,也可以借助機(jī)器人進(jìn)行自動(dòng)化操作。我國(guó)農(nóng)業(yè)機(jī)械化率最近幾年非常高,田間地頭隨處可見各種機(jī)械,耕田用拖拉機(jī)或微耕機(jī),噴灑農(nóng)藥有的已經(jīng)用上無人機(jī),大棚里已有檢測(cè)機(jī)器人。但是,目前農(nóng)機(jī)的發(fā)展還不夠,市面上大多數(shù)的農(nóng)機(jī)都難以完成高精度的任務(wù),自動(dòng)化的程度也算不上高。那么或許就需要一種體積更小、精度更高的播種機(jī)器人[1]來完成大型播種機(jī)完成不了的工作。本文針對(duì)東北地區(qū)的集中性大田播種作業(yè)機(jī)器人(簡(jiǎn)稱“大田播種機(jī)器人”)進(jìn)行了開發(fā),為了更高效地開發(fā)播種機(jī)器人,擬采用基于ROS 分布式通信框架和模塊化的設(shè)計(jì)方案。
歐美、日本等國(guó)家和地區(qū)在農(nóng)業(yè)機(jī)器人領(lǐng)域的研發(fā)和應(yīng)用要比我國(guó)早。在美國(guó),一名農(nóng)場(chǎng)主往往擁有大量的農(nóng)田,農(nóng)場(chǎng)采用大規(guī)模運(yùn)作方式,因此開發(fā)傾向偏向于農(nóng)場(chǎng)環(huán)境下應(yīng)用的大型輪式農(nóng)業(yè)機(jī)器人,包括種植機(jī)器人、除草機(jī)器人、收獲機(jī)器人、巡檢機(jī)器人等等?;谀壳拔覈?guó)農(nóng)業(yè)自動(dòng)化、機(jī)械化發(fā)展的不足,以及我國(guó)對(duì)農(nóng)業(yè)方面能實(shí)現(xiàn)自動(dòng)化生產(chǎn)要求的背景,筆者提出了一種基于ROS 的大田播種機(jī)器人,目標(biāo)是設(shè)計(jì)一款可以在北方田地中進(jìn)行播種作業(yè)的機(jī)器人,播種對(duì)象主要是花生、大豆、玉米等北方常見作物。該機(jī)器人理論上能適應(yīng)田地惡劣的環(huán)境,配置多塊電池,從而保證長(zhǎng)時(shí)間工作。最后,筆者通過仿真確定了所設(shè)計(jì)的大田播種機(jī)器人的可行性和有效性。
大田播種機(jī)器人的設(shè)計(jì)旨在提高農(nóng)業(yè)生產(chǎn)效率和質(zhì)量,減輕農(nóng)民的勞動(dòng)負(fù)擔(dān)。此外,該機(jī)器人還可以通過精確的種植操作,減少種子的浪費(fèi)和農(nóng)藥的使用量,對(duì)環(huán)境友好。因此,大田播種機(jī)器人控制系統(tǒng)的研究和設(shè)計(jì)對(duì)于推動(dòng)農(nóng)業(yè)現(xiàn)代化和可持續(xù)發(fā)展具有重要意義。
機(jī)器人整體外觀如圖1 所示,整個(gè)機(jī)器人大體分為兩部分,分別是前部的自動(dòng)播種合土結(jié)構(gòu)與后部的兩輪機(jī)械移動(dòng)平臺(tái)結(jié)構(gòu)[2]。
圖1 播種機(jī)器人的外形
1.1.1 結(jié)構(gòu)設(shè)計(jì)
圖2 所示為播種機(jī)器人的自動(dòng)播種結(jié)構(gòu)。從整體來看,自動(dòng)播種結(jié)構(gòu)是由外殼、內(nèi)膽、鴨嘴下種夾、旋轉(zhuǎn)軸、種子箱和用于與播種機(jī)器人連接的支架組成。
圖2 播種結(jié)構(gòu)外視圖
外殼,即滾筒的外面,等距開有孔,用于出種。開孔的地方采用鴨嘴形的下種夾結(jié)構(gòu),其形狀類似中國(guó)傳統(tǒng)的鎬。該結(jié)構(gòu)實(shí)際上是利用了仿生科學(xué)的原理,由鋁合金制成,輕便且堅(jiān)固。扁圓而薄的結(jié)構(gòu)既能更好地保證合上時(shí)的封閉性,又能更好地使夾子插入土中下種。
鴨嘴下種夾的功能為破土和下種,與其相連的J 形桿上裝有彈簧,用于使鴨嘴下種夾在打開后能自動(dòng)合上。外殼連接著旋轉(zhuǎn)軸,旋轉(zhuǎn)軸裝在連接支架上,而連接支架的另一端與播種機(jī)器人的移動(dòng)平臺(tái)連接。旋轉(zhuǎn)軸上還連接著一塊連接片,上面裝有用于撥動(dòng)J 形桿使鴨嘴下種夾自動(dòng)打開的立柱。
內(nèi)膽結(jié)構(gòu)更為復(fù)雜,在旋轉(zhuǎn)軸的一側(cè)安裝了鏈輪;鏈輪斜下方安裝了毛刷和排種輪,鏈輪與毛刷輪之間由鏈條連接;排種輪與排種盤相連,排種輪上設(shè)有排種槽,排種輪斜下方安裝了接種漏斗,排種輪、毛刷輪和種箱都安置在固定結(jié)構(gòu)中。
1.1.2 工作過程
播種前,先將種子裝入種箱;啟動(dòng)機(jī)器人后,機(jī)器人開始移動(dòng);在機(jī)器人前進(jìn)的過程中,滾筒向前滾動(dòng),種子經(jīng)通道落入排種槽,排種盤在與滾筒擋塊接觸的時(shí)候,也會(huì)旋轉(zhuǎn)一定的角度,從而使排種輪旋轉(zhuǎn)起來;與此同時(shí),鏈輪會(huì)帶動(dòng)毛刷輪旋轉(zhuǎn),將多余的種子清理出去,最后只留下一顆種子在排種槽中。此外,排種輪與毛刷輪旋轉(zhuǎn)方向一致,可以防止因?yàn)閿D夾而造成種子被壓扁,以及多顆種子擠在一個(gè)排種槽中等問題的發(fā)生。當(dāng)接種漏斗底部的出口與排種口對(duì)齊時(shí),種子會(huì)掉進(jìn)鴨嘴中,與此同時(shí),與鴨嘴相連的J 形桿會(huì)與固定支架連接片上的立柱接觸并被撥動(dòng),從而讓鴨嘴下種器張開,將種子吐入土中。當(dāng)?shù)诙€(gè)鴨嘴排種器鉆入泥土中進(jìn)行播種的時(shí)候,第一個(gè)鴨嘴排種器從巢窩中離開,鴨嘴J 形桿脫離立柱,并受鴨嘴排種器彈簧施加的拉力,將鴨舌封閉起來,這樣就可以達(dá)到精量播種的目的。
1.2.1 主機(jī)
由于設(shè)計(jì)的播種機(jī)器人基于ROS 框架展開[3],ROS并非是一種操作系統(tǒng),它只是一種通信框架,一種基于消息傳遞通信的分布式多進(jìn)程框架。不同模塊可以被單獨(dú)設(shè)計(jì),同時(shí)單片機(jī)又無法完成想要實(shí)現(xiàn)的任務(wù),那么就需要一個(gè)能搭載ROS 系統(tǒng)的計(jì)算機(jī)。而將筆記本電腦塞進(jìn)一個(gè)整日工作于戶外田地的機(jī)器人中,很明顯既不能確保電腦能適應(yīng)惡劣工作環(huán)境,又不能降低成本。ARM 嵌入式主機(jī)是目前普遍在用的解決方案,因其在功耗和體積等方面的優(yōu)勢(shì),本設(shè)計(jì)選用ARM 嵌入式主機(jī)。
1.2.2 整體架構(gòu)
傳感器主要利用的是一臺(tái)呈現(xiàn)兩幅圖像(一幅是普通的RGB 三通道彩色圖像,另一幅是深度圖像)的RGB-D 相機(jī),慣性測(cè)量單元(Inertial Measurement Unit,IMU ),以及激光雷達(dá)。
其中,電機(jī)控制板主要是單片機(jī)電路??刂七^程是:?jiǎn)纹瑱C(jī)stm32f103c8t6 向電機(jī)驅(qū)動(dòng)電路發(fā)出脈沖寬度調(diào)制(PWM)控制信號(hào),電機(jī)驅(qū)動(dòng)電路輸出電流給電機(jī),電機(jī)開始轉(zhuǎn)動(dòng),安裝的編碼器將速度信息反饋給單片機(jī),從而實(shí)現(xiàn)一個(gè)閉環(huán)控制。
1.3.1 RGB-D 相機(jī)
作為機(jī)器人眼睛的傳感器,一般情況下是以攝像機(jī)為主,有的設(shè)計(jì)用的是單目相機(jī),有的用的是雙目相機(jī),還有的用RGB-D 相機(jī)。筆者選擇了RGB-D 相機(jī)。RGB指的是紅、綠、藍(lán)三原色,由這種相機(jī)上的普通鏡頭可以生成三通道彩色圖像,而D 指的是Depth,也就是深度圖像,由一個(gè)鏡頭為紅外投影儀發(fā)射紅光,又有另一個(gè)鏡頭接受紅光,分析紅外光譜,再通過三角測(cè)距來確定每個(gè)點(diǎn)的深度。
1.3.2 激光雷達(dá)
激光雷達(dá)使用由輪趣科技有限公司與鐳神智能系統(tǒng)有限公司聯(lián)合推出的N10 激光雷達(dá),這款雷達(dá)采用飛行時(shí)間(TOF)測(cè)距原理。一般情況下,使用TOF 測(cè)距原理的激光雷達(dá)測(cè)量精度、測(cè)量距離等性能要比使用激光三角測(cè)距原理的雷達(dá)更優(yōu),同時(shí)成本更高。N10 激光雷達(dá)有效降低了成本,使其擁有可觀的性價(jià)比,且性能較市面上同級(jí)別的雷達(dá)性能更優(yōu),同時(shí)支持ROS 機(jī)器人操作系統(tǒng)[4],是一款不錯(cuò)的單線激光雷達(dá)。
1.4.1 整體結(jié)構(gòu)方案和運(yùn)動(dòng)學(xué)模型
機(jī)械移動(dòng)平臺(tái)是播種機(jī)器人的“腳”。該播種機(jī)器人采用經(jīng)典的兩輪模型,由兩個(gè)電機(jī)分別驅(qū)動(dòng)的后輪作為動(dòng)力輪來提供動(dòng)力,借由電機(jī)差速來實(shí)現(xiàn)雙輪差速轉(zhuǎn)彎。為了確保機(jī)器人在大田作業(yè)的穩(wěn)定性,本文設(shè)計(jì)使用了既作覆土輪,又充當(dāng)支撐輪的前輪。
1.4.2 電機(jī)驅(qū)動(dòng)
電機(jī)選用額定電壓為48V 的直流有刷電機(jī)。該電機(jī)額定功率為1000W,輸出功率大,輸出轉(zhuǎn)速為3500 轉(zhuǎn)/分鐘;電機(jī)自帶減速箱,減速箱采用承載能力大、體積相對(duì)更小的行星齒輪減速箱[5],減速比為1:100。
1.4.3 霍爾編碼器
編碼器是為了測(cè)算電機(jī)的轉(zhuǎn)速,從而建立運(yùn)動(dòng)學(xué)反饋。編碼器包括磁性編碼盤和兩個(gè)霍爾傳感器,霍爾編碼器為增量正交編碼器,編碼線數(shù)為兩個(gè),相位差為90°。設(shè)計(jì)利用單片機(jī)的I/O 口來接收編碼器A 相和B相輸出的信號(hào),從而得出電機(jī)的轉(zhuǎn)向和轉(zhuǎn)速。
1.4.4 整體供電系統(tǒng)
為了給大田播種機(jī)器人提供工作所用的電力,本文選用駱駝蓄電池6-QWLZ-60。該電池為免維護(hù)鉛蓄電池,額定電壓12V,額定電流60A,雖然體積較大、重量較重(約16 公斤),但動(dòng)力強(qiáng)。
本文播種機(jī)器人的開發(fā)是基于ROS 機(jī)器人操作系統(tǒng)。所謂ROS,就是一種分布式的通信框架,同時(shí)也是目前流行的通用開發(fā)框架之一。單片機(jī)的編程環(huán)境選用Keil5。
本文設(shè)計(jì)的機(jī)器人控制系統(tǒng)基于ROS,ROS 容易部署的特點(diǎn)使得后續(xù)的開發(fā)更為簡(jiǎn)單高效。ROS 屬于松耦合軟件框架,可以利用分布式通信機(jī)制來實(shí)現(xiàn)節(jié)點(diǎn)之間的進(jìn)程通信,同時(shí)ROS 開放的開源庫(kù),使得后期的部署和維護(hù)更為方便。
具體的部署為,首先在Windows 系統(tǒng)安裝VMware虛擬機(jī)軟件,并在虛擬機(jī)上安裝Ubuntu Linux18.04 操作系統(tǒng),之后在Ubuntu 上安裝ROS Melodic,ROS 支持分布式通信,樹莓派3B+可以作為主節(jié)點(diǎn)部署到ROS 網(wǎng)絡(luò)中。
2.2.1 圖像處理
圖像處理是利用計(jì)算機(jī)對(duì)圖像進(jìn)行計(jì)算分析的技術(shù),包括數(shù)字圖像處理和計(jì)算機(jī)視覺兩大技術(shù)領(lǐng)域。數(shù)字圖像處理是通過濾波、壓縮、變換等算法對(duì)圖像進(jìn)行預(yù)處理[6];而計(jì)算機(jī)視覺的目標(biāo)是利用人工智能算法從圖像中獲取信息,比如圖像識(shí)別、圖像跟蹤、圖像測(cè)量等。OpenCV 是一個(gè)實(shí)現(xiàn)數(shù)字圖像處理和計(jì)算機(jī)視覺通用算法的開源跨平臺(tái)庫(kù),其采用C/C++語言編寫,同時(shí)支持Python、MATLAB 等接口調(diào)用。
2.2.2 OpenCV 圖像處理
由于播種機(jī)器人沒有安裝激光雷達(dá)而選擇使用RGB-D 相機(jī)kinect2.0 的深度圖像,并將其轉(zhuǎn)換成激光雷達(dá)掃描圖來進(jìn)行地圖構(gòu)建和導(dǎo)航,所以還需要進(jìn)行一些準(zhǔn)備。先是創(chuàng)建一個(gè)ROS 節(jié)點(diǎn);再調(diào)用“depthimage_to_laserscan”功能包;接著,訂閱深度圖像和發(fā)布激光圖像;當(dāng)接收到深度圖像消息時(shí),就會(huì)創(chuàng)建一個(gè)“depthimage_to_laserscan”服務(wù)請(qǐng)求,將深度圖像轉(zhuǎn)換為激光雷達(dá)數(shù)據(jù),并將激光雷達(dá)數(shù)據(jù)發(fā)布出去。
2.3.1 PID 控制
通過PWM 控制電機(jī)轉(zhuǎn)動(dòng)速度,電機(jī)速度定為V,但是實(shí)際上播種機(jī)器人會(huì)受到各種干擾,所以使用PID 控制來進(jìn)行反饋控制[7]。PID 有位置型和增量型兩種控制算法,由于電機(jī)控制屬于速度環(huán)控制,通過編碼器進(jìn)行速度反饋,所以應(yīng)該選用增量型PID 控制算法。
2.3.2 STM32 電機(jī)控制程序
電機(jī)驅(qū)動(dòng)芯片MC-FBLD-6630 里面已經(jīng)集成了電機(jī)轉(zhuǎn)向控制和電機(jī)轉(zhuǎn)速控制這兩個(gè)在電機(jī)控制程序中最重要的程序,用單片機(jī)的I/O 口產(chǎn)生控制轉(zhuǎn)向的高低電平和控制轉(zhuǎn)速的PWM 波來進(jìn)行電機(jī)的控制[8]。
農(nóng)業(yè)機(jī)器人采用的導(dǎo)航方法主要有三種:GPS 導(dǎo)航、視覺導(dǎo)航和激光導(dǎo)航。
本文設(shè)計(jì)使用的定位方法是先獲得全局地圖,再獲得激光雷達(dá)和慣性測(cè)量單元數(shù)據(jù),將傳感器數(shù)據(jù)通過ROS 傳送到建立的機(jī)器人定位(robot_localization)節(jié)點(diǎn),再通過ROS 機(jī)器人系統(tǒng)的“robot_localization”功能包,實(shí)現(xiàn)多傳感器數(shù)據(jù)融合,使用C++語言編寫ROS 機(jī)器人使用IMU 和激光雷達(dá)的定位程序。
其后調(diào)用自適應(yīng)蒙特卡洛定位(Adaptive Monte Carlo Localization,AMCL)模塊,實(shí)現(xiàn)機(jī)器人的定位和導(dǎo)航功能[9]。該功能包可使用激光雷達(dá)和慣性測(cè)量元件獲取周圍環(huán)境信息,通過蒙特卡洛定位算法對(duì)機(jī)器人的位置進(jìn)行估計(jì),并提供導(dǎo)航和路徑規(guī)劃所需的定位信息[10]。AMCL功能包可以在ROS 的導(dǎo)航堆棧中使用,是ROS 中常用的機(jī)器人定位和導(dǎo)航方案之一。
播種機(jī)器人通過Kinect2.0 深度相機(jī)和激光雷達(dá)采集外部環(huán)境,以此來完成機(jī)器人的定位與建圖。之所以選擇這種方法主要是因其穩(wěn)定性高且能適應(yīng)復(fù)雜的農(nóng)田環(huán)境。柵格地圖分為二維柵格地圖和三維柵格地圖,機(jī)器人主要通過激光雷達(dá)圖得出的二維柵格地圖進(jìn)行導(dǎo)航,借助kinect2.0 得出的三維柵格地圖進(jìn)行避障。
將深度相機(jī)得到的深度圖轉(zhuǎn)成激光圖之后,還需要構(gòu)建環(huán)境地圖,以對(duì)環(huán)境狀態(tài)進(jìn)行描述,為機(jī)器人定位做好準(zhǔn)備。環(huán)境地圖有多種,比如特征地圖、點(diǎn)云地圖、幾何地圖、柵格地圖、拓?fù)涞貓D[11]等。
3.2.1 二維激光圖建立二維柵格地圖
使用單線激光雷達(dá)掃描得到的二維激光圖建立二維柵格地圖,將二維連續(xù)空間用柵格進(jìn)行離散劃分。機(jī)器人采用二維占據(jù)柵格地圖,對(duì)劃分出來的每個(gè)柵格就用一個(gè)占據(jù)概率值進(jìn)行量化。使得概率為1 的柵格被標(biāo)記為占據(jù)狀態(tài),概率為0 的柵格被標(biāo)記為非占據(jù)狀態(tài),概率在0 到1 之間的柵格被標(biāo)記為未知狀態(tài)。在導(dǎo)航過程中,要避開占據(jù)狀態(tài)的柵格,在非占據(jù)狀態(tài)的柵格中通行[12]。它通過傳感器來探明未知狀態(tài)的柵格的狀態(tài)。
3.2.2 景深圖建立三維柵格地圖
Kinect2.0 得出的景深圖在轉(zhuǎn)成了激光圖之后,用于建立三維柵格地圖。之所以不直接用激光雷達(dá)避障是由于二維柵格地圖無法描述立體障礙物的詳細(xì)狀態(tài),因此其對(duì)環(huán)境的描述并不完備。按照二維柵格地圖同樣的思路,將三維空間用立體柵格進(jìn)行離散劃分,以此得到三維柵格地圖。對(duì)劃分出來的每個(gè)立體柵格用一個(gè)占據(jù)概率值進(jìn)行量化,相比于二維柵格,三維柵格的數(shù)量更大。為了提高三維柵格地圖數(shù)據(jù)處理效率,播種機(jī)器人的算法采用八叉樹對(duì)三維柵格數(shù)據(jù)進(jìn)行編碼存儲(chǔ),這樣就得到了八叉樹地圖。實(shí)際上,將一個(gè)立體空間劃分成8 個(gè)大的立體柵格,然后對(duì)每個(gè)柵格繼續(xù)進(jìn)行同樣的劃分,這樣就形成了一個(gè)八叉樹結(jié)構(gòu)。利用八叉樹,更易于得到不同分辨率的地圖表示。
在柵格地圖中,全覆蓋作業(yè)路徑規(guī)劃問題即演變?yōu)闄C(jī)器人從初始位置到最后的目標(biāo)位置,自主規(guī)劃出一條切實(shí)可行的無碰撞且效率較高的路徑[12]。
本研究擬采用農(nóng)業(yè)播種機(jī)器人的全覆蓋作業(yè)[13]方法,該方法在減少路徑重復(fù)率、提高覆蓋率方面具有優(yōu)勢(shì)。
增量型PID 整定順序如下:
6)根據(jù)需要進(jìn)行微調(diào),調(diào)整PID 參數(shù)以滿足控制系統(tǒng)的要求。
根據(jù)農(nóng)田中農(nóng)作物的生長(zhǎng)特性,農(nóng)作物都是按照固定的行距和株距進(jìn)行種植的,根據(jù)這一特性,對(duì)農(nóng)業(yè)輪式移動(dòng)機(jī)器人在農(nóng)作物的行間進(jìn)行直線行走或換行時(shí)進(jìn)行曲線路徑仿真。
圖3 是通過MATLAB 軟件的Simulink 仿真工具搭建的基于ROS 的雙輪差速控制系統(tǒng)機(jī)器人的簡(jiǎn)易模型,旨在對(duì)機(jī)器人以任意姿態(tài)到達(dá)目標(biāo)點(diǎn)進(jìn)行仿真。該模型由多個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)又由各種信號(hào)和函數(shù)組成。圖3 中X、Y 分別是是機(jī)器人X、Y 軸坐標(biāo)。
圖3 大田播種機(jī)器人運(yùn)動(dòng)控制系統(tǒng)
圖4 是PID 控制子系統(tǒng),內(nèi)有兩個(gè)PID 控制器,分別通過機(jī)器人到目標(biāo)距離來計(jì)算線速度,通過機(jī)器人姿態(tài)與目標(biāo)的偏角差來計(jì)算角速度。對(duì)應(yīng)ROS 中涉及運(yùn)動(dòng)的各種應(yīng)用。圖4 中l(wèi)in_vel 是機(jī)器人線速度,ang_vel 是機(jī)器人角速度。
圖4 PID 控制子系統(tǒng)
運(yùn)動(dòng)控制系統(tǒng)是用于模擬控制雙輪差速機(jī)器人的過程,控制量是左、右輪的轉(zhuǎn)速。圖5 是基礎(chǔ)控制器子系統(tǒng),將機(jī)器人線速度V和角速度解算為機(jī)器人左、右輪速度,解算依據(jù)約束方程進(jìn)行。該子系統(tǒng)對(duì)應(yīng)ROS 中的基礎(chǔ)控制器。
圖5 基礎(chǔ)控制器子系統(tǒng)
最后通過運(yùn)動(dòng)學(xué)模型子系統(tǒng)得出機(jī)器人的位姿。該子系統(tǒng)模擬機(jī)器人下位機(jī)即單片機(jī)控制機(jī)器人底盤移動(dòng)的過程。
本設(shè)計(jì)基于目前我國(guó)農(nóng)業(yè)自動(dòng)化、機(jī)械化的不斷推行,以及我國(guó)農(nóng)業(yè)生產(chǎn)對(duì)自動(dòng)化需求的不斷提升,開發(fā)一款可以用于田地播種的自動(dòng)播種機(jī)器人,以此來代替人工。該機(jī)器人理論上能適應(yīng)田地惡劣的環(huán)境,最后又通過仿真確定了其可行性和有效性。