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