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