建構於 matlab 平台上之視覺回授 自動駕駛實驗系統((((中中 … ·...

21
1 2005 MATLAB Tech Forum and Expo 建構於 建構於 建構於 建構於 MATLAB 平台上之視覺回授 平台上之視覺回授 平台上之視覺回授 平台上之視覺回授 自動駕駛實驗系統 自動駕駛實驗系統 自動駕駛實驗系統 自動駕駛實驗系統(中) 鄭智湧 林欣儀 國立台灣海洋大學 電機工程系 基隆市北寧路二號 [email protected] [email protected]

Upload: others

Post on 18-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

1

2005 MATLAB Tech Forum and Expo

建構於建構於建構於建構於 MATLAB 平台上之視覺回授平台上之視覺回授平台上之視覺回授平台上之視覺回授

自動駕駛實驗系統自動駕駛實驗系統自動駕駛實驗系統自動駕駛實驗系統((((中中中中))))

鄭智湧 林欣儀

國立台灣海洋大學 電機工程系

基隆市北寧路二號

[email protected] [email protected]

Page 2: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

2

不同的門檻值造成不同的二值圖,圖 3.14 的門檻值為 13,圖 3.15

的門檻值為 34,圖 3.16 之門檻值則為 114。在本實驗中,就以 40 做

為二值化的門檻值[23][24][25]。

圖 3.14 二值化(門檻值:13)

圖 3.15 二值化(門檻值:34)

Page 3: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

3

圖 3.16 二值化(門檻值:114)

3.1.5 影像編碼

一張灰階圖片即使作完二値化之後,除了我們所需要的目標物之

外,仍然有雜訊或者有ㄧ些殘留的背景是我們所不想要的。爲了找出

圖片中的目標物,得到目標物之特性,例如質心座標、面積大小、邊

界範圍等,並且能分辨出各個目標物區塊的不同,或者是濾除雜訊達

到控制之目的,所以在本實驗中利用到影像編碼的概念。

在真實世界的物體,在影像的成像是一個個封閉的二維區塊,我

們將這些區塊稱之為成分(component)。定義如下:

1.一個成分內的像素彼此相連。

2.一個成分的邊緣像素和另一個成分的邊緣不相連接。

影像中的成分可能很多,但是並不是每個成分都是需要的,把影像中

的所有成分找出來,也就是進行成分編號(Component Labeling)的處

理,之後再分析出成分的特性。圖 3.17.a 為編碼前的圖片,一個方格

代表一個像素,圖 3.16.b 為編碼後的狀況。

Page 4: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

4

圖 3.17a 編碼前的圖片 圖 3.17b 編碼後的圖片

經過編碼完之後的圖片,便可依不同的編碼區塊進行分析,分別

求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。

當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

目標物的質心計算用來決定每個物件在影像中的位置,計算公式

如下:

[ ]1 1

,n m

i j

jB i j

xA

= ==

∑∑ (3-6)

[ ]1 1

,n m

i j

iB i j

yA

= ==

∑∑ (3-7)

其中 x, y 為目標物質心座標,n 為影像寬度,m 為影像高度,

B[i,j]為影像中每個像素的權重(黑色為 1,白色為 0),A 為物體的面

積(Pixels)。已經做完二值化的一張實驗跑道圖,如圖 3.18 所示。因

matlab 程式編碼過程中,將白色區塊認定為目標物,所以將整張二值

化的圖由黑色轉白色,白色轉黑色,如圖 3.19 所示,再進行編碼。

Page 5: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

5

編碼過後依質心公式計算所得到的質心位置如下圖 3.20、圖 3.21 所

示。

圖 3.18 二值化後的圖片 圖 3.19 將 3.18 圖反白

圖 3.20 左側區塊質心 圖 3.21 右側區塊的質心

實驗過程中會遇到兩個區塊垂直的情況,沒有區塊垂直就是平時

自動駕駛車在車道上所看到的兩個同方向區塊,如圖 3.22 及圖 3.23,

若兩區塊垂直的狀況發生,代表自動駕駛車已經到了路口,如圖

3.24、圖 3.25,但自動駕駛車的角度不正確,需以左轉或右轉,先將

自動駕駛車微調到道路中間,以便進行任務二的動作。所以如果能知

道兩區塊的角度為何,就可以知道自動駕駛車是否到了路口。

Page 6: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

6

圖 3.22 直行方向區塊 圖 3.23 轉彎方向區塊

圖 3.24 路口兩區塊(偏左) 圖 3.25 路口兩區塊(偏右)

圖 3.26 向量表示(偏左) 圖 3.27 向量表示(偏右)

求得區塊 1 的表示向量 Auv,區塊 2 的表示向量B

uv,如圖 3.26、圖

3.27,至於兩向量的夾角可利用餘弦公式求得:

Auv

Auv

Buv

Buv

Page 7: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

7

1= cosA B

A Bθ − ⋅

uv uv

uv uv (3-8)

利用餘弦公式求的角度,兩平行區塊角度約小於 0.5 rad,若兩區

塊垂直則角度大於 1 rad。由此可知,若區塊角度小於 0.7 rad,自動

駕駛車位於車道上;若區塊角度大於 0.7 rad,則自動駕駛車已經接近

路口,且位置稍微偏移,需要進行左轉或右轉的微調動作。

圖形編碼除了可用來計算質心座標和目標物面積外還可以用來

濾雜訊,當編碼完之後,面積小於某個定值的成分予以濾除,保留較

大面積的成分,達到濾波的效果。

3-2 視覺回授與控制視覺回授與控制視覺回授與控制視覺回授與控制

利用前幾節的影像處理來處理由 CCD 攝影機所擷取進來的圖片

後,便可以拿來作為控制的判斷條件了。我們將欲達成的三個任務細

分成三小節來說明,如何將視覺回授應用在馬達的控制上。

自動駕駛車上的 CCD 攝影機有二維運動,如圖 3.28、圖 3.29 所

示。自動駕駛車本體有四種動作,前進、後退、左轉和右轉,如圖

3.30 所示。

Page 8: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

8

圖 3.28 CCD 上下動作

圖 3.29 CCD 左右動作

Page 9: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

9

圖 3.30 自動駕駛車的動作

3.2.1 任務一-沿直線行走之視覺回授與控制

任務一的目標為利用視覺回授使得自動駕駛車能沿著兩條直線

前進,並依道路的彎曲作適時的左轉和右轉,就如平常開車一般,也

能分別是否到達路口以及路邊停車格,視覺回授控制流程圖如下圖

3.31 所示。

後退動作

左轉動作

右轉動作

前進動作

Page 10: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

10

圖 3.31 任務一之視覺回授控制流程圖

Page 11: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

11

Block=1

質心由右邊移到中間?計算質心移動方向左轉 右轉Yes

No

回到start

圖 3.32 Block=1 之流程圖 圖 3.33 Block=2 之流程圖

圖 3.34 Block=3 之流程圖 圖 3.35 Block=4 之流程圖

Page 12: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

12

圖 3.32 為當白色區域為一塊時,自動駕駛車所反應的動作,圖

中紅色的字代表電腦依照影像處理,在質心運算過後所下達的動作指

令。當自動駕駛車看到一塊區塊的時候,就知道已經偏離跑道了,所

以下達左轉或右轉的指令,讓車體移回道路中間。

圖 3.33 為當白色區域為兩塊時,自動駕駛車所動作的流程。如

果兩塊區域的平均質心離中心位置沒有很遠,下達直走的命令;如果

平均質心離中心位置很遠,則下達左轉或右轉的命令。

圖 3.34、圖 3.35 分別讓自動駕駛車辨別任務二及任務三的啟動,

自動駕駛車會自動執行任務二及任務三。

3.2.2 任務二-判別紅綠燈之視覺回授與控制

當自動駕駛車看到三個區塊時,程式將會自動跳到任務二,並且

開始計算紅綠燈的 R 與 G 顏色資訊和顏色亮度,要是綠色顏色資訊

較紅色顏色資訊多,且綠色顏色亮度較紅色顏色亮度大,自動駕駛車

就認定此時紅綠燈是為亮綠燈,馬上就將 CCD 攝影機降下並往前

走,程式跳回任務一執行任務一的動作;如果判定為紅綠燈此時亮紅

燈,則停在原地直到綠燈亮起。圖 3.36 為任務二的流程圖。

Page 13: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

13

進入任務二CCD上昇

計算顏色資訊和亮度是否為綠燈? 停止不動CCD下降前進跳回任務一

Yes

No

圖 3.36 任務二之視覺回授控制流程圖

3.2.3 任務三-路邊停車之視覺回授與控制

當自動駕駛車看到四個區塊時,CCD 攝影機先右轉之後,程式

會自動跳到任務三去執行路邊停車的動作。程式流程如圖 3.37 所示,

就如平常駕駛車輛一樣,首先自動駕駛車會往前開,直到超過停車格

的前緣就停下,此時就準備要停進入停車格內。

Page 14: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

14

停止之後自動駕駛車便開始左轉,向後退,退到看到兩個區塊便

停止,此時 CCD 攝影機左轉轉回原位,自動駕駛車再右轉直走便完

成停車的動作。所有的動作都是由影像回授完成。

圖 3.37 任務三的視覺回授控制流程圖

Page 15: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

第三章 視覺處理與控制

15

當自動駕駛車停好車之後,等待一些時間後,自動駕駛車就會開

始執行開出路邊停車格的動作。開出停車格的動作其實就與停車動作

相反,先左轉開出去路邊停車格,再左轉移到車道的位置,程式在自

動跳回任務一,完成任務三的所有動作,執行任務一的動作。

Page 16: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

16

第四章第四章第四章第四章 實驗結果實驗結果實驗結果實驗結果

在本章中說明自動駕駛車執行三個任務的實驗結果,第一節說明

任務一:沿車道行走的實驗結果與分析;第二節説明任務二:辨別紅

綠燈的實驗結果與分析;第三節說明:路邊停車的實驗結果與分析。

整個實驗的場地如圖 4.1、圖 4.2。

圖 4.1 場地示意圖 1 圖 4.2 場地示意圖 2

4-1 任務一任務一任務一任務一::::沿車道行走沿車道行走沿車道行走沿車道行走

4.1.1 實驗目的

任務一為沿著兩條黑色曲線行走,自動駕駛車藉由 CCD 攝影機

看到的畫面,判斷本身是否在黑色直線上還是已經偏離正確跑道,並

做出正確的反應動作,如果是在正確跑道上便直行前進,如果已經偏

離正確跑道,則左轉或右轉將車體導回正確跑道內。

4.1.2 實驗場地

任務一的實驗場地如圖 4.3、圖 4.4 所示,設計兩個寬約 1.3 公分

之黑色曲線,兩曲線間距離約 10 公分寬。除了直線道之外,設計了

ㄧ段約為 90°的彎道,讓自動駕駛車可以進行左轉或右轉的動作。

Page 17: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

17

圖 4.3 任務一場地 1 圖 4.4 任務一場地 2

4.1.3 PWM脈波寬度調變控制馬達轉速

直流馬達的速度在硬體上是由電壓來控制,在額定電壓內,電壓

越高,轉速越快。在實驗過程中,為了能讓在特定狀況下讓馬達轉速

較小,亦即代表車子行進速度較慢,本實驗使用 AT89C2051單晶片

實現脈波寬度調變來控制馬達的轉速。

脈波寬度調變(PWM;Pulse Width Modulation),如圖 4.5,利用

改變脈波的工作週期百分比(Duty cycle),來控制流入馬達電流的平均

值,即可改變馬達轉速。使用 PWM 的主因是因為它的輸出只有全開

和全關兩種最佳效率點的狀態,且能維持相當好的能量效率,使得功

率消耗非常少。

PWM 的輸出電壓為輸入電壓乘以工作週期(Duty cycle)所得到的

值,即是控制它的工作週期,就可以控制輸出電壓。換算公式如下:

PWM 的輸出平均電壓=(Duty cycle)× 輸入的電源電壓 (4-1)

Page 18: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

18

圖 4.5 PWM 調變示意圖

在本實驗中,將 PWM 使用在左右轉、任務三的路邊停車以及每

一個任務中間的切換,以用來配合影像的擷取速度,確保自動駕駛車

的每個動作都能夠順暢的進行。

4.1.4 程式流程

任務一之程式流程圖如圖 4.6 所示,以區塊數目分為四個區塊分

別進行動作,並以任務一為主軸,延伸出任務二以及任務三。

Page 19: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

19

圖 4.6 任務一之程式流程圖

Page 20: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

20

4.1.5 實驗結果

● 右轉

由下列圖片 4.7 可知自動駕駛車在右轉時的狀況(左側圖片),以

及自動駕駛車上的 CCD 攝影機所見到的影像經過影像處理之後的情

形(右側圖片)。

Page 21: 建構於 MATLAB 平台上之視覺回授 自動駕駛實驗系統((((中中 … · 求出面積大小、質心位置、邊界範圍或者是進行濾波、濾雜訊的動作。 當編碼完成後,計數各個編號出現的次數,就可以得到影像的面積。

參考文獻

21