孫昱放


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