吳子豪,顏斌,陳龍
(杭州電子科技大學 電子信息學院,浙江杭州,310018)
隨著人工智能和自動控制技術的不斷完善和進步,自動駕駛技術[1]取得了顯著進展。通過自動駕駛和智能路徑規劃[2],可以實時調整行駛路線和速度,提高道路利用效率,減少交通擁堵。智能小車是人工智能和機器學習[3]等技術的重要應用領域。通過研究智能小車,可以探索利用計算機視覺[4]、深度學習[5]和強化學習[6]等技術使車輛能夠實時分析環境因素、作出決策并自主行駛的方法。這進一步推動了人工智能和機器學習技術在其他領域的應用和發展。本文通過設計基于圖像識別的三輪智能車自動控制系統,實現迅速且穩定地行駛直道、彎道、坡道、十字、環島、路障、斷路等賽道元素。
該系統的硬件結構經過設計,由六大部分組成:驅動控制模塊、攝像頭模塊、測速模塊、測距模塊、電磁信號采集模塊以及姿態檢測模塊。其中,主驅控制模塊集成了單片機最小系統,而其他功能模塊則通過FPC 線、杜邦線或排針排母進行連接。主驅控制模塊包括核心控制器TC264、電源模塊以及可以實現實時根據路況和小車運行姿態調節參數的按鍵、撥碼開關、OLED 等輔助模塊。攝像頭模塊使用的是逐飛科技的130°無畸變的總鉆風攝像頭。測速模塊使用的是1024 線帶方向迷你編碼器。測距模塊使用的是紅外測距。電磁信號采集模塊由6.8nF 電容和10mH 電感經過運放放大電路和濾波電路構成。姿態檢測模塊使用ICM-20602 陀螺儀。關于小車的外觀,請參考圖1。整體系統方案的框圖如圖2 所示。

圖1 小車外觀

圖2 系統整體方案框圖

圖3 TC264 核心板
電源模塊旨在滿足系統各個組成部分的用電需求,因此,在進行設計時,不僅應當關注電壓范圍、電流容量,更重要的是,應當優化轉換效率、抑制噪音、避免干擾,并確保整個電源系統結構簡潔,能夠有效的維持系統的正常工作。通過設計一些穩壓電路,來轉換為各個模塊所需的電壓。為了滿足需求,包含了四種供電電壓:
(1)使用鋰電池供電,正常使用時電壓在7.4~8.4V。可直接用于電機供電。
(2)使用穩壓芯片TPS5430 輸出電壓5V,原理圖如圖4 所示。

圖4 TPS5430 輸出電壓5V
(3)使用穩壓芯片RT9013 輸出電壓3.3V,以滿足OLED、陀螺儀、單片機、攝像頭等供電需求,原理圖如圖5 所示。

圖5 RT9013 輸出電壓3.3V
(4)使用穩壓芯片LM2663 來輸出-5V 電壓,以滿足運放工作的正負5V 供電需求,原理圖如圖6 所示。

圖6 LM2663 輸出電壓-5V
選擇BTN8962 作為電機驅動電路,它是一顆具備極強集成性的芯片,能夠大幅度減小電路板的面積,使板子更加簡潔。原理圖如圖7 所示。

圖7 電機驅動電路
使用大津算法來處理圖像[7],它可以有效地將圖像劃分為黑白兩個不同的部分,并且可以通過設定一系列的閾值來實現這一目標。大津法是針對灰度值進行閾值分割二值化,如果是彩色圖像的話需要先轉化成灰度圖再進行計算。通過使用灰度值閾值Threshold,可以計算出不同像素之間的方差,從而使得相關性降低,黑白變得更加清晰。為了達到最佳效果,需要確保Threshold 值范圍內所有像素之間的方差都達到最大值。效果如圖8 所示。
1.新舊聯系,強化概念的過渡。在傳授新知時,必須注意抓住新、舊知識的聯系,引導學生進行類比、對照,并區別新舊異同,從而理解新知。如用有理數乘法法則時,讓學生與小學數學的乘法法則對比。學生發現它們的不同僅在于確定積的符號,這時講解的重點就放在符號法則上。又如講解分式的基本性質時,又通過分數的基本性質進行引入講解等等,讓學生在學習時有一種熟悉感。

圖8 二值化算法
采用基礎掃線方法,通過從中間行93 向左或向右尋找黑白跳變點來確定左右邊線。一旦確定了左右邊線,就可以計算出實際中線,其計算公式為(左邊線+右邊線)/2。在圖9 中展示了上位機仿真圖像的具體情況。

圖9 上位機仿真
由于智能小車機械機構的限制,攝像頭安裝需要一定角度,導致獲取到的圖像會產生一定的畸變,相比于正常的真實的賽道,呈現出遠處圖像變小、近處圖像變大的特征。本文通過加權平均的方法得到一個比較符合賽道真實狀態的賽道偏差,具體方法如下:將整張圖像的中線分成不同的區間,并且在每個區間平均偏差計算之后再賦予權重系數,最后將所有區間求出的權重偏差進行加和。具體計算公式如下:
公式(2)中e1、e2…ek為各區域偏差,middle[i]為中線數組,n 為所取中線數組的個數,f1、f2…fk為各區域偏差的權值。
智能小車需要根據路徑的方向偏差信息來進行路徑調整。本文采用轉向環和速度環并行控制差速來實現路徑方向調整,使小車能夠在不影響前進的過程中進行方向調整。小車的速度環采用的是位置式PID[8]。但是,由于PID 中的I項具有積分作用,可能會導致小車的轉向響應過慢。因此,小車的轉向環采用了模糊PD 控制。對于偏差的處理采用流程圖如圖10 所示。

圖10 控制流程圖
3.4.1 速度環位置式PID
經過不斷測試和仿真,單P 和PD 的仿真結果都無法達到所需的設定值,并且與期望值相差較大。最終決定使用位置式PID 作為智能小車的速度環。速度環位置式PID 的公式為:
其中:k—采樣序號,k=0,1,2…;Uk—第k 次采樣時刻的輸出值;e—第k 次采樣時刻輸入的偏差值;ek-1—第k-1 次采樣時刻輸入的偏差值;∑ei—到第k 次為止的誤差積累項;Kp—比例項系數;Ki—積分項系數;Kd—微分項系數。
單P 仿真結果:無法達到設定速度,并且毛刺較多速度不穩定,仿真結果如圖11 所示。

圖11 單P 仿真
PD 仿真結果:無法達到設定速度,毛刺較少速度相對穩定,仿真結果如圖12 所示。

圖12 PD 仿真
PID 仿真結果:可達到設定速度,并且毛刺較少,響應速度快,速度能在短時間內達到穩定狀態,仿真結果如圖13 所示。

圖13 PID 仿真
3.4.2 轉向環模糊PD[9]
在嘗試過最簡單的PD、串級PD 作為智能小車的轉向環之后,發現對于一些特殊元素比如環島、大S 彎等轉彎角度過大的元素“賽道”魯棒性非常差,小車很容易失控沖出賽道。在不斷測試下,最后決定采用了三個模糊表,分別是根據誤差模糊P、根據誤差變化率模糊D、根據速度模糊補償項的P 和D。極大地增強了小車的魯棒性,并且速度上也有很大的提升,并且小車的轉彎姿態非常好。隸屬度函數使用的是三角型隸屬度函數[10],模糊表如表1、表2、表3 所示,去模糊化采用重心法[11]。轉向環控制流程圖如圖14 所示。

表1 模糊p控制器

表2 模糊d控制器

表3 模糊補足項pd控制器

圖14 轉向環控制流程圖
根據誤差模糊P 模糊表如表1 所示。
根據誤差模糊D 模糊表如表2 所示。
根據速度模糊補償項PD 模糊表如表3 所示。
通過紅外測距模塊和攝像頭來判斷障礙物,通過圖像識別出障礙物的距離和紅外測距模塊測出的距離加權平均來得到一個合適的偏差值,然后使用這個偏差值來進行轉向,直至紅外測距模塊測得值大于小車直行不會碰到障礙物的狀態下,實現避障[12]功能。
經過不斷測試,小車的魯棒性得到了極大的增強,隨機賽道完賽率在85%以上,并且在第18 屆全國大學生智能車競賽中獲得了全國第四的成績。
本文設計并實現了基于圖像識別的三輪智能車控制系統。在電路方面,設計了核心板、電機驅動、電源轉換等不同模塊。在程序方面,下位機采用C 語言進行編程,上位機采用C#語言進行編程,通過開發工具進行程序調試。通過圖像處理、位置式PID 速度環和模糊PD 轉向環并行的方式使小車實現該功能。經過反復測試與優化,最終構建了一套更加通用、穩健的算法和參數。該算法和參數能夠根據實際路況變化,自動調整車速,在直線上實現加速,在彎道上達到減速,從而確保在最短的時間內完成整個比賽。