李曉旭,周煥銀
(東華理工大學 機械與電子工程學院,江西 南昌330013)
基于STM32智能小車視覺控制導航的設計
李曉旭,周煥銀
(東華理工大學 機械與電子工程學院,江西 南昌330013)
為了提高車載視頻導航控制子系統的準確度,本文介紹一種基于STM32的視覺導航系統。該系統使用USB攝像頭采集周圍環境信息,視頻通過編碼后由無線路由傳送到上位機,在上位機的MATLAB中利用現有的灰度和二值化的方法對圖像進行處理,以及在Keil軟件平臺上進行編程,小車采用PID控制算法控制電機的速度,以此用來改變小車移動的方向。通過實驗驗證,該系統確實能夠在一定的區域內實現導航,具有一定的可擴展性。
STM32;視覺導航;圖像處理;PID
以往大多數自主路徑規劃機器人都是從傳感器獲得相關數據進行障礙物感知,再進行路徑規劃。隨著計算機技術和電子技術的發展,視覺導航已經成為導航技術的主要方式之一。在基于視覺的移動機器人導航系統中,機器視覺是移動機器人視覺導航系統中的關鍵技術,是控制決策子系統[1]的重要信息來源。因此,越來越多的研究者投身于視覺導航技術的研究,尤其是最近30年,視覺導航在飛機、無人飛行器、各類巡航導彈、深空探測器以及室內外機器人等方面得到了廣泛的應用。文獻[2]在感興趣區域內,采用模糊聚類、線性擬合以及幀間差分法確定障礙物位置;文獻[3]根據視覺信息的基本處理過程,對視覺圖像預處理技術、視覺圖像特征提取技術以及視覺定位技術等方面進行了詳細的介紹;文獻[4]設計了一種視覺輔助慣導組合導航方法,輔助無人機自主著陸;文獻[5]中使用小波視頻導航算法,經研究發現,小波算法的實時性都待提高;文獻[6]中介紹了智能車輛視覺系統中的一些圖像處理技術,目前主要有二值、邊緣和銳化等技術;文獻[7-9]中則具體介紹了現在基于視覺的智能車輛控制系統。文中是利用WIFI圖像采集模塊,使用圖像處理技術(灰度化、二值化[10-11])提取圖像信息,然后控制子系統規劃智能小車下一步路徑,使其能夠在規定的區域內得到最佳行進路線。
本系統選用STM32F103zet6作為主控處理器來完成整個小車系統任務。STM32系列[12]專為要求高性能、低成本、低功耗的嵌入式應用系統專設計,其內部嵌有ARM Cortex-0內核。stm32f103系列單片機使用的是低電平復位,上電復位時必須保證有足夠的時間才能完成系統初始化。工作原理是利用電容充放電時電壓不可突變的性質。上電時電壓電壓為0,隨電源通過R21和C32進行充電后,電容兩端的電壓為高電平,完成系統復位。該系統使用外部晶振,芯片的時鐘源有5種:HSI、HSE、LSI、LSE、PLL。系統使用高效線性穩壓電源AMS1117,用于5 V到3.3 V電平轉換,為本微機最小系統提高工作電源。
如圖1所示,本系統主要包括兩個子系統:圖像采集模塊和驅動模。其主要工作流程為:由PC端向WIFI模塊發送一個視頻請求,路由端的視頻處理程序會把獲取的USB攝像頭視頻傳回PC端,然后PC端進行視頻解碼并顯示;PC端發送指令到WIFI模塊,然后通過路由器的轉換,把指令轉給單片機,從而機器人執行指令。

圖1 系統框圖
2.1 圖像采集模塊
圖像采集模塊主要有WIFI模塊和USB攝像頭組成。由于本系統的WIFI模塊本身就運行著一個可以把通過USB攝像頭采集到的視頻進行編碼的程序,叫做mjpg-streamer。視頻進行編碼后,將通過WIFI模塊傳送個PC機,這樣就可以看到來自機器人的視頻。同時WIFI模塊預留有TTL串口,把該串口引出來,然后通過在無線路由里安裝的串口通訊軟件,ser2net,把來自WIFI信道的指令轉到串口輸出,一般TTL串口是用來調試或刷機用的,而該串口是用來與單片機芯片MCU通信,然后,單片機執行相應的指令動作。WIFI模塊與單片機系統的連接如圖2所示。PA9為單片機的TXD,其接WIFI模塊的RX;PA10為單片機的RXD,其接WIFI模塊的TX。

圖2 WIFI模塊與單片機系統的連接
2.2 驅動模塊
在本系統中采用的是L298N雙驅動,L298N內置4路驅動邏輯電路,即含有2路H橋高電壓高電流雙全橋式驅動電路,接收標準的TTL電平,實現低壓控高壓。速度調節原理采用PWM(脈沖寬度調制)方式。在本電路中ENA和ENB為PWM作為調節信號輸入引腳,與單片機的PA0、PA1相連,IN1~IN4,IN5~IN8作為電機運動狀態控制引腳(左轉、右轉、停)與單片機的PF0~PF3、PF12~PF15相連。LED燈作狀態指示燈,并聯在輸出端的二極管目的是防止輸出電平異常,為感性負載提供續流通道,防止芯片燒壞。

圖3 L298N與單片機的連接

表1 L298N邏輯功能表
本系統中,軟件主要包括兩個部分:上位機圖像處理和下位機控制系統。該系統的主程序流程圖如圖4所示。PC上位機發送請求void request_process(char*rx_buf)后,攝像頭通過WIFI無線路由傳送給上位機,在MATLAB軟件中利用灰度化、二值化的算法對視頻圖像進行處理,根據處理信息,小車的決策子系統控制小車移動。

圖4 系統主程序流程圖
3.1 圖像處理
本設計是在MATLAB[13]中對圖像進行灰度化與二值化[10-11]處理的,MATLAB中與圖像處理相關的基本函數有:讀imread、寫imwrite、顯示imshow、信息查看imfinfo、數據類轉換B=data_class_name(A)。
圖像灰度化是通過對彩色圖像的幾個分量進行加權平均,最終得到灰度圖像。MATLAB圖像處理工具箱提供了灰度調整函數imadjust(),可以將圖像的灰度值調整到一個指定的范圍。如果原圖象f(x,y)的灰度范圍是[m,M],我們希望調整后的圖象g(x,y)的灰度范圍是[n,N],Imadjust函數的語法格式為:J=imadjust(I,[low_in high_in],[low_out high_out]);J是返回圖象 I經過直方圖調整后的圖象,[low_in high_in]為原圖象中要變換的灰度范圍,[low_out high_out]指定了變換后的灰度范圍。圖像二值化是選取一個合適的閩值將256級的灰度圖轉化為只有兩個灰度級的二值圖像,從而明確區分目標和背景,簡化圖像。二值化的關鍵在于閡值的選取,閉值過小目標信息會有所缺失,閉值過大則背景信息混入目標中。求出圖象的最大灰度值和最小灰度值,分別記為Rmax和Rmin,令閾值T=(Rmax+Rmin)/2,根據閾值T將圖象的平均灰度值分成兩組R1和R2,分別求出兩組的平均灰度值μ1和μ2,求出新閾值T=(μ1+μ2)/ 2。對圖像進行分析時,并不是對灰度圖像分析,而是選取合適的閡值,將缺陷結果圖像進行二值化。這樣降低了處理的數據量,保證實時性要求。
3.2 控制系統
該智能車的控制系統包括控制小車電機速度的PID算法[14-15]和小車移動部分,視頻導航智能車的控制程序是由Keil For ARM 編寫完成,設定extern PID_type PID1和extern PID_type PID2分別為左右輪的PID,設定u32 read_car_speed(char*pwm)為獲取的小車速度PWM值,為PID運算提供反饋值。如圖5所示PID程序流程圖。

圖5 PID程序流程圖
在小車執行程序中設置void car_process(char*rx_buf)為小車處理函數,假如 strncmp(" car_go",rx_buf,6)不等于0,小車前進;strncmp(" car_back",rx_buf,8)不等于0,小車后退;strncmp(" car_left",rx_buf,8)不等于0,小車左轉;strncmp(" car_right",rx_buf,9)不等于0,小車右轉;strncmp(" car_stop",rx_buf,8)不等于0,小車停止;strncmp(" pwm",rx_buf,3)不等于0,設置小車的速度值。
在進行系統程序調試和運行前,首先要進行系統測試,測試過程中,插座中先不插入各個模塊的線,等測試結束后,在將各個模塊的線相連。
雖然與市場上常見的采用非視覺傳感器進行控制的智能車輛相比,本設計能夠通過視頻采集與處理技術使智能車完成一定的導航功能,在研究方面取得了一些進展,不僅降低了科研成本,而且能夠全方位、多角度采集周圍環境信息,使智能車呈現出較高的智能性,但是在實際應用中,還有很多需要進一步改進、完善的地方。
[1]孫涵,任明武,唐振民,等.基于機器視覺的智能車輛導航綜述[J].公路交通科技,2005,22(5):132-135.
[2]畢書浩,李守成,完顏香麗.基于單目視覺的無人車環境感知技術研究 [J].機械工程與自動化,2014,183(2):57-58.
[3]管敘軍,王新龍.視覺導航技術發展綜述[J].航空兵器,2014,18(5):3-7.
[4]財鳴,孫秀霞,徐嵩,等.視覺技術輔助的無人機自主著陸組合導航研究 [J].應用光學,2015,36(3):343-350.
[5]張靜.基于小波及亞像素分析的道路檢測技術研究[D].武漢:武漢理工大學,2008.
[6]蔣杰.智能車輛視覺系統及圖像處理技術的研究[D].長春:吉林大學,2003.
[7]劉巍.基于STM32的小型排障智能車設計與實現[D].保定:河北大學,2013.
[8]馮準.嵌入式視覺導航智能小車系統[D].長沙:中南大學,2008.
[9]王珊珊.輪式移動機器人控制系統設計[D].南京:南京理工大學,2013.
[10]陳丹,張蜂,賀貴明.一種改進的文本圖像二值化算法[J].計算機工程,2003,29(13):85-86.
[11]張琪.結合邊緣檢測的圖像二值化算法[D].長春:吉林大學,2011.
[12]STM32f103中文數據手冊[M].
[13]張錚,王艷平,薛桂香.數字圖像處理與機器視覺——Visual C++與Matlab實現[M].北京:人民郵電出版社,2014.
[14]郭智源,韓建,張西鵬,等.基于STM32的PID和PWM溫度控制系統研究 [J].科學技術與工程,2011,11(16):3805-3807.
[15]倪長旺.可編程控制器PID算法的工程應用[J].自動化技術與應用,2015,34(12):68-71.
STM32-based visual control of the smart car navigation system
LI Xiao-xu,ZHOU Huan-yin
(College of Information and Electronic Engineering,East China Univ.of TECH.,Nanchang 330013,China)
In order to improve the accuracy of the navigation system,this paper introduces the visual navigation system based on STM32.The system uses a USB camera to capture the information of surrounding environment,the video encoded before transmitted to the host computer by the wireless router,using exist image processing algorithms for image processing in MATLAB as well as programming in Keil software platform PC's,car used PID control algorithm to control the motor speed in order to change the direction of movement.Experiments show that the system can indeed achieve navigate in a certain area,having certain expansibility.
STM32;visual navigation;image processing;PID
TN0
A
1674-6236(2017)09-0105-03
2016-04-07稿件編號:201604039
東華理工大學實驗技術研究開發項目(DHSY-201604)
李曉旭(1990—),女,江蘇徐州人,碩士研究生。研究方向:多智能體協同控制。