文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)06-0127-03
為了能夠充分表達(dá)人類的情感,仿人機(jī)器人通過多個(gè)運(yùn)動(dòng)機(jī)構(gòu)牽動(dòng)仿真人面皮實(shí)現(xiàn)人類表情[1-3]。這種面部機(jī)構(gòu)具有自由度眾多、運(yùn)動(dòng)復(fù)雜、控制精度要求高等特點(diǎn)。實(shí)踐表明,由于指令順序執(zhí)行,單個(gè)單片機(jī)很難完成多任務(wù)系統(tǒng)的設(shè)計(jì)。然而,采用多個(gè)單片機(jī)分布控制的方式,雖然能夠滿足設(shè)計(jì)需求,但系統(tǒng)穩(wěn)定性較差,設(shè)計(jì)成本增加。
本文選用非定制邏輯器件FPGA作為控制芯片來完成整個(gè)驅(qū)動(dòng)系統(tǒng)的設(shè)計(jì)。區(qū)別于單片機(jī),F(xiàn)PGA并行的設(shè)計(jì)理念可使系統(tǒng)模塊獨(dú)立運(yùn)行,在簡化系統(tǒng)架構(gòu)的同時(shí),提高執(zhí)行機(jī)構(gòu)的協(xié)同性。
1 面部運(yùn)動(dòng)分析與系統(tǒng)硬件結(jié)構(gòu)
本系統(tǒng)用于驅(qū)動(dòng)西南科技大學(xué)自主研發(fā)的MSR2型仿人機(jī)器人面部產(chǎn)生人類表情,如圖1所示。其面部具有21個(gè)基本動(dòng)作單元AU(Action Unit),主要集中分布于眉毛、眼球、眼瞼、嘴巴和下頜等5個(gè)部位,如圖2所示。表1給出了5個(gè)部位的驅(qū)動(dòng)電機(jī)和傳感器分布情況。
面部驅(qū)動(dòng)系統(tǒng)是仿人機(jī)器人控制系統(tǒng)的一個(gè)組成部分,面部單元運(yùn)動(dòng)指令由上層PC機(jī)完成。因此,本文將面部驅(qū)動(dòng)系統(tǒng)劃分成電機(jī)控制、反饋信號(hào)采集和上位機(jī)通信三個(gè)部分,圖3所示為硬件結(jié)構(gòu)示意圖。
2 FPGA模塊化設(shè)計(jì)
本設(shè)計(jì)選擇Altera公司Cyclone II系列FPGA器件EP2C5Q208C8,作為驅(qū)動(dòng)系統(tǒng)核心控制芯片。
2.1 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)
仿人機(jī)器人頭部空間狹小,選用的微型舵機(jī)型號(hào)為H301,其旋轉(zhuǎn)角速度為500°/s。H301的控制僅需一路周期為20 ms的PWM脈沖, 有效正脈寬范圍為0.5 ms~2.5 ms,對(duì)應(yīng)舵機(jī)旋轉(zhuǎn)角度范圍為0°~180°。PWM脈寬與H301轉(zhuǎn)角呈線性對(duì)應(yīng)關(guān)系。驅(qū)動(dòng)系統(tǒng)需要實(shí)現(xiàn)對(duì)21路舵機(jī)的控制,即需要FPGA輸出21路PWM[4]。PWM的輸出可以作為一個(gè)模塊來設(shè)計(jì),以下是舵機(jī)模塊SteeringGear實(shí)例SG1的Verilog HDL代碼:
SteeringGear SG1(.clk(clk) //50 MHz時(shí)鐘輸入
.rst_n(rst_n) //復(fù)位信號(hào),低電平有效
.pwm_out_en(pwm_EN) //PWM輸出使能
.correct_temp(pc_chang) //PWM參數(shù)修正
.pwm_val(Data_Received) //轉(zhuǎn)角控制
.pwm(pwm[1])) //PWM輸出
應(yīng)pwm_val的值為7 500。因此,舵機(jī)模塊設(shè)計(jì)正確。
2.2 反饋信號(hào)采集模塊設(shè)計(jì)
位置檢測電位器作為反饋傳感器,反饋面部機(jī)構(gòu)的運(yùn)動(dòng)位置,為驅(qū)動(dòng)系統(tǒng)提供誤差補(bǔ)償。系統(tǒng)選用精密電位器J50S,其線性精度為±0.1%。
J50S反饋的電壓信號(hào)是模擬量,F(xiàn)PGA的模數(shù)轉(zhuǎn)換外置了16位ADC芯片LTC1864。電位器檢測的理論精度為0.005 2°。驅(qū)動(dòng)系統(tǒng)將面部位置反饋電位器分成6、7兩組,由LTC1864配合單8路模擬開關(guān)CD4051實(shí)現(xiàn)。與FPGA硬件接口如圖5所示。
在Slave FIFO操作模式下,增強(qiáng)型8051內(nèi)核利用固件將CY7C68013A配置成Slave FIFO模式后,不參與外設(shè)與USB主機(jī)的數(shù)據(jù)交互[5-6]。經(jīng)過實(shí)驗(yàn)測試,Slave FIFO模式的USB數(shù)據(jù)傳輸速率可達(dá)21.6 Mb/s, 滿足了系統(tǒng)需求。
3 驅(qū)動(dòng)系統(tǒng)工作流程
圖7所示為驅(qū)動(dòng)系統(tǒng)主要工作流程圖。驅(qū)動(dòng)系統(tǒng)上電復(fù)位初始化后,USB模塊監(jiān)測上位機(jī)PC的指令;當(dāng)?shù)玫絇C指令后,USB模塊接收運(yùn)動(dòng)數(shù)據(jù);FPGA將數(shù)據(jù)分配給電機(jī)模塊;電機(jī)旋轉(zhuǎn)驅(qū)動(dòng)面部運(yùn)動(dòng)機(jī)構(gòu),牽扯仿真人面皮展現(xiàn)人類表情。位置反饋模塊采集電位器的角位移,與理論值計(jì)算運(yùn)動(dòng)誤差;如果誤差在允許范圍內(nèi),則反饋數(shù)據(jù)至PC;否則通過誤差補(bǔ)償算法,給原始數(shù)據(jù)添加補(bǔ)償系數(shù),重新分配數(shù)據(jù)。
4 系統(tǒng)實(shí)驗(yàn)與結(jié)果分析
將本文設(shè)計(jì)的仿人機(jī)器人面部驅(qū)動(dòng)系統(tǒng)與以單片機(jī)為核心的系統(tǒng)做表情對(duì)比實(shí)驗(yàn)。MSR2面部前一版本的驅(qū)動(dòng)系統(tǒng)選用3個(gè)單片機(jī)(型號(hào)為STM32F103VE),分別控制3個(gè)模塊,單片機(jī)之間采用CAN總線通信。
為了達(dá)到實(shí)驗(yàn)?zāi)康?,選擇驚訝、厭惡、憤怒、欣喜4種有明顯區(qū)分的表情作測試。系統(tǒng)有13個(gè)檢測點(diǎn)位置,即反饋電位器的檢測點(diǎn)。實(shí)驗(yàn)允許每個(gè)檢測點(diǎn)的誤差為±1°。兩個(gè)驅(qū)動(dòng)系統(tǒng)分別針對(duì)每種表情重復(fù)實(shí)驗(yàn)100次,得到400組反饋數(shù)據(jù)。根據(jù)均方差公式分別計(jì)算出各個(gè)檢測點(diǎn)的偏差,并通過Matlab軟件得到兩個(gè)系統(tǒng)的4種表情控制偏差對(duì)比圖,如圖8所示。
由圖8可以得出,基于FPGA的驅(qū)動(dòng)系統(tǒng)的控制精度要高于以STM32分布控制的精度。經(jīng)測試基于FPGA的驅(qū)動(dòng)系統(tǒng)響應(yīng)時(shí)間約為703 ms,而基于STM32單片機(jī)的驅(qū)動(dòng)系統(tǒng)的響應(yīng)時(shí)間約為978 ms。由此得出,以FPGA為核心的控制系統(tǒng), 總體性能優(yōu)于基于STM32的驅(qū)動(dòng)系統(tǒng)。
本文分析了仿人機(jī)器人面部運(yùn)動(dòng)控制點(diǎn),將其驅(qū)動(dòng)系統(tǒng)劃分成了3個(gè)模塊,分別介紹了各個(gè)模塊的FPGA設(shè)計(jì)方法,并給出了系統(tǒng)主要工作流程。通過實(shí)驗(yàn)驗(yàn)證,基于FPGA的驅(qū)動(dòng)系統(tǒng)基本達(dá)到了人類表情變化的速率和較為準(zhǔn)確的表情展現(xiàn)度。目前,采用該驅(qū)動(dòng)系統(tǒng)后,仿人面部可以區(qū)分出18種表情。隨著后續(xù)仿真人面皮制作工藝的提高,仿人機(jī)器人再現(xiàn)的表情將更為細(xì)膩豐富。
參考文獻(xiàn)
[1] TAKENO J, MORI K, NAITO Y. A robot with complex facial expressions[J]. Sensors & Transducers, 2009(6):18-26.
[2] 劉遙峰, 王志良. 基于情感交互的仿人頭部機(jī)器人[J].機(jī)器人, 2009,31(6):493-500.
[3] Jen Fuhua, Tai Jenchao, Liang Dahung, et al. Design and development of a robot head with facial emotion expression[J]. Journal of Technology, 2011,26(1):27-38.
[4] 張普行, 賈秋玲. 基于FPGA的機(jī)械臂多路舵機(jī)控制器設(shè)計(jì)[J]. 微特電機(jī), 2011(4):73-75.
[5] 錢峰.EZ-USB FX2單片機(jī)原理、編程及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2006.
[6] 劉吉, 楊德偉,文懷濤,等.基于USB通信的FPGA高速數(shù)據(jù)采集系統(tǒng)[J]. 現(xiàn)代電子技術(shù), 2011,34(10):186-192.