孫昱放
摘 要:伴隨科學(xué)技術(shù)的發(fā)展和人民生活水平的提高,移動(dòng)機(jī)器小車在現(xiàn)實(shí)生產(chǎn)和生活中,得到了極為廣泛的應(yīng)用。本文在系統(tǒng)介紹了移動(dòng)機(jī)器小車的基礎(chǔ)知識(shí)基礎(chǔ)上,重點(diǎn)闡述了移動(dòng)機(jī)器小車設(shè)計(jì)與被動(dòng)避障、主動(dòng)避障的控制,以及追蹤控制的工作原理和應(yīng)用。
關(guān)鍵詞:移動(dòng)機(jī)器小車;控制;制作與設(shè)計(jì)
中圖分類號(hào):TP24 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2017)13-0054-03
機(jī)器人逐漸進(jìn)入到人們的生活當(dāng)中,如現(xiàn)在家用的掃地機(jī)器人、飯店使用的洗碗機(jī)等等。機(jī)器人方便了人們的生活,優(yōu)化了人們的生活方式。機(jī)器人在未來(lái)一定可以對(duì)人類的生活起到更大的作用。移動(dòng)機(jī)器人在生活中的應(yīng)用逐漸普遍,也引起了我對(duì)它的興趣,我從簡(jiǎn)單的移動(dòng)機(jī)器小車入手,開始學(xué)習(xí)與研究移動(dòng)機(jī)器小車的控制,從而對(duì)機(jī)器人有更深的理解。
1 移動(dòng)機(jī)器小車的基礎(chǔ)知識(shí)
移動(dòng)機(jī)器小車即使用伺服電機(jī)根據(jù)軟件編程的設(shè)定,發(fā)出脈沖控制機(jī)器小車完成運(yùn)動(dòng)、避障、跟隨等任務(wù)的機(jī)器。
1.1 軟件介紹
BASIC Stamp是由美國(guó)Parallax公司自1992年起所提創(chuàng)的一種微控制器,此種微控制器與其他微控制器不同的地方在于:微控制器中的ROM內(nèi)存內(nèi)建了一套小型、特有的BASIC編程語(yǔ)言直譯器,稱為:PBASIC。
1.2 硬件介紹
伺服電機(jī):伺服系統(tǒng)是使物體的位置、方位、狀態(tài)等輸出被控量能夠跟隨輸入目標(biāo)(或給定值)的任意變化的自動(dòng)控制系統(tǒng)。
面包板:面包板是由于板子上有很多小插孔,專為電子電路的無(wú)焊接實(shí)驗(yàn)設(shè)計(jì)制造的。電子元器件可根據(jù)需要隨意插入或拔出。
1.3 指令和循環(huán)語(yǔ)句
伺服電機(jī)在收到某一特定的信號(hào)時(shí),處于靜止?fàn)顟B(tài)。本次使用的伺服電機(jī)在收到脈沖寬度為1.5ms的脈沖信號(hào)時(shí),處于靜止?fàn)顟B(tài)。在計(jì)算機(jī)上,將使用一個(gè)PULSOUT指令。PAUSE是低電平,PULSOUT輸出的是高電平。
PULSOUT指令:PULSOUT Pin,Time。Time是用來(lái)計(jì)算脈沖寬度的時(shí)間單位數(shù),時(shí)間單位是2/μs,則零點(diǎn)脈沖寬度為Time=0.0015s/0.000002s=750。
要控制脈沖之間的間隔則需要使用PAUSE指令。
PAUSE指令:PAUSE T。T是PAUSE的值,它表示微控制器在執(zhí)行下一條指令之前要等待多久。T的單位是1ms。如要等待0.5秒,則給T賦值為500:PAUSE 500。
要持續(xù)產(chǎn)生脈沖信號(hào),則還需要用到DO…LOOP循環(huán)語(yǔ)句當(dāng)中。
DO…LOOP語(yǔ)句:
DO
PULSOUT 1,750
PAUSE 500
LOOP
如此則可以循環(huán)運(yùn)行指令。
還有一種FOR…NEXT的語(yǔ)句適用于有限次數(shù)的循環(huán):
C VAR Word
FOR C=1 TO 200
C=C+1
PULSOUT 1,850
PULSOUT 2,650
PAUSE 20
NEXT
根據(jù)計(jì)算,循環(huán)一次的時(shí)間大概為23ms,循環(huán)200次,則為4.6秒。
1.4 勻速運(yùn)動(dòng)和勻變速運(yùn)動(dòng)的原理以及執(zhí)行方法
勻速運(yùn)動(dòng):當(dāng)Time參數(shù)的值大于750時(shí),會(huì)使伺服電機(jī)逆時(shí)針旋轉(zhuǎn),而當(dāng)Time的值為850時(shí),則會(huì)全速逆時(shí)針旋轉(zhuǎn)。順時(shí)針?lè)粗嗳?。?dāng)要?jiǎng)蛩龠\(yùn)動(dòng)時(shí),可以使用PULSOUT指令使兩個(gè)伺服電機(jī)同時(shí)旋轉(zhuǎn)。由于兩個(gè)電機(jī)對(duì)應(yīng)方向相反,則一個(gè)電機(jī)順時(shí)針輸出,一個(gè)電機(jī)逆時(shí)針輸出可以完成勻速運(yùn)動(dòng)。表1。
DO
PULSOUT 1,850
PULSOUT 2,650
PAUSE 20
LOOP
如果測(cè)量出不同脈沖寬度下行走的距離,可以計(jì)算出小車的行駛速度。
勻變速運(yùn)動(dòng):當(dāng)Time輸出的參數(shù)逐漸變化時(shí),速度也會(huì)由此變化,則依據(jù)此可以進(jìn)行勻變速運(yùn)動(dòng)代碼的編寫:
C VAR Word
For C=1 To 100
Pulse out 1,750+1
Pulse out 2,750-1
PAUSE 20
NEXT
在100次循環(huán)后,速度逐漸增加到最大值,完成了一次勻變速運(yùn)動(dòng)。根據(jù)加減的數(shù)值大小算出加速度的大小。
2 被動(dòng)避障
被動(dòng)避障是機(jī)器小車進(jìn)行的被動(dòng)行為。當(dāng)機(jī)器小車被障礙阻礙從而被動(dòng)接受到障礙的信號(hào)時(shí),做出轉(zhuǎn)動(dòng)和避讓。
2.1 被動(dòng)避障的原理
可以通過(guò)一個(gè)感受障礙的裝置,將障礙信號(hào)轉(zhuǎn)化為電信號(hào)。本次使用了一個(gè)類似胡須的裝置來(lái)完成這個(gè)任務(wù)。
胡須是類似一個(gè)觸角的金屬絲,彎曲形成一個(gè)環(huán)形,在前面感測(cè)障礙,胡須如同一個(gè)開關(guān),控制著機(jī)器小車。胡須開關(guān)的狀態(tài)值1或0儲(chǔ)存在IN7的變量中。當(dāng)沒(méi)有被按下時(shí)存儲(chǔ)值為1,胡須被按下時(shí)存儲(chǔ)值為0。機(jī)器小車在行走中,一旦胡須被按下,就代表有障礙物,根據(jù)胡須的不同情況使機(jī)器小車進(jìn)行不同的動(dòng)作,從而完成被動(dòng)避障。
2.2 被動(dòng)避障使用的代碼以及程序的設(shè)計(jì)
為了使機(jī)器小車進(jìn)行判斷,需要使用IF…THEN語(yǔ)句:
IF(cundition)THEN…{ELSEIF(CONDITION)}…{ELSE}…ENDIF
可以提前編制一些動(dòng)作的代碼,在程序中使用GOSUB來(lái)進(jìn)行子函數(shù),這樣在寫程序中就簡(jiǎn)潔許多。(IN5為左胡須的存儲(chǔ)器,IN7為右胡須的存儲(chǔ)器)
3 主動(dòng)避障
主動(dòng)避障是機(jī)器小車進(jìn)行的主動(dòng)行為。當(dāng)機(jī)器小車在還未接觸到障礙時(shí)主動(dòng)接收到障礙的信號(hào)時(shí),做出轉(zhuǎn)動(dòng)和避讓。
3.1 主動(dòng)避障的原理
可以通過(guò)一個(gè)紅外感應(yīng)裝置,將障礙信號(hào)轉(zhuǎn)化為電信號(hào)。我使用了紅外線探測(cè)器完成這項(xiàng)任務(wù)。機(jī)器小車上使用了紅外線二極管LED作為發(fā)射源,如果有障礙物,則會(huì)對(duì)紅外線進(jìn)行阻礙和反射,如此則機(jī)器小車上的紅外線探測(cè)器便可以測(cè)得反射回來(lái)的紅外線。為了排除普通光源的干擾,紅外線探測(cè)器內(nèi)部的光濾波器只允許980nm波長(zhǎng)的紅外線通過(guò),并且紅外線探測(cè)器的電子濾波器只允許38500Hz的電信號(hào)通過(guò),即只尋找每秒閃爍38500次的紅外線。
3.2 主動(dòng)避障使用的代碼以及程序的設(shè)計(jì)
為了讓紅外線二極管LED發(fā)出所需的和聲信號(hào),需使用FREQOUT指令。如:
FREQOUT 8,1,38500
這句代碼的指令就是連接到8號(hào)引腳的紅外線二極管LED電路發(fā)送1ms頻率為38500Hz的和聲信號(hào)。
當(dāng)紅外線探測(cè)器接收到紅外信號(hào)時(shí)會(huì)產(chǎn)生存儲(chǔ)值,沒(méi)發(fā)現(xiàn)物體顯示1,發(fā)現(xiàn)物體顯示0。IRDL和IRDR是左右兩個(gè)紅外線探測(cè)器的存儲(chǔ)值。使用下面代碼即可將存儲(chǔ)值儲(chǔ)存到存儲(chǔ)器當(dāng)中。
IRD VARL Bit
IRD=IN9
則主動(dòng)避障的程序代碼為
(定義變量)
IRDL VAR Bit
IRDR VAR Bit
C VAR Byte
(主程序)
DO
FREQOUT8,8,1,38500
IRDL=IN9
FREQOUT8,2,1,38500
IRDL=IN0
IF(IN9=0)AND(IN0=0) THEN 表示前方有障礙
GOSUB BACK
GOSUB LEFT
GOSUB LEFT
ELSEIF(IN9=0) THEN 表示左邊有障礙
GOSUB BACK
GOSUB RIGHT
ELSEIF(IN0=0) THEN 表示右邊有障礙
GOSUB BACK
GOSUB LEFT
ELSE GOSUB GO 無(wú)障礙則持續(xù)前進(jìn)
ENDIF
LOOP
(子函數(shù))
GO: 表示前進(jìn)的子函數(shù)
PULSOUT 1,850
PULSOUT 2,650
PAUSE 20
RETURN
LEFT: 表示左轉(zhuǎn)的子函數(shù)
FOR C=0 TO 20
PULSOUT 1,650
PULSOUT 2,650
PAUSE 20
NEXT
RETURN
RIGHT:表示右轉(zhuǎn)的子函數(shù)
FOR C=0 TO 20
PULSOUT 1,850
PULSOUT 2,850
PAUSE 20
NEXT
RETURN
BACK: 表示后退的子函數(shù)
FOR C=0 TO 40
PULSOUT 1,650
PULSOUT 2,850
PAUSE 20
NEXT
RETURN
3.3 主動(dòng)避障和被動(dòng)避障的區(qū)別與優(yōu)缺點(diǎn)
主動(dòng)避障沒(méi)有直接接觸到障礙,是提前預(yù)知障礙進(jìn)行避讓;被動(dòng)避障是直接接觸到障礙,從而進(jìn)行避讓。兩種避障方式的原理不同,但它們的目的相同??筛鶕?jù)不同的需要和要求進(jìn)行兩種避障方式之間的選擇。主動(dòng)避障避免的直接的撞擊導(dǎo)致的經(jīng)濟(jì)損失,但是缺點(diǎn)是通過(guò)無(wú)線傳感器接收到的干擾因素較多,成本高。
4 移動(dòng)機(jī)器小車的距離探測(cè)和追蹤
不同頻率的和聲信號(hào)探測(cè)的距離遠(yuǎn)近也不同,可以發(fā)射多種頻率的和聲信號(hào),根據(jù)返回的紅外線頻率探測(cè)物體的位置,并使用負(fù)反饋控制系統(tǒng)進(jìn)行追蹤。
4.1 用頻率掃描進(jìn)行編程做距離探測(cè)
頻率特性使得紅外線傳感器在不同的頻率下有不同的靈敏度,導(dǎo)致紅外線探測(cè)的距離不同。如圖1,物體反射了39500Hz、38250Hz和37500Hz的紅外線,根據(jù)接收情況,可以得知物體在區(qū)域2。劃分區(qū)域越多則精度越高,定位也更加準(zhǔn)確,但會(huì)增大計(jì)算量,帶來(lái)不必要的麻煩。由于本次研究目的在于追蹤,不需要過(guò)高的精度,所以以1000hz為最小分度值,劃分為6個(gè)區(qū)域。
當(dāng)信號(hào)反饋時(shí),有一種頻率的信號(hào)反饋則儲(chǔ)存的數(shù)字是0,無(wú)信號(hào)反饋則為1。如在圖1中物體在區(qū)域2時(shí),接收到了3種信號(hào)的反饋,而另外兩種信號(hào)的反饋則接受不到,即為3個(gè)0,2個(gè)1,求和的出數(shù)字2,而數(shù)字2對(duì)應(yīng)的便是區(qū)域2。
為了對(duì)紅外線頻率進(jìn)行掃描,要用FREQOUT指令發(fā)送6種不同頻率的紅外線信號(hào),使用LOOKUP命令可以簡(jiǎn)便的寫出。LOOKUP命令的用法定義如下:
LOOKUP Index,[Value0,Value1,…ValueN],Variable
則代碼可為
IRF VAR Nib
IRD VAR Bit
FOR IRF=1 TO 4
LOOKUP IRF,[37500,38250,39500,40500,41500],IRF
FREQOUT8,1,IRF
IRD=IN9
NEXT
4.2 移動(dòng)機(jī)器小車的追蹤控制
這個(gè)任務(wù)是要讓機(jī)器小車跟隨一個(gè)移動(dòng)的物體。根據(jù)閉環(huán)控制系統(tǒng)的控制,在落后較遠(yuǎn)時(shí),機(jī)器小車能進(jìn)行加速;當(dāng)距離太近的時(shí)候,它也能察覺(jué)并減速。如果距離合適,那么它會(huì)等待直到測(cè)量距離變遠(yuǎn)或者變進(jìn)。
如圖2,我們需要機(jī)器小車保持2個(gè)區(qū)域的距離,相差4區(qū)域的距離接下來(lái)對(duì)機(jī)器小車進(jìn)行編程。
由此得出右邊伺服電機(jī)的輸出方程為:
Right servo output=(Right distance set point-Measured right distance)*Kp+Center pulse width
pulseLeft=(SetPoint-distanceLeft)*Kpl+CenterPulse
pulseRight=(SetPoint-distanceRight)*Kpl+CenterPulse
將右邊距離設(shè)置為2,測(cè)量距離由變量distanceRight存儲(chǔ),Kp為35(比例常數(shù)是根據(jù)伺服電機(jī)特性得出來(lái)的常數(shù)),脈沖寬度為750。
pulseLeft=(2-distanceRight)*35+750
5 結(jié)論
在移動(dòng)機(jī)器小車的制作與探究中,我學(xué)到了被動(dòng)避障和主動(dòng)避障的原理與設(shè)計(jì),體會(huì)研究追蹤移動(dòng)機(jī)器小車的原理,學(xué)會(huì)了使用BASIC stamp 軟件,了解了紅外線二極管LED和紅外線探測(cè)器。我相信在未來(lái),移動(dòng)機(jī)器小車的使用會(huì)更加的廣泛,涉及到更多的領(lǐng)域,也將會(huì)有更多的功能。我也要緊跟時(shí)代腳步,在機(jī)器小車的領(lǐng)域中繼續(xù)探索。
參考文獻(xiàn)
[1]秦志強(qiáng),侯肖霞,王文斌.基礎(chǔ)機(jī)器小車制作與編程[M].第二版.北京:電子工業(yè)出版社.