曾穎琳,董 欣,倪 鵬,郭 斌
(新疆農業(yè)大學計算機與信息工程學院,新疆 烏魯木齊830052)
目前,人工智能和自動化技術的快速發(fā)展引領了許多產業(yè)的飛速進步,越來越多的智能控制產品走進了人們的生活。自動駕駛車應用了智能控制、模式識別、計算機、傳感器等多種技術[1]。自動駕駛車的應用不但可以有效地緩解交通問題,而且可以把人從駕駛過程中解放出來,避免由疲勞駕駛、酒駕、操作失誤等引起的突發(fā)意外,從而為人們的生活提供便利,因此,它越來越受到人們的密切關注。智能避障小車是自動駕駛車的雛形,也是必備的基礎之一,其主要是解決車在行駛過程中的自動避開障礙物的問題,這一問題的解決也是輔助車自動駕駛的必要條件之一,所以對其進行研究和探討具有一定的意義。目前,各院校都有過對智能避障小車研究的報道,且獲得了一定的應用。作為自動駕駛的重要基礎,利用所學的知識實現(xiàn)智能避障小車不但為以后的開發(fā)積累必要的經驗,也是進一步研究的必經之路。本文是以Arduino 開發(fā)板作為核心控制器,結合超聲波傳感器、電機、舵機等硬件設計和程序調用,實現(xiàn)避障功能以達到小車的自動行駛。
本設計選用Arduino 微處理器作為主控芯片。它是目前被使用較為廣泛的電子芯片,其開發(fā)語言為C 語言,具有使用簡單的優(yōu)點[2]。Arduino 的主要特點是其參數(shù)的函數(shù)化設置,它在很大程度上降低了開發(fā)的門檻,因此用戶不用從底層了解它的結構。此外,它還可以簡單地與各種傳感器和電子元器件進行連接,便于開發(fā)和功能擴展。在本設計中,智能小車搭載超聲波傳感器、舵機作為避障模塊的核心器件,它在Arduino 的控制下對小車行駛的路況進行相應的信息采集,并將檢測到的信息反饋給Arduino 進行處理,Arduino通過調用程序可控制小車作出相應動作,從而實現(xiàn)避障功能。
系統(tǒng)框圖1 如示。
圖1 系統(tǒng)框圖
智能小車的設計共包括電源、電機驅動、舵機、避障4個主要功能模塊,各模塊間相互配合,共同實現(xiàn)智能小車的行駛、避障檢測和避障功能,其總體原理如圖2 所示。
圖2 設計原理圖
電源是整個硬件電路的重要組成部分[3]。它可以為系統(tǒng)電路提供穩(wěn)定的工作電壓,使其正常工作。鋰電池具有電壓穩(wěn)定、價格低等特點,此外,它還可以進行充電,進行循環(huán)使用[4]。本設計供電電壓范圍為6.5~9 V,基于鋰電池的上述特點,選用兩節(jié)3.7 V 的鋰電池和電池盒進行組合,為系統(tǒng)工作提供7.4 V 的穩(wěn)定電壓。
步進電機的位移由脈沖得來的。當有脈沖信號時,電機會在該信號的驅使下按照預設的方向朝固定的角度進行旋轉。為了使定位變得準確而有效,可以通過改變步進電機的脈沖個數(shù),從而使它的角位移量發(fā)生相應的變化。此外,更改脈沖的頻率可以實現(xiàn)調整轉動速度的目的。
電機作為智能小車的驅動裝置,其選擇合適與否會對系統(tǒng)電路的正常運行起重要的作用[5]。本設計選用的兩個電機的型號都是L293D,它不僅具有價格便宜、易于控制的特點,而且還具有高速變化的四倍高電流H 橋驅動程序,可以提供高達600 mA 的雙向驅動電流,寬電壓供電范圍可以達到4.5~36 V,故其滿足智能小車的設計條件。L239D 內部等效圖如圖3 所示。
圖3 L239D 內部等效圖
目前,在智能控制系統(tǒng)中舵機的使用越來越普遍。在智能小車設計過程中,它可以帶動超聲波探頭、攝像頭等旋轉,保持或改變方向,對智能小車進行轉彎控制或信息采集。舵機中起控制作用的信號為PWM 信號(脈寬調制信號),控制的信號基準周期為20 ms,脈沖寬度介于0.5~2.5 ms 之間,可調整的旋轉角度為﹣90°~90°[6]。舵機能夠控制旋轉角度的變化,是利用PWM 信號脈沖寬度的占空比來調節(jié)位置的改變,根據(jù)脈沖寬度,舵機會旋轉一定的角度到達相應的位置。
本設計采用舵機型號為SG90,在不帶負載的情況下,它的反應轉速可以達0.12 s/60°(4.8 V),轉角的最大角度為180°,正常的工作電壓介于3.5~6 V。舵機脈沖寬度與轉角關系如表1 所示。
表1 舵機脈沖寬度與轉角關系
如今,科學技術不斷發(fā)展,智能小車能應用的傳感器種類越來越多[7]。在眾多傳感器當中,超聲波傳感器已然成為智能小車實現(xiàn)自動避障應用的首選器件。超聲波是一種機械波,其指向性相對較強,頻率較高,繞射現(xiàn)象小,很適合用來測距。
在本設計中使用的避障模塊選用的是HC-SR04,它有4個接口端,即為VCC、GND、接收端Echo、控制端Trig,實物如圖4 所示。它采用ⅠO 觸發(fā)的方式進行測距,通過利用超聲波信號從控制端到接收端的高電平持續(xù)時間和聲波在空氣中的傳播原理,實現(xiàn)計算障礙物的距離,從而完成避障的功能,其工作時序如圖5 所示。此外,HC-SR04 的正常工作電壓在5 V 左右,測量角度小于等于15°,當距離物體越遠時探測的角度越大。
在本設計當中,利用HC-SR04 與SG90 舵機相結合來采集障礙物的位置信息。當智能小車碰到障礙物時,信號可以反射到超聲波傳感器上,在進行對障礙物位置信息的分析和處理后反饋給Arduino 處理芯片,使其調用相應的程序作出應對措施,根據(jù)超聲波的反射效應并且配合舵機0°~180°的旋轉,從而實現(xiàn)躲避障礙物的目的[8]。
圖4 HC-SR04 實物圖
圖5 超聲波時序圖
本設計用于避障的傳感器是HC-SR04,其采用基于ⅠO觸發(fā)實現(xiàn)測距功能,測距時,首先Trig 端會發(fā)送10 μs 以上脈沖觸發(fā)信號,模塊將會循環(huán)發(fā)出8 個方波脈沖信號,每個脈沖信號頻率均為40 kHz,并且通過自動檢測有無回波來判斷傳感器前方是否有物體。如果檢測到有回波時,Echo 端中的輸出信號為高電平,由其持續(xù)的時間可知超聲波從發(fā)送到被接收的用時。計算公式為:
式(1)中:T為測試距離;Rh為高電平時間;Vi為聲速(340 m/s)。
HC-SR04 的應用原理是應先由控制口發(fā)送出高電平,它持續(xù)的時間為10 μs 以上,然后,在接收口檢測高電平的輸出。一旦檢測到輸出信號定時器開始計時,持續(xù)一段時間后,如果接收口中的信號由高電平變?yōu)榈碗娖綍r,即可讀取定時器的值,此時,定時器記錄的數(shù)值即為測距時間,由時間、聲速和距離的關系,便可以算出測量距離。
智能小車在行駛的過程中,通過安裝在車底盤前的超聲波和舵機來檢測周圍環(huán)境。在舵機的帶動下,超聲波傳感器可以不斷地檢測左、前、右3 個方向是否存在障礙物。如遇障礙物時,智能小車會根據(jù)這3 個方向對障礙物的距離進行比較,從而作出行駛判斷,自動避開障礙物。小車行駛時可能會在不同方向遇到障礙物,一般是左、右、前3 個方向。要想小車對避障物采取有效的應對措施,需要開發(fā)這3 個方向的避障算法以準確地判斷障礙物的位置信息,小車的避障流程如圖6 所示。
避障算法的主要判斷小車與不同方向物體的距離,即小車在行駛時,超聲波傳感器首先檢測正前方物體的距離,若小車前方25 cm 以上都沒有物體時,小車則繼續(xù)向前行駛,如果檢測到前方25 cm 以內存在物體時,小車會減速,待小車停止后舵機云臺會繼續(xù)帶著HC-SR04 傳感器檢測左、右障礙物的距離,如果左邊障礙物的距離大于右邊,小車會向左轉然后前進,如果右邊障礙物的距離大于左邊,小車會向右轉然后前進,如果小車前方還會有障礙物,小車會重復上述過程,調整角度避開所有障礙物。
為了驗證小車的避障性能,在設置實驗環(huán)境時,通過利用一些簡單的物體作為障礙物來規(guī)定小車行駛的特定的路線,由此來驗證小車的避障效果。
圖6 小車避障流程圖
智能小車前進時通過舵機和超聲波不斷檢測前方,當遇到障礙物時,超聲波判斷出障礙物的位置后返回一個信號,Arduino 根據(jù)反饋信號調用程序比較小車與障礙物的距離,從而控制小車靠前、靠左或靠右行駛,有效地規(guī)避障礙物,實驗效果如圖7 所示。
圖7 小車避障實驗圖
本設計利用Arduino 處理芯片,并結合電源、電機驅動、舵機、超聲波等模塊開發(fā)了自動避障小車,并驗證了小車的自動避障的可行性。通過設計小車沿規(guī)定避障路線行駛實驗,經測試后證明了小車的避障性能良好。雖然小車可以很好地完成行進過程中的避障作業(yè),但是,智能小車還存在一些不足之處,例如,只采用一組超聲波和舵機結合,舵機的旋轉角度有限,小車不能全方位進行避障,如果搭配多組超聲波和舵機或采用性能更好的傳感器,它的自動避障效果可能會更好。