APP下载

基于FPGA的仿人机器人面部驱动系统*

2013-10-24肖志锋段玉琴

电子技术应用 2013年6期
关键词:仿人电位器舵机

肖志锋,段玉琴,蔡 勇,蒋 刚

(西南科技大学 制造科学与工程学院,四川 绵阳 621010)

为了能够充分表达人类的情感,仿人机器人通过多个运动机构牵动仿真人面皮实现人类表情[1-3]。这种面部机构具有自由度众多、运动复杂、控制精度要求高等特点。实践表明,由于指令顺序执行,单个单片机很难完成多任务系统的设计。然而,采用多个单片机分布控制的方式,虽然能够满足设计需求,但系统稳定性较差,设计成本增加。

本文选用非定制逻辑器件FPGA作为控制芯片来完成整个驱动系统的设计。区别于单片机,FPGA并行的设计理念可使系统模块独立运行,在简化系统架构的同时,提高执行机构的协同性。

1 面部运动分析与系统硬件结构

图1 MSR2仿人机器人

图2 面部自由度分布

本系统用于驱动西南科技大学自主研发的MSR2型仿人机器人面部产生人类表情,如图1所示。其面部具有21个基本动作单元AU(Action Unit),主要集中分布于眉毛、眼球、眼睑、嘴巴和下颌等 5个部位,如图2所示。表1给出了5个部位的驱动电机和传感器分布情况。

表1 面部驱动电机和传感器的分布

面部驱动系统是仿人机器人控制系统的一个组成部分,面部单元运动指令由上层PC机完成。因此,本文将面部驱动系统划分成电机控制、反馈信号采集和上位机通信三个部分,图3所示为硬件结构示意图。

图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代码:

pwm_val控制PWM正脉冲输出宽度,决定舵机旋转角度为θsg,数值可通过式(1)确定:

式中,fclk为PWM模块的输入时钟clk的频率;N为时钟分频系数 (N=10);经计算得出pwm_val数值范围为2 500~12 500,对应地可将舵机旋转角度等分10 000份。舵机理论控制精度可达0.018°。

图4所示为舵机旋转 90°的ModelSim波形仿真图。图中信号输出的脉宽为 20 ms;正脉冲宽度为 1.5 ms;对应pwm_val的值为7 500。因此,舵机模块设计正确。

图4 舵机旋转90°的ModelSim功能仿真图

2.2 反馈信号采集模块设计

位置检测电位器作为反馈传感器,反馈面部机构的运动位置,为驱动系统提供误差补偿。系统选用精密电位器J50S,其线性精度为±0.1%。

J50S反馈的电压信号是模拟量,FPGA的模数转换外置了16位ADC芯片LTC1864。电位器检测的理论精度为0.005 2°。驱动系统将面部位置反馈电位器分成6、7两组,由LTC1864配合单8路模拟开关CD4051实现。与FPGA硬件接口如图5所示。

FPGA通过abc信号译码选择CD4051模拟量的输入。LTC1864的引脚CONV输入逻辑高定平开始一个A/D转换的过程。转换结束后,SDO引脚被使能,在SCK时钟信号节拍下,LTC1864串行输出转换数据。

2.3 USB通信模块设计

面部驱动系统基于USB接口的上、下位机通信方法来解决数据的实时交互。FPGA外设USB芯片选用Cypress公司的CY7C68013A。CY7C68013A基于增强型8051内核,支持USB2.0高速模式,主要工作于同步 Slave FIFO模式,与FPGA采用16位数据总线的接口方式。图6为同步Slave FIFO模式下的FPGA与CY7C68013A的接口连接图。

在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.

猜你喜欢

仿人电位器舵机
含齿隙弹载舵机的全局反步模糊自适应控制
Hepatitis C virus antigens enzyme immunoassay for one-step diagnosis of hepatitis C virus coinfection in human immunodeficiency virus infected individuals
异构遥操作仿人机械臂灵巧作业控制
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
Mixly开源项目设计10:用自制多量程欧姆表测量电位器的电阻
探究仿人机器人设计及步行控制方法
具有面部表情的仿人头部机器人系统的研制
基于云模型的舵机同步控制
Varian Clinic 23EX 加速器电位器故障维修一例