周子堯,章?lián)P
(杭州電子科技大學 電子信息學院,浙江杭州,310018)
隨著計算機圖像處理技術和高性能芯片的不斷發(fā)展,機器視覺領域已經(jīng)進入了一個令人興奮的新時代。機器視覺作為一門借助處理器和攝像頭代替人眼,通過數(shù)字圖像的像素信息進行測量和判斷的領域,在工業(yè)、農(nóng)業(yè)、制藥等多個領域得到了廣泛的應用。這一領域的研究方向包括但不限于產(chǎn)品分揀、人體姿態(tài)檢測、物體檢測和識別等,為各行各業(yè)提供了強大的工具和解決方案。
在機器視覺研究的浪潮中,開源技術的貢獻日益凸顯。OpenMV 視覺模塊作為一款開源且功能強大的機器視覺模塊,為研究者和工程師提供了極大的便利。OpenMV 內(nèi)置了眾多機器視覺算法,如尋找色塊、人臉檢測、邊緣檢測等,使得利用這一模塊僅需通過簡化版的Python 代碼編寫即可完成各種復雜的機器視覺任務[1]。
另一個關鍵組成部分是二維云臺,它由兩個舵機實現(xiàn)二自由度的控制,用于對OpenMV 的測量方向進行調(diào)整和修正,進一步增強了系統(tǒng)的精確性和靈活性。
本論文旨在介紹一種基于OpenMV 的目標運動控制與自動追蹤系統(tǒng),探討如何充分利用開源技術和高性能硬件,以滿足不斷增長的機器視覺應用需求。我們將詳細討論系統(tǒng)的架構、工作原理以及實驗結果,以期為機器視覺領域的研究和應用貢獻新的見解和解決方案。
系統(tǒng)整體方案設計如圖1 所示,全系統(tǒng)由兩個相互獨立的系統(tǒng)組成。OpenMV 是一個開源,低成本,功能強大的機器視覺模塊上面集成了STM32F427 微處理器與OV7725攝像頭芯片,在小巧的硬件模塊上,用C 語言高效地實現(xiàn)了核心機器視覺算法,同時也提供Python 編程接口[2]。系統(tǒng)主控芯片均采用STM32F427 微處理器。運動目標控制與自動追蹤系統(tǒng)均通過轉動云臺來調(diào)整激光的指向,每個云臺由兩個大力矩舵機組成,可以實現(xiàn)水平和垂直方向上的自由移動,使激光具有更大的指示范圍[3]。系統(tǒng)通過按鍵模塊可以進行模式選擇、位置校準、開始/暫停,并允許手動調(diào)整激光指示精度與指示范圍,以實現(xiàn)廣泛圍與高精度等不同的應用場景。
圖1 系統(tǒng)整體方案框圖
系統(tǒng)電源電路如圖2 所示,系統(tǒng)均以12V 鋰電池供電,電源模塊均采用TI 公司的TPS5430 降壓芯片,該芯片具有噪聲小、帶載能力強等特點,可將12V 降壓為5V與3.3V。輸出電壓等于1.229×(1+R1/R2),經(jīng)過計算選取R1=47kΩ,R2=15kΩ,R3=51kΩ,R4=30kΩ。其 中,5V 電壓用于OpenMV 與激光指示頭供電,3.3V 電壓用于LED、蜂鳴器與OLED 供電,而舵機直接以12V 鋰電池供電。
圖2 系統(tǒng)降壓電路
云臺安裝有兩種不同的組合方式(圖3),方案一(圖3 左)搭建結構簡單,垂直方向旋轉半徑大,便于控制舵機,但舵機本身的負載較大,存在發(fā)送微小轉動指令時舵機不旋轉的現(xiàn)象;方案二(圖3 右)垂直方向舵機負載小,舵機旋轉更靈敏,角度控制更準確。綜合精度與控制難度,采用方案二所示的安裝方式可以實現(xiàn)較低控制難度下的較高精度。
圖3 兩種云臺機械結構對比
圖4 是自動追蹤系統(tǒng)聲光提示模塊的電路。電路由3.3V電壓供電,接入蜂鳴器與LED 燈的正極,通過微處理器的GPIO 口輸出高低電壓進行控制,可實現(xiàn)LED 燈的滅或亮、蜂鳴器關閉或發(fā)出蜂鳴聲。蜂鳴器選擇的是無源蜂鳴器,無音調(diào)變化,但較有源蜂鳴器控制更簡單。
圖4 聲光提示模塊電路
屏幕顯示電路如圖5 所示,OLED 需以3.3V 供電,SDA 與SCL 腳連接 至MCU 上引出 的GPIO 口,MCU 輸 出控制信號后可使OLED 上顯示預設的信息。
圖5 屏幕顯示模塊電路
如圖6 所示,本系統(tǒng)共有5 個模式,分別為暫停模式、復位模式、循屏幕邊線模式、循黑膠邊線模式、舵機移動模式,模式的選擇由按鍵控制。按鍵值的讀取放在定時器中斷中,每一秒讀取一次。如果出現(xiàn)暫停標志位則停止舵機運動,暫停標志位取消則繼續(xù)原來的運動;如果出現(xiàn)復位標志位,舵機先回到設定的復位位置,然后結束當前任務。由于系統(tǒng)攝像頭固定,因此在不移動屏幕的前提下屏幕的邊線是固定,直接采用位置標定讓舵機巡線。在循黑膠邊線的模式下,先通過卡爾曼濾波算法[4]進行圖像信息采集,黑膠布的顏色與背景顏色有明顯區(qū)分,找到黑膠布的位置并得到四個點的坐標;根據(jù)提前擬合好的坐標位置與舵機控制信號線性關系可以將四個點的坐標換算為對應的舵機控制信號,然后進行循跡。舵機移動模式是讀取對應的兩個按鍵,通過數(shù)值的加減移動舵機位置。
圖6 運動目標控制程序流程圖
如圖7 所示,追蹤模式一開始給攝像頭復位,讓它處在靠中間的位置,若在目標點右邊追蹤,則點擊按鍵使攝像頭向左偏轉,反之向右偏轉;當紅色激光點進入攝像頭視野范圍內(nèi)時,進行跟隨并打靶,將追蹤成功的信號發(fā)送給OpenMV。OpenMV 收到信號后,點亮LED,并使蜂鳴器發(fā)出聲音。該過程中可暫停觀察兩光斑距離。
圖7 自動追蹤系統(tǒng)程序流程圖
由于舵機存在機械誤差,我們算出了激光點位置與當前兩個舵機PWM 波值的關系,得到了圖8、圖9。圖8 為豎直方向位移與豎直舵機PWM 波的關系,圖9 為水平方向位移與水平舵機PWM 波的關系。兩圖的均方根(RMSE)均為11 左右,確定系數(shù)(R-square)均在0.99以上,數(shù)據(jù)穩(wěn)定且擬合程度高。利用擬合的數(shù)據(jù)進行參數(shù)修正,提高了激光精度。
圖8 豎直方向位移(y)與PWM 波(ypwm)的關系
圖9 水平方向位移(x)與PWM 波(xpwm)的關系
在進行參數(shù)修正后,我們對舵機旋轉單位角度在屏幕上的位移進行了測量,以屏幕原點為PWM 原點,以離原點的豎直(或水平)距離為因變量,每改變兩個單位進行一次數(shù)據(jù)記錄,得到了 圖10、圖11。圖10 為豎直方向位移與豎直PWM1 改變量的關系,圖11 為水平方向位移與水平PWM2改變量的關系。由圖可知,豎直方向改變單位PWM 值位移量為0.87cm,水平方向改變單位PWM 值位移量為0.90cm,準確度高。兩圖的均方根(RMSE)均在0.5 以下,確定系數(shù)(R-square)均 在0.99 以上,數(shù)據(jù)穩(wěn)定且擬合程度高。
圖11 水平方向位移(xl)與PWM2 改變量(x_pwm)的關系
PID 通過誤差信號控制被控量,而控制器本身就是比例、積分、微分三個環(huán)節(jié)的加和。這里我們規(guī)定輸入量為rin(t),輸出量為rout(t),偏差量為err(t)=rin(t)-rout(t),PID 的控制規(guī)律為[5]:
PID 離散表示形式:
從而得到:
每題測試3 次,使用最大偏移距離作為測試結果。
基本要求(1):手動設置光標至屏幕左上頂點,啟動一鍵復位,測量光標離預設原點的距離。再設置光標至屏幕左下頂點,重復進行測試。測試是否具有暫停功能。
基本要求(2):啟動運動目標控制系統(tǒng)。紅色光斑能在 30 s 內(nèi)沿屏幕四周邊線順時針移動一周,測量移動時光斑偏離屏幕邊線的最遠距離。記錄偏移值大于2cm 的次數(shù)。
基本要求(3):自定義靶紙粘貼位置及角度。一鍵啟動,記錄巡線時間、移動一周光斑偏離膠帶次數(shù),觀察是否有連續(xù)脫離膠帶移動5cm 以上。測試是否具有暫停功能。
基本要求(4):隨機設置靶紙粘貼位置及角度。一鍵啟動,記錄巡線時間、移動一周光斑偏離膠帶次數(shù),觀察是否有連續(xù)脫離膠帶移動5cm 以上。測試是否具有暫停功能。
發(fā)揮要求(1):在規(guī)定位置范圍內(nèi)隨機放置自動追蹤系統(tǒng)。待運動目標控制系統(tǒng)復位后一鍵啟動,記錄追蹤時間、紅色綠色光斑之間的距離。測試是否具有暫停功能以及追蹤成功后是否有聲光提示。
發(fā)揮要求(2):粘貼靶紙。同時啟動運動目標控制與自動追蹤系統(tǒng),記錄追蹤時間、紅色綠色光斑之間的距離。測試是否具有暫停功能以及追蹤成功后是否有聲光提示。記錄追蹤過程中兩個光斑中心距離大于 3cm 和連續(xù)追蹤失敗3s 以上的次數(shù)。
測試結果如表1~表6 所示。
表1 基本要求(1)測試結果
表2 基本要求(2)測試結果
表3 基本要求(3)測試結果
表4 基本要求(4)測試結果
表5 發(fā)揮要求(1)測試結果
表6 發(fā)揮要求(2)測試結果
根據(jù)測試結果,運動目標控制與自動追蹤系統(tǒng)完成了題目要求的各項指標,且誤差都在誤差允許范圍內(nèi)。紅色激光一鍵復位中,由于屏幕是固定的,我們固定攝像頭,這樣復位的中心位置是確定的,相比于攝像頭隨云臺一起轉動該方法完成要求的精確度更高;對于循框功能,直接識別鉛筆線的誤差太大,在確定四個頂點坐標后循框的精度提升很多,循框時間也相應縮減;膠帶循跡對于我們來說是最難的部分,用舵機來控制傾斜的角度精度不夠,我們選擇采集大量坐標數(shù)據(jù),擬合出對應較好 的PWM 值,控制激光在膠帶范圍內(nèi)運動;追蹤系統(tǒng)中,黑膠帶會吞掉紅光的亮度,導致另一個攝像頭捕捉不到紅色激光,我們更換了一個長鏡頭并調(diào)節(jié)曝光度,使得捕捉紅色激光點效果很好,在追蹤時,將紅色激光的移動速度減慢,然后調(diào)節(jié)綠色激光位置PID 和相對中心點坐標實現(xiàn)了較好的跟隨系統(tǒng)[6]。
本系統(tǒng)采取了以OpenMV 為控制核心,控制云臺進行激光指示的方案。系統(tǒng)采用數(shù)字舵機搭配旋轉云臺以提高整體機械結構的穩(wěn)定性。為精確對應坐標與PWM 的數(shù)學關系,在循跡的軟件部分中加入了擬合數(shù)值的修正,極大地提高了激光的指示精度;硬件部分采用電源供電、加入了自制穩(wěn)壓電源,按鍵功能豐富,整體結構清晰高效、控制穩(wěn)定。本系統(tǒng)實現(xiàn)了誤差0.5cm 以內(nèi)的運動目標的快速控制與自動追蹤,完成了整個題目的要求,且誤差遠小于題目要求中的規(guī)定值。本次方案所需的軟硬件設計可行度較高,進一步研究將會朝著系統(tǒng)優(yōu)化的方向進行,如使用模糊PID 控制使舵機調(diào)節(jié)更加精確[7]、在視覺部分的算法添加IIR 濾波從而減小周邊光線變化帶來的影響等[8]。