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