宋 雷,李浩欣,郭 順,徐 航,陳龍崇,韓鈺綿
(廣東技術(shù)師范大學(xué) 機(jī)電學(xué)院,廣東 廣州 510635)
現(xiàn)代科學(xué)技術(shù)飛速發(fā)展,人工智能技術(shù)在農(nóng)業(yè)中也得到了大量的應(yīng)用。在農(nóng)業(yè)生產(chǎn)中對(duì)物資進(jìn)行短距離運(yùn)輸?shù)男枨筝^多,目前仍然以傳統(tǒng)的機(jī)電設(shè)備或人力作為運(yùn)輸方式,采用人工智能技術(shù)解決農(nóng)業(yè)短距離運(yùn)輸?shù)膯栴}將對(duì)農(nóng)業(yè)的發(fā)展提供有效的技術(shù)支撐。
目前智能運(yùn)輸設(shè)備已有一定的研究進(jìn)展,例如AGV(自動(dòng)引導(dǎo)運(yùn)輸車)[1]在設(shè)定好的路徑上通過自動(dòng)引導(dǎo)裝置自動(dòng)行駛,在物流倉(cāng)儲(chǔ)中的應(yīng)用可以提高貨物的流動(dòng)性和靈活性;王蕾[2]等人設(shè)計(jì)的智能物流小車中應(yīng)用了A3C算法,使小車擁有較高的避障能力;盧忠亮[3]等人開發(fā)的智能物流小車結(jié)合射頻識(shí)別技術(shù)對(duì)線路或物件的電子標(biāo)簽進(jìn)行識(shí)別,提高了物流小車在運(yùn)輸過程的路徑識(shí)別和定位能力,大幅度節(jié)省了運(yùn)輸?shù)某杀?。從上述文獻(xiàn)可以發(fā)現(xiàn)人工智能技術(shù)可以較好地解決短距離運(yùn)輸問題,設(shè)計(jì)開發(fā)基于人工智能農(nóng)業(yè)智能運(yùn)輸小車必將大幅度提高農(nóng)業(yè)生產(chǎn)效率。
本文基于圖像識(shí)別,運(yùn)動(dòng)控制等技術(shù)開發(fā)設(shè)計(jì)了一款應(yīng)用于農(nóng)業(yè)生產(chǎn)的短距離運(yùn)輸智能運(yùn)輸小車。該小車以Arduino作為控制核心、OpenMV作為機(jī)器視覺模塊、LM298作為驅(qū)動(dòng)模塊、JQ8900-16P作為語音播報(bào)模塊、同時(shí)采用麥克納姆輪作為運(yùn)動(dòng)機(jī)構(gòu),通過以上元器件的共同合作下從而實(shí)現(xiàn)智能運(yùn)輸小車的二維碼識(shí)別、顏色識(shí)別、路徑規(guī)劃、全向運(yùn)動(dòng)等智能運(yùn)輸要求。能夠在復(fù)雜的環(huán)境條件中快速達(dá)到運(yùn)輸目的。
該智能小車的總體方案如下圖1所示。
本系統(tǒng)主要由Arduino控制模塊、攝像頭模塊、電機(jī)底盤模塊、驅(qū)動(dòng)模塊、電源模塊、語音播報(bào)模塊、舵機(jī)及平板機(jī)械支架構(gòu)成組成。Arduino作為本系統(tǒng)的控制核心,利用攝像頭采集過來的數(shù)據(jù)通過黑白二值化,以此判別障礙物位置,交通燈情況,最終區(qū)域等關(guān)鍵數(shù)據(jù)。攝像頭對(duì)障礙物準(zhǔn)確定位,確定其坐標(biāo)位置,同時(shí)判別規(guī)定的各功能區(qū)域坐標(biāo),單片機(jī)通過返回的坐標(biāo)位置結(jié)合PID算法,給定LM298驅(qū)動(dòng)PWM輸出形成閉環(huán)控制系統(tǒng),從而控制小車躲避障礙物行駛。同時(shí),可通過修改算法中各區(qū)域的顏色閾值對(duì)現(xiàn)場(chǎng)環(huán)境作出適應(yīng)。
小車的總體結(jié)構(gòu)分為三大部分:底盤承載與運(yùn)動(dòng)機(jī)構(gòu)、貨倉(cāng)結(jié)構(gòu)設(shè)計(jì)、攝像頭固定調(diào)節(jié)機(jī)構(gòu)。小車通過攝像頭識(shí)別二維碼之后打開相應(yīng)的倉(cāng)門,發(fā)出語音提醒,裝入貨物,關(guān)閉倉(cāng)門,小車規(guī)劃路徑走到相應(yīng)的收貨地點(diǎn)。在小車行駛的過程中自動(dòng)識(shí)別障礙物,交通燈等,遵守交通規(guī)則。小車到達(dá)終點(diǎn)后發(fā)出語音提醒,識(shí)別二維碼取出貨物,自主規(guī)劃路徑返回出發(fā)區(qū)域。
圖2 智能小車的總體結(jié)構(gòu)
(1)智能小車的底盤承載運(yùn)動(dòng)機(jī)構(gòu)設(shè)計(jì)
小車的車體采用了矩形的四輪機(jī)構(gòu)。車輪采用了瑞典麥克納姆公司的專利——麥克納姆輪[4](如圖3)。麥克納姆輪的結(jié)構(gòu)組成與全向輪相似,都是由輪轂和輥?zhàn)咏M成,輪轂是整個(gè)輪子的支架,輥?zhàn)觿t是安裝在輪轂上的鼓狀物。但是全向輪的輪轂和輥?zhàn)拥霓D(zhuǎn)軸相互垂直,麥克納姆輪的輪轂和輥?zhàn)拥霓D(zhuǎn)軸成45°角[5]。同時(shí)麥克納姆輪可分為左旋輪以及右旋輪。
圖3 麥克納姆輪實(shí)物圖
小車車體通過4個(gè)電機(jī)的精確調(diào)速控制4個(gè)麥克納姆輪[6]不同的旋轉(zhuǎn)方向?qū)崿F(xiàn)小車的全向運(yùn)動(dòng)。四個(gè)車輪朝著同一個(gè)方向旋轉(zhuǎn),便可使小車前進(jìn)或者后退;對(duì)角的車輪旋轉(zhuǎn)方向相同,對(duì)角間的車輪旋轉(zhuǎn)方向不同,便可使左平移或者右平移;同側(cè)的車輪旋轉(zhuǎn)方向相同,而不同側(cè)的車輪旋轉(zhuǎn)方向不同,即可實(shí)現(xiàn)小車在原地360°旋轉(zhuǎn);若只是驅(qū)動(dòng)對(duì)角的兩個(gè)車輪即可實(shí)現(xiàn)小車在45°方向上斜進(jìn)。
由于小車的整體車身重量為2kg~3kg,底盤和驅(qū)動(dòng)輪受力較大,因此采用重量輕強(qiáng)度高的鋁合金板做底盤。
原底盤輔助連接結(jié)構(gòu)采用軸承式連接(如圖4),該結(jié)構(gòu)可以通過改變底盤形狀和角度在較復(fù)雜地形行進(jìn),但是軸承式有連接穩(wěn)定性差,受力易變形,結(jié)構(gòu)不可靠等缺點(diǎn)。由于底盤需要承受較大載荷,故對(duì)此輔助連接結(jié)構(gòu)進(jìn)行一些改進(jìn)。
圖4 底盤的軸承連接
采用小鋼板(如圖5)進(jìn)行連接,通過8個(gè)螺栓與底盤螺孔對(duì)應(yīng)連接,鋼板結(jié)構(gòu)受力面大,不容易發(fā)生旋轉(zhuǎn)和變形。改進(jìn)后,小車底盤結(jié)構(gòu)穩(wěn)定性提高了,可靠性也有提升,小車在行進(jìn)中,底盤不會(huì)發(fā)生變形,麥克納姆輪靈活性和穩(wěn)定性也得到提高。
圖5 底盤的小鋼板連接
(2)攝像頭固定調(diào)節(jié)機(jī)構(gòu)設(shè)計(jì)
攝像頭固定結(jié)構(gòu)、攝像頭高度調(diào)節(jié)結(jié)構(gòu)和攝像頭支架為自主設(shè)計(jì),鋁合金板材加工。攝像頭高度和角度調(diào)節(jié)螺母的松緊程度使攝像頭上下移動(dòng),擰緊螺母后固定(如圖6)。
圖6 圖像采集結(jié)構(gòu)裝配圖
(1)主控制器的選型
采用Arduino mega-2560作為主控器。Arduino是一款開源硬件,庫(kù)函數(shù)封裝完全,資料齊全,接口豐富,擴(kuò)展性高,開發(fā)簡(jiǎn)單,適合開源項(xiàng)目以及原型機(jī)的快速開發(fā)。完全可以實(shí)現(xiàn)本系統(tǒng)的各個(gè)設(shè)計(jì)任務(wù),具有良好的響應(yīng)速度。
(2)視覺采集裝置選型
OpenMV是比較適合本項(xiàng)目的一個(gè)機(jī)器視覺模塊,成本低,功能強(qiáng)大[7]。OpenMV具有眾多硬件接口,能夠高效率地實(shí)現(xiàn)機(jī)器視覺的算法。而且可用USB接口用于連接電腦上的集成開發(fā)環(huán)境OpenMV IDE,提供Python編程接口[8],協(xié)助完成編程、調(diào)試和更新固件等工作。
圖7 圖像識(shí)別流程圖
自動(dòng)控制原理是近年來在各個(gè)行業(yè)都比較受歡迎的一項(xiàng)技術(shù)。隨著直流電機(jī)制作工藝的提高,在電氣領(lǐng)域被應(yīng)用的也越來越廣泛。尤其是在近幾年來的機(jī)器人競(jìng)賽中,其中傳統(tǒng)的PID控制是最受歡迎的[9]。PID控制簡(jiǎn)單地說,是根據(jù)理想的運(yùn)動(dòng)和實(shí)際運(yùn)動(dòng)的差別構(gòu)建一個(gè)偏差量,將偏差按比例、積分和微分通過線性組合構(gòu)成控制量,對(duì)被控對(duì)象進(jìn)行控制。除此之外PID還可以采用增量式表達(dá)式,對(duì)于機(jī)械部件來說,計(jì)算機(jī)每次只輸出控制增量即可,從而減少了機(jī)器人故障發(fā)生時(shí)的過沖誤差累積等影響,并能實(shí)現(xiàn)無擾切換,同時(shí)PID控制也變得更加靈活了[10]。連續(xù)的PID控制,它根據(jù)給定值r(t)與實(shí)際輸出值c(t)構(gòu)成偏差:e(t)=r(t)-c(t)。將偏差的比例(P)、積分(I)和微分(D)通過線性組合構(gòu)成控制量,對(duì)受控對(duì)象進(jìn)行控制。其控制規(guī)律為:
傳遞函數(shù)為:
根據(jù)控制規(guī)律,得到n-1時(shí)刻的控制量:
可簡(jiǎn)化為:
式中,Kp為比例系數(shù),Ti為積分時(shí)間常數(shù),Td為微分時(shí)間常數(shù);Ki=Kp/Ti,為積分系數(shù);Kd=Kp*Td,為微分系數(shù)。
在本文的智能小車設(shè)計(jì)中,智能小車需要多次啟停,故采用增量式PID控制用于對(duì)小車速度調(diào)節(jié)和姿態(tài)控制。
通過OpenMV攝像頭進(jìn)行二維碼圖像識(shí)別,識(shí)別出需要運(yùn)輸?shù)奈锪虾托≤囆旭偟穆肪€,通過軟串口通訊將信息傳輸給Arduino。在小車行駛的過程中,識(shí)別道路上的紅綠燈以及障礙物,將紅綠燈與障礙物的信息發(fā)送給小車,最后識(shí)別出終點(diǎn)區(qū)域,將終點(diǎn)區(qū)域信息發(fā)送給小車。
采用OpenMV進(jìn)行圖像識(shí)別過程中需要先對(duì)OpenMV中的一些相機(jī)參數(shù)進(jìn)行設(shè)置,首先是采用sensor.reset()對(duì)感光元件初始化;第二需要選擇合適的分辨率和像素的模式,分辨率一般通過采用sensor.QVGA選擇320*240的QVGA模式,像素模式在OpenMV有灰度模式和色彩模式,本文研究的智能小車需要進(jìn)行顏色識(shí)別,故通過sensor.RGB565采用色彩模式;第三需要通過sensor.set_auto_gain (False)、sensor.set_au -to_whitebal(False)關(guān)閉白平衡,便于獲得穩(wěn)定的圖像。
圖8 程序流程圖
圖9 智能小車整機(jī)測(cè)試
系統(tǒng)上電,運(yùn)行程序,進(jìn)行自檢。自檢完成,由OpenMV識(shí)別二維碼,將識(shí)別后的信息發(fā)送到Arduino,Arduino控制語音播報(bào)模塊以及倉(cāng)門做出相對(duì)應(yīng)的要求,其次控制麥克納姆輪底盤行駛到指定的地點(diǎn)。在行駛過程中,OpenMV將識(shí)別到的障礙物以及交通燈的信息發(fā)送給Arduino,Arduino控制麥克納姆輪底盤避開障礙物,并在相應(yīng)的區(qū)域等待交通燈。到達(dá)指定的收貨區(qū)域后,進(jìn)行語音播報(bào)并且控制相應(yīng)的倉(cāng)門,取出物料。最后通過Arduino控制麥克納姆輪底盤自主規(guī)劃路徑回到出發(fā)區(qū)域。
OpenMV M7攝像頭上電,進(jìn)入程序,初始化攝像頭,設(shè)置攝像頭的時(shí)間等參數(shù),初始進(jìn)行二維碼的識(shí)別,將識(shí)別出來的信息通過串口發(fā)送到Arduino,Arduino控制舵機(jī)打開相對(duì)應(yīng)的倉(cāng)門以及在指定的道路上行駛。行駛過程中進(jìn)行對(duì)障礙物的識(shí)別,在每一幀的圖片中用矩形框住障礙物,用函數(shù)獲取矩形的中心x,y坐標(biāo)發(fā)送給Arduino,Arduino控制小車躲避障礙物行駛,并且在行駛過程中對(duì)紅綠燈進(jìn)行識(shí)別,將識(shí)別到的紅綠燈信息傳輸?shù)紸rduino中,如果是紅燈時(shí),Arduino控制小車停止,綠燈時(shí)控制小車正常行駛,通過了有紅綠燈的道路后,再次進(jìn)行障礙物的識(shí)別,控制小車躲避障礙物行駛,最后在行駛中進(jìn)行終點(diǎn)區(qū)域的識(shí)別,控制小車到達(dá)指定的終點(diǎn)區(qū)域。
將智能小車全部組裝好放入模擬環(huán)境中測(cè)試智能小車的運(yùn)轉(zhuǎn)情況,在測(cè)試過程中智能小車能夠正確發(fā)出對(duì)應(yīng)的語音提醒以及打開對(duì)應(yīng)的貨倉(cāng),正確的識(shí)別二維碼、交通信號(hào)燈,準(zhǔn)確地識(shí)別障礙物并自主進(jìn)行路徑規(guī)劃,到達(dá)指定收貨地點(diǎn)并發(fā)出相應(yīng)的語音提醒,待掃描二維碼取出貨物后自主規(guī)劃路徑回到出發(fā)區(qū)域。
本文設(shè)計(jì)開發(fā)一種農(nóng)業(yè)智能運(yùn)輸小車,該小車?yán)肙penMV進(jìn)行圖像識(shí)別,能夠精準(zhǔn)地對(duì)二維碼、障礙物等進(jìn)行識(shí)別;采用麥克納姆輪作為移動(dòng)機(jī)構(gòu),通過Arduino進(jìn)行運(yùn)動(dòng)控制,使農(nóng)業(yè)智能運(yùn)輸車能夠全向移動(dòng),快速將農(nóng)業(yè)物資送至指定地點(diǎn)。本文設(shè)計(jì)開發(fā)的農(nóng)業(yè)智能運(yùn)輸小車具有較高的運(yùn)輸效率,實(shí)現(xiàn)了人工智能技術(shù)與農(nóng)業(yè)生產(chǎn)裝備的有效集成,可以大幅度提高農(nóng)業(yè)生產(chǎn)效率。