黃傳翔
(江蘇安全技術(shù)職業(yè)學(xué)院,江蘇徐州,221000)
本文采用Arduino單片機(jī)的開發(fā)平臺進(jìn)行小車系統(tǒng)的設(shè)計(jì),微控制器為核心,用來驅(qū)動傳感器使其進(jìn)行信息采集,然后進(jìn)行信息融合、處理,最終做出正確的決定來控制電機(jī)實(shí)現(xiàn)小車的驅(qū)動。本文研究了小車在復(fù)雜環(huán)境中的避障算法,最后對小車的功能進(jìn)行了測試。圖1為小車的基本結(jié)構(gòu)圖。
圖1 小車的基本結(jié)構(gòu)圖
本文采用四輪移動平臺,其結(jié)構(gòu)簡單、驅(qū)動控制便捷、接觸面積大、承載能力強(qiáng)、推進(jìn)力好、轉(zhuǎn)向靈活以及移動迅速平穩(wěn)。四輪小車驅(qū)動控制方式主要有兩輪和四輪驅(qū)動,兩輪驅(qū)動方式一般為后輪驅(qū)動、前輪轉(zhuǎn)向來實(shí)現(xiàn)小車的運(yùn)行與轉(zhuǎn)彎,在制作方面需要利用舵機(jī)實(shí)現(xiàn)小車前輪的左右轉(zhuǎn)動,但存在穩(wěn)定性較差的問題。為了克服兩輪小車的缺點(diǎn),本文采用四輪驅(qū)動車。
本文檢測系統(tǒng)包括循跡檢測、距離檢測和速度檢測。其中循跡檢測采用紅外傳感器的循跡方式,在小車前排安裝3個紅外傳感器,可以在直路上實(shí)現(xiàn)穩(wěn)定控制,在S曲線路徑中優(yōu)化行進(jìn)路線并降低調(diào)整次數(shù)。其次,距離檢測選用超聲波測距和紅外測距傳感器相結(jié)合的方式,實(shí)現(xiàn)小車的自動避障功能。這兩種傳感器的結(jié)合可以提高避障的準(zhǔn)確性和可靠性,且超聲波與紅外線不會出現(xiàn)信號干擾。最后,速度檢測選用紅外光電碼盤進(jìn)行測速。測距輪安裝在機(jī)器人小車的輪子上,以此來提高準(zhǔn)確性。遮光盤上的缺口結(jié)構(gòu)和凹形光電耦合器相互配合,實(shí)現(xiàn)信號的收發(fā)功能。
本文所使用的Arduino Uno R3開發(fā)板采用的是ATme ga328p作為主控制芯片,ATmega328p是一款功耗較低、性價比較高的AVR 8位微控制器。
機(jī)器人小車的整體動力來自電機(jī),通常選用步進(jìn)電機(jī)或直流減速電機(jī)來驅(qū)動,而直流減速電機(jī)有扭矩大、噪聲低、穩(wěn)定性好和響應(yīng)靈敏等優(yōu)點(diǎn),同時電機(jī)具有新型密封裝置,可以保證工作效率。本文選用L293D驅(qū)動控制芯片的直流減速電機(jī)。利用脈沖寬度調(diào)制(PWM)和電機(jī)驅(qū)動部件控制電機(jī)的轉(zhuǎn)速,PWM調(diào)整占空比來改變電機(jī)電壓,進(jìn)而起到控制的目的。電機(jī)驅(qū)動電路如圖2所示。
圖2 L293D電機(jī)驅(qū)動原理圖
ENABLE1、INPUT1和INPUT2作為一組驅(qū)動接口,其中ENABLE1與Arduino板上的PWM輸出端相連,實(shí)現(xiàn)PWM的輸出。INPUT1和INPUT2為電機(jī)提供的電流可以改變電機(jī)的轉(zhuǎn)向,當(dāng)INPUT1高電平輸出時,INPUT2端的輸出是低電平,此時電機(jī)正轉(zhuǎn),否則電機(jī)反轉(zhuǎn)。
本文采用了兩節(jié)電壓為3.7V的Ni-Cr可充電電池來為系統(tǒng)供電,MCU主控系統(tǒng)、各種傳感器和電機(jī)驅(qū)動電路需要供5V電壓。5V電壓輸出電路如圖3所示。
圖3 5V電壓輸出電路
為了使機(jī)器人小車在移動過程中保持平穩(wěn)運(yùn)行,傳統(tǒng)的方法是通過調(diào)節(jié)電機(jī)電壓來控制電機(jī)轉(zhuǎn)速,但是當(dāng)電源電壓不穩(wěn)、路面起伏、路面粗糙度變化等情況下,單純控制驅(qū)動電壓并不能穩(wěn)定小車車速。而利用測速傳感器實(shí)時測量電機(jī)轉(zhuǎn)速并進(jìn)行反饋,能夠忽略外界環(huán)境因素,使小車更平穩(wěn)地運(yùn)行。常用的電機(jī)速度檢測方法有光電編碼器、反射光電檢測、對射光電檢測、霍爾傳感器檢測等。光電編碼器的速度測量最準(zhǔn)確,使用方便,但價格更高;霍爾傳感器在測速時更可靠,但安裝繁瑣;對射光電傳感器只需在電機(jī)的長尾軸上放一個碼盤,然后采用FC-33單路測速模塊進(jìn)行檢測,就可以滿足小車的精度要求。所以綜合考慮,本文將選用對射光電傳感器進(jìn)行機(jī)器人小車的速度檢測。
將被測轉(zhuǎn)速轉(zhuǎn)換為電壓信號,然后需要對信號進(jìn)行分析、放大、運(yùn)算,所以圖4所示的中間轉(zhuǎn)換電路就是根據(jù)以上系統(tǒng)要求設(shè)計(jì)的。其中,R1、R2起到限流作用,R3起到分流作用,R4為輸出電阻。
圖4 FC-33信號變換電路
機(jī)器人小車運(yùn)行在復(fù)雜環(huán)境中時難免會遇到障礙,如何在碰到障礙前探測到并有效進(jìn)行躲避,將是本文研究的重點(diǎn)。超聲波進(jìn)行距離測量的原理是通過測量發(fā)射與接收的反射和散射的超聲波之間的差異來確定前方物體的距離。紅外線測距原理主要基于發(fā)射光波的時間和反射光波的到達(dá)時間來計(jì)算測量距離。電路如圖5所示。
圖5 紅外測距傳感器電路圖
僅當(dāng)引腳IN+電壓比IN-大時,輸出高電平,否則輸出低電平。LEAS1和LEAS2連續(xù)發(fā)射紅外光波,反射波到達(dá)接收管RC1和RC2,改變它們的電壓。障礙越近,反射光越強(qiáng),使IN1和IN2的電壓越高,與RP1、RP2上的電壓形成電壓差,經(jīng)放大后,從OUT1、OUT2輸出結(jié)果。通過調(diào)整RP1和RP2,以便在達(dá)到避障距離時,L4、L5兩個LED燈管亮,即OUT1和OUT2在達(dá)到避障距離時輸出低電平。
本文選用了紅外光電傳感器使小車能夠?qū)崿F(xiàn)循跡。發(fā)射器發(fā)出的紅外線經(jīng)過地面反射,使接收管接到信號并通過LM339電壓比較器進(jìn)行電壓比較后,將電平傳送到Arduino系統(tǒng),來判斷黑線是否被檢測到。為了能更準(zhǔn)確地檢測到黑線,本文在車體底盤上裝設(shè)三個TCRT5000型號的紅外光電傳感器,分別設(shè)定為A、B、C,使循跡模塊的可靠性更好。
如果紅外光電傳感器檢測不到信號,或者檢測到的黑線一直處于B的正下方,LM339電壓比較器輸出信號分別為111或101,將結(jié)果傳送給Arduino后,驅(qū)動小車的車輪向前轉(zhuǎn)動,使小車沿著黑線向前行駛。
當(dāng)僅有A或者有A和B傳感器檢測到路徑上的黑線時,LM339電壓比較器的輸出信號將分別為011和001,傳送給Arduino后,驅(qū)動小車的左輪向后轉(zhuǎn)動,右輪向前轉(zhuǎn)動,使小車向左偏轉(zhuǎn)并沿著黑線行駛。
當(dāng)僅有C或者有B和C傳感器檢測到路徑上的黑線時,LM339電壓比較器的輸出信號將分別為110和100,并傳送給Arduino后,驅(qū)動小車左輪向前轉(zhuǎn)動,右輪向后轉(zhuǎn)動,使小車向右偏轉(zhuǎn)并沿著黑線行駛。
當(dāng)所有傳感器都檢測到路徑上的黑線時,LM339電壓比較器的輸出信號000被送到Arduino,電機(jī)驅(qū)動模塊將無信號輸出,電機(jī)將停止運(yùn)轉(zhuǎn),表明車輛已到達(dá)終點(diǎn)。機(jī)器人小車運(yùn)行情況見表1。循跡模塊的電路圖如圖6所示。
圖6 循跡模塊電路圖
表1 機(jī)器人小車運(yùn)行情況表
智能避障算法被廣泛應(yīng)用于各種復(fù)雜環(huán)境中,智能算法具有自學(xué)習(xí)自適應(yīng)能力、高容錯性等特點(diǎn),是解決未知環(huán)境中機(jī)器人行走避障問題的較優(yōu)方法。機(jī)器人小車在行進(jìn)避障的過程中,等效為多變的無固定模型環(huán)境,模糊控制算法可以較好適用于不確定問題,適合機(jī)器人小車的避障。本文分別采集小車的前方、左面和右面三個方向上的測距數(shù)據(jù),將這些數(shù)據(jù)輸入到控制器中,而輸出信號為小車運(yùn)動的方向,保證小車能夠規(guī)避所有的障礙物。
在小車運(yùn)動過程中,模糊控制器通過測距裝置傳來的信息不斷地修正小車的運(yùn)動軌跡,通過運(yùn)動軌跡的變化來躲避小車在運(yùn)動方向的障礙。在左、前、右三個方向的測距系統(tǒng)能夠檢測出小車前方范圍內(nèi)最近的障礙,若障礙距離小車過遠(yuǎn),超出測量范圍,則小車就認(rèn)為未發(fā)現(xiàn)障礙。機(jī)器人小車規(guī)避障礙,就是通過控制小車的運(yùn)動方向,不讓其與障礙發(fā)生碰撞,因此模糊控制的輸出就是對運(yùn)動方向的控制。圖7是其流程框圖。
圖7 模糊推理流程圖
系統(tǒng)輸入是由超聲波與紅外兩種傳感器采集的距離信息。假設(shè)當(dāng)距離超過0.4m就不再計(jì)算。若設(shè)距離障礙信號的模糊語言集為{近ND,中MD,遠(yuǎn)FD},輸入變量與隸屬度函數(shù)關(guān)系如圖8所示,橫向表示距離,單位cm,縱向表示隸屬度。
圖8 輸入變量與隸屬度函數(shù)關(guān)系圖
模糊輸出為小車下一步運(yùn)行方向。小車的運(yùn)行方向?yàn)樽筠D(zhuǎn)TL、前進(jìn)GF、右轉(zhuǎn)TR。輸出變量與隸屬度函數(shù)關(guān)系如圖9所示,圖中橫向?yàn)樾≤囖D(zhuǎn)彎角度,縱向?yàn)殡`屬度。角度是負(fù)數(shù),小車將左轉(zhuǎn);角度是正數(shù),小車將右轉(zhuǎn);角度數(shù)值是零時,小車會向前行駛。
圖9 輸出變量與隸屬度函數(shù)關(guān)系圖
當(dāng)小車行駛路徑中有障礙時,首要任務(wù)是躲避障礙。小車需要根據(jù)三個方向上的距離信息改變控制方式,建立的模糊規(guī)則見表2。
表2 避障算法模糊規(guī)則表
表2中模糊規(guī)則的輸出量是模糊的,需解模糊轉(zhuǎn)化為精確量才能輸入被控對象,選擇重心法進(jìn)行解模糊處理。
首先,避障程序進(jìn)行初始化,其次避障程序進(jìn)行距離的檢測。此時MCU可以實(shí)時接收到相關(guān)傳感器的距離信息,包括左、前、右三個方向的距離信息。如果機(jī)器人小車沒有檢測到障礙,將會保持原來的運(yùn)行狀態(tài)。當(dāng)機(jī)器人小車遇到障礙物時,程序?qū)⒏鶕?jù)左、中、右三個方向的障礙物距離長短進(jìn)行模糊避障算法,從而作出相應(yīng)的避障動作,實(shí)現(xiàn)小車的避障功能。機(jī)器人小車避障系統(tǒng)流程如圖10所示。
圖10 機(jī)器人小車避障系統(tǒng)流程圖
本系統(tǒng)設(shè)計(jì)了機(jī)器人小車的黑線循跡功能,循跡程序通過Arduino單片機(jī)控制小車能夠按照黑線路徑進(jìn)行行走。系統(tǒng)先調(diào)整到循跡模式下,車頭前方的三個紅外光電傳感器實(shí)時檢測路面黑線信息。如檢測不到黑線信息,則小車直線前行,如檢測到黑線信息,程序判斷小車的位置是否偏離航道,從而進(jìn)行PID調(diào)控PWM波形輸出,控制小車車輪轉(zhuǎn)速,實(shí)現(xiàn)轉(zhuǎn)彎操作,以達(dá)到循跡的目的,小車循跡程序見附錄。機(jī)器人小車循跡系統(tǒng)流程如圖11所示。
圖11 機(jī)器人小車循跡系統(tǒng)流程圖
由于小車的行駛速度不規(guī)則,因此采用中斷的方式來捕獲輸入,以計(jì)算小車的行駛速度。運(yùn)行結(jié)束后,必須禁止捕獲中斷,規(guī)避一些無關(guān)的中斷,小車速度信號采集程序見附錄。速度信號采集流程如圖12所示。
圖12 速度信號采集流程圖
在實(shí)驗(yàn)室條件下進(jìn)行了避障測試和循跡測試。機(jī)器人小車在所設(shè)定的不同障礙環(huán)境下進(jìn)行了50次測試實(shí)驗(yàn),其中車體前方有障礙的環(huán)境情況,小車可以有效躲避障礙物。對于左方、前方有障礙以及右方、前方有障礙這兩種障礙環(huán)境下,理論上避障結(jié)果應(yīng)該一致,但實(shí)際測試過程中,存在一定的誤差。而當(dāng)小車處于左、前、右方均有障礙的復(fù)雜環(huán)境中時,避障成功率有一定的下降。同時,在室內(nèi)選擇一片平坦的地面,使用寬為18mm的黑線建立具有直道和彎道路徑的跑道。
機(jī)器人小車在室內(nèi)黑線路徑跑道上的循跡測試結(jié)果見表3。小車無法在18mm寬的黑線位置停止。分析原因得出,當(dāng)小車到達(dá)終點(diǎn)時,按照編寫的程序,小車是可以檢測到終點(diǎn)黑線的,但由于小車慣性和小車輪胎打滑等原因,小車無法及時停止,會沖出黑線繼續(xù)前進(jìn)。
表3 小車循跡功能性能測試
本文設(shè)計(jì)了基于Arduino控制的嵌入式機(jī)器人小車系統(tǒng),確定了小車以四輪驅(qū)動結(jié)構(gòu)的方案,同時對小車檢測系統(tǒng)進(jìn)行研究,確定了使用紅外光電傳感器實(shí)現(xiàn)循跡功能,采用超聲波和紅外距離測量傳感器綜合復(fù)用來采集距離信息,以實(shí)現(xiàn)小車自動避障功能,選擇對射紅外傳感器完成速度檢測功能,完成了機(jī)器人小車的軟硬件設(shè)計(jì)。系統(tǒng)采用了模糊避障算法,對機(jī)器人小車的運(yùn)行控制進(jìn)行測試,驗(yàn)證了機(jī)器人小車模糊避障算法以及循跡功能的有效性和可行性。