游依婷 周章玉
摘 要 本文介紹了一種可自主導(dǎo)購的智能跟隨購物車,主要包括手機(jī)和車架、購物筐、觸摸顯示屏、車輪、直流電機(jī)、紅外通信模塊、超聲波傳感器、視覺識別系統(tǒng)和語音播報等。動力車輪和萬向輪組成四輪行進(jìn)系統(tǒng),可讓車體進(jìn)行360°轉(zhuǎn)向;視覺識別系統(tǒng)由兩個攝像頭以及MiniPC構(gòu)成,可對目標(biāo)消費(fèi)者的位置進(jìn)行捕捉,從而達(dá)到較為精準(zhǔn)的跟隨效果;紅外通信模塊組成較為精準(zhǔn)的區(qū)域定位系統(tǒng),可實時定位消費(fèi)者的具體位置。購物車可提供跟隨導(dǎo)購與傳統(tǒng)導(dǎo)購兩種購物模式,隨時為消費(fèi)者提供智能導(dǎo)購、語音提醒等服務(wù),讓消費(fèi)者有較好的購物體驗。
關(guān)鍵詞 圖像識別;紅外通信;智能跟隨;導(dǎo)購;自動避障
隨著社會的快速發(fā)展,人工智能的理念深入人心,人們的生活離不開購物,而在各類大型購物商場中卻還未普及可自動跟隨的智能購物車,因此我們提出了具有跟隨和導(dǎo)購功能的智能購物車。此購物車采用Cortex-M4控制差速底盤,Openmv圖像識別以及算法處理實現(xiàn)目標(biāo)定位;采用紅外通信實現(xiàn)區(qū)域定位,與語音播報相結(jié)合,共同打造出友好的導(dǎo)購系統(tǒng);采用超聲波模塊實現(xiàn)自主避障。多個功能模塊結(jié)合使購物車可實現(xiàn)智能跟隨、智能導(dǎo)購和智能提醒。
1系統(tǒng)總體框架
此購物車系統(tǒng)的功能主要分為四部分——目標(biāo)追蹤、自動避障、區(qū)域定位和人機(jī)交互。整個購物車系統(tǒng)的總體框圖如圖 1所示。目標(biāo)的定位采用Openmv攝像頭對目標(biāo)物體進(jìn)行數(shù)據(jù)采集。當(dāng)Openmv自動檢測到目標(biāo)物體的特征后,會直接框選目標(biāo)物體,建立坐標(biāo)系,通過計算公式得到目標(biāo)物的相對坐標(biāo)、相對距離并傳輸給主控板。車體四周安裝多組超聲波傳感器,保證車體前方180度范圍內(nèi)的障礙物可被識別,但存在0.3cm的盲區(qū)。總體指標(biāo)良好,可進(jìn)行較順暢的自動避障。利用紅外通信可實現(xiàn)區(qū)域定位,在下位機(jī)紅外發(fā)射端周圍0.5m范圍內(nèi)可收到相關(guān)區(qū)域代碼,從而實現(xiàn)區(qū)域定位,并結(jié)合語音與導(dǎo)購系統(tǒng)實現(xiàn)人機(jī)交互,完成導(dǎo)購功能?;贘Q8XX的語音播報,結(jié)合紅外區(qū)域定位后可實現(xiàn)在特定場景下的語音提示功能。此語音播報功能的運(yùn)行速度尚佳、反應(yīng)較迅速,語音流暢且清晰。采用Qt對導(dǎo)購系統(tǒng)進(jìn)行編程設(shè)計,消費(fèi)者可直接通過導(dǎo)購系統(tǒng)的界面選擇自己的購物模式,導(dǎo)購系統(tǒng)設(shè)有一鍵導(dǎo)購、輔助導(dǎo)購兩種導(dǎo)購模式[1]。
2硬件的配置及其原理
此購物車系統(tǒng)使用的硬件設(shè)備模塊主要有——STM32F407核心板、Openmv識別模塊、HC-SR04超聲波模塊、STC12紅外通信核心板、MiniPC顯示屏和電機(jī)驅(qū)動模塊。車體部分主要是長方體形狀的車筐、推手及裝有2個萬向輪和2個橡膠輪的差速底盤。其中硬件設(shè)備功能模塊可主要分為三部分:
(1)第一部分為目標(biāo)定位系統(tǒng)。硬件采用Openmv模塊進(jìn)行信息采集以及圖像識別,通過算法處理可得到目標(biāo)的坐標(biāo)值以及與車體的距離;采用UART通信實現(xiàn)Openmv模塊與Cortex-M4通信;采用Cortex-M4通信接受目標(biāo)信息并對PWM參數(shù)進(jìn)行調(diào)整,實現(xiàn)實時調(diào)整車體位于目標(biāo)正后方并保持一定距離,具體實現(xiàn)過程為——第一步,先對購物者進(jìn)行特征識別和特征信息存儲,首先對感興趣區(qū)中的目標(biāo)物體進(jìn)行特征點采集,目標(biāo)物體特征點識別記憶后自動儲存。第二步,根據(jù)綜合功能模塊降低環(huán)境因素對攝像頭的采集信息的影響。攝像頭將采集的圖像信息經(jīng)過處理后傳給底層的Cortex-M4主控芯片,主控Cortex-M4芯片對購物車跟隨方向進(jìn)行調(diào)整。當(dāng)運(yùn)動模式開啟,Openmv將目標(biāo)物體用方型邊框自動框選,邊框內(nèi)有十字叉代表目標(biāo)的中心坐標(biāo)。
Openmv視覺界面被坐標(biāo)線性化,坐標(biāo)系統(tǒng)為160×120,其中一幀圖像的中心點為(80,60)。具體測距原理如圖 2所示,其中,Lm是長度,Bpix是攝像頭中球所占的像素(直徑的像素)。Rm是球真實的半徑,Apix是固定的像素,a是視角的一半。測距公式如下:
(2)第二部分為自動避障系統(tǒng)。傳感器采用IO口TRIG觸發(fā)測距,給TRIG端口一個大于10us的高電平信號;模塊發(fā)送8個40KHz的方波后自動檢測是否有信號返回;有信號返回,通過端口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340m/s))/2。當(dāng)距離小于20cm時,Cortex-M4核心板控制電機(jī)進(jìn)行避障。
(3)第三部分為區(qū)域定位系統(tǒng)。下位機(jī)采用MCU核心板以及紅外發(fā)射頭構(gòu)成自制紅外發(fā)射電路,通過脈寬調(diào)制向上位機(jī)發(fā)送帶有信息的紅外光波,以傳輸相應(yīng)區(qū)域信息。發(fā)射部分:發(fā)射部分由STC12C5602AD模塊,指令編碼系統(tǒng),信號調(diào)制系統(tǒng)和發(fā)射電路組成。指令編碼系統(tǒng)將本商城各區(qū)域?qū)?yīng)的編號進(jìn)行編碼,指令編碼信號經(jīng)過38K載波進(jìn)行調(diào)制,然后再由驅(qū)動電路來進(jìn)行功率放大,再由發(fā)射電路把調(diào)制后的編碼指令信號發(fā)射出去。
上位機(jī)采用自制紅外接收電路以及STM32核心板接收紅外信息實現(xiàn)定位,同時通過串口與QT通信。接收部分由紅外接收電路、信號解調(diào)系統(tǒng)、信號解碼系統(tǒng)、顯示電路和操作執(zhí)行電路組合而成。接收電路把接收到的已調(diào)信號進(jìn)行信號放大后送給信號解調(diào)系統(tǒng)解調(diào),再由信號解碼系統(tǒng)把已調(diào)信號還原為編碼信號。指令譯碼器將會把指令信號編碼進(jìn)行譯碼,最后再由驅(qū)動電路來執(zhí)行各種指令相對應(yīng)的操作控制[2]。
語音播報采用JQ8XX的語音模塊,當(dāng)STM32接收到區(qū)域代碼時,觸發(fā)模塊功能,模塊播放存儲于其中的音頻。
人機(jī)交互界面采用UP-MAGIC 7 INCH TFT LCD PANEL,同時用HanRun驅(qū)動,以顯示相關(guān)位置信息。
3軟件流程設(shè)計
軟件程序由以下部分組成——Openmv模塊識別目標(biāo)并傳送位置信息、紅外通信模塊進(jìn)行區(qū)域定位傳送區(qū)域信息、超聲波模塊進(jìn)行自動避障,STM32接受信息后控制底盤的行進(jìn)和語音模塊的播報。程序功能主要分為以下三部分:
(1)Openmv模塊聯(lián)合STM32實現(xiàn)目標(biāo)識別與追蹤。Openmv的坐標(biāo)系統(tǒng)為160×120,其中一幀圖像的中心點為(80,60)。系統(tǒng)啟動后,Openmv首先會對感興趣區(qū)域中的目標(biāo)進(jìn)行顏色、像素點和特征點的信息采集,得到先驗信息。運(yùn)動模式開始后,Openmv將根據(jù)先驗信息,實時地對目標(biāo)進(jìn)行識別,使用方框框出目標(biāo),并將方框中心點的x坐標(biāo)值通過串口通信傳給STM32控制板;同時還將根據(jù)識別圖中目標(biāo)所占像素點與先驗信息比對,根據(jù)相應(yīng)距離計算方法,得出大致距離并發(fā)送至STM32控制板,完成目標(biāo)識別[3]。
控制板將得到的x坐標(biāo)值與圖像中心點的x坐標(biāo)值80進(jìn)行比較,可得知該目標(biāo)在車體前方的左右位置,再根據(jù)該坐標(biāo)值與中心坐標(biāo)值的偏差大小利用PID算法,控制購物車的轉(zhuǎn)向,實現(xiàn)購物車實時處于目標(biāo)的正后方;同時,控制板將根據(jù)大致距離利用PID算法控制車體前進(jìn),做到距離遠(yuǎn)時速度大,距離近時速度小的行進(jìn),實現(xiàn)實時跟隨。
若Openmv未識別到目標(biāo)信息,則將傳送-1至STM32控制板,控制板收到-1后將控制車體緩慢轉(zhuǎn)動以輔助攝像頭的目標(biāo)識別,若長時間未能識別,則購物車將處于報錯狀態(tài):原地打轉(zhuǎn)。
(2)STC12控制板和紅外發(fā)射頭組成的發(fā)射模塊以及STM32核心板和紅外接收頭組成的接收部分共同實現(xiàn)區(qū)域定位。發(fā)射部分程序主要由38kHz載波產(chǎn)生函數(shù)、引導(dǎo)碼函數(shù)、數(shù)據(jù)1和數(shù)據(jù)0編碼函數(shù)、結(jié)束碼函數(shù)和信息整合發(fā)送函數(shù)組成。在信息整合函數(shù)中依次發(fā)送引導(dǎo)碼、數(shù)據(jù)碼和結(jié)束碼。接收部分程序主要是嵌套循環(huán)和判斷,判斷收到高低電平時間以確定脈沖間隔時間從而解碼。
(3)HC-SR04超聲波模塊聯(lián)合STM32實現(xiàn)自動避障。此部分程序主要由中斷觸發(fā)程序、高電平計數(shù)器和調(diào)整電機(jī)PWM三部分組成。程序一開始即為觸發(fā)函數(shù),其功能是將Trig電平拉高,使得超聲波模塊工作并觸發(fā)定時器中斷,開啟計數(shù)器功能,得到物體距離=計數(shù)器當(dāng)前值/(時鐘周期/預(yù)分頻值)*340/2。STM32根據(jù)讀取的距離值調(diào)整左右輪的轉(zhuǎn)速,從而實現(xiàn)避障[4]。
4系統(tǒng)調(diào)試
(1)將攝像頭采集到的圖片信息通過處理后傳給Cortex-M4控制板,根據(jù)識別結(jié)果調(diào)整參數(shù),通過串口通信將結(jié)果顯示于電腦的串口調(diào)試助手中,結(jié)果將顯示攝像頭與Cortex-M4控制板通信正常、數(shù)據(jù)處理正常,PID參數(shù)調(diào)整成功。
(2)調(diào)試紅外發(fā)射模塊。通過定時器產(chǎn)生38kHz的脈沖并帶有載波信號,為保證通信成功,可通過示波器觀察波形數(shù)據(jù)。根據(jù)示波器顯示的結(jié)果可知輸出波形正確無誤,接通紅外接收模塊,進(jìn)行通信測試,接收模塊可接收信號并解碼。
(3)其他模塊測試如超聲波模塊、編碼器PWM參數(shù)調(diào)整算法測試均采用步驟一中的串口打印方式輔助測試,經(jīng)調(diào)試后測試結(jié)果正常。
(4)確定PID跟隨目標(biāo)參數(shù)。車體搭好后根據(jù)實際跟隨結(jié)果,多次調(diào)整Kp、Kd參數(shù)值,使跟隨達(dá)到最佳效果,最后中心定位PID算法中Kp=0.15,Kd=0.35;車距調(diào)整PID算法中Kp=0.1,Kd=0.2[5]。
5結(jié)束語
本智能商城購物車采用圖像識別即顏色識別以及特征點監(jiān)測,結(jié)合感興趣區(qū)域減小誤差,并通過攝像頭測距算法,實現(xiàn)目標(biāo)的坐標(biāo)與距離的定位;通過主控板對購物車的控制,能夠讓車體靈活移動;基于QT開發(fā)人機(jī)交互界面,能夠通過觸屏控制車體;通過超聲波測距,讓購物車實現(xiàn)自動避障;通過紅外通信,上位機(jī)可根據(jù)下位機(jī)所發(fā)送信息判斷當(dāng)前位置,并用語音播出。
各項功能相結(jié)合,此購物車系統(tǒng)可實現(xiàn)作品初始時的功能設(shè)想——既實現(xiàn)實時跟隨,也可以自主避障,而且能隨時定位區(qū)域位置,同時具有導(dǎo)購、人機(jī)交互以及語音播報等功能。綜上,本購物車可為用戶提供一個良好的導(dǎo)購體驗。
參考文獻(xiàn)
[1] 郭天祥.新概念51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社,2009:221.
[2] 胡漢才.單片機(jī)原理及其接口技術(shù)(第2版)[M].北京:清華大學(xué)出版社,2004:81.
[3] 肖景和,趙健.紅外線熱釋電與超聲波控制電路[M].北京:人民郵電出版社,2003:215.
[4] 凌志斌,鄧超平,葉芃生.紅外遙控技術(shù)及其解碼方案[J].微處理機(jī),2003(6):59-62.
[5] 王維波,粟寶鵑,猴春望.QT5.9C++開發(fā)指南[M].北京:人民郵電出版社,2018:65.
作者簡介
游依婷(1999-),女,四川成都人;學(xué)生,現(xiàn)就讀學(xué)校:西南石油大學(xué)電氣信息學(xué)院電子信息工程專業(yè),研究方向:嵌入式控制和信號處理。
周章玉(1999-),女,四川內(nèi)江人;學(xué)生,現(xiàn)就讀學(xué)校:西南石油大學(xué)電氣信息學(xué)院電子信息工程專業(yè),研究方向:嵌入式控制和信號處理。