莊浩 范志超
摘要:自動(dòng)跟隨購(gòu)物系統(tǒng)是一款基于光學(xué)視覺(jué)跟蹤模塊以及模塊化自動(dòng)跟隨底盤(pán)的購(gòu)物系統(tǒng)。其可以自動(dòng)完成對(duì)標(biāo)定購(gòu)物者的光學(xué)捕獲與跟蹤。使購(gòu)物者可以將購(gòu)物者的精力全部放在購(gòu)物上。
關(guān)鍵詞:光學(xué)AprilTag跟蹤;可擴(kuò)展底盤(pán);增量PID控制算法
中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)05-0151-01
1 引言
機(jī)器視覺(jué)是從光學(xué)領(lǐng)域獲取相應(yīng)信息的機(jī)器系統(tǒng)。目前機(jī)器視覺(jué)的實(shí)現(xiàn)多依賴于X86以及ARM cortex-a系列的高端處理器以及相應(yīng)的高端軟件開(kāi)發(fā)。其整個(gè)系統(tǒng)的實(shí)現(xiàn)對(duì)于體積以及相應(yīng)的低成本系統(tǒng)的開(kāi)發(fā)與調(diào)試均有相當(dāng)不小的挑戰(zhàn)。自動(dòng)跟隨購(gòu)物車(chē)的光學(xué)跟蹤系統(tǒng)是一種低成本,袖珍的的機(jī)器視覺(jué)跟蹤系統(tǒng)。在這里,我們采用了國(guó)外最新的袖珍光學(xué)視覺(jué)模塊openmv3。通過(guò)Openmv模塊以及其內(nèi)置的相應(yīng)機(jī)器視覺(jué)算法,我們可以捕獲到購(gòu)物者的空間方位以及相應(yīng)姿態(tài),并通過(guò)UART(異步串口)向自動(dòng)跟隨底盤(pán)發(fā)出相應(yīng)的控制指令,從而達(dá)到跟隨購(gòu)物者的目的。
2 Openmv的相應(yīng)構(gòu)建
openmv是一款通過(guò)python語(yǔ)言控制的機(jī)器視覺(jué)系統(tǒng)。Openmv由高性能處理器STM32F765與豪威公司的OV7725構(gòu)成。由于目前對(duì)人體的面部識(shí)別算法以及相應(yīng)的人體特征提取算法均需要對(duì)相應(yīng)數(shù)據(jù)模型進(jìn)行大數(shù)據(jù)訓(xùn)練。而此要求對(duì)于在商場(chǎng)的自動(dòng)購(gòu)物場(chǎng)合均顯得特別不合時(shí)宜。故我們?cè)谶@里采用SLAM中應(yīng)用廣泛的Apriltag二維碼視覺(jué)跟蹤系統(tǒng)。
AprilTag是一款具有相應(yīng)的多個(gè)碼型家族,允許用戶自定義生成的一種特殊二維碼系統(tǒng)。Openmv模塊通過(guò)識(shí)別其所拍攝的圖像數(shù)據(jù),可以迅速的判斷出圖像中是否具有相應(yīng)的Apriltag對(duì)象。并且openmv模塊可以使用相應(yīng)的類(lèi)方法獲取空間中所有Apriltag對(duì)象的空間數(shù)據(jù)。我們這里通過(guò)openmv中內(nèi)置的Apriltag類(lèi)方法獲取了openmv所拍攝的每一幀圖像中的Apriltag中的類(lèi)參數(shù)。通過(guò)區(qū)分不同Apriltag碼的碼家族family,碼id,碼空間距離與姿態(tài)situation,碼光流移動(dòng)flow。我們可以比對(duì)出購(gòu)物車(chē)底盤(pán)所要跟隨的Apriltag對(duì)象。并且通過(guò)openmv中的UART類(lèi)方法,將相應(yīng)的控制數(shù)據(jù)發(fā)送給相應(yīng)的控制底盤(pán)。
3 控制底盤(pán)的構(gòu)建
控制底盤(pán)是一款基于單片機(jī)與傳統(tǒng)PID控制算法的控制系統(tǒng)??刂频妆P(pán)由減速電機(jī)、電機(jī)驅(qū)動(dòng)、單片機(jī)、擴(kuò)展WiFi模塊以及電源模塊所組成。其中單片機(jī)采用瑞薩公司的16位單片機(jī)R5F100LG,通信模塊采用的是esp8266模塊,電機(jī)驅(qū)動(dòng)采用的是7A 160W的橋式CMOS管驅(qū)動(dòng)模塊,而電機(jī)則采用的是正科公司生產(chǎn)的555大扭矩減速電機(jī)。
單片機(jī)是整個(gè)控制底盤(pán)的核心,單片機(jī)的處理與開(kāi)發(fā)效率直接決定著整個(gè)系統(tǒng)的好壞。在這里,我們采用的是瑞薩公司16位的R5F100LG單片機(jī)。我們的開(kāi)發(fā)方法采用的是瑞薩公司的CubeSuite+軟件。通過(guò)瑞薩公司相應(yīng)的代碼生成工具,我們直接生成了相應(yīng)單片機(jī)外設(shè)的相關(guān)驅(qū)動(dòng)的庫(kù)函數(shù)。通過(guò)代碼生成器以及庫(kù)函數(shù)的相應(yīng)開(kāi)發(fā),我們直接通過(guò)相應(yīng)的外部中斷以及UART接收函數(shù)得以獲取openmv所發(fā)送的控制數(shù)據(jù)幀。從相應(yīng)的控制數(shù)據(jù)幀中,單片機(jī)對(duì)于其中的特定對(duì)象的光流偏移數(shù)據(jù)進(jìn)行PID運(yùn)算,最終獲取了要賦予單片機(jī)PWM控制寄存器的相應(yīng)數(shù)據(jù)。
4 軟件調(diào)試
由于openmv與控制底盤(pán)可以劃分成相應(yīng)的兩個(gè)系統(tǒng)。所以面對(duì)兩個(gè)系統(tǒng)我們需要分別去單獨(dú)調(diào)試,特別是兩個(gè)系統(tǒng)的通信與控制部分。
在openmv與單片機(jī)的通信系統(tǒng)調(diào)試中,由于openmv輸出的數(shù)據(jù)類(lèi)型為整型數(shù)據(jù)類(lèi)型,而目前現(xiàn)有的串行通信都是基于八位字節(jié)的串行數(shù)據(jù)傳輸。所以我們需要寫(xiě)自己的控制協(xié)議。在這里我們將原來(lái)的基于16位整型數(shù)據(jù)的傳輸改為了相應(yīng)的逐位八位字符型數(shù)據(jù)的傳輸。通過(guò)python中的相應(yīng)str()字符串轉(zhuǎn)換函數(shù),我們得以先將整型數(shù)據(jù)轉(zhuǎn)換為八位數(shù)據(jù)然后再通過(guò)相應(yīng)的UART發(fā)送給相應(yīng)的單片機(jī)。然后在單片機(jī)端,再通過(guò)相應(yīng)的C語(yǔ)言判別以及位運(yùn)算將字符串型數(shù)據(jù)恢復(fù)成相應(yīng)的數(shù)個(gè)整型數(shù)據(jù)。
而在控制底盤(pán)的相應(yīng)PID調(diào)試中,我們從通過(guò)相應(yīng)機(jī)器視覺(jué)數(shù)據(jù)中提取出相應(yīng)的距離數(shù)據(jù)與相應(yīng)的對(duì)象偏移光流數(shù)據(jù)。然后對(duì)其進(jìn)行相應(yīng)的加權(quán)PID遠(yuǎn)算,最終PID函數(shù)會(huì)返回一個(gè)處于0-32000之間的整型自然數(shù)。返回出的相應(yīng)自然數(shù),則是相應(yīng)要賦給單片機(jī)PWM生成器的計(jì)數(shù)判別值。
5 硬件調(diào)試
整個(gè)小車(chē)的硬件結(jié)構(gòu)是圍繞小車(chē)的主要功能去實(shí)現(xiàn)的。在硬件調(diào)試中,購(gòu)物小車(chē)的硬件主要集中在電動(dòng)機(jī)的控制與驅(qū)動(dòng)上。由于購(gòu)物小車(chē)的購(gòu)物載重性。所以相應(yīng)的四個(gè)電動(dòng)機(jī)的驅(qū)動(dòng)電流是一筆不小的功率開(kāi)銷(xiāo),而由此引發(fā)的電動(dòng)機(jī)與驅(qū)動(dòng)H橋的高次諧波干擾更是對(duì)單片機(jī)以及相應(yīng)的視覺(jué)模塊產(chǎn)生了不小的影響。
在驅(qū)動(dòng)調(diào)試中,我們?cè)O(shè)計(jì)了數(shù)字電路供電與驅(qū)動(dòng)供電分開(kāi)的設(shè)計(jì)。采用電容低通濾波電路與低壓差線性穩(wěn)壓器相結(jié)合的方法去解決相應(yīng)的數(shù)字電路供電受干擾的問(wèn)題。而在進(jìn)一步的實(shí)際測(cè)試中,發(fā)現(xiàn)電動(dòng)機(jī)工作時(shí)電池電壓波動(dòng)影響AD采樣的問(wèn)題。相應(yīng)的,我們采用在電機(jī)端并聯(lián)電容濾波,以及相應(yīng)的設(shè)計(jì)低通AD采樣電路的方法去解決相應(yīng)的采樣不精確,易觸發(fā)等問(wèn)題。
6 結(jié)語(yǔ)
openmv作為一款微型機(jī)器視覺(jué)模塊,其效果是明顯的。其與python語(yǔ)言的結(jié)合使得在體積與功耗要求較高的機(jī)器視覺(jué)應(yīng)用場(chǎng)合,開(kāi)發(fā)者可以得以更好的開(kāi)發(fā)。相應(yīng)的利用市場(chǎng)上最新推出的機(jī)器視覺(jué)模塊以及傳統(tǒng)的諸如PID控制算法,在微型機(jī)電一體化的設(shè)計(jì)上,我們便可以完成更多的基于視覺(jué)的產(chǎn)品設(shè)計(jì),其相應(yīng)的擴(kuò)展了機(jī)電一體化設(shè)計(jì)的設(shè)計(jì)視野。
參考文獻(xiàn)
[1]阮秉濤.電子設(shè)計(jì)實(shí)踐指南[M].高等教育出版社,2013.
[2]黃志偉.全國(guó)大學(xué)生電子競(jìng)賽系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2013.
[3]童詩(shī)白,華成英.模擬電子技術(shù)基礎(chǔ)[M].四版.北京:高等教育出版社,2006.
[4]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].五版.北京:高等教育出版社,2006.
[5]胡壽松.自動(dòng)控制原理[M].五版.北京:科學(xué)出版社,2007.
[6]Eric Matthes Python編程從入門(mén)到實(shí)踐[M].北京:人民郵電出版社,2016.
[7]Stephen Prata C Primer Plus中文版[M].五版.北京:人民郵電出版社,2005.
[8]MicroPython與Openmv中文文檔.廣州星瞳科技有限公司.2018.
[9]RL78/G13開(kāi)發(fā)套件快速入門(mén)教程.瑞薩電子中國(guó)有限公司.2015.