本文探究具有警示功能及簡易自駕功能的自走車,主要目的是為了降低駕駛者在道路上遇到的危險,經由系統能在駕駛者遇到危險狀況時,即時的提醒駕駛者或者系統自動的即時做出反應,讓駕駛者能避免危險或降低車禍的嚴重程度,以達到降低駕駛車輛之危險性。
本作品的模型車體架構以及轉向結構都是以3D列印機列印而成的,具有輕巧、堅固、成本低等優點,控制系統以Holtek晶片HT66F2390作為主控核心,整合周邊設備,如感測元件、伺服馬達、影像處理器樹莓派等硬體設備搭建而成的車輛交通號誌辨識系統。
當自走車啟動時Holtek晶片會根據感測元件、樹莓派取得的交通號誌資訊及道路上的影像狀況,並以此為依據判斷目前自走車周遭的環境,進而控制自走車的行為模式。本自走車會視道路上的安全狀況、號誌狀況及道路狀況,進而自行決定自走車是否前進、減速、轉彎、停止等動作,讓車輛行駛能達到降低危險之目的。
前言
近年來交通事故逐漸呈現緩慢的提升,在道路上如何提升自身與他人安全,已經成為駕駛者一大重要事項。為了提升安全,在駕駛期間提高專注力很重要,但長時間保持專注力在精神上是一大負擔,尤其是對有一定年紀的長輩或是工作下班、熬夜的人負擔更是沉重。
此時,其實選擇代駕或是停車休息才是最好的選擇,但人們往往不會這麼做。因為代駕或休息往往會浪費大量的時間或是金錢,所以往往最後的結果都是帶著疲倦的精神狀態開著車危險的回家。為了得知肇事的主要原因,根據警政署查詢肇事原因統計資料[1] ,如圖1所示,可以把前七項的肇事主要原因大致進行歸類:
一、違反交通規則
可能原因:(1)駕駛者因為趕時間或是其他原因故意違規;(2)未注意到號誌狀況;(3)酒駕。
二、未注意到週遭人車狀況
可能原因:(1)轉彎未注意旁邊車輛;(2)沒有保持車輛安全距離;(3)酒駕。
三、反應不及
可能原因:(1)新手駕駛;(2)疲勞駕駛;(3)對突然出現的動物、人、車等無法及時反應;(4)視線不佳不法及石柱要到前方有無人或障礙物。
以上的歸類其實都圍繞著「未注意」與「反應不及」這兩件事情上,而這兩件事情針對不同族群又有不同的差別。例如道路上突然冒出的一個人,對於反應較好的年輕人可以做到緊急閃避;但是對於一些反應速度較差的年長者,可能就會反應不及而直接撞上人引發事故。所以,對各個年齡層或者駕駛者的駕駛經驗不同都會讓問題最後的結果不一樣。
不管結果如何,提高安全駕駛要解決的應該是在「未注意」與「反應不及」上的問題。本作品就針對此兩點進行作品的設計,以樹莓派( Raspberry pi )進行道路及號誌的監視,幫助駕駛者注意到未能注意的地方,但樹莓派只適合做影像上的處理,並不適合控制自走車動力和操作感測器。因此,選擇Holtek晶片當作控制核心,操控馬達及各種感測器來監控是不是有緊急狀況發生。最後再與樹莓派溝通取得監視的影像資料,就能解決「未注意」與「反應不及」這兩種問題。
功能說明
本作品的動作流程如圖2所示,其中以HT66F2390晶片為本系統的主控核心,主要負責控制自走車動力、取得超音波數值,再輔以樹莓派做影像上的處理以取得號誌資訊、道路寬度、道路弧度,最後利用I2C進行資料溝通,讓HT66F2390晶片能得到並統整所有訊息,方便來決定自走車要行走的模式。
本行走模式及行走條件如下:
一、前進條件
1.前方無號誌
2.前方無障礙物
3.道路寬適合自走車行走
當前方無號誌、無障礙物且道路適合行走時,自走車就會前進並根據道路的弧度決定要轉彎的角度。
二、減速條件
1.前方有障礙物但在安全距離外
2.前方有號誌
3.轉彎時
當前方有障礙物並在安全距離外時自走車會慢慢減速直到障礙物在安全距離內。若前方有紅燈也會慢慢減速直到抵達紅燈處,而轉彎時會以固定慢速前進讓自走車轉彎能更加安全。
三、停止條件
1.前方有紅燈
2.安全距離裡有障礙物
自走車到達紅燈前或是安全距離裡有障礙時都會停止前進,這樣才能讓自走車保持在安全的狀態。
作品結構
硬體架構
圖3為本作品的硬體架構圖,圖中可以看到HT66F2390與其他設備連接的關係,其主控核心HT66F2390直接對感測器及馬達上做讀取與控制的動作,與樹莓派之間則是利用I2C進行溝通。
作品的實體接線腳位如表1所示,其功能以下進行簡單說明:
1.超音波感測器腳位說明
腳位Echo--HT66F2390的PC7腳
腳位Trig--HT66F2390的PD0腳
PC7是為了接收超音波感測器的高態訊號時間,並以此判斷距離
PD0則是要送給超音波感測器起始觸發送出超音波訊號的腳位
2.伺服馬達MG90S
腳位橘色線--HT66F2390的PB2腳
MG90S只有三條線一條電源線(紅色),一條接的線(黑色)一條訊號線(橘色),而訊號線的功能就是要利用PWM控制馬達轉向的角度
3.伺服馬達MG995
腳位橘色線--HT66F2390的PB3腳
與MG90S的接腳一樣,不同的只有PWM控制的不是角度而是速度
4.樹莓派
腳位SDA--HT66F2390的PF2腳
腳位SCL--HT66F2390的PF3腳
本作品控制核心HT66F2390與樹莓派溝通是使用I2C協定, I2C僅使用兩隻腳位,其中SDA是資料傳輸腳作用是用來傳輸資料的,SCL則是用來控制資料傳送的脈波控制腳。
表1:實體配線腳位
HT66F2390
|
腳位
|
硬體名稱
|
腳位
|
PC7
|
超音波感測器
|
Echo
|
PD0
|
超音波感測器
|
Trig
|
PB2
|
MG90S
|
橘線
|
PB3
|
MG995
|
橘線
|
PF2
|
Raspberry pi
|
SDA
|
PF3
|
Raspberry pi
|
SCL
|
HT66F2390主控核心電路
圖4為HT66F2390主控核心的控制電路,本作品是以HT66F2390晶片內部的週期型TM來控制180度的伺服馬達與360度的伺服馬達。馬達型號分別為MG90S與MG995如圖5、圖6所示。
其中180度的伺服馬達有可以控制角度的特性,在本作品中是擔任自走車的轉向驅動馬達,而360度伺服馬達則有可以控制轉速的特性。在作品中是用來控制自走車的前進、減速、停止的動作,而兩顆伺服馬達都均以PWM進行控制,控制的PWM週期、角度、轉速如下:
1. MG90S伺服馬達(180度)
PWM週期:20ms
高態訊號時間與對應角度:
0.5ms ----------- -90度
1.5ms ----------- 0度
2.5ms ----------- 90度
2. MG995伺服馬達(360度)
PWM週期:20ms
高態訊號時間與對應正反轉:
0.5ms ----------- 反轉
1.5ms ----------- 停止
2.5ms ----------- 正轉
正轉與反轉之高態訊號時間愈接近中間值(1.5ms)則轉速會越慢,反之差距愈大則速度越快。
超音波控制方式
圖7為超音波感測器,感測器上有4隻腳位,分別為VCC、Trig、Echo、GND、VCC和GND為電源和接地腳,Trig則是外界要給>=10us高態訊號的輸入腳位,Echo則是超音波感測器輸出高態訊號的腳位。
控制方法是經由HT66F2390輸出>=10us高態訊號給Trig腳,此時超音波感測器會自動發出8個40KHz的脈波,如圖8第一個脈波圖所示,等音波撞到障礙物回彈回超音波感測器時,Echo腳就會輸出高態訊號,此高態輸出的時間為發送音波到接收的時間。
最後,與障礙物距離就可以經由音速公式= 331.5 + 0.607 * t (t為攝氏溫度)乘以Echo腳高態時間再除以2換算取得。
本超音波感測器Echo腳的高態訊號會使用HT66F2390外部中斷的上下緣偵測模式進行偵測,但是中斷只能偵測到開始與結束的狀態卻無法得知時間的長短,這時候就要使用TimeBase作計數的動作,最後會根據計數值換成時間乘以音速除2就能取得距離了。其中TimeBase會在外部中斷偵測到上緣觸發訊號時開始計數,如圖8第二個脈波圖所示,在高態的時間裡TimeBase會持續做計數的動作,直到偵測到下緣觸發,也就是訊號變為低態訊號為止才停止計數,此段時間累計就是超音波來回於與障礙物之間的時間差。
樹莓派紅綠燈影像偵測
圖9是Raspberry pi3+的實體圖,樹莓派是一款基於Linux的單晶片電腦,由英國樹莓派基金會開發,目的是以低價硬體及自由軟體促進學校的基本電腦科學教育,本作品所使用的是Raspberry pi3+版本,Raspberry pi系統內部可以安裝Python程式撰寫軟體,我們的影像處理程式是以Python程式進行撰寫。
圖10為以攝影機拍攝的紅綠燈光暈圖。在影像識別上,本系統是先偵測是否有紅綠燈的存在,再判斷紅綠燈旁邊光暈的顏色,以此來判斷號誌燈的目前狀態是紅燈還是綠燈。
樹莓派道路影像偵測
圖11為道路區塊去除部分表示圖,紅框部份表示是可以去除的部分,之所以紅框部分可以去除是因為攝影鏡頭會照到自走車前面的畫面。而畫面裡同時包含道路與天空部分,但天空不會有道路,所以這部分的影像就是可以去除的部分,去除完後的影像資料就會變小,就可以有效的提升程式執行速度。
主控核心晶片與樹莓派溝通技術
I2C為飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展的通訊功能,I2C協定非常簡單,只需有一條串列資料線(SDA)和一條串列時鐘線(SCL)。其中SDA是用來發送資料,SCL則是用來控制資料傳送速度的脈波信號,本作品控制核心晶片HT66F2390A與樹莓派的溝通方式就是使用I2C協定完成信號傳輸,圖12為I2C實體接線圖。
差速器與轉向機構
圖13圖14分別為差速器與轉向機構,車子在轉彎時左右邊的車輪都會有不同的內輪差,如果沒有解決內輪差的問題,那麼車子轉彎時就會極為不順暢,而差速器就是為了解決這個問題設計出來的機構。本作品的差速器是以3D列印製作完成。圖14的轉向機構則是用7個齒輪去帶動輪胎轉向,當作中間的馬達轉動時,左右兩側的輪圈就會跟著齒輪被帶動轉向。
超音波裝置
圖15為超音波感測器安裝放置的地方,我們將超音波感測器放置在車頭部分,讓自走車能及時感測到前方的道路狀況。
程式系統流程與影像識別
程式系統圖
圖16為程式系統流程,本程式流程分為影像處理系統及整合控制系統兩大部分。系統開啟電源時會各別啟動樹莓派與控制晶片HT66F2390並進行初始設定,設定完畢後就會進入各別的系統開始執行動作。
影像處理系統
圖17為影像處理系統處理程序圖,我們將經由攝像鏡頭取得的影像經過灰階、二值化、濾波等影像處理後就能取得亮點及光暈顏色,再以此為判斷便能判斷出顏色。
圖18為影像處理結果圖,在圖18中最上面為原始影像,原始影像經過閥值的處理,閥值以外去除顏色,閥值以內保留顏色。這樣的做法能讓我們能保留較明顯的色彩,保留下來的影像如圖18中間左圖所示。圖18中間右圖則是原始影像經過灰階及二值化處理保留的白色部分就是影像中較為明亮的地方,這個地方就有可能是太陽光、電燈、其他光影等,最後再把這兩張處理結果經過交叉比對就能得到紅綠燈的顏色判斷。
圖19為道路的處理結果圖,圖19最左上圖為原始影像,右上角圖為把不要的區塊裁切掉的圖,左下角圖則是二值化後的圖,右下角圖則是結果圖。我們將偵測到的邊界繪製綠線以方便觀察,根據結果便能得到道路邊界的座標,最後,樹莓派將所取得的紅綠燈顏色及道路邊界座標以I2C協定,傳送給控制核心晶片HT66F2390,以作為控制自走車的判斷依據。
實驗結果
圖20為本專題的整合控制系統流程圖,控制系統控制著自走車的所有動作。其中自走車主控核心HT66F2390會根據從樹莓派接收到的資料進行自走車控制的決策。
而樹莓派接收到的資料有兩筆,第1筆為號誌訊息,第2筆為車道的邊緣弧度。控制核心HT66F2390會先根據號誌訊息判斷有沒有號誌,如果有號誌會再判斷是紅燈還是綠燈。如果是紅燈就停止前進,如果是綠燈就使用超音波感測器偵測前方狀況。前方若沒有障礙物則前進,若有則依照安全距離來決定是要減速還是停止。在前進的過程中,自走車的轉向機構會不斷根據道路弧度來進行轉向讓自走車能照著車道中心行走。
圖21是自走車測試防撞功能,主要是測試車子的行走能力並在前方設置障礙物測試自走車能不能自動減速及停止。最後得到的就如圖21所示,自走車會慢慢減速直到停止的狀態。而號誌辨識的部分,系統是在自走車前行的前方設置紅燈以測試系統能不能自動停止。
圖22為偵測到紅綠燈的狀況,而圖23及24則是自走車分別遇到紅燈成功自動停止,與遇到綠燈前進的實際狀況。自走車為提升駕駛者的安全性,車體會保持在道路正中央以避免偏移跑道之危險,圖25為自走車行走的轉彎路線,而圖26則為自走車實體測試路線場地。