文献标识码: A
文章编号: 0258-7998(2013)06-0127-03
为了能够充分表达人类的情感,仿人机器人通过多个运动机构牵动仿真人面皮实现人类表情[1-3]。这种面部机构具有自由度众多、运动复杂、控制精度要求高等特点。实践表明,由于指令顺序执行,单个单片机很难完成多任务系统的设计。然而,采用多个单片机分布控制的方式,虽然能够满足设计需求,但系统稳定性较差,设计成本增加。
本文选用非定制逻辑器件FPGA作为控制芯片来完成整个驱动系统的设计。区别于单片机,FPGA并行的设计理念可使系统模块独立运行,在简化系统架构的同时,提高执行机构的协同性。
1 面部运动分析与系统硬件结构
本系统用于驱动西南科技大学自主研发的MSR2型仿人机器人面部产生人类表情,如图1所示。其面部具有21个基本动作单元AU(Action Unit),主要集中分布于眉毛、眼球、眼睑、嘴巴和下颌等5个部位,如图2所示。表1给出了5个部位的驱动电机和传感器分布情况。
面部驱动系统是仿人机器人控制系统的一个组成部分,面部单元运动指令由上层PC机完成。因此,本文将面部驱动系统划分成电机控制、反馈信号采集和上位机通信三个部分,图3所示为硬件结构示意图。
2 FPGA模块化设计
本设计选择Altera公司Cyclone II系列FPGA器件EP2C5Q208C8,作为驱动系统核心控制芯片。
2.1 电机驱动模块设计
仿人机器人头部空间狭小,选用的微型舵机型号为H301,其旋转角速度为500°/s。H301的控制仅需一路周期为20 ms的PWM脉冲, 有效正脉宽范围为0.5 ms~2.5 ms,对应舵机旋转角度范围为0°~180°。PWM脉宽与H301转角呈线性对应关系。驱动系统需要实现对21路舵机的控制,即需要FPGA输出21路PWM[4]。PWM的输出可以作为一个模块来设计,以下是舵机模块SteeringGear实例SG1的Verilog HDL代码:
SteeringGear SG1(.clk(clk) //50 MHz时钟输入
.rst_n(rst_n) //复位信号,低电平有效
.pwm_out_en(pwm_EN) //PWM输出使能
.correct_temp(pc_chang) //PWM参数修正
.pwm_val(Data_Received) //转角控制
.pwm(pwm[1])) //PWM输出
应pwm_val的值为7 500。因此,舵机模块设计正确。
2.2 反馈信号采集模块设计
位置检测电位器作为反馈传感器,反馈面部机构的运动位置,为驱动系统提供误差补偿。系统选用精密电位器J50S,其线性精度为±0.1%。
J50S反馈的电压信号是模拟量,FPGA的模数转换外置了16位ADC芯片LTC1864。电位器检测的理论精度为0.005 2°。驱动系统将面部位置反馈电位器分成6、7两组,由LTC1864配合单8路模拟开关CD4051实现。与FPGA硬件接口如图5所示。
在Slave FIFO操作模式下,增强型8051内核利用固件将CY7C68013A配置成Slave FIFO模式后,不参与外设与USB主机的数据交互[5-6]。经过实验测试,Slave FIFO模式的USB数据传输速率可达21.6 Mb/s, 满足了系统需求。
3 驱动系统工作流程
图7所示为驱动系统主要工作流程图。驱动系统上电复位初始化后,USB模块监测上位机PC的指令;当得到PC指令后,USB模块接收运动数据;FPGA将数据分配给电机模块;电机旋转驱动面部运动机构,牵扯仿真人面皮展现人类表情。位置反馈模块采集电位器的角位移,与理论值计算运动误差;如果误差在允许范围内,则反馈数据至PC;否则通过误差补偿算法,给原始数据添加补偿系数,重新分配数据。
4 系统实验与结果分析
将本文设计的仿人机器人面部驱动系统与以单片机为核心的系统做表情对比实验。MSR2面部前一版本的驱动系统选用3个单片机(型号为STM32F103VE),分别控制3个模块,单片机之间采用CAN总线通信。
为了达到实验目的,选择惊讶、厌恶、愤怒、欣喜4种有明显区分的表情作测试。系统有13个检测点位置,即反馈电位器的检测点。实验允许每个检测点的误差为±1°。两个驱动系统分别针对每种表情重复实验100次,得到400组反馈数据。根据均方差公式分别计算出各个检测点的偏差,并通过Matlab软件得到两个系统的4种表情控制偏差对比图,如图8所示。
由图8可以得出,基于FPGA的驱动系统的控制精度要高于以STM32分布控制的精度。经测试基于FPGA的驱动系统响应时间约为703 ms,而基于STM32单片机的驱动系统的响应时间约为978 ms。由此得出,以FPGA为核心的控制系统, 总体性能优于基于STM32的驱动系统。
本文分析了仿人机器人面部运动控制点,将其驱动系统划分成了3个模块,分别介绍了各个模块的FPGA设计方法,并给出了系统主要工作流程。通过实验验证,基于FPGA的驱动系统基本达到了人类表情变化的速率和较为准确的表情展现度。目前,采用该驱动系统后,仿人面部可以区分出18种表情。随着后续仿真人面皮制作工艺的提高,仿人机器人再现的表情将更为细腻丰富。
参考文献
[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的机械臂多路舵机控制器设计[J]. 微特电机, 2011(4):73-75.
[5] 钱峰.EZ-USB FX2单片机原理、编程及应用[M]. 北京:北京航空航天大学出版社,2006.
[6] 刘吉, 杨德伟,文怀涛,等.基于USB通信的FPGA高速数据采集系统[J]. 现代电子技术, 2011,34(10):186-192.