尹延龍,丁瑞好,董錚
(湖北文理學(xué)院 計(jì)算機(jī)工程學(xué)院,湖北襄陽,441053)
隨著經(jīng)濟(jì)的快速發(fā)展,汽車已經(jīng)逐漸進(jìn)入到了家家戶戶,使得人們的出行變得更加地舒適[1]。但與此同時(shí),城市建設(shè)的步伐遠(yuǎn)遠(yuǎn)跟不上汽車行業(yè)的發(fā)展,隨著汽車數(shù)量的越來越多,道路擁擠已經(jīng)成了很多城市的通病,嚴(yán)重影響人們的出行。節(jié)假日擁堵情況更甚,通行十分困難。因此如何緩解道路擁擠,讓人們的出行更順利成為城市交通中的一個(gè)大問題[2~3]。
傳統(tǒng)的交通燈是通過設(shè)定路口交通燈時(shí)間為一定值進(jìn)而調(diào)節(jié)車流量,控制太過簡單、單一,并不能適應(yīng)現(xiàn)在日趨擁擠的道路,并且當(dāng)路口道路車流量過于擁擠時(shí),交通路口還需要協(xié)管員來協(xié)助調(diào)控交通燈的變化時(shí)間,以此緩解道路擁擠的情況。交通燈實(shí)時(shí)控制系統(tǒng)通過實(shí)時(shí)監(jiān)測各個(gè)方向的車流量,比較各個(gè)路口的車流量,進(jìn)而計(jì)算出合理的交通燈變化時(shí)間調(diào)控交通燈。減少車輛的等待時(shí)間,合理的分配道路資源,緩解交通擁堵,既能減少交通警察人力資源的浪費(fèi),也能使人們的出行更加通暢,讓城市的交通更加智能,更美好[4]。
系統(tǒng)主要應(yīng)用有主次干道的十字路口路段,用于調(diào)節(jié)十字路口的車輛擁堵情況。系統(tǒng)主要采用了傳感器、樹莓派和Python 技術(shù)。傳感器用于測量車流量,通過測量車輛通過路面產(chǎn)生的壓力,再將壓力信號(hào)轉(zhuǎn)化成電信號(hào)傳輸給系統(tǒng),傳感器本系統(tǒng)采用的是壓電傳感器。壓力傳感器安裝在各個(gè)路口,距離路口的一定距離的區(qū)域,測量在一定時(shí)間內(nèi)車輛是否通過近車監(jiān)測點(diǎn)和遠(yuǎn)車監(jiān)測點(diǎn)來推算車流量。樹莓派三代B 型開發(fā)板用于接收壓力傳感器傳過來的電信號(hào),再將電信號(hào)進(jìn)行處理分析計(jì)算,得出交通燈顏色變化的時(shí)間,以此來控制交通燈的顏色變化,進(jìn)而減緩車輛擁堵的情況。Python 是計(jì)算機(jī)編程語言,處理分析壓力傳感器傳來的車流量數(shù)據(jù)、計(jì)算綠燈的變化時(shí)間、控制交通燈顏色的變化等。
在經(jīng)濟(jì)方面,樹莓派和傳感器的成本都比較低,整個(gè)系統(tǒng)并不需要花費(fèi)太高的成本,而且壓力傳感器壽命很長,可以使用很久,比較適合用來測量車流量。
交通燈實(shí)時(shí)控制系統(tǒng)是利用實(shí)時(shí)分析各個(gè)路口的車流量來計(jì)算出交通燈的狀態(tài)及綠燈時(shí)間。系統(tǒng)的功能需求如下:
(1)各個(gè)路口車流量數(shù)據(jù)采集與傳輸
功能描述:壓電傳感器根據(jù)收集通過該傳感器的壓力數(shù)據(jù),將壓力信號(hào)進(jìn)而輸送給樹莓派。壓力傳感器是分布在各個(gè)路口的,不同路口的壓力信息都進(jìn)行收集。
輸入:路口處的車流量壓力信號(hào)。
輸出:車流量的電信號(hào)。
(2)車流量電信號(hào)的分析處理
功能描述:壓力傳感器將車流量的壓力信號(hào)傳送給樹莓派,樹莓派再將收集到的壓力信號(hào)進(jìn)行分析處理,計(jì)算出綠燈的變化時(shí)間,以此來控制交通燈的變化。
輸入:車流量的電信號(hào)。
輸出:交通燈的變化時(shí)間。
(3)交通燈控制
功能描述:根據(jù)樹莓派開發(fā)板計(jì)算出來的時(shí)間來控制路口交通燈的變化時(shí)間。同時(shí)路口的交通燈也可以由人為控制,當(dāng)一些特殊情況發(fā)生時(shí),交通協(xié)管員可以隨時(shí)控制交通燈的變化。
輸入:樹莓派計(jì)算交通燈時(shí)間。
輸出:交通燈是否變化。
根據(jù)系統(tǒng)的可行性和需求分析,設(shè)計(jì)了圖1 所示的系統(tǒng)功能模塊圖。系統(tǒng)主要分為車流量檢測模塊、車流量分析處理模塊和交通燈轉(zhuǎn)換模塊。車流量檢測模塊主要負(fù)責(zé)檢測路口的實(shí)時(shí)車流量,車流量分析處理模塊用于計(jì)算出路口的綠燈時(shí)間及交通燈是否發(fā)生變化,交通燈轉(zhuǎn)換模塊主要是根據(jù)系統(tǒng)的計(jì)算結(jié)果來進(jìn)行交通燈狀態(tài)的轉(zhuǎn)換。
圖1 系統(tǒng)功能模塊圖
系統(tǒng)流程圖如圖2所示。安裝在路口的壓力傳感器會(huì)接收到車輛是否通過的信號(hào),然后把車輛通過的壓力信號(hào)傳給樹莓派開發(fā)板。樹莓派開發(fā)板會(huì)根據(jù)壓力傳感器傳過來的車流量信號(hào)進(jìn)行分析計(jì)算,分配出合適的綠燈時(shí)間及交通燈的狀態(tài)是否發(fā)生變化,并把最終結(jié)果輸出給交通燈,交通燈會(huì)根據(jù)樹莓派開發(fā)板的指令進(jìn)行相應(yīng)的變化,進(jìn)而達(dá)到控制車流量的目的。
圖2 系統(tǒng)流程圖
交通燈實(shí)時(shí)控制系統(tǒng)的硬件部分主要有壓力傳感器、樹莓派三代B 型開發(fā)板、RGB LED 模擬交通燈。壓力傳感器收集路口處的實(shí)時(shí)車流量數(shù)據(jù)并將數(shù)據(jù)傳輸給樹莓派三代B 型開發(fā)板控制系統(tǒng),控制系統(tǒng)通過Python 語言編寫的程序處理分析壓力傳感器傳過來的車流量信息,并得出交通燈的變化時(shí)間規(guī)則。樹莓派開發(fā)板控制系統(tǒng)再將交通燈的變化信息傳輸給RGB彩色LED 模擬的交通燈顯示器,來模擬交通燈的變化[5-6]。硬件組成如圖3 所示。
圖3 系統(tǒng)硬件組成圖
系統(tǒng)采用的是RGB 彩色LED 來模擬交通燈的變化。其中,LED 燈中有三種顏色的發(fā)光二極管:紅色、綠色和藍(lán)色,有四個(gè)引腳:VCC、R、G、B。VCC 是用來連接電源的正極的。R,G,B 分別對應(yīng)著紅綠藍(lán)三個(gè)燈的接口,再把這三個(gè)接口與樹莓派的GPIO 引腳進(jìn)行連接,通過控制這三個(gè)燈的顏色比例變化來模擬交通燈的顏色變化。
系統(tǒng)研究的是十字路口紅綠燈變化情況,如圖4 所示,將東西南北四個(gè)方向的路口都分為直行(包括直行車道和右轉(zhuǎn)車道)和左轉(zhuǎn)的情況。其中,東西方向,南北方向紅綠燈變化情況一致,則僅需研究東或西側(cè),南或北側(cè)情況,即圖中D1,D2,D3,D4 這四個(gè)車道方向綠燈情況即可。當(dāng)D1,D2,D3,D4 四個(gè)方向任意一個(gè)車道為綠燈時(shí),其他車道都不能顯示綠燈。
圖4 路口交通圖
在交通十字路口,一般都會(huì)有一條車流量較多的主干道,一條車流量較少次干道。設(shè)定東西方向的車道為主干道,南北方向的車道為次干道,因?yàn)橹鞔胃傻赖能嚵髁渴遣灰粯拥?,一般情況下,主干道的車流量會(huì)大于次干道上的車流量,所以在初始綠燈時(shí)間的分配上,主干道的綠燈分配時(shí)間應(yīng)該多于次干道上的綠燈時(shí)間。其中黃燈的時(shí)間固定為3s,所以在這個(gè)系統(tǒng)中不需要進(jìn)行計(jì)算分配黃燈的時(shí)間,只需要計(jì)算紅燈,綠燈的時(shí)間即可。而車道的初始綠燈時(shí)間,應(yīng)當(dāng)是由十字路口平時(shí)的車流量所決定的,應(yīng)提前測得合理的初始時(shí)間。考慮到在十字路口中車流量變化很快,更新時(shí)間不宜太長,還有系統(tǒng)所承受的計(jì)算壓力,更新時(shí)間不宜太短,在這個(gè)系統(tǒng)中設(shè)定為每5s 更新一次車流量,再根據(jù)更新的車流量計(jì)算出綠燈時(shí)間并將計(jì)算的綠燈時(shí)間更新給路口的交通燈[7~8]。
綠燈在每一次將要變化之前,都會(huì)先根據(jù)監(jiān)測的車流量大小來進(jìn)行一次判斷,判斷是否要變換交通燈顏色。而在每一次監(jiān)測車流量之前,會(huì)先對綠燈的剩余時(shí)間進(jìn)行判斷。如果判斷當(dāng)前綠燈剩余時(shí)間小于或等于5s,則直接更新當(dāng)前綠燈的剩余時(shí)間為5s,與此同時(shí),當(dāng)前綠燈開始閃爍,5s后,直接變換為黃燈,不再進(jìn)行車流量的判斷。如果判斷當(dāng)前綠燈時(shí)間大于5s,系統(tǒng)根據(jù)當(dāng)前車流量計(jì)算綠燈時(shí)間,如果計(jì)算的綠燈時(shí)間小于剩余的綠燈時(shí)間,則當(dāng)前交通燈的綠燈剩余時(shí)間更新為系統(tǒng)計(jì)算的綠燈的剩余時(shí)間,反之,如果計(jì)算的綠燈時(shí)間大于剩余的綠燈時(shí)間,交通燈當(dāng)前綠燈時(shí)間不變。
系統(tǒng)初始情況下,會(huì)對各個(gè)不同車道分配一個(gè)初始綠燈時(shí)間Hinit,然后每5s 檢測一次路口的車流量,再根據(jù)車流量計(jì)算出當(dāng)前路口的綠燈時(shí)間Hnr。然后比較Hnr,判斷是否開始下一方向的綠燈時(shí)間。當(dāng)新分配的時(shí)間小于等于5s 時(shí),各個(gè)方向的綠燈的剩余時(shí)間直接更新為5s,這5s 期間,綠燈處于閃爍的狀態(tài),且5s 后綠燈變化為黃燈,黃燈時(shí)間為3s,黃燈時(shí)間結(jié)束后下一路口的綠燈亮。當(dāng)新分配的綠燈時(shí)間大于5s 時(shí),再進(jìn)行比較新分配的綠燈時(shí)間與當(dāng)前路口剩余的綠燈時(shí)間。如圖5 所示,當(dāng)分配時(shí)間小于等于當(dāng)前路口綠燈剩余時(shí)間時(shí),各方向剩余綠燈時(shí)間更新為新分配的時(shí)間,反之各方向剩余綠燈時(shí)間不更新。五秒后繼續(xù)檢測,并依次循環(huán)[9]。
圖5 程序流程圖
假設(shè)車輛的速度是20km/h,這在道路中其實(shí)已經(jīng)算是一個(gè)很低的速度了,那么這輛車在5s 內(nèi)的行駛距離將近28m。如果道路擁擠,那一輛車在監(jiān)測點(diǎn)之間的行駛距離肯定是低于20km/h。所以設(shè)定近車監(jiān)測點(diǎn)與遠(yuǎn)車監(jiān)測點(diǎn)的距離為25m。當(dāng)路段擁擠時(shí),這段距離的車行駛速度會(huì)變慢,5s 之內(nèi)不會(huì)通過該路段,就會(huì)被計(jì)入車流量,當(dāng)路段還比較通暢時(shí),通過這段距離的車速度會(huì)很快,那么在5s 內(nèi)就會(huì)通過該路段,就不會(huì)被計(jì)入車流量。
如圖4 所示,該十字路口的總車流量為D=d1+d2+d3+d4+d5+d6+d7+d8。向南北方向直行的車流量總量為D1=d3+d7,向南北方向左轉(zhuǎn)的總車流量為D2=d4+d8,向東西方向直行的總車流量為D3=d1+d5,向東西方向左轉(zhuǎn)的總車流量為D4=d2+d6。系統(tǒng)設(shè)定該十字路口的綠燈順序依次是東西直行,東西左轉(zhuǎn),南北直行,南北左轉(zhuǎn),以此循環(huán)。檢測時(shí)間間隔為3s,路燈初始周期為H。
由于四個(gè)方向綠燈時(shí)間不能重合,所以每個(gè)方向綠燈都應(yīng)該設(shè)置一個(gè)初始時(shí)間。綠燈初始時(shí)間的更新:每當(dāng)綠燈進(jìn)行轉(zhuǎn)換到下一路口綠燈時(shí),下一路口的綠燈應(yīng)該設(shè)置一個(gè)初始時(shí)間,而不應(yīng)該沿用上一路口所計(jì)算的綠燈時(shí)間。因?yàn)樯弦宦房谠诰G燈的過程中,車流量會(huì)越來越少,所計(jì)算的綠燈時(shí)間也會(huì)越來越少,在下一次綠燈變化之前,綠燈時(shí)間達(dá)到一個(gè)最小值。然而在這個(gè)過程中,其余路口都是紅燈時(shí)間,車流量會(huì)增大,如果繼續(xù)使用上一方向所計(jì)算的綠燈時(shí)間則會(huì)不合理,所以在每個(gè)路口綠燈變化之前綠燈時(shí)間需要更新到初始值。
由于夜間人們的出行量大大減少,道路上的車流量也隨之很少,所以在夜間再實(shí)行與白天同樣的交通燈的變化規(guī)則就有些不合理了。在夜間,因?yàn)槌鲂械能囕v較少,只需要提醒司機(jī)到路口時(shí)記得減速通過就可以了,這個(gè)時(shí)候就可以設(shè)置十字路口中四個(gè)路口黃燈持續(xù)閃爍,提醒司機(jī)注意來往車輛減速通過。關(guān)于交通燈夜間模式的時(shí)間設(shè)置,還要根據(jù)季節(jié)來設(shè)定。在夏季,白天較長,夜晚較短,夜間模式也應(yīng)把時(shí)間推遲,可以設(shè)定凌晨一點(diǎn)開啟夜間模式,四點(diǎn)關(guān)閉夜間模式。而冬季,白天較短,夜晚較長,夜間模式可以提前到晚上十二點(diǎn)開啟夜間模式,早晨五點(diǎn)關(guān)閉夜間模式。夜間模式的設(shè)置也緩解了控制系統(tǒng)的壓力。
根據(jù)交通燈實(shí)時(shí)控制系統(tǒng)的功能模塊對系統(tǒng)測試,先將樹莓派和傳感器顯示燈這幾個(gè)模塊給連接起來,連接好之后接通電源,在樹莓派上運(yùn)行程序,系統(tǒng)便開始運(yùn)行了。因?yàn)橄到y(tǒng)的應(yīng)用場景是設(shè)有主次干道的十字路口,所以測試時(shí)候會(huì)分為主干道和次干道分別進(jìn)行測試,測試隨著車流量的變化交通燈是如何進(jìn)行變化的。同時(shí)還會(huì)測試夜間時(shí),交通燈是怎樣變化的。
根據(jù)系統(tǒng)測試方案設(shè)計(jì)如表1 所示的路口主干道情況的測試用例、如表2 所示的次干道情況的測試用例以及表3 所示的夜間模式的路口交通燈情況的測試用例。
表1 主干道測試用例表
表2 次干道測試用例表
表3 夜間模式測試用例表
通過樹莓派運(yùn)行寫好的Python程序,可以通過將樹莓派連接到PC 端,在PC 端上控制樹莓派運(yùn)行Python 代碼。代碼運(yùn)行完成后,對該系統(tǒng)進(jìn)行簡單的測試,檢測其功能。
系統(tǒng)剛開始檢測時(shí),設(shè)定東西直行車道綠燈亮,則其他車道紅燈亮。如圖6 所示。
圖6 交通燈變化圖
綠燈時(shí)間結(jié)束后,東西方向直行車道交通燈黃燈亮起,其他方向仍為紅燈,如圖7 所示。
圖7 交通燈變化圖
東西直行黃燈結(jié)束后,變?yōu)榧t燈,下一車道交通燈黃燈亮,如圖8 所示。
圖8 交通燈變化圖
下一車道黃燈時(shí)間結(jié)束后,路燈亮,其他車道依然是紅燈,如圖9 所示。
圖9 交通燈變化圖
夜間路口黃燈持續(xù)閃爍,如圖10 所示。
圖10 交通燈夜間模式圖
當(dāng)某一車道綠燈亮?xí)r,模擬車輛通過壓力傳感器,該車道的壓力傳感器產(chǎn)生信號(hào)傳送給了樹莓派系統(tǒng),系統(tǒng)在根據(jù)傳過來壓力信號(hào)的次數(shù)判斷車流量,再計(jì)算該車道的綠燈時(shí)間,系統(tǒng)再控制綠燈亮的時(shí)間,綠燈時(shí)間與車道車流量的大小成正比。
系統(tǒng)介紹了交通燈實(shí)時(shí)控制系統(tǒng)的目的和意義,結(jié)合了壓力傳感器和樹莓派開發(fā)板,參考了之前的智能交通燈的研究技術(shù),讓交通燈隨著車流量的變化而實(shí)時(shí)變化,變得更加智能。同時(shí)這個(gè)系統(tǒng)的開發(fā)成本也比較低,其中用到的壓力傳感器在這個(gè)系統(tǒng)中也易于安裝和維護(hù)。系統(tǒng)開發(fā)的成功將會(huì)給人們的出行帶來極大的便利,讓人們的出行更加的舒適,很大地緩解交通擁堵的狀況,讓城市道路更通暢。