陳淑瑜,楊豪,韋德泉,孫亞寧
(1.棗莊學院 機電工程學院,山東 棗莊 277160;2.棗莊學院 光電工程學院,山東 棗莊 277160)
機器人技術(shù)近些年得到了快速的發(fā)展,智能種菜機器人、林下作業(yè)機器人、掃地機器人等逐漸被應(yīng)用于生活中[1~7].近年來,國家高度重視鄉(xiāng)村振興,并加大對農(nóng)村的投入力度[8],為了減輕農(nóng)民負擔,減少農(nóng)藥對人身體的危害,本文設(shè)計制作了一款農(nóng)田打藥機器人,并且進行了測試,研究結(jié)論為農(nóng)田打藥機器人的制作提供參考.
主體模塊選用了履帶式機器小車底盤,如圖1履帶式機器小車采用了12V的直流電機,鋁合金的金屬骨架,其履帶式的車輪設(shè)計適用于打藥機器人的實際工作環(huán)境.履帶是價格低廉的塑料履帶,而且防滑功能較好.履帶小車適應(yīng)野外的各種復(fù)雜環(huán)境,能夠較好的實現(xiàn)其驅(qū)動目的.
圖1 履帶式機器小車 圖2 光電傳感器
控制模塊選用了STC15F2K60S2單片機.此單片機是8051單片機的增強版,STC15F2K60S2單片機比傳統(tǒng)的51單片機運行速度快很多,在相同時鐘下,最快可以比51單片機快12倍.無需外接最小系統(tǒng)電路.內(nèi)部集成多路PWM控制器,可以同時獨立輸出多路PWM,具有兩個串口,內(nèi)部集成時鐘電路,時鐘頻率可以進行配置.
用光電開關(guān)傳感器作為避障模塊,如圖2所示,光電開關(guān)傳感器通過前面的遮光程度來實現(xiàn)避障的,傳感器上面有兩個小燈,一個燈發(fā)射紅外線,照到物體后,會發(fā)生漫反射.如果另一個燈收到,就會給一個低電平.
基于OpenCV視覺庫的視覺循跡.OpenCV(open source computer vision library)是一個開源的計算機視覺庫,可以在市面上流行的主流操作系統(tǒng)上運行.視覺庫里面提前裝了許多圖像處理算法的函數(shù),所以它十分的高效.視覺循跡是使用攝像頭采集車輛前方行走路徑的圖像,進行圖像識別,并判斷小車的位置.視覺循跡技術(shù)的特點是它具有較為準確的定位而且技術(shù)成本較低.視覺循跡對于各種復(fù)雜的工作環(huán)境都可以達到穩(wěn)定循跡的效果.
機械式打藥機的工作原理是根據(jù)伯努利原理制做而成.伯努利原理所說的是壓強越大,液體的流速就會越大;而壓強越小,流速就會越小.設(shè)計在機器小車上安裝一個小型的抽水泵,加一個塑料軟管,將藥液噴灑出去.再安裝一個舵機,實現(xiàn)藥管左右晃動打藥.
圖3 系統(tǒng)框圖
本設(shè)計運用Linux Ubuntu 16.04發(fā)行版,在Linux上運用了ROS kinetic發(fā)行版.編程語言用的是Python.ROS的通信機制:ROS(robot operating system)是一個開源的機器人軟件平臺.ROS系統(tǒng)最大的特點就是它的發(fā)布-訂閱式的框架結(jié)構(gòu).正基于此,該設(shè)計選擇了ROS系統(tǒng)來作為農(nóng)田打藥機器人的控制操作系統(tǒng).OpenCV作為視覺節(jié)點,其它傳感器采集的信息通過MCU處理后,經(jīng)總線發(fā)送至PC端,PC端通過專門的節(jié)點進行處理.各節(jié)點經(jīng)分析綜合,給出機器人的運動方案,再經(jīng)總線傳給機器人驅(qū)動層.為了提高系統(tǒng)的穩(wěn)定性,避免因為串口失效引起系統(tǒng)崩潰,我們將計算機視覺部分與串口通信部分分離.
2.2.1 視覺節(jié)點程序設(shè)計
首先導(dǎo)入OpenCV圖像處理庫,創(chuàng)建攝像頭對象并打開攝像頭,然后讀取攝像頭進入主循環(huán),在主循環(huán)中首先判斷攝像頭是否成功讀取到了攝像頭數(shù)據(jù),如果數(shù)據(jù)正確讀取就對圖片進行處理,如果沒有成功獲取就繼續(xù)讀取.圖片處理中首先對圖片進行高斯濾波,然后是顏色空間變換,將原本的RGB轉(zhuǎn)化為SVH,這樣使得程序更好的對圖片的色彩以及飽和度信息進行判斷和分類,然后對圖片進行二值化,二值化后的數(shù)據(jù)只有黑白二種顏色,通過調(diào)用函數(shù)找到二值圖像中所有的連通域并通過編寫算法找到最大連通域,畫出最大連通域的最小外接正四邊形并找出正四邊形的幾何中心,我們定義該點為小車下一步要達到的目標點.最后通過topic廣播出去.流程圖如圖4所示.
圖4 視覺節(jié)點流程圖
2.2.2 串口收發(fā)節(jié)點程序設(shè)計
該部分主要負責訂閱監(jiān)聽來自視覺節(jié)點的話題,并根據(jù)話題內(nèi)容決定小車的走向,并通過串口發(fā)送給小車.該部分原可以放入視覺節(jié)點中,但考慮到如果結(jié)點因為兩個設(shè)備中一個設(shè)備故障而失效時可能會帶來另一個設(shè)備被占用而無法重啟節(jié)點,所以添加此節(jié)點.
在該節(jié)點中首先導(dǎo)入串口處理函數(shù)庫并打開對應(yīng)串口,然后編寫監(jiān)聽的回調(diào)函數(shù),最后注冊監(jiān)聽來自視覺節(jié)點的話題,進入等待階段.當受到訂閱的消息時系統(tǒng)會自動調(diào)用回調(diào)函數(shù),在回調(diào)函數(shù)中首先對接收到的消息進行判斷,然后得出小車應(yīng)該直行、左轉(zhuǎn)或者右轉(zhuǎn),最后把小車方向控制信息通過串口發(fā)送給小車.該部分程序流程圖如圖5所示.
圖5 控制節(jié)點流程圖 圖6 單片機流程圖
實時采集傳感器并將傳感器采集到的信息經(jīng)處理后上傳,并且接受來自PC端的命令,控制電機,來完成PC端想要機器人完成的動作.該部分程序流程圖如圖6所示.
調(diào)試地點選擇了足球場的草地,模擬了一條白線為農(nóng)田的路徑,也就是機器人運動的路徑.經(jīng)實地調(diào)試發(fā)現(xiàn),實現(xiàn)了用ROS系統(tǒng)控制機器人的驅(qū)動,機器人根據(jù)PC端發(fā)出的指令進行前進后退以及轉(zhuǎn)彎.機器人會根據(jù)前方安裝的光電開關(guān)傳回來的路徑信息進行反饋避障,并根據(jù)視覺攝像頭進行視覺循跡,通過在機器人身上安裝的打藥機械裝置完成農(nóng)田打藥工作.
圖7 視覺循跡圖 圖8 ROS操作界面圖
圖9 整體實物圖
基于ROS操作系統(tǒng)的農(nóng)田打藥機器人是將傳統(tǒng)的農(nóng)田打藥機械裝置和循跡避障智能車相結(jié)合,能夠通過電腦操作從而控制機器人進行農(nóng)田打藥.該設(shè)計將傳統(tǒng)的循跡智能車進行了優(yōu)化,將傳統(tǒng)循跡智能車所采用的超聲波傳感器換成了基于OpenCV視覺庫的攝像頭視覺循跡,此改良能夠進一步的提升機器人的準確定位,利于人們對于機器人的控制.基于ROS操作系統(tǒng)的農(nóng)田打藥機器人能夠大大的提高農(nóng)田打藥工作的效率,并且省時省力,能夠很好的減輕人工負擔.