前言:想要寫出一篇引人入勝的文章?我們特意為您整理了嵌入式攝像頭OpenMV板球系統(tǒng)設(shè)計(jì)范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。
摘要:以O(shè)penMV圖像處理技術(shù)為基礎(chǔ),借助MicroPython語(yǔ)言使其相應(yīng)IO口輸出PWM,完成了基于串級(jí)PID的板球控制系統(tǒng)設(shè)計(jì).系統(tǒng)實(shí)現(xiàn)了對(duì)小球的精確定點(diǎn)和圓周運(yùn)動(dòng)控制.測(cè)試結(jié)果表明:OpenMV可實(shí)時(shí)采集小球在平板上的位置并獲取對(duì)應(yīng)的二維坐標(biāo);小球能夠按照指定路徑運(yùn)動(dòng),系統(tǒng)抗干擾能力強(qiáng),反應(yīng)迅速.
關(guān)鍵詞:板球控制系統(tǒng);OpenMV;圖像處理;串級(jí)PID
0引言
板球控制系統(tǒng)是一個(gè)多變量、強(qiáng)耦合的非線性控制系統(tǒng).與其他經(jīng)典控制系統(tǒng)相類似,其實(shí)驗(yàn)?zāi)P屯ǔS糜隍?yàn)證各種控制算法的優(yōu)劣,其中包括智能控制算法、現(xiàn)代控制算法等.已有的板球控制系統(tǒng)因使用多個(gè)控制器而導(dǎo)致系統(tǒng)硬件搭建比較困難,且大部分是基于觸摸反饋機(jī)制的系統(tǒng),通過(guò)觸摸屏的壓力變化反饋小球的位置信息.其控制方式大多為單環(huán)PID控制,難以精確實(shí)現(xiàn)對(duì)小球的位置控制,誤差較大,且系統(tǒng)抗干擾能力弱,執(zhí)行器響應(yīng)較慢.為了解決上述問(wèn)題,本文設(shè)計(jì)的板球控制系統(tǒng)硬件部分采用將核心處理器和傳感器合并為一體的OpenMV,不僅簡(jiǎn)化了機(jī)械結(jié)構(gòu),同時(shí)避免了硬件搭建冗雜的缺陷.在軟件控制算法部分采用x軸-y軸并級(jí)的串級(jí)PID算法[1],平板在OpenMV攝像頭中可視為二維坐標(biāo)系.通過(guò)設(shè)置速度環(huán)為內(nèi)環(huán),位置環(huán)為外環(huán),實(shí)現(xiàn)了對(duì)小球精確的位置控制,同時(shí)使該算法的系統(tǒng)抗干擾能力得到了增強(qiáng),執(zhí)行器的響應(yīng)速度也得到了優(yōu)化.
1系統(tǒng)總體設(shè)計(jì)
openmv作為板球控制系統(tǒng)的傳感器和控制器,以STM32H743CPU為核心,集成的OV7725攝像頭芯片作為該系統(tǒng)的圖像處理模塊.另外,MG996R舵機(jī)作為執(zhí)行器,7.2V鎳-鉻電池作為執(zhí)行器的總電源,XL4016DC-DC模塊作為舵機(jī)的穩(wěn)壓模塊,為舵機(jī)提供恒定電壓.首先,利用OpenMV中的傳感器模塊引入攝像頭的感光元件并對(duì)相關(guān)參數(shù)進(jìn)行初始化;接著通過(guò)圖像二值化算法確定小球在OpenMV攝像頭中的二維坐標(biāo)[2],計(jì)算出小球當(dāng)前位置的偏差與當(dāng)前小球的速度;然后對(duì)此偏差利用串級(jí)PID控制算法在OpenMV中進(jìn)行處理,最終計(jì)算得到舵機(jī)轉(zhuǎn)動(dòng)的角度并控制板球的平衡.小球的位置信息可發(fā)送至上位機(jī)中進(jìn)行實(shí)時(shí)監(jiān)測(cè).圖1為系統(tǒng)設(shè)計(jì)框圖.
2系統(tǒng)硬件設(shè)計(jì)
板球控制系統(tǒng)的硬件部分由OpenMV、模擬舵機(jī)、穩(wěn)壓模塊等構(gòu)成.本設(shè)計(jì)使用的OpenMV共有14個(gè)定時(shí)器,包含2個(gè)通用定時(shí)器,采用3個(gè)I/O引腳用于舵機(jī)控制.同時(shí)具有全速USB(12Mbs)接口,連接電腦上的集成開發(fā)環(huán)境OpenMVIDE可實(shí)時(shí)采集OpenMV攝像頭捕捉到的圖像,方便程序運(yùn)行時(shí)監(jiān)控小球的運(yùn)動(dòng)情況.圖2為板球控制系統(tǒng)實(shí)物圖.綜合本系統(tǒng)的實(shí)際需求以及硬件搭建的簡(jiǎn)潔性,采用7.2V鎳-鉻電池作為系統(tǒng)的總電源.電池容量為2000mAh,通過(guò)XL4016DC-DC模塊將電池電壓轉(zhuǎn)為兩路6V輸出,分別為2個(gè)舵機(jī)供電.
2.1OpenMV攝像頭
OpenMV攝像頭是一種小型、低功耗、多應(yīng)用的微控制器板,使用MicroPython語(yǔ)言進(jìn)行編程.其配備的OV7725圖像傳感器能夠以高幀率拍攝8位灰度圖像或16位RGB圖像,方便在工程應(yīng)用中使用機(jī)器視覺實(shí)現(xiàn)相關(guān)圖像的應(yīng)用算法.
2.2舵機(jī)執(zhí)行器
舵機(jī)屬于伺服電機(jī),帶有反饋環(huán)節(jié),可根據(jù)其屬性對(duì)伺服電機(jī)進(jìn)行精確的位置控制或者輸出較高的扭矩.本設(shè)計(jì)采用的MG996R舵機(jī)在6V供電下具有11kg/cm的扭矩和0.15sec/60°的控制精度,適用于對(duì)控制精度要求較高的板球控制系統(tǒng).舵機(jī)硬件連接共有3根線,分別為VCC、GND和PWM信號(hào)線.控制舵機(jī)通過(guò)接收周期為20ms的PWM信號(hào)決定其輸出角度.輸入信號(hào)的脈沖寬度與舵機(jī)旋轉(zhuǎn)角度呈線性關(guān)系.表1為舵機(jī)輸出角度的對(duì)應(yīng)關(guān)系表.
3系統(tǒng)軟件設(shè)計(jì)
板球控制系統(tǒng)的軟件算法設(shè)計(jì)主要由小球識(shí)別、串級(jí)PID構(gòu)成.系統(tǒng)上電后,首先通過(guò)按鍵進(jìn)行模式選擇定點(diǎn)或圓周運(yùn)動(dòng);隨后通過(guò)OpenMV機(jī)器視覺庫(kù)對(duì)圖像進(jìn)行預(yù)處理,確定小球在圖像中的x軸與y軸坐標(biāo),并與設(shè)定點(diǎn)坐標(biāo)值做差處理,得到小球的位置偏差;再利用幀差分法求出小球速度;最后通過(guò)串級(jí)PID算法求出平板需轉(zhuǎn)動(dòng)的角度并向舵機(jī)發(fā)送PWM信號(hào),從而維持板球平衡.圖3為系統(tǒng)總控制流程圖.
3.1圖像處理
為了提高機(jī)器視覺相關(guān)算法的開發(fā)效率,OpenMV提供了基于圖像處理的MicroPython語(yǔ)言編程接口,內(nèi)置的圖像二值化算法取決于灰度閾值的設(shè)置范圍.根據(jù)像素是否在閾值列表內(nèi),將圖像中的所有像素點(diǎn)設(shè)置為黑色或白色,圖4為OpenMVIDE閾值調(diào)試界面圖.系統(tǒng)運(yùn)行時(shí),首先對(duì)視覺庫(kù)的sensor模塊進(jìn)行攝像頭初始化,將其像素模式設(shè)置為灰度模式;再利用OpenMVIDE中的閾值編輯器為小球選擇最佳的灰度跟蹤閾值,通過(guò)二值化函數(shù)image.binary()對(duì)圖像進(jìn)行二值化處理[3],即可識(shí)別出小球;最后通過(guò)逐行掃描白色的像素點(diǎn)算法確定小球的中心位置坐標(biāo).圖5為OpenMV二值化圖像處理流程圖.
3.2串級(jí)PID
為了解決傳統(tǒng)單環(huán)PID控制響應(yīng)速度慢、抗干擾能力弱等問(wèn)題,對(duì)于精度較高要求的本系統(tǒng)采用串級(jí)PID控制[4].利用平板在OpenMV攝像頭中呈二維坐標(biāo)系x軸和y軸,由于運(yùn)動(dòng)的獨(dú)立性原理,忽略掉球板之間的摩擦力,可將小球的運(yùn)動(dòng)分解為相互垂直的兩個(gè)方向.因?yàn)楸驹O(shè)計(jì)選取的平板為正方形,兩舵機(jī)執(zhí)行器轉(zhuǎn)動(dòng)角度應(yīng)設(shè)置相同.PID的一般控制規(guī)律為1dedd(1)式中:err(t)是設(shè)定值和實(shí)際值的偏差,Kp是比例系數(shù),TI是積分時(shí)間常數(shù),TD是微分時(shí)間常數(shù).由于本設(shè)計(jì)對(duì)實(shí)時(shí)性要求較高,故設(shè)計(jì)以下離散化PID控制系統(tǒng):假設(shè)采樣間隔為T,系統(tǒng)輸入量為input(t),輸出量為output(t),則在第K時(shí)刻的偏差為(2)則離散化PID控制規(guī)律為由式(3)可得,系統(tǒng)的輸出與最近的兩次偏差有關(guān),此PID控制為位置離散化PID,則速度環(huán)為位置環(huán)與相鄰時(shí)間的比值.式中:V為小球的實(shí)際速度,err(k-1)為小球上一次誤差,err(k)為本次誤差,為攝像頭兩次檢測(cè)小球的時(shí)間差.為實(shí)現(xiàn)對(duì)小球的串級(jí)PID控制,首先需要理清系統(tǒng)的輸入輸出以及系統(tǒng)的相關(guān)特征.本次設(shè)計(jì)的板球控制系統(tǒng),首先是通過(guò)OpenMV機(jī)器視覺模塊獲取小球的位置坐標(biāo)以及幀差分算法計(jì)算的小球速度.兩者作為串級(jí)PID的相關(guān)輸入或輸出,可得到平板應(yīng)轉(zhuǎn)動(dòng)的角度.在控制算法中,采用x軸-y軸并級(jí)的串級(jí)PID算法[5].圖6為控制算法的結(jié)構(gòu)框圖.設(shè)置小球的速度環(huán)為內(nèi)環(huán),位置環(huán)為外環(huán),內(nèi)環(huán)將外環(huán)求得的小球期望速度與OpenMV幀差分算法得到的小球速度做差后作為內(nèi)環(huán)的輸入,通過(guò)PD控制器獲得舵機(jī)轉(zhuǎn)動(dòng)的角度作為系統(tǒng)最終的輸出.內(nèi)環(huán)控制的主要作用是限制小球速度,故運(yùn)用PD控制.外環(huán)將輸入的期望坐標(biāo)與OpenMV圖像處理得到的小球坐標(biāo)做差后作為系統(tǒng)輸入,通過(guò)PID控制器得到小球的期望速度并參與系統(tǒng)的內(nèi)環(huán)輸入.外環(huán)控制的主要作用是提高小球位置控制的精度,故運(yùn)用PID控制.
3.3定點(diǎn)及圓周運(yùn)動(dòng)
小球的定點(diǎn)控制目標(biāo),是將其快速、精確地穩(wěn)定在目標(biāo)點(diǎn).通過(guò)OpenMV攝像頭檢測(cè)小球的當(dāng)前位置與設(shè)定位置的偏差以及小球的運(yùn)動(dòng)速度,使用串級(jí)PID控制算法,通過(guò)調(diào)整合適的PID參數(shù),輸出平板x軸和y軸傾斜角度所需的控制量,通過(guò)執(zhí)行器舵機(jī)可實(shí)現(xiàn)小球最終穩(wěn)定在目標(biāo)點(diǎn)區(qū)域.對(duì)于小球圓周運(yùn)動(dòng)控制算法的實(shí)現(xiàn),可參考圓的參數(shù)方程:(4)式中:,表示圓心坐標(biāo);r表示圓的半徑;θ為2π的歸一化值.設(shè)置圓心坐標(biāo)和小球運(yùn)動(dòng)半徑,利用OpenMV內(nèi)置的定時(shí)器,每秒θ值加一,通過(guò)調(diào)整內(nèi)外環(huán)控制器合適的參數(shù)(內(nèi)環(huán):Kp=0.1,Kd=0.02;外環(huán):Kp=0.28,Ki=0.04,Kd=0.14),即可保證小球在平板上做圓周運(yùn)動(dòng).
4測(cè)試結(jié)果分析
通過(guò)對(duì)內(nèi)外環(huán)PID相關(guān)參數(shù)的不斷校正,最終板球控制系統(tǒng)可以在定點(diǎn)模式和圓周運(yùn)動(dòng)模式之間任意切換.經(jīng)測(cè)試,在小球定點(diǎn)控制模式下,小球與最終目標(biāo)位置的精度偏差最大不超過(guò)1cm,穩(wěn)定時(shí)間不超過(guò)6s.在圓周運(yùn)動(dòng)模式中,小球能按照設(shè)定圓的參數(shù)完成繞行任務(wù),小球繞行的圓半徑與實(shí)際設(shè)定的圓半徑偏差不超過(guò)1.5cm.經(jīng)過(guò)對(duì)小球環(huán)繞的多次測(cè)試,得出小球繞行一圈的平均時(shí)間約為15s.圖7為小球圓周運(yùn)動(dòng)效果圖.
5結(jié)語(yǔ)
本設(shè)計(jì)采用OpenMV作為傳感器和控制器,利用圖像處理和串級(jí)PID控制算法完成了對(duì)板球控制系統(tǒng)的設(shè)計(jì).圖像部分運(yùn)用對(duì)像素的二值化處理可消除外部干擾因素的影響.軟件控制算法使用串級(jí)PID相比于單環(huán)PID控制更精確,能夠克服對(duì)象非線性特性的影響,通過(guò)內(nèi)外兩環(huán)并聯(lián)調(diào)節(jié)增強(qiáng)系統(tǒng)的穩(wěn)定性和抗干擾能力.
作者:何俊杰 尹煒 胡柏 姚安權(quán) 陳林 李鑫 單位:常熟理工學(xué)院電氣與自動(dòng)化工程學(xué)院