西北民族大學電氣工程學院 劉宇辰 陳 杰 姚 奧 張佳慧
隨著嵌入式控制技術的飛速發(fā)展,機器人的使用已經(jīng)滲透到了各個方面,移動機器人成為其中重要的一部分。尤其是在生活中,機器人的智能應用已經(jīng)越來越有利于生活。但市場上目前很少有自動跟拍機器人這一方面的研究。目前的拍攝設備無論是手持拍攝還是固定點攝像機拍攝,由于拍攝目標位置不佳或拍攝目標移動而導致拍攝不清或者拍攝效果不佳,其存在的缺點就是耗費了大量的人力和物力,也浪費了時間。特別是在軍事、醫(yī)學等記錄方面,傳統(tǒng)的拍攝記錄方法制作的視頻可能因為偏轉、調焦等問題,對捕捉、記錄的對象不能做到準確的記錄,出現(xiàn)記錄的目標不在視頻中心或者拍攝模糊等問題。
為了解決這個問題,本課題擬設計一種可以自動捕捉識別拍攝目標且可以跟隨目標移動的機器人,它還可以根據(jù)目標的手勢進行拍照、暫停等功能,達到更加自由拍攝的目的。該機器人是一種新型的智能拍照機器人,可以嘗試以此開辟新的商業(yè)市場需求領域,其可以運用到醫(yī)學拍攝、課堂記錄、會議記錄、軍事捕捉等多個場所。
基于樹莓派和OpenCV的自跟隨手勢調焦拍攝機器人主要包括如下幾部分:視頻傳輸模塊、手勢識別模塊、拍攝控制模塊、智能控制模塊等,其核心模塊是智能控制模塊。樹莓派是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內存硬盤,卡片主板周圍有1/2/4個USB接口和一個10/100 以太網(wǎng)接口,可連接鍵盤、鼠標和網(wǎng)線;同時,其擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口,能執(zhí)行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能。OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,其實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。
使用Raspberry pi開發(fā)板連接USB攝像頭和USB無線網(wǎng)卡組成的視頻監(jiān)控系統(tǒng)的硬件平臺,并進行交叉編譯環(huán)境的安裝和設置以及測試環(huán)境的配置;采用了Video for Linux two技術進行視頻圖像的采集;將采集到的視頻圖像的格式統(tǒng)一轉換為YUV420格式,使用H.264編碼技術對采集到的視頻數(shù)據(jù)進行編碼;采取了基于IP/UDP/RTP協(xié)議的視頻傳輸技術,通過WIFI無線網(wǎng)絡搭建了Raspberry pi開發(fā)平臺與PC機之間的Socket通信,確保視頻采集平臺和PC端在同一個局域網(wǎng)絡中,實現(xiàn)了兩者之間視頻的實時傳輸;在PC端通過VLC流媒體播放器來實時接收和播放開發(fā)平臺上所獲取到的視頻圖像信息,實現(xiàn)了無線網(wǎng)絡視頻傳輸?shù)南到y(tǒng)模型。
視頻錄制可以根據(jù)錄制人的手勢進行拍照特寫、暫停錄制、固定點特寫錄制等功能,給使用者以良好的使用體驗。其中,其主要運用OpenCV來采集圖像,進而基于膚色對手勢記性分割,繼而用卡爾曼濾波算法對采集到的圖像進行處理,提取手勢特征后將信息反饋給系統(tǒng)。
拍攝設備位置的微調控制主要包括:攝影機左、右、上、下旋轉、攝影機前后伸縮。這些調控都屬于小范圍動作,所以驅動電機選擇舵機。其功能的變化主要依據(jù)于圖像處理得到的信息,轉動方向由系統(tǒng)I/O口傳輸而來的PWM波控制。
智能控制模塊是整個跟拍系統(tǒng)的核心部分,它有兩個功能:一方面通過傳感和運算實現(xiàn)識別拍攝對象的移動,從而控制拍攝設備移動實現(xiàn)跟隨;另一方面通過控制拍攝功能實現(xiàn)自動縮放、自動定焦、超越拍攝范圍自動調節(jié)以及拍照特寫圖片等相關動作,其采用的基礎是視覺識別。視覺識別是最近才興起的新技術,它在智能時代可稱得上是機器的眼睛,其可以代替?zhèn)鹘y(tǒng)傳感器的應用,實現(xiàn)類似人腦及眼睛的功能,它被科學家稱為智能化時代以及工業(yè)4.0時代最具備時代標志的創(chuàng)新技術。這種識別技術早已普遍運用在各行各業(yè),這些年形狀和顏色等方面的視覺識別在精度要求不高的場所也得到了推廣和應用。其無需要高精度小尺度的識別效果,只需要識別展示過程中的指定形狀、顏色或固定姿態(tài)。采用視覺識別無需安裝任何傳感器,只需要一個攝像頭就可以實現(xiàn),其安裝和調試要求大大降低;并且,其編程語言為Python,圖像處理部分為C++,這樣可使其具有變通性、靈活性,更具適用性。
圖1 硬件結構及信號流程
對硬件進行搭建并進行各種環(huán)境的測評分析、對軟件構寫并測試多種環(huán)境魯棒性硬件設計參照圖1。本項目為了達到可自由調焦的目的,使用opencv類似的可自動調焦攝像頭,并在此基礎上進行提取達到圖像處理以及應對反應的目的。對于連接的樹莓派進行編程,使其達到錄制的目的并將處理結果反饋給舵機和攝像頭。由于舵機會根據(jù)目標而轉動,攝像頭的底盤要足夠重而不會對拍攝造成抖動,并且質量要在便于攜帶的范圍之內。本項目中使用到了很多模塊,不同模塊用到了不同的通訊協(xié)議,所以在電路設計上要根據(jù)不同IO口所具有的硬件資源將不同模塊接在合適的IO口上,以實現(xiàn)硬件資源的合理使用。
攝像頭、樹莓派、舵機等要對應輸入不同的電壓,所以要引入多種穩(wěn)壓模塊達到電路正常運行的目的。
對軟件及程序設計,本項目編程的計算機語言主要是C++和python,先對視屏畫面分析之后再使用樹莓派控制舵機轉向。軟件設計是本項目的核心,要通過編程對圖像進行最大程度的抖動消除。目前所采用的處理方式要考慮到所捕捉物體的運動狀態(tài)、形狀而采取更靈敏的追蹤方式,在追蹤的同時也要時刻檢測是否有所期望的手勢出現(xiàn),并及時作出反應。其中,圖像處理部分為了達到更好的識別和反映效果,查閱資料后將用卡爾曼濾波算法以及粒子處理對圖像進行處理,將得到的信息整合之后以PWM波的形式傳送給舵機轉動。程序編寫時使用模塊化編程,把不同模塊的初始化及驅動過程封裝在不同的文件中,在main文件中只實現(xiàn)調用的過程,不同文件中函數(shù)的調用通過對相應.h文件的引用來實現(xiàn)。模塊化編程最大的好處就是程序的可閱讀力比較強,編程思路更加清晰,對于程序的分模塊調試以及程序修改也非常方便。
由于舵機的驅動電壓有明確的要求,在USB供電狀態(tài)下只能為芯片供電使其正常運行,無法驅動舵機運作。使用USB進行對代碼的調試,在調試完畢之后,接入11.1V的電池查看調試情況,在11.1V電池供電狀態(tài)下就可以完成對舵機的供電。在調試過程中,由于有項目組成員對芯片并不是很熟悉,誤刪了很多庫文件和已經(jīng)調試好的源文件,導致了項目制作進度的緩慢,后期及時進行了調整。讓項目組成員去學習一些樹莓派和TensorFlow的相關入門書籍,對芯片有更深層次的了解,在之后的調試和磨合中會更加容易。
總結與展望:隨著科技的不斷進步,自動與智能的應用越來越受到大家的關注,如無人飛機、智能音箱、無人酒店等。因此,本項目采用基于樹莓派和OpenCV設計的自動跟隨拍照機器人來為大眾提供更方便的拍照方式,提升大家的拍照體驗。本設計打破傳統(tǒng)的人工手機拍照和相機拍照,為大家提供更方便的拍照方式。