瞿哲奕,唐秦崴,朱熀秋
QU Zhe-yi, TANG Qin-wei, ZHU Huang-qiu
(江蘇大學 電氣信息工程學院,鎮(zhèn)江 212013)
工業(yè)機器人技術已經日趨成熟,美國、日本一直處于世界領先地位,機器人性能可靠,功能全面,智能化越來越高,越來越多的機器人已經應用于實際生活中。國內,機器人研究起步較晚,但是進步很快,已經生產出多種機器人。本文基于HCS12單片機設計了一種小車智能控制系統(tǒng)?;跀z像頭獲得跑道圖像,同時通過黑線中心檢測出黑線,預判前方的路況信息,進而控制小車的舵機轉向和行駛速度。
本系統(tǒng)主要由MC9S12DG128控制核心[1,2]、電源管理單元、路徑識別電路、車速檢測模塊、舵機控制單元和直流電機驅動單元組成,以飛思卡爾公司的16位單片機S12為控制核心,路徑識別和車速的檢測相結合,通過控制轉向舵機和驅動電機,使智能巡線機器人系統(tǒng)達到所需的穩(wěn)定性及快速性要求。原理圖如圖1所示。
圖1 系統(tǒng)硬件原理圖
1.2.1 工作原理及時序圖
攝像頭分黑白和彩色兩種,為達到循線目的,只需提取畫面的灰度信息,而不必提取其色彩信息,所以本設計中只采用了數(shù)字攝像頭OV6620的黑白辨別功能,這樣可以減少單片機采樣的負擔。工作時序圖如圖2所示。
圖2 OV6620時序圖
VYNSC是判斷是否一幅圖像開始,周期是20ms, 其中高電平持續(xù)時間很短,忽略;HREF 是判斷是否一行圖像的開始,周期是 63μs 左右,其中高電平持續(xù)時間為 40μs,低電平持續(xù)時間23μs,那么可以算一下一場有多少行:20ms/63μs=317,當然實際上沒有這么多,消隱和無效信號去掉之后只有 292行。另外要注意,場中斷要通過下降沿捕捉,行中斷要通過上升沿捕捉。
有效的灰度數(shù)據是在行中斷之后的上升沿內,所以不要在行中斷后的 23μs 后采集,那是廢數(shù)據。計算一下一行 OV6620 有多少個點:40μs/110ns=363, 消隱和無效信號去掉之后只有 356 個點。
1.2.2 OV6620引腳使用情況
管腳9 、10、 11、 13 、18 、19x和32懸空,UV0~UV7管腳是OV6620計算彩色管腳,用不到彩色時懸空。VCC和GND 接5V和地,地需要和單片機的地相聯(lián),而且OV6620攝像頭自帶了時鐘電路,引腳圖如圖3所示。
圖3 OV6620引腳圖
1.2.3 攝像頭電源電路
由于選擇的OV6620攝像頭的電源為5V,為了達到這一電源要求,通過芯片LM2940將電池電壓7.2V變?yōu)?V[3],供給攝像頭使用。電源電路如圖4所示。
圖4 LM2940電源電路
在電路設計中,考慮到由于電機驅動所引起的電源不穩(wěn)定(主要為瞬態(tài)脈沖),在電源輸入端,各芯片電源引腳都加入了濾波電路。為了避免由于驅動電機轉動時所引起的電磁干擾,在電路板設計中,在印制板上做了敷銅處理,將電路中的“地”與敷銅面相連接。
圖5 電機驅動與制動電路
在電機驅動電路中采用了傳統(tǒng)的MOSFET驅動,利用這樣的經典電路能夠保證驅動系統(tǒng)的穩(wěn)定性。在電機制動,利用光耦來實現(xiàn)能耗制動的工作方式。R8為功率電阻,D1為續(xù)流二極管,Z7兩端接直流電機。當制動信號輸入端發(fā)出制動信號后,驅動光耦,使三極管導通,這樣電機產生的多余能量就通過續(xù)流回路消耗在功率電阻上,實現(xiàn)制動。電路圖如圖5所示。
為了使得機器人能夠平穩(wěn)地沿著路徑運行,除了控制前輪轉向舵機以外,速度的控制也是十分重要的,保證機器人在直道上全速行駛,在急轉彎時速度不要過快而沖出跑道等,此時速度的檢測顯得尤為重要??梢酝ㄟ^控制驅動電機上的平均電壓控制車速,可以通過攝像頭檢測圖像黑線中心位置信息控制速度,但是如果開環(huán)控制電機轉速,會有很多因素影響電機轉速,例如電池電壓、電機傳動摩擦力、道路摩擦力和前輪轉向角等。這些因素會造成不僅會造成機器人運行的不穩(wěn)定,還會導致整體速度緩慢等。故而,需要通過速度檢測,對速度進行閉環(huán)反饋控制,則可以在一定程度上消除上面各種因素的影響,使得機器人運行得更加精確。為了獲取道路信息,若需要得到機器人的運動距離,這也可以通過速度的檢測來實現(xiàn)。
在測速模塊中本設計采用了脈沖計數(shù)檢測速度,在靠近機器人左輪的軸上裝一16等分的黑白相間的自制編碼盤,將測速傳感器安裝在編碼盤垂直對應的車體上,這樣當機器人前進,車輪轉動時,編碼盤跟隨車輪同步轉動,當一個黑色脈沖被紅外傳感器檢測到時,速度傳感器的輸出就變?yōu)楦唠娖?,產生脈沖,送給單片機的ECT 模塊,ECT 模塊捕捉脈沖信號并對其進行計數(shù),同樣的,當白色被檢測到時,也產生一脈沖,送以單片機計數(shù),在一特定時間內讀出脈沖總數(shù),將該總數(shù)除以車輪轉動一圈移過的脈沖數(shù)目,便可以計算出車輪的轉動圈數(shù),再乘以車輪周長,得到行駛路程,再除以計數(shù)時間,最后得到機器人的速度。
圖6 軟件設計流程圖
在攝像頭采集的一幀數(shù)據中,將采集的數(shù)據分析處理提取每行的黑線中心位置,繼續(xù)對該數(shù)據處理為后面控制策略作準備,準備工作結束,利用信息分別對直流電機和伺服電機實現(xiàn)閉環(huán)反饋控制。流程圖如圖6所示。
圖7 圖像采集流程圖
2.2.1 圖像采集流程
本設計中,采用640×480的OV6620數(shù)字攝像頭[4],雖然攝像頭采集到的信息比較豐富,但是經過實驗證明,只需采集一幀圖像中的17行即可,太多的數(shù)據信息不僅會占用CPU時間,而且也不能帶來有用的信息,故而,對得到的480行數(shù)據進行處理,每隔26行經取值得到最終的17行。但是由于攝像頭性能不夠理想,一幀圖像所能夠采集的行數(shù)和列數(shù)是有限的,最終能夠供MCU分析的數(shù)據每幀僅為17行20列的數(shù)組。流程圖如圖7所示。
2.2.2 圖像濾波
為了排除雜點,提取有效的黑線信息。經過多天的實驗測試后,采用的窗口處理算法如下:先將采集的圖像數(shù)據二值化,再使用3×3的窗口進行窗口線性濾波,既當一個窗口中含六個及以上個黑點時的中心為黑點,否則為白點。圖像濾波流程圖8所示。
圖8 圖像濾波流程圖
2.2.3 路徑黑線中心的提取
在每幀的圖像中,采用重心提取算法來實現(xiàn)黑線重心位置的提取。為了緩解CPU堆棧的壓力,將圖像采集到的數(shù)據存放在二維數(shù)組中,然后將重心位置重新存入一維數(shù)組中。由于所設路徑上的白色底板和黑色引導線的灰度值相差較大,因此通過確定一個黑色和白色的閾值來區(qū)分黑白。判斷相鄰數(shù)據點灰度值的差值是否大于(或小于)該閾值,從而確定此處是否為黑線上的點。經過多次實驗,最后確定閾值為128。從最左端的第一個有效數(shù)據點第7列(前6列數(shù)據為行消隱區(qū),舍棄)開始依次向右根據閾值判斷其是白點還是黑點。
為了提高每幀圖像處理速度,先對每幀圖像的前兩行數(shù)據進行處理,即在前兩行尋找連續(xù)的兩個黑點,且在列上也要有兩個黑點,即為黑線其始處,以此為基本位置,再向下繼續(xù)尋找黑線重心。若尋找失敗則跳過此幀圖像。由于實際采集數(shù)據中有相當數(shù)量的無效幀,所以此舉節(jié)省了大量MCU資源。
在有效幀的每一行,得出每個黑點的位置值,然后將各黑點位置值相加再除以黑點數(shù)量,得出圖像每行的黑點重心坐標。這樣做雖然會在對黑線提取的精度上有所犧牲,但是經過除法后,相當于進行了一個 較大的濾波,會使所提取的黑線的誤差降低,保證了正確性。
在每幀窗口濾波后的圖像中,如果有過多行重心“過輕”或者“過重” (即黑點過少或過多)則此幀圖像視為無效。跳至處理下一幀圖像。 在尋找下一行重心時,尋找范圍是在上一行的黑點重心的左右附近,若找不到下一行重心,便跳過此行往下尋找。累計出現(xiàn)一定數(shù)量的無效行時跳過此幀圖像處理下一幀圖像。流程圖如圖9所示。
圖9 黑線中心位置的提取
PID調節(jié)具有原理簡單、易于實現(xiàn)、魯棒性強和適用面廣等優(yōu)點,在實際應用中,根據實際工作經驗在線整定PID各參數(shù),往往可以取得較為滿意的控制效果[5]。數(shù)字PID控制則以此為基礎,與計算機的計算與邏輯功能結合起來,不但繼承了模擬PID調節(jié)的優(yōu)點,而且由于軟件系統(tǒng)的靈活性,PID算法可以得到修正而更加完善,更加靈活多樣,更能滿足生產過程中提出的各種控制要求。流程圖如圖10所示。
圖10 PID控制流程圖
在實際調試過程中發(fā)現(xiàn)不可以加積分環(huán)節(jié),因為積分環(huán)節(jié)的作用是消除靜差,而運輸時并不要求跟隨得很緊密,只要不沖出所設定的路徑就可以了。于是在直道行駛過程中會不斷追求偏差的最小化,而導致不斷震蕩。于是,取消了I環(huán)節(jié),使用PD控制。在選擇P和D的參數(shù)時,發(fā)現(xiàn)如果P給得過大雖然響應很快,但很容易超調,這在偏差量比較小的時候尤為明顯。于是,采用了分段PD控制,在偏差量小于一定值時使用小比例量和小微分量,在偏差量較大的時候才使用大比例量和微分量。
另外,發(fā)現(xiàn)在速度較低的時候不需要很快的響應速度,過快反而容易導致超調,于是在分段的時候,還考慮了速度的因素,在速度較低的時候使用較小的比例量,在較高的時候采用較大的比例量。PD控制器結構如圖11所示。
圖11 PD控制器結構
本文設計了一個智能車控制系統(tǒng),實現(xiàn)了快速自動循跡功能。在硬件上,以單片機MC9S12DG128B作為核心控制單元,結合電源模塊、路徑識別模塊、車速檢測模塊、舵機控制模塊等工作。在軟件上,采用圖像濾波、二值化以及黑線重心中心提取算法和PD控制、在線PID算法實現(xiàn)對舵機轉向和電機轉速的控制。實驗結果表明該巡線機器人系統(tǒng)響應快,動態(tài)性能良好,整體控制性能良好。
[1]王威.HC S12微控制器原理及應用[M].北京:北京航空航天大學出版社,2007.
[2]邵貝貝.單片機嵌入式應用的在線開發(fā)方法[M].北京:清華大學出版社,2004.
[3]賀益康,潘再平.電力電子技術[M].北京:科學出版社,2003.
[4]張洪剛,陳光,郭軍.圖像處理與識別[M].北京:人民郵電出版社,2006.
[5]高國琴.微型計算機控制技術[M].北京:機械工業(yè)出版社,2006.