楊志東,丁佳銘,徐佑宇,申 騰
(武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072)
基于SOPC的智能輔助飲食系統(tǒng)設(shè)計
楊志東,丁佳銘,徐佑宇,申 騰
(武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072)
該文基于無臂殘疾人無法進(jìn)行自主飲食,設(shè)計了一套智能輔助無臂殘疾人飲食的嵌入式系統(tǒng)。該系統(tǒng)由CCD相機(jī)得到臉部圖像,通過FPGA的二值化處理和Nios II的圖像分析,定位出嘴部位置,再由FPGA產(chǎn)生持續(xù)PWM波控制機(jī)械臂的運動,將飲品送到使用者嘴邊進(jìn)行飲用。該系統(tǒng)具有語音識別功能,全程通過語音進(jìn)行人機(jī)交互,并具有自動添加飲品功能和水溫異常報警功能。
嵌入式系統(tǒng);定位;機(jī)械臂;語音識別
隨著科技的發(fā)展,多自由度機(jī)械手臂廣泛應(yīng)用于生活、半導(dǎo)體制造、工業(yè)、醫(yī)療、軍事以及太空探索等領(lǐng)域。機(jī)械手臂能夠接受指令,精確地定位到三維(或二維)空間上的某一點進(jìn)行作業(yè)。
另外電子技術(shù)的發(fā)展也日新月異,已經(jīng)融入生活各個方面,智能化已經(jīng)成為一種趨勢。其中SOPC是一種新的可編程系統(tǒng),具有靈活的設(shè)計方式,可裁減、可擴(kuò)充、可升級,并具備軟硬件在系統(tǒng)可編程的功能。
本文基于這一特點設(shè)計了一個基于SOPC的智能輔助飲食系統(tǒng),該系統(tǒng)能夠輔助行動不便的人進(jìn)行飲食。通過對使用者面部的圖像分析得到嘴部具體位置,系統(tǒng)給舵機(jī)發(fā)送相應(yīng)PWM波使舵機(jī)完成抓取并移動水杯至使用者嘴部,放回水杯等一系列操作。該系統(tǒng)還具有智能添水,水溫異常報警的功能。
本系統(tǒng)利用D5M相機(jī)擷取使用者面部影像后進(jìn)行圖像處理,找到嘴部位置,將嘴部坐標(biāo)存儲起來,在DE2-115構(gòu)建的Nios II中對各個模塊進(jìn)行控制,實現(xiàn)輔助行動不便人士飲食的作用。系統(tǒng)各功能概述如下。
1)語音識別:通過對使用者語音的采集與識別,來了解使用者的需求,從而系統(tǒng)根據(jù)使用者意愿完成相應(yīng)操作。
2)圖像處理:本系統(tǒng)通過總線連接攝像頭獲取圖像信息,通過對采集的圖像進(jìn)行一系列算法實現(xiàn)人臉識別,最后得到使用者嘴部的位置坐標(biāo)。
3)機(jī)械臂控制:編寫Verilog語言,通過FPGA控制的有6個自由度機(jī)械臂上的舵機(jī)工作,從而使機(jī)械臂完成指定動作。
4)SD卡播放:播放SD卡中預(yù)先存儲好的人聲和音樂,實現(xiàn)系統(tǒng)與使用者的交互。
5)智能續(xù)杯:測量水杯的整體重量,判斷是否需要加水,通過繼電器控制電磁水閥的通斷,實現(xiàn)續(xù)杯功能。
2.1 硬件設(shè)計
本系統(tǒng)使用Altera公司生產(chǎn)的DE2-115開發(fā)板,內(nèi)置Cyclone?IV 4CE115 FPGA芯片,2 MB SRAM,2片64 MB SDRAM,VGA輸出接口,40引腳擴(kuò)展接口,帶二極管保護(hù)電路,24 bit CD品質(zhì)CODEC芯片等。利用Quartus建立Nios II軟核處理器,該處理器是Altera的第二代FPGA嵌入式處理器,其性能超過200DMIPS。Nios II軟核處理器對由攝像頭傳進(jìn)來的數(shù)據(jù)進(jìn)行算法分析,以及對各種I/O口進(jìn)行軟件控制。硬件結(jié)構(gòu)分為輸入、輸出、信息處理3部分,如圖1所示。
2.2 軟件設(shè)計
軟件流程主要是對語音、圖像、溫度以及機(jī)械臂等的時序控制以及條件判斷。本文采用Nios II軟核進(jìn)行軟件編寫。軟件流程圖如圖2所示。
2.3 機(jī)械平臺設(shè)計
機(jī)械平臺最下面是一個步進(jìn)電機(jī),用于控制平臺的旋轉(zhuǎn),第一層放置4個杯子,分別裝有不同的飲品,根據(jù)使用者的意愿,對應(yīng)飲品的杯子會旋轉(zhuǎn)至機(jī)械臂正前方,此外每個杯子底部裝有壓力傳感器;第二層是4個水罐,分別位于4個杯子的正上方,并且杯中裝有相應(yīng)飲品,水罐上裝有電磁閥以及溫度傳感器。機(jī)械平臺3D圖如圖3所示。
圖像擷取處理模塊由圖像拍攝存儲模塊和圖像處理模塊組成。
3.1 圖像拍攝存儲模塊
使用者影像經(jīng)D5M相機(jī)拍攝后,進(jìn)入CCD_ Caputer module并經(jīng)過RAW2RGB module將圖片轉(zhuǎn)為RGB格式,然后對RGB格式的圖片作灰度處理,再對灰度圖片進(jìn)行二值化處理。圖片需要在VGA顯示出來并存儲在Nios II中進(jìn)行嘴部定位算法分析,本文自定義了一個SRAM controll module模塊,該模塊通過控制讀寫時序?qū)崿F(xiàn)了VGA和Nios II的讀寫操作,省去了SDRAM較繁瑣的讀寫操作。
3.2 圖像處理模塊
3.2.1 RAW2RGB算法
D5M CMOS攝像頭(加了一個偏振片來消除反光干擾)拍攝得到的是RAW格式,奇數(shù)行包括green和red顏色的像素,偶數(shù)行包括blue和green顏色的像素。奇數(shù)列包括green和blue顏色的像素,偶數(shù)列包括red和green顏色的像素。為了方便圖像處理,先進(jìn)行RAW2RGB的操作。
圖2 軟件流程圖
圖3 機(jī)械平臺3D圖
1)調(diào)用altshift_taps的megafunction,altshift_ taps可以作為數(shù)據(jù)移動寄存器組,經(jīng)常在圖像處理程序中被用到。采集一系列像素點數(shù)據(jù),需要同時對2行像素點同時進(jìn)行處理時,就可以用altshift_ taps.共2個taps,每個taps數(shù)據(jù)寬度為圖像每行像素點的個數(shù)(1 280)。
2)在格式轉(zhuǎn)換時,用到以下4個參量。
mDATA_0:第M行第N列的像素。
mDATAd_0:第M行第N-1列的像素。
mDATA_1:第M+1行第N列的像素。
mDATAd_1:第M+1行第N-1列的像素。
3)4個參量組成一個以mDATA_0(位于左上角)為核心的模板。模板中必定包含一個R、一個B、2個G像素點,那么R作為當(dāng)前像素mDATA_ 0的R值,B作為當(dāng)前像素mDATA_0的B值,取2個G的平均值作為當(dāng)前像素mDATA_0的G值(通過取G的高10位,舍去最后一位來實現(xiàn))。每個RGB點相當(dāng)于圖中4個像素點中的交點,因此根據(jù)坐標(biāo)位置有4種像素排列情況,根據(jù)周圍4個R、G1、G2、B像素點的值得到對應(yīng)點的RGB值。
mDATA_0 mDATAd_0 mDATA_1 mDATAd_1
3.2.2 RGB轉(zhuǎn)灰度圖以及二值化算法
對于彩色轉(zhuǎn)灰度,通用公式為:
Gray=R×0.299+G×0.587+B×0.114
但在FPGA中為了避免低速的浮點運算,需要整數(shù)算法,整數(shù)算法可進(jìn)一步轉(zhuǎn)化為移位算法,最終得到Gray=(R×38+G×75+B×15)>>7,該式運算速度快,精度較高,比較適合。
1)二值化處理:為了找出嘴部位置,在進(jìn)行計算前先將灰度圖作二值化處理,即將圖像的像素點的灰度值設(shè)置為0或255,也就是將整個圖像呈現(xiàn)出明顯的黑白效果,將256個亮度等級的灰度圖像通過適當(dāng)?shù)拈撝颠x取而獲得仍然可以反映圖像整體和局部特征的二值化圖像,所有灰度大于或等于閾值的像素被判定為屬于特定物體,其灰度值表示為255,否則這些像素點被排除在物體區(qū)域以外,灰度值為0,表示背景或者例外的物體區(qū)域。本系統(tǒng)中閾值可以調(diào)節(jié),以適應(yīng)各種環(huán)境。
2)嘴部定位算法:采用本文自定義的算法,該算法采取逐次減小掃描區(qū)域面積,最后得到嘴部中心坐標(biāo)。算法如圖4所示。嘴部定位算法對二值化得到的600×800個像素點進(jìn)行掃描計算,具體有以下6個步驟。
①對得到的像素點從上至下逐行掃描,當(dāng)找到某一行像素點灰度值為0的個數(shù)占本行總個數(shù)的30以上,記錄該行行數(shù)為k。
②對第k行像素點進(jìn)行掃描,先從左向右掃描,掃描到某一點以及其后連續(xù)10點灰度值都為0,記錄這點坐標(biāo)為(k,m)。同理再從右向左掃描,掃描到某一點以及其后連續(xù)10點灰度值都為0,記錄下這點坐標(biāo)為(k,n)。將嘴部掃描區(qū)域縮小在這兩點形成的矩形內(nèi)。
③對(k,m)和(k,n)點形成的矩形局域進(jìn)行掃描,從k行開始掃描,當(dāng)掃描到某一行像素點灰度值為255的個數(shù)占本行總個數(shù)的70以上,記錄下該行行數(shù)為a。
④對第a行像素點進(jìn)行掃描,先從左向右掃描,掃描到某一點以及其后連續(xù)10點灰度值都為255,記錄下這點坐標(biāo)為(a,b)。同理再從右向左掃描,掃描到某一點以及其后連續(xù)10點灰度值都為255便記錄下這點坐標(biāo)為(a,c)。將嘴部掃描區(qū)域再縮小在這兩點形成的矩形內(nèi)。
⑤對(a,c)和(a,b)點形成的矩形區(qū)域進(jìn)行掃描,從a行開始掃描,當(dāng)掃描到某一行像素點灰度值為0的個數(shù)占本行總個數(shù)的60以上,記錄下該行行數(shù)為d。
⑥對第d行像素點進(jìn)行掃描,先從左向右掃描,掃描到某一點以及其后連續(xù)10點灰度值都為0,記錄下這點坐標(biāo)為(d,e)。同理再從右向左掃描,掃描到某一點以及其之后連續(xù)10點灰度值都為0便記錄下這點坐標(biāo)為(d,f)。根據(jù)人臉比例可得嘴部坐標(biāo)(f-e+d,(f+e)/2)。
語音交互模塊由語音采集識別模塊和audio player模塊組成。
圖4 人臉嘴部定位算法示意圖
4.1 語音采集識別模塊
模塊由LD3320語音識別芯片和STC單片機(jī)芯片組成。LD3320芯片是一款“語音識別”專用芯片。該芯片集成了語音識別處理器和一些外部電路,包括A/D、D/A轉(zhuǎn)換器,麥克風(fēng)接口和聲音輸出接口等。在該模塊中拾音器采集到音頻后,通過語音識別芯片判斷是否為MCU單片機(jī)預(yù)先設(shè)定的詞,如果是,再由I/O輸出特定的信號傳給DE2開發(fā)板,Nios II處理核心通過判斷信號來識別用戶的請求,從而做出相應(yīng)的操作。
4.2 audio player模塊
在DE2-115上實現(xiàn)一個SD卡音樂播放器,它讀取存儲在SD卡里面的音頻文件,并通過CD品質(zhì)的音頻DAC芯片播放出來。設(shè)計使用Nios II處理器讀取音樂數(shù)據(jù)并用Wolfson WM8731音頻CODEC芯片完成播放工作。當(dāng)語音采集識別到用戶語音時,通過Nios II控制播放相應(yīng)音頻文件,從而實現(xiàn)語音交互的功能。
本系統(tǒng)采用了有6個自由度的機(jī)械臂,由6個舵機(jī)來控制它的運動軌跡。通過Verilog語言編寫PWM模塊,輸出6個占空比可調(diào)PWM波,將模塊與外部電路連接,按照Avalon總線協(xié)議與Nios II核連接,從而實現(xiàn)在Nios II中控制輸出PWM波的占空比的功能,選擇用FPGA產(chǎn)生PWM波可以緩解軟件工作壓力,提高系統(tǒng)整體運行速度。在圖像處理完后可獲得嘴部的坐標(biāo),但這個坐標(biāo)是在VGA中的坐標(biāo),要將這個坐標(biāo)換算到實際空間中,可調(diào)整攝像頭和人臉的距離使VGA顯示和實際圖像成1∶1,然后將機(jī)械臂放置在頭部左側(cè),將三維問題轉(zhuǎn)化為二維問題來解決,所以只需要對二自由度機(jī)械臂的運動做算法分析,就可以達(dá)到控制機(jī)械臂將杯子放到使用者嘴部位置的功能。
圖5為二值化后的圖像,以此左上方為原點建立坐標(biāo)系。實際效果如圖6所示,誤差范圍在1 cm以內(nèi),如表1所示。
Design of an Intelligent Auxiliary Dieting System
YING Zhidong,DING Jiaming,XU Youyu,SHEN Teng
(College of Electronic Information,Wuhan University,Wuhan 430072,China)
Based on the phenomenon that disabled people without arms are not convenient to eat and drink,an embedded system for arm less disabled to eat and drink is designed.The system receives the image of face from CCD camera and locates the mouth via binary image process of FPGA and image analyze of Nios II.Using Pulse Width Modulation power,this system can control its mechanical arm to send the drink in front of disabled people's mouth.Since this system has speech recognition,disabled people can just talk to the system to make an order.Moreover,the system has the function of filling up the drinking automatically and alarm for abnormal drinking temperature.
embedded system;location;mechanical arm;speech recognition
圖5 二值化效果圖
O341;G642.423
A
10.3969/j.issn.1672-4550.2016.06.010
2016-01-12;修改日期:2016-03-14
武漢大學(xué)設(shè)備處自主式開放實驗項目基金(WHU-2016SKFSY-3)。
作者介紹:楊志東(1974-),男,碩士,主要從事大學(xué)生實踐教學(xué)、學(xué)科競賽組織與管理工作。