隨著各種科學技術(shù)的不斷提高,自動化技術(shù)的不斷加深,智能遙控技術(shù)將跨領(lǐng)域應(yīng)用,并深入普及。機器人小車的研究是移動機器人分支的一部分,是一項涉及到計算機技術(shù)、傳感技術(shù)、通訊技術(shù)等相關(guān)技術(shù)的綜合系統(tǒng)。它的主要功能是利用無線網(wǎng)絡(luò)視頻技術(shù)實現(xiàn)識別路徑,控制車速及操縱轉(zhuǎn)向等。
小車采用STM32單片機作為主制器,通過一款Wifi射頻模塊RT5350實現(xiàn)遠程視頻畫面的傳輸,整個項目涵蓋的知識面廣,包括單片機編程技術(shù),OpenWrt路由器系統(tǒng)以及Windows上位機軟件開發(fā)等等不同技術(shù)領(lǐng)域。下面分為三個層面來介紹視頻小車的實現(xiàn)方法:
(1)底層驅(qū)動層:以STM32單片機實現(xiàn)對小車的驅(qū)動控制;
(2)中層傳輸層:借助RT5350路由器平臺傳輸控制命令以及視頻流;
(3)頂層控制層:在Windows平臺實現(xiàn)對小車的控制。
1、底層驅(qū)動層
小車整體是實現(xiàn)STM32單片機控制小車電機的運動和控制攝像頭的舵機云臺的運動。由于STM32單片機提供的電流非常微小,不足以讓小車動起來,所以需要電機驅(qū)動模塊,這里使用了L298N模塊驅(qū)動小車的直流電機。
1.1、電機驅(qū)動原理
小車左輪右輪上分別配有兩個電機,左輪電機A與右輪電機B的正轉(zhuǎn)、反轉(zhuǎn)和停止決定著小車的運動模式。而STM32單片機4根電機控制信號線連接著L298N的IN1~IN4,另外兩根PWM調(diào)速信號線連著ENA和ENB。電路圖詳情見圖1。
圖1 電路原理圖
輸入信號線IN1和IN2控制電機A的運動,直流電機A接OUT1和OUT2。同理,IN3和IN4合起來控制了電機B的運動。對應(yīng)小車的對應(yīng)的運動模式詳情見表1。
表1小車的對應(yīng)的運動模式
1.2、電機調(diào)速原理
如上圖1中L298N上還有有ENA和ENB兩個信號輸入端口,這兩個端口的作用是控制信號的使能,低電平有效。只有當信號線拉低時候,L298N才會遵循表1中列出的運動模式。
由于L298N有控制使能的信號線,則可以通過控制ENA和ENB的信號來進行PWM調(diào)速。原理是開關(guān)管在一個周期T的時間內(nèi)導通的時間為t,那么電機兩端的平均電壓U=V*t/T=aV。其中,a=t/T(占空比),V是電源電壓。電動機的轉(zhuǎn)速與電動機兩端的電壓成正比,而電動機兩端的電壓與控制波形的占空比成正比,因此電動機的轉(zhuǎn)動速度與PWM信號的占空比成比例,信號的占空比越大電動機轉(zhuǎn)動得越快。
1.3、云臺驅(qū)動原理
云臺控制攝像頭的運動,這里采用了MG995舵機云臺。二自由度的MG995舵機云臺是一款扭矩大、性價比高的小型云臺,可以在水平方向和垂直方向做180°的二自由度運動。安裝上攝像頭可以實現(xiàn)圖像監(jiān)控、圖像識別和定位追蹤等功能;加裝超聲波測距傳感器或紅外傳感器可以組合成一體化探測裝置,使機器人能感測周圍的障礙物,從而可以實現(xiàn)機器人自動避障功能。
舵機云臺驅(qū)動原理也是PWM調(diào)速信號控制,舵機最早用于船舶上實現(xiàn)特定的轉(zhuǎn)向功能,由于通過程序可以控制其連續(xù)轉(zhuǎn)角,因而被廣泛應(yīng)用在智能小車和機器人等關(guān)節(jié)運動上。舵機的控制信號周期為20ms的脈寬調(diào)制信號,脈沖寬度0.5~1.5ms相對應(yīng)的舵盤位置為0~180°,這個過程呈線性變化。給舵機提供周期為20ms寬度在0.5~1.5ms中的某個的脈寬信號,舵機的輸出軸就會保持相對應(yīng)角度。無論外界轉(zhuǎn)矩怎么改變,輸出軸的位置不會改變。除非提供一個新的脈寬信號,舵機才會改變輸出角度到新的對應(yīng)位置上。
在STM32單片機上給出兩條信號線分別連接水平方向和垂直方向上的兩個舵機,通過調(diào)制出周期為20ms寬度在0.5~1.5ms的PWM信號即可控制舵機在兩個方向上的角度,即可控制云臺攝像機的位置。初始化時將脈寬調(diào)制到1.5ms,使舵機在90度的中間位置,程序正常運行時通過上位機的指令來調(diào)整脈寬的寬度來控制舵機相應(yīng)的位置。
1.4、小車實物展示
實物見圖2。
圖 2 ?視頻小車實物圖
2、中層傳輸層
傳輸層是完成對控制命令的傳輸,是連接小車和電腦的橋梁,同時也負責視頻畫面的采集和編碼,這里用Ralink公司的一款RT5350路由器芯片完成工作。RT5350平臺是基于MISP的Linux系統(tǒng),和我們的PC配置類似,有必要的CPU、內(nèi)存和硬盤。CPU是MIPS架構(gòu)360M主頻RT5350芯片,內(nèi)存則是32MBSDRAM芯片,硬盤是8MB的FLASH閃存,采用的是基于Linux的OpenWrt路由器系統(tǒng)。內(nèi)核里安裝了UVC的USB攝像頭驅(qū)動程序,并且運行了Mjpg-Streamer視頻傳輸服務(wù)器軟件,實現(xiàn)了對視頻畫面的傳輸??刂泼畹膫鬏斒峭ㄟ^Ser2net一款I(lǐng)P轉(zhuǎn)串口的軟件,實現(xiàn)IP協(xié)議與單片機命令的對接。
2.1RT5350芯片
RT5350的特征是性價比高,成本優(yōu)勢大,因而迅速占領(lǐng)了很大部分的低端路由器市場。由于支持USB2.0的擴展,配合3G網(wǎng)卡能擴展成3G路由器,配合USB攝像頭能擴展成Wifi攝像機,配合USB聲卡能擴展成Wifi音響,還可以用來做Wifi智能插座。這里,正是運用了配合USB攝像頭來實現(xiàn)視頻畫面的傳輸。
2.2、OpenWrt系統(tǒng)
OpenWrt是一個嵌入式Linux發(fā)行版,是三大主流路由器系統(tǒng)之一。很多智能路由器都采用了OpenWrt系統(tǒng),能在系統(tǒng)上實現(xiàn)很多第三方功能,如能實現(xiàn)校園網(wǎng)認證登錄功能,能支持SAMBA服務(wù)器,能支持離線下載等等功能。
由于RT5350的普及性,OpenWrt系統(tǒng)已經(jīng)全面支持RT5350系統(tǒng)。大致編譯方法:在Ubuntu系統(tǒng)上下載OpenWrt的源碼,安裝相應(yīng)的交叉編譯器,配置相應(yīng)的驅(qū)動及軟件即可編譯出所需要的OpenWrt系統(tǒng)。有了操作系統(tǒng),接下來安裝所需要的功能軟件。主要安裝的是MJPG-Streamer和Ser2net軟件,前者負責視頻傳輸,后者負責命令傳輸。
2.3、MJPG-streamer
MJPG-streamer是一款MJPG視頻流服務(wù)器,其中”input-uvc.so”輸入插件是Linux上的通用攝像頭插件,”ouput_http.so”輸出插件是網(wǎng)站服務(wù)器插件,這兩款插件配合使用,將USB攝像頭采集的視頻數(shù)據(jù)復(fù)制到了Http服務(wù)器中,用戶通過訪問服務(wù)器即可獲得USB攝像頭上的MJPG視頻流,再通過相應(yīng)的解碼即可獲得視頻圖像。
當系統(tǒng)啟動完成后,MJPG-streamer正常運行,就可以在PC通過Http協(xié)議訪問相應(yīng)的視頻地址獲得MJPG視頻流數(shù)據(jù),火狐瀏覽器就可以播放MJPG視頻流,也可以參考MJPG視頻流協(xié)議寫出解碼程序。
2.4、Ser2net
Ser2net是運行在Linux系統(tǒng)上一款I(lǐng)P轉(zhuǎn)串口軟件。由于電腦上通信協(xié)議是IP協(xié)議,而STM32單片機資源有限使用了串口通信協(xié)議,Ser2net正是溝通這兩種協(xié)議間的橋梁,有了它電腦就能通過IP編程對小車控制了。
大致原理是RT5350平臺開啟一個TCP服務(wù)端口比如2001,當電腦端連接上此端口后,所有傳向2001端口的IP流數(shù)據(jù)都會轉(zhuǎn)發(fā)帶RT5350的串口上,所以發(fā)向RT5350串口的數(shù)據(jù)都會轉(zhuǎn)發(fā)到遠程IP終端。而RT5350的串口連接上STM32單片機串口,所以Ser2net軟件實現(xiàn)了IP協(xié)議到小車的數(shù)據(jù)通路。
3、頂層控制層
3.1、通信協(xié)議定義
在STM32單片機里定義了控制協(xié)議,這個協(xié)議自己定義,比如發(fā)送數(shù)據(jù)包0xff,0xff,0x01,0x01代表前進。前面兩位用于標識頭碼,第三位標識對象,第四位標識數(shù)據(jù)值。
表2控制小車的通信協(xié)議
3.2、MJPG視頻解碼
小車上的RT5350模塊已經(jīng)提供了基于HTTP協(xié)議的MJPG視頻流,在上位機軟件端需要編寫軟件解碼視頻流即可獲得小車視頻畫面。這里簡單介紹一下在VS2010中C#的解碼思路:
第一步:Http請求視頻地址
第二步:獲取視頻流
第三步:找到JPEG頭和尾
第四步:將獲得的JPEG圖像顯示出來
3.3、控制小車電腦程序
小車的控制方法是創(chuàng)建一個TCP連接至小車的2001端口,向這個端口直接發(fā)送控制命令,參考表1的通信協(xié)議即可控制小車的運動。這里簡單介紹一下在VS2010中C#的編程思路:
第一步:創(chuàng)建一個套接字
第二步:連接上小車的IP地址和控制端口
第三步:繪出控制相應(yīng)的按鈕和按鍵
第四步:編寫響應(yīng)按鈕和按鍵的事件,通過已連接的套接字發(fā)送對應(yīng)的控制命令
3.4、主界面
主界面見圖4。
圖4 ?C#編寫的小車上位機軟件
評論