孫沐紫 潘嘉鑫 許釗赫 張文聰
【摘? 要】本文基于OpenMV和Arduino設(shè)計了智能巡線機(jī)器人小車,有效解決了識別路徑準(zhǔn)確性低和快速性差的難題。文中基于Arduino開發(fā)板系統(tǒng)設(shè)計的循跡避障智能車,它采用OpenMV機(jī)器視覺模塊和PID控制算法進(jìn)行循跡,以及超聲波測距模塊進(jìn)行避障處理。在機(jī)器視覺方面,采用顏色識別算法、閾值二值化處理、權(quán)重計算、線性回歸算法、路徑追蹤和圖像捕捉等算法。完成了小車躲避障礙物及沿特定路線行駛的任務(wù)。最后,通過實驗,驗證了文中所設(shè)計小車智能行駛的準(zhǔn)確性和快速性。
【關(guān)鍵詞】循跡避障;智能車;PID算法;機(jī)器視覺
1. 引言
當(dāng)今世界,科技水平和人工智能發(fā)展非常迅速,每個人的行為與生活方式及工業(yè)的運作流程都受到了影響,研究能夠自動躲避障礙物并能沿特定路線行駛的智能小車已然成為研究的熱點。[1]。智能小車集道路感知、路徑規(guī)劃于一體,常見的設(shè)計方案以stm32或Arduino作為主控,結(jié)合多路傳感器,利用紅外循跡模塊進(jìn)行路徑追蹤,利用超聲波傳感器完成避障[2]。
在已有超聲波避障的方法中,大多方案采用收集小車正前方、左方和右方的數(shù)據(jù),將左右方數(shù)據(jù)與障礙距離判向值進(jìn)行對比作為轉(zhuǎn)向依據(jù),但該方法存在探測盲區(qū);現(xiàn)有智能車巡線設(shè)計大多采用多個紅外傳感器用來環(huán)境數(shù)據(jù)采集,由于傳感器獲取的信息存在不連續(xù)、不完全以及不可靠的特點,該巡線方式對于復(fù)雜路況有一定缺陷[3-4]。因此,本文采用了超聲波測距避障及OpenMV巡線信息融合的采集方法,設(shè)計了具有超聲避障、循跡路線的雙功能巡線避障小車,優(yōu)勢互補,使采集的信息更加完善可靠,有望在工業(yè)運作中得到應(yīng)用。
2. 智能車總體設(shè)計
智能循跡避障小車以Arduino為主控制器,電源模塊、OpenMV機(jī)器視覺模塊、超聲波測距模塊、驅(qū)動放大模塊、舵機(jī)轉(zhuǎn)向模塊組成硬件系統(tǒng)部分。在超聲波避障方面,是以傳感器傳回的數(shù)據(jù)為基礎(chǔ),Arduino進(jìn)行運算處理,對轉(zhuǎn)向舵機(jī)及電機(jī)進(jìn)行控制;循跡路線功能通過串口通訊,將OpenMV模塊采集的數(shù)據(jù)傳輸給Arduino主控板,控制電機(jī)速度和舵機(jī)轉(zhuǎn)向,完成功能。小車的機(jī)械結(jié)構(gòu)采用對稱結(jié)構(gòu)設(shè)計,3D打印車模、減速比大的電機(jī),可以完成爬坡等動作,解決重心不穩(wěn)、載重小等問題。
系統(tǒng)驅(qū)動電路大體分為兩部分,首先采用具有三態(tài)輸出的八路緩沖器74LS541,該芯片將主控的控制信號傳送給由大功率直流電機(jī)驅(qū)動芯片構(gòu)成的雙BTS7960 H橋驅(qū)動電路,由于同時使用兩個芯片會輸出一個較大電流在BTS7960芯片與電源線路中流過,芯片封裝與電源平面的電感和電阻會引發(fā)電源噪聲,所以在此處添加具有極性的鉭電容用來穩(wěn)定降噪,防止地面反彈,從而使電機(jī)正常且穩(wěn)定驅(qū)動[5]。
541線路驅(qū)動電路以及雙BTS7960H橋驅(qū)動電路分別如圖2、圖3所示。
3. 控制原理及算法設(shè)計
3.1循跡算法設(shè)計
循跡算法設(shè)計如圖4所示。
3.1.1. 圖像預(yù)處理
OpenMV模塊在采集和傳輸圖像過程中受多種因素的影響,圖像會產(chǎn)生較大噪聲,因而需要對采集的圖像進(jìn)行預(yù)處理。
在選定小車行駛的軌跡后,應(yīng)預(yù)先進(jìn)行賽道顏色閾值采集,使用OpenMV IDE自帶的閾值調(diào)節(jié)工具,獲取更加穩(wěn)定的顏色閾值,采集圖像后,進(jìn)行二值化處理,即將圖像轉(zhuǎn)化為黑白圖。
當(dāng)選定的分割閾值使前景區(qū)域的平均灰度、背景區(qū)域的平均灰度與整幅圖像的平均灰度之間差距最大時,為較為理想的分割閾值。該差別用區(qū)域的方差來表示,其相互關(guān)系如下所示:
二值化后采用腐蝕(erode)跟膨脹(dilate)的組合進(jìn)行數(shù)學(xué)形態(tài)學(xué)的計算,可以很好地過濾噪聲、去除小孔洞、區(qū)分線路邊界。圖像預(yù)處理及返回值如圖5。
3.1.2. OpenMV巡線通信
將圖像分成若干ROI(感興趣區(qū)),根據(jù)控制對象和OpenMV的姿態(tài)確定并賦予每個區(qū)域權(quán)值,距離鏡頭越遠(yuǎn)的權(quán)重越小,對每個區(qū)域各自調(diào)用find_blobs函數(shù),根據(jù)面積大小過濾尋找區(qū)域內(nèi)最大的色塊,用每個區(qū)域的最大顏色塊的中心點的x坐標(biāo)值乘本區(qū)域的權(quán)值進(jìn)行加權(quán)平均計算,算出偏移畫面的偏移量和曲線曲率。
通過Arduino與OpenMV的通信,將計算的偏差角度送給Arduino開發(fā)板,通過PID算法對小車姿態(tài)進(jìn)行不斷地調(diào)整,進(jìn)而達(dá)成精準(zhǔn)循跡目的,穩(wěn)定性較好,具有較強的魯棒性。智能車設(shè)計實物圖如下圖6所示。
3.2. 避障算法設(shè)計
本設(shè)計以HS-SR04超聲波模塊承擔(dān)測距避障任務(wù),利用該模塊,可以測量距離,進(jìn)而判斷前方道路是否存在障礙,且對于同一角度的測距,應(yīng)采集三次,取平均值以減小誤差。該模塊通過施加一個超過10us的脈沖觸發(fā)信號,模塊內(nèi)將發(fā)出8個40kHz的周期電平并檢測回波,一旦接收端接收到返回信號,則輸出回響信號,回響信號的脈寬與距離呈線性關(guān)系[7-8],設(shè)距離為y厘米、回響信號的高電平時間為x、此時的聲速z米/秒,則
通過距離的測量,分段控制兩個直流電機(jī),進(jìn)而控制小車的前進(jìn)速度,在距離障礙物過近時也能快速停下來;判斷各方位的距離遠(yuǎn),控制舵機(jī)轉(zhuǎn)向,若前方出現(xiàn)障礙,小車進(jìn)行危險檢測,由于超聲波模塊的最大感應(yīng)角為15°,以小車正前方為基準(zhǔn)角0°,通過將超聲波傳感器前方180°視野分為六個區(qū),即以30°劃分[9],基本能覆蓋小車前方的180°區(qū)域,程序運行時采集六個區(qū)的邊界點距離,根據(jù)與最大檢測有效距離和采集的其余值比較,因為超聲波傳感器最大檢測的有效距離有限,對數(shù)據(jù)進(jìn)行處理,采取限幅,將最大距離設(shè)定為固定值,再根據(jù)最大值確定舵機(jī)的轉(zhuǎn)動角度,進(jìn)而達(dá)到避障的目的。避障算法設(shè)計如圖8所示。
3.3. 小車調(diào)試結(jié)果分析
本文搭建了小車的測試軌道,前半段為障礙物路段,后半段為循跡路段[10],經(jīng)過調(diào)試,小車能夠完成一些基本的避障任務(wù),而且能夠較好地克服其他單一點采集的方法存在的問題,使小車能夠順利實現(xiàn)避障任務(wù)。
通過將曲線擬合,得到較為符合設(shè)計要求的返回值與理論值之間的函數(shù)關(guān)系式,由于電機(jī)扭矩并不完全相同,前進(jìn)時存在偏差,小車不斷前進(jìn)過程中,偏差不斷累計,導(dǎo)致影響最終效果,所以初步設(shè)想兩種誤差補償方案:方案1.在OpenMV返回的角度值后增加5°(右轉(zhuǎn))作為偏差量補償;方案2.假設(shè)理論值為f(x),實際值為x,補償量△x,△x=f(x)-x,進(jìn)而在每次動作步之后進(jìn)行參量補償,實現(xiàn)誤差修正,使小車得以穩(wěn)定前進(jìn)。根據(jù)補償?shù)男Ч?,選用方案2作為本次誤差補償方案。
4. 結(jié)論
本文給出了基于Arduino開發(fā)板的巡線避障智能車的設(shè)計與實現(xiàn)方案,能夠?qū)崿F(xiàn)巡線和自動避障,并且具有性能穩(wěn)定、操作簡單的優(yōu)點。設(shè)計過程中采用OpenMV作為視覺處理模塊,可拓展性強。大量設(shè)定路線和障礙物的實驗表明,本文所設(shè)計小車能夠成功地實現(xiàn)障礙物躲避和沿設(shè)定路線行駛,有望在數(shù)字物流等工業(yè)或生活領(lǐng)域中得到應(yīng)用。
作者在以后的研究中將考慮在此基礎(chǔ)上編寫其他功能,如條形碼識別顏色追蹤,能夠根據(jù)條形碼實現(xiàn)貨物堆放等,以適應(yīng)更為復(fù)雜的路線。
參考文獻(xiàn):
[1]付琳,王宗冕,楊達(dá)琛,田貝贈,張子威,鄭淼建.基于Arduino單片機(jī)的智能快遞小車設(shè)計[J].內(nèi)燃機(jī)與配件,2020(17):198-199.
[2]趙云娥,吳振強.基于Arduino的雙模式智能避障小車系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2017,40(21):94-97.
[3]彭登峰.具有避障及循跡功能的智能小車系統(tǒng)設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2020,38(11):7-9.
[4]趙旭磊,耿召里,李小華.智能小車避障算法和速度調(diào)節(jié)算法研究[J].遼寧科技大學(xué)學(xué)報,2018,41(03):212-217.
[5]宋洪慧,李春芾,朱江.智能小車直流電機(jī)驅(qū)動電路設(shè)計[J].機(jī)電技術(shù),2015(06):84-87.
[6]李思熠,王少坤.基于OpenMV和Arduino的智能巡線機(jī)器人[J].科技與創(chuàng)新,2020(22):50-53.
[7]程立英,李鵬飛,白雪.基于Arduino單片機(jī)控制的避障小車的設(shè)計方案[J].計算機(jī)產(chǎn)品與流通,2018(12):277.
[8]王坤,劉紅,廖小琴,韋啟旻,張穎. 智能滅火車的設(shè)計[J]. 計算機(jī)科學(xué)與應(yīng)用,2016,6(12):786-793. http://dx.doi.org/10.12677/CSA.2016.612094
[9]李成成,張曉玲.智能小車循跡避障的新策略[J].計算機(jī)與數(shù)字工程,2019,47(04):966-969+974.
[10]閆博揚,李玉衡,姚磊.基于Arduino開發(fā)板的自動循跡避障智能車控制系統(tǒng)設(shè)計[J].軟件,2020,41(07):57-60.
基金項目:
國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目 S202010429168
作者簡介:
孫沐紫,女,2000.10.24,漢族,黑龍江樺南,就讀于青島理工大學(xué)電氣工程及其自動化專業(yè),在讀,研究方向:模塊化多電平變換器。