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