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