吳艷娟, 王 凱, 程閆斌, 王留濤, 王 健, 全宗祺
(天津理工大學(xué)a. 電氣電子工程學(xué)院;b. 天津市復(fù)雜系統(tǒng)控制理論及應(yīng)用重點(diǎn)實(shí)驗(yàn)室,天津300384)
攝像機(jī)舵機(jī)控制系統(tǒng)廣泛應(yīng)用于攝像機(jī)云臺和智能云臺,軍用和航空舵機(jī)云臺控制穩(wěn)定性和控制精度都達(dá)到了很高的水平,被廣泛地運(yùn)用到坦克、導(dǎo)彈、火箭、無人機(jī)及各種飛行器等設(shè)備中[1-4],在工業(yè)和民用方面應(yīng)用也越來越廣泛[5]。目前,無人駕駛智能車、無人值守智能變電站,無人值守智能倉庫、無人值守停車場和智能機(jī)器人等技術(shù)的發(fā)展受到極大關(guān)注[6-11],攝像頭作為視覺系統(tǒng),在一定程度上決定了機(jī)器人環(huán)境適應(yīng)性和可視性的能力,也體現(xiàn)機(jī)器人執(zhí)行任務(wù)的效率或操控難度。目前在高精度智能機(jī)器上都會安裝有攝像頭,如果攝像頭是固定的,不能轉(zhuǎn)動,機(jī)器視覺的視野范圍就會受限,會存在很大的視覺死角,使用就會存在局限性。為進(jìn)一步提高智能化,需要對攝像頭的視覺范圍進(jìn)行調(diào)整,將采集的圖像信息進(jìn)行遠(yuǎn)程通信,數(shù)據(jù)交互,實(shí)現(xiàn)遠(yuǎn)程控制[12-14]。特別是對于在無人值守的工作環(huán)境或工作人員無法進(jìn)入的惡劣工作環(huán)境中的一些智能設(shè)備,更需要這種遠(yuǎn)程控制技術(shù)[15]。鑒于此,本文提出基于互聯(lián)網(wǎng)的攝像機(jī)自由轉(zhuǎn)動舵機(jī)遠(yuǎn)程控制技術(shù),研制出試驗(yàn)演示控制系統(tǒng),該控制系統(tǒng)實(shí)現(xiàn)了在客戶端對攝像頭二自由度轉(zhuǎn)動的舵機(jī)進(jìn)行遠(yuǎn)程控制,可通過客戶端靈活控制智能機(jī)器的視覺范圍,解決了攝像頭固定不動視野范圍受限,以及因工作環(huán)境限制無法進(jìn)行現(xiàn)場操作等技術(shù)問題。
本系統(tǒng)主要組成部分包括執(zhí)行遠(yuǎn)程控制的客戶端、進(jìn)行數(shù)據(jù)交互的互聯(lián)網(wǎng)、主控制器(包括全球廣域網(wǎng)(World Wide Web,Web)服務(wù)器、上位機(jī)和下位機(jī))、執(zhí)行部件(包括攝像頭和舵機(jī)云臺)和電源等。
系統(tǒng)通過主控制器局域網(wǎng)與客戶端進(jìn)行數(shù)據(jù)交互。移動客戶端通過局域網(wǎng)與主控制器連接,可以接收主控制器發(fā)送的視頻圖像信息和云臺舵機(jī)當(dāng)前的位置信息,同時移動客戶端可以向主控制器發(fā)送控制命令改變云臺的姿態(tài)。主控制器的上位機(jī)解析接收到的數(shù)據(jù),控制信號通過下位機(jī)驅(qū)動云臺舵機(jī)改變云臺姿態(tài),實(shí)現(xiàn)攝像頭視角的改變。主控制器也驅(qū)動顯示屏顯示系統(tǒng)運(yùn)行時的重要信息。系統(tǒng)總體的結(jié)構(gòu)框圖如圖1 所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
本設(shè)計分成硬件和軟件設(shè)計兩個部分,硬件設(shè)計又分成機(jī)械結(jié)構(gòu)設(shè)計和電路設(shè)計兩部分,整個設(shè)計過程采用模塊化設(shè)計方法。
整體的硬件設(shè)計包括主控制器、攝像頭、舵機(jī)云臺、顯示設(shè)備等,如圖2 所示。攝像頭模塊實(shí)現(xiàn)系統(tǒng)圖像信息采集功能,舵機(jī)云臺為攝像頭模塊轉(zhuǎn)動提供動力,圖像信息的傳輸和處理、客戶端控制命令數(shù)據(jù)的傳輸和解析及控制攝像頭轉(zhuǎn)動信息等均需要主控制器來控制。系統(tǒng)運(yùn)行過程中的重要信息通過顯示屏顯示。
圖2 系統(tǒng)硬件框圖
采用Raspberry Pi 3B +微型計算機(jī)為主控板,具有較強(qiáng)的硬件擴(kuò)展能力。Raspberry Pi 微型計算機(jī)搭載了無線網(wǎng)卡、Ethernet 網(wǎng)口、攝像頭串行接口(Camera Serial Interface,CSI)、40 管腳通用輸入與輸出(General-purpose input/ output,GPIO)等擴(kuò)展硬件,具有較強(qiáng)的硬件擴(kuò)展能力。在Raspbian 操作系統(tǒng)的配置界面中進(jìn)行使能攝像頭和內(nèi)置集成電路(Inter-Integrated Circuit,I2C)總線初始化硬件接口。
由于主控制器件的GPIO 帶負(fù)載能力有限,外圍器件的驅(qū)動需要單獨(dú)的電源,以保證運(yùn)行穩(wěn)定和安全。并且外圍器件需要接口方便插拔調(diào)試、固定舵機(jī)和有機(jī)發(fā)光二極管(Organic Light-Emitting Diode,OLED)顯示屏等,因此為外圍器件附加了帶插拔接口的驅(qū)動板。驅(qū)動板原理圖如圖3 所示。5 V直流電源為舵機(jī)提供動力。舵機(jī)和OLED通過線纜連接到驅(qū)動板上的插頭母座。
圖3 驅(qū)動板原理圖
采用Raspberry Pi配套CSI 接口高速率攝像頭模塊(Camera Module V2)采集圖像信息。為讓系統(tǒng)中攝像頭視覺范圍提升明顯,需要增加攝像頭在空間的自由度和每個自由度上的轉(zhuǎn)動范圍。搭建攝像頭云臺可以明顯提升攝像頭的視覺范圍。云臺的轉(zhuǎn)動動力來自型號為sg90g的舵機(jī)對外輸出的力矩。云臺的兩個自由度轉(zhuǎn)動軸相互垂直,舵機(jī)輸出軸為轉(zhuǎn)動軸。云臺機(jī)械結(jié)構(gòu)示意圖如圖4 所示,圖中2 個舵機(jī)分別控制云臺2 個軸的轉(zhuǎn)動。
系統(tǒng)運(yùn)行時有一些重要信息,但主要是文本信息,信息量較小。顯示該類信息的需求對顯示屏大小和色彩要求較低,采用OLED 顯示屏?xí)虞p薄,功耗更低,反應(yīng)速率更快。
系統(tǒng)整體硬件包括攝像頭云臺、微型計算機(jī)、外圍器件驅(qū)動板、OLED 顯示屏模塊。在機(jī)械結(jié)構(gòu)的分布上,將攝像頭云臺設(shè)計為一個整體(見圖4),微型計算機(jī)和外圍器件驅(qū)動板組合成一個整體,OLED 顯示屏連接在外圍器件驅(qū)動板上。其中微型計算機(jī)和外圍器件驅(qū)動板組合后的機(jī)械結(jié)構(gòu)如圖5 所示。共分為3層,最上層是支架板,其功能是風(fēng)扇支架和舵機(jī)云臺支架;中間一層為Raspberry Pi 3B +主控板;最下層為外圍器件驅(qū)動板,為系統(tǒng)舵機(jī)、OLED 顯示屏器件提供接口。
圖4 云臺機(jī)械結(jié)構(gòu)示意圖
圖5 安裝組合圖
攝像機(jī)模塊通過樹莓派板載CSI 連接器連接到Raspberry Pi上,CSI接口如圖6 主控電路板中紅線標(biāo)注所示。腳本主要采取循環(huán)緩存采集圖像文件的方法,實(shí)現(xiàn)了“流視頻技術(shù)”實(shí)現(xiàn)實(shí)時顯示效果,服務(wù)器會持續(xù)不斷地向客戶端推送圖像信息。
為了防止出現(xiàn)視頻畫面卡頓的現(xiàn)象,需要保證攝像機(jī)圖像信息的數(shù)據(jù)大小與網(wǎng)絡(luò)傳輸速率相匹配,因此,采用改變采集圖像信息時每一幀的大小和位置方法。在該腳本中對采集的圖像做了一個初始化,包括圖像的分辨率、圖像的水平和垂直翻轉(zhuǎn),通過調(diào)整圖像數(shù)據(jù)的大小以適應(yīng)網(wǎng)絡(luò)傳輸速度。
圖6 Raspberry Pi CSI總線接口
舵機(jī)是一種伺服電機(jī),其輸出軸的位置可以不斷變化并可以保持。其結(jié)構(gòu)包括小型直流電動機(jī)、控制器、減速齒輪組、功率放大器、必要的固定器件以及外引線組成,采用閉環(huán)控制,其控制結(jié)構(gòu)框圖如圖7所示。
圖7 舵機(jī)控制系統(tǒng)結(jié)構(gòu)框圖
本文舵機(jī)控制系統(tǒng)執(zhí)行位置控制,輸入的控制信號是給定舵機(jī)舵面位置的脈沖信號,通過與反饋環(huán)節(jié)電位器檢測的當(dāng)前舵機(jī)舵面位置脈沖信號進(jìn)行比較獲得偏差,控制器對偏差進(jìn)行調(diào)整后由功率放大器放大驅(qū)動直流電動機(jī)轉(zhuǎn)動,帶動與直流電動機(jī)機(jī)械連接的減速齒輪組轉(zhuǎn)動,并且?guī)优c減速齒輪組輸出端相連接的同軸輸出軸轉(zhuǎn)動相應(yīng)角度,達(dá)到按照偏差調(diào)整舵機(jī)舵面位置的目的。其中,作為反饋環(huán)節(jié)的電位器與輸出軸相連,將檢測到的位置脈沖信號反饋給輸入端,與輸入信號作比較,以此實(shí)現(xiàn)閉環(huán)控制。當(dāng)輸入信號(給定的位置脈沖信號)與電位器反饋的位置脈沖信號相同時,舵機(jī)就保持當(dāng)前位置。當(dāng)輸入信號與電位器反饋的位置信號不同時,舵機(jī)將會繼續(xù)轉(zhuǎn)動直到到達(dá)指定位置停止并保持該位置。
舵機(jī)的控制信號需要周期為20 ms 的脈寬調(diào)制(Pulse-Width Modulation,PWM)脈沖信號,該脈沖高電平范圍為0. 5 ~2. 5 ms[16],即占空比范圍為2. 5% ~12. 5%,不同占空比的PWM 脈沖對應(yīng)著舵機(jī)不同的位置0 ~180°。通過Raspberry Pi產(chǎn)生指定的PWM脈沖作為舵機(jī)的控制信號。舵機(jī)控制效果是線性的,但在實(shí)際使用過程中,由于生產(chǎn)舵機(jī)個體之間零部件的差異、減速齒輪的磨損、負(fù)載的變化等影響因素的存在,舵機(jī)的機(jī)械特性并非是嚴(yán)格線性的。為在實(shí)際控制過程中精確的控制舵機(jī)的位置角度,本文對實(shí)際的舵機(jī)機(jī)械特性做了線性矯正。矯正方法是采用實(shí)際測量數(shù)據(jù)擬合的方法,根據(jù)測試數(shù)據(jù)獲得控制攝像頭左右轉(zhuǎn)動的1 號舵機(jī)和控制攝像頭上下轉(zhuǎn)動的2 號舵機(jī)擬合公式:
式中:y為占空比;x為轉(zhuǎn)動位置。波形如圖8 所示,R2為擬合系數(shù)。攝像機(jī)二自由度轉(zhuǎn)動控制軟件設(shè)計流程圖如圖9 所示。
圖8 舵機(jī)擬合機(jī)械特性
圖9 舵機(jī)控制腳本程序流程圖
本設(shè)計采用在主控微型計算機(jī)Raspberry Pi 上搭建Flask Web 服務(wù)器的方法,編寫Web 應(yīng)用程序(Application ,APP),建立與客戶端的通信,實(shí)現(xiàn)圖像信息的發(fā)送和控制信號的接收和處理。所編寫的Web程序以Flask 路由功能為核心,建立與硬件腳本的聯(lián)系,接收到客戶端的命令后,通過相應(yīng)的路由調(diào)用函數(shù)控制硬件來實(shí)現(xiàn)服務(wù)器與客戶端的交互。核心程序控制框圖如圖10 所示。
圖10 Web程序流程圖
程序運(yùn)行啟動后,會一直詢問8080 端口是否有局域網(wǎng)內(nèi)的客戶端訪問。當(dāng)Web 服務(wù)器與客戶端建立連接后,服務(wù)器會發(fā)送數(shù)據(jù)包給瀏覽器客戶端,瀏覽器把接收到的數(shù)據(jù)解析成圖形界面給用戶。同時服務(wù)器會啟動攝像頭模塊的腳本,并不間斷向客戶端發(fā)送圖像信息,客戶端用戶可以看到實(shí)時的流視頻。客戶端上服務(wù)器傳回的頁面中除了采集的圖像信息,還有舵機(jī)的控制按鈕和舵機(jī)位置顯示的信息。用戶通過操作舵機(jī)的控制按鈕,向服務(wù)器發(fā)送請求,服務(wù)器在接收到舵機(jī)的控制請求時,啟動控制舵機(jī)的腳本。腳本運(yùn)行后控制舵機(jī)改變安裝有攝像頭的二自由度云臺位置,通過無線網(wǎng)絡(luò)控制攝像頭云臺。舵機(jī)控制腳本停止后,服務(wù)器將腳本返回的舵機(jī)位置參數(shù)打包成Java 腳本對象簡譜(JavaScript Object Notation,JSON)數(shù)據(jù)格式推送給客戶端。
前端網(wǎng)頁的開發(fā)集成超文本鏈接標(biāo)示語言(Hypertext Markup Language,HTML)、層疊樣式表(Cascading Style Sheets ,CSS)、Java 腳本以及Ajax 等語言,共同實(shí)現(xiàn)客戶端與服務(wù)器交互過程中網(wǎng)頁站點(diǎn)的搭建,利用Ajax異步刷新技術(shù)實(shí)現(xiàn)良好的網(wǎng)頁動態(tài)刷新、實(shí)時圖像信息和舵機(jī)當(dāng)前時刻位置信息的顯示。
本系統(tǒng)在開發(fā)時接入了鍵盤、鼠標(biāo)、顯示器,可以直觀地查看系統(tǒng)的信息,通過自發(fā)光24. 384 mm 的OLED顯示屏顯示系統(tǒng)的信息。利用Luma. oled 庫編寫驅(qū)動OLED的腳本,通過OLED 顯示屏顯示本系統(tǒng)服務(wù)器地址、隨機(jī)存取存儲器(Random Access Memory,RAM)使用情況和中央處理器(Central Processing Unit,CPU)溫度信息。運(yùn)行結(jié)果如圖11所示。
根據(jù)整體功能需求,系統(tǒng)上電后,需要自啟動的腳本程序是Flask服務(wù)器APP和OLED驅(qū)動腳本。本文采用配置桌面自啟動腳本的方法實(shí)現(xiàn)腳本程序的自啟動。
圖11 OLED運(yùn)行結(jié)果
在完成系統(tǒng)的設(shè)計后,對系統(tǒng)進(jìn)行測試,測試的結(jié)果運(yùn)行正常,所有功能均能正常實(shí)現(xiàn)。系統(tǒng)上電后,開機(jī)指示燈閃爍,正常運(yùn)行后系統(tǒng)的OLED屏幕點(diǎn)亮,信息顯示完整。并通過OLED顯示屏上顯示的網(wǎng)絡(luò)之間互連的協(xié)議(Internet Protocol,IP)地址,使用同局域網(wǎng)內(nèi)的客戶端訪問系統(tǒng)搭建的服務(wù)器:①流視頻傳輸正常;②通過網(wǎng)頁控制舵機(jī)轉(zhuǎn)動,舵機(jī)響應(yīng)正常,如圖12 所示;③網(wǎng)頁及時反饋舵機(jī)位置并正常顯示,客戶端的前端頁面顯示如圖13 所示。通過對系統(tǒng)的測試,檢驗(yàn)系統(tǒng)功能能夠正常實(shí)現(xiàn)。
圖12 攝像機(jī)試驗(yàn)演示機(jī)
圖13 系統(tǒng)測試時前端頁面顯示
點(diǎn)擊圖13 所示頁面中的按鈕時,客戶端向服務(wù)器發(fā)出POST 請求,請求的內(nèi)容為對舵機(jī)控制的數(shù)據(jù)。當(dāng)POST請求成功時,獲取服務(wù)器返回舵機(jī)位置數(shù)據(jù),對POST請求返回的數(shù)據(jù)解析,并將結(jié)果進(jìn)行計算,得出二自由度舵機(jī)的位置,通過Java 腳本刷新顯示舵機(jī)位置的狀態(tài)條,在網(wǎng)頁中直觀的展示舵機(jī)的位置。
本設(shè)計實(shí)現(xiàn)了自由轉(zhuǎn)動攝像頭舵機(jī)控制系統(tǒng),以微型計算機(jī)Raspberry Pi 為核心搭建Web 服務(wù)器,移動智能設(shè)備客戶端通過訪問該服務(wù)器,可以查看攝像機(jī)采集的實(shí)時畫面,并實(shí)時控制攝像機(jī)的舵機(jī)云臺二自由度轉(zhuǎn)動攝像頭,擴(kuò)大攝像頭的視野范圍。
本設(shè)計通過局域網(wǎng)內(nèi)的移動智能設(shè)備客戶端連接本系統(tǒng),用戶在移動設(shè)備客戶端收到系統(tǒng)傳送的實(shí)時視頻,并通過網(wǎng)頁控制舵機(jī),舵機(jī)能正確地響應(yīng)客戶端的控制,網(wǎng)頁中舵機(jī)位置狀態(tài)欄也能正確反映舵機(jī)的實(shí)際位置。本系統(tǒng)主控板板載的通信串口較多,硬件接口豐富,具有較強(qiáng)的擴(kuò)展能力,可以實(shí)現(xiàn)與其他設(shè)備的組合或者本系統(tǒng)的拓展,具有較強(qiáng)的兼容性和較大的開發(fā)意義。