帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
車輛交通號誌自動辨識系統
第十四屆盛群盃HOLTEK MCU創意大賽複賽報告

【作者: 陳宏明、陳俊瑋、陳信穎】   2020年07月13日 星期一

瀏覽人次:【40507】

本文探究具有警示功能及簡易自駕功能的自走車,主要目的是為了降低駕駛者在道路上遇到的危險,經由系統能在駕駛者遇到危險狀況時,即時的提醒駕駛者或者系統自動的即時做出反應,讓駕駛者能避免危險或降低車禍的嚴重程度,以達到降低駕駛車輛之危險性。


本作品的模型車體架構以及轉向結構都是以3D列印機列印而成的,具有輕巧、堅固、成本低等優點,控制系統以Holtek晶片HT66F2390作為主控核心,整合周邊設備,如感測元件、伺服馬達、影像處理器樹莓派等硬體設備搭建而成的車輛交通號誌辨識系統。


當自走車啟動時Holtek晶片會根據感測元件、樹莓派取得的交通號誌資訊及道路上的影像狀況,並以此為依據判斷目前自走車周遭的環境,進而控制自走車的行為模式。本自走車會視道路上的安全狀況、號誌狀況及道路狀況,進而自行決定自走車是否前進、減速、轉彎、停止等動作,讓車輛行駛能達到降低危險之目的。


前言

近年來交通事故逐漸呈現緩慢的提升,在道路上如何提升自身與他人安全,已經成為駕駛者一大重要事項。為了提升安全,在駕駛期間提高專注力很重要,但長時間保持專注力在精神上是一大負擔,尤其是對有一定年紀的長輩或是工作下班、熬夜的人負擔更是沉重。


此時,其實選擇代駕或是停車休息才是最好的選擇,但人們往往不會這麼做。因為代駕或休息往往會浪費大量的時間或是金錢,所以往往最後的結果都是帶著疲倦的精神狀態開著車危險的回家。為了得知肇事的主要原因,根據警政署查詢肇事原因統計資料[1] ,如圖1所示,可以把前七項的肇事主要原因大致進行歸類:


一、違反交通規則


可能原因:(1)駕駛者因為趕時間或是其他原因故意違規;(2)未注意到號誌狀況;(3)酒駕。


二、未注意到週遭人車狀況


可能原因:(1)轉彎未注意旁邊車輛;(2)沒有保持車輛安全距離;(3)酒駕。


三、反應不及


可能原因:(1)新手駕駛;(2)疲勞駕駛;(3)對突然出現的動物、人、車等無法及時反應;(4)視線不佳不法及石柱要到前方有無人或障礙物。



圖1 : 警政署肇事原因統計資料[1]
圖1 : 警政署肇事原因統計資料[1]

以上的歸類其實都圍繞著「未注意」與「反應不及」這兩件事情上,而這兩件事情針對不同族群又有不同的差別。例如道路上突然冒出的一個人,對於反應較好的年輕人可以做到緊急閃避;但是對於一些反應速度較差的年長者,可能就會反應不及而直接撞上人引發事故。所以,對各個年齡層或者駕駛者的駕駛經驗不同都會讓問題最後的結果不一樣。


不管結果如何,提高安全駕駛要解決的應該是在「未注意」與「反應不及」上的問題。本作品就針對此兩點進行作品的設計,以樹莓派( Raspberry pi )進行道路及號誌的監視,幫助駕駛者注意到未能注意的地方,但樹莓派只適合做影像上的處理,並不適合控制自走車動力和操作感測器。因此,選擇Holtek晶片當作控制核心,操控馬達及各種感測器來監控是不是有緊急狀況發生。最後再與樹莓派溝通取得監視的影像資料,就能解決「未注意」與「反應不及」這兩種問題。


功能說明

本作品的動作流程如圖2所示,其中以HT66F2390晶片為本系統的主控核心,主要負責控制自走車動力、取得超音波數值,再輔以樹莓派做影像上的處理以取得號誌資訊、道路寬度、道路弧度,最後利用I2C進行資料溝通,讓HT66F2390晶片能得到並統整所有訊息,方便來決定自走車要行走的模式。



圖2 : 動作流程圖
圖2 : 動作流程圖

本行走模式及行走條件如下:


一、前進條件


1.前方無號誌


2.前方無障礙物


3.道路寬適合自走車行走


當前方無號誌、無障礙物且道路適合行走時,自走車就會前進並根據道路的弧度決定要轉彎的角度。


二、減速條件


1.前方有障礙物但在安全距離外


2.前方有號誌


3.轉彎時


當前方有障礙物並在安全距離外時自走車會慢慢減速直到障礙物在安全距離內。若前方有紅燈也會慢慢減速直到抵達紅燈處,而轉彎時會以固定慢速前進讓自走車轉彎能更加安全。


三、停止條件


1.前方有紅燈


2.安全距離裡有障礙物


自走車到達紅燈前或是安全距離裡有障礙時都會停止前進,這樣才能讓自走車保持在安全的狀態。


作品結構

硬體架構

圖3為本作品的硬體架構圖,圖中可以看到HT66F2390與其他設備連接的關係,其主控核心HT66F2390直接對感測器及馬達上做讀取與控制的動作,與樹莓派之間則是利用I2C進行溝通。



圖3 : 硬體架構圖
圖3 : 硬體架構圖

作品的實體接線腳位如表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所示。



圖4 : HT66F2390主控核心電路
圖4 : HT66F2390主控核心電路

圖5 : MG90S伺服馬達(180度)
圖5 : MG90S伺服馬達(180度)

圖6 : MG995伺服馬達(360度)
圖6 : MG995伺服馬達(360度)

其中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則是超音波感測器輸出高態訊號的腳位。



圖7 : 超音波感測器
圖7 : 超音波感測器

控制方法是經由HT66F2390輸出>=10us高態訊號給Trig腳,此時超音波感測器會自動發出8個40KHz的脈波,如圖8第一個脈波圖所示,等音波撞到障礙物回彈回超音波感測器時,Echo腳就會輸出高態訊號,此高態輸出的時間為發送音波到接收的時間。


圖8 : 超音波送出脈波與接收脈波圖
圖8 : 超音波送出脈波與接收脈波圖

最後,與障礙物距離就可以經由音速公式= 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程式進行撰寫。



圖9 : Raspberry pi3+
圖9 : Raspberry pi3+

圖10為以攝影機拍攝的紅綠燈光暈圖。在影像識別上,本系統是先偵測是否有紅綠燈的存在,再判斷紅綠燈旁邊光暈的顏色,以此來判斷號誌燈的目前狀態是紅燈還是綠燈。


圖10 : 以攝影機拍攝的紅燈光暈圖
圖10 : 以攝影機拍攝的紅燈光暈圖

樹莓派道路影像偵測

圖11為道路區塊去除部分表示圖,紅框部份表示是可以去除的部分,之所以紅框部分可以去除是因為攝影鏡頭會照到自走車前面的畫面。而畫面裡同時包含道路與天空部分,但天空不會有道路,所以這部分的影像就是可以去除的部分,去除完後的影像資料就會變小,就可以有效的提升程式執行速度。


圖11 : 道路區塊去除部分表示圖
圖11 : 道路區塊去除部分表示圖

主控核心晶片與樹莓派溝通技術

I2C為飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展的通訊功能,I2C協定非常簡單,只需有一條串列資料線(SDA)和一條串列時鐘線(SCL)。其中SDA是用來發送資料,SCL則是用來控制資料傳送速度的脈波信號,本作品控制核心晶片HT66F2390A與樹莓派的溝通方式就是使用I2C協定完成信號傳輸,圖12為I2C實體接線圖。



圖12 : I2C實體接線圖
圖12 : I2C實體接線圖

差速器與轉向機構

圖13圖14分別為差速器與轉向機構,車子在轉彎時左右邊的車輪都會有不同的內輪差,如果沒有解決內輪差的問題,那麼車子轉彎時就會極為不順暢,而差速器就是為了解決這個問題設計出來的機構。本作品的差速器是以3D列印製作完成。圖14的轉向機構則是用7個齒輪去帶動輪胎轉向,當作中間的馬達轉動時,左右兩側的輪圈就會跟著齒輪被帶動轉向。



圖13 : 差速器
圖13 : 差速器

圖14 : 轉向結構
圖14 : 轉向結構

超音波裝置

圖15為超音波感測器安裝放置的地方,我們將超音波感測器放置在車頭部分,讓自走車能及時感測到前方的道路狀況。



圖15 : 超音波感測器裝置區
圖15 : 超音波感測器裝置區

程式系統流程與影像識別

程式系統圖

圖16為程式系統流程,本程式流程分為影像處理系統及整合控制系統兩大部分。系統開啟電源時會各別啟動樹莓派與控制晶片HT66F2390並進行初始設定,設定完畢後就會進入各別的系統開始執行動作。



圖16 : 程式系統流程
圖16 : 程式系統流程

影像處理系統

圖17為影像處理系統處理程序圖,我們將經由攝像鏡頭取得的影像經過灰階、二值化、濾波等影像處理後就能取得亮點及光暈顏色,再以此為判斷便能判斷出顏色。



圖17 : 影像處理系統流程圖
圖17 : 影像處理系統流程圖

圖18為影像處理結果圖,在圖18中最上面為原始影像,原始影像經過閥值的處理,閥值以外去除顏色,閥值以內保留顏色。這樣的做法能讓我們能保留較明顯的色彩,保留下來的影像如圖18中間左圖所示。圖18中間右圖則是原始影像經過灰階及二值化處理保留的白色部分就是影像中較為明亮的地方,這個地方就有可能是太陽光、電燈、其他光影等,最後再把這兩張處理結果經過交叉比對就能得到紅綠燈的顏色判斷。



圖18 : 影像處理結果
圖18 : 影像處理結果

圖19為道路的處理結果圖,圖19最左上圖為原始影像,右上角圖為把不要的區塊裁切掉的圖,左下角圖則是二值化後的圖,右下角圖則是結果圖。我們將偵測到的邊界繪製綠線以方便觀察,根據結果便能得到道路邊界的座標,最後,樹莓派將所取得的紅綠燈顏色及道路邊界座標以I2C協定,傳送給控制核心晶片HT66F2390,以作為控制自走車的判斷依據。


圖19 : 道路處理結果圖
圖19 : 道路處理結果圖

實驗結果

圖20為本專題的整合控制系統流程圖,控制系統控制著自走車的所有動作。其中自走車主控核心HT66F2390會根據從樹莓派接收到的資料進行自走車控制的決策。


而樹莓派接收到的資料有兩筆,第1筆為號誌訊息,第2筆為車道的邊緣弧度。控制核心HT66F2390會先根據號誌訊息判斷有沒有號誌,如果有號誌會再判斷是紅燈還是綠燈。如果是紅燈就停止前進,如果是綠燈就使用超音波感測器偵測前方狀況。前方若沒有障礙物則前進,若有則依照安全距離來決定是要減速還是停止。在前進的過程中,自走車的轉向機構會不斷根據道路弧度來進行轉向讓自走車能照著車道中心行走。



圖20 : 整合控制系統流程圖
圖20 : 整合控制系統流程圖

圖21是自走車測試防撞功能,主要是測試車子的行走能力並在前方設置障礙物測試自走車能不能自動減速及停止。最後得到的就如圖21所示,自走車會慢慢減速直到停止的狀態。而號誌辨識的部分,系統是在自走車前行的前方設置紅燈以測試系統能不能自動停止。


圖22為偵測到紅綠燈的狀況,而圖23及24則是自走車分別遇到紅燈成功自動停止,與遇到綠燈前進的實際狀況。自走車為提升駕駛者的安全性,車體會保持在道路正中央以避免偏移跑道之危險,圖25為自走車行走的轉彎路線,而圖26則為自走車實體測試路線場地。


圖22 : 紅綠燈辨識測試圖
圖22 : 紅綠燈辨識測試圖

圖23 : 號誌自動判別示意圖(遇到紅燈)
圖23 : 號誌自動判別示意圖(遇到紅燈)
圖24 : 號誌自動判別示意圖(遇到綠燈)
圖24 : 號誌自動判別示意圖(遇到綠燈)
圖25 : 自走車行徑路線圖
圖25 : 自走車行徑路線圖

圖26 : 自走車測試實體場地
圖26 : 自走車測試實體場地

結論

本作品是以盛群公司所生產的微控制器晶片HT66F2390A為控制核心,藉由感測器與影像判斷技術,進行車輛安全操控,模擬無人駕駛或輔助駕駛,達到行車安全之操控效果。


本作品功能具有以下幾項特色:


一、本自走車具有判斷紅綠燈影像的功能,可以讓模擬車輛依道路使用規則安全行駛。


二、自走車在行駛過程中,可以自我判斷車道,使得可以行駛於車道中間,不會有偏移車道之危險行為。


三、自走車也可以判斷是否前方有否障礙物,可以達到自我保護與防止撞擊事件發生。


四、本自走車所有元件均由3D印表機完成列印與組裝,充分發揮創意自製的目的與效果。


五、未來可運用於實車驗證,由網路與車輛行控中心取得聯繫,可將車況資料上傳,結合GPS定位系統,使得車輛行駛可結合雲端伺服器與行控中心進行車輛調度及訊息交換,達到車輛行駛更具安全性與車輛調度更具靈活彈性之功能展現。


(本文作者1陳宏明、2陳俊瑋、2陳信穎為建國科技大學電子工程系所1副教授、2學生)


參考文獻

[1]內政部警政署查詢肇事原因統計資料,


https://www.npa.gov.tw/NPAGip/wSite/ct?xItem=94237&ctNode=12594&mp=1,2019年9月。


[2] Dlib Library資料庫,


http://dlib.net/python/index.html,2019年9月。


[3] T客邦-樹莓派的故事,


https://www.techbang.com/posts/67530-the-story-of-raspberry-pie-how-does-a-35-dollar-calculator-change-the-world,2019年9月。


[4]維基百科-三原色光模式,


https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8E%9F%E8%89%B2%E5%85%89%E6%A8%A1%E5%BC%8F,2019年9月參考。


[5]openCV影像識別,https://docs.opencv.org/3.4/index.html,2019年9月。


相關文章
ST以MCU創新應用潮流 打造多元解決方案
ST:精準度只是標配 感測器需執行簡單運算的智慧功能
意法半導體持續專注永續發展 加速實現碳中和目標承諾
優化MCU SPI驅動程式實現高ADC吞吐率
ST:內部擴產與製造外包並進 全盤掌控半導體供應鏈
comments powered by Disqus
相關討論
  相關新聞
» 國科會擴大國際半導體人才交流 首座晶創海外基地拍板布拉格
» SEMI:2023年全球半導體設備出貨微降至1,063億美元
» TrendForce:台灣強震過後 半導體、面板業尚未見重大災損
» 亞灣2.0以智慧科技領航國際 加速產業加值升級
» 高通執行長將於COMPUTEX 2024 分享智慧裝置上的生成式AI運算


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.18.223.108.186
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw