深圳技师学院电子信息技术系 盛春明
人类科学技术的不断进步,促使仿生机器人向更多领域发展。其中,头部仿生机器人为电影行业的发展做出了巨大贡献,许多影片拍摄过程中难以呈现的镜头效果,可以利用头部仿生机器人的特效技术来实现。
数据驱动控制是指控制器设计不需要受控过程中的数学模型信息,设计知识仅源于受控系统的离线、在线输入或输出的数据和进行数据处理后得到的信息,具有假设意义上的鲁棒性、稳定性和收敛性保障的控制方法和理论。一句话来说,就是数据直接作用于控制器设计的控制方法和理论。
STM32微控系统是32位精简指令集的处理器内核,在运行状态中频率为达到72MHz。STM32芯片将外置设备、输入和输出端口以及高速存储器高度集成到一起,全部设备的通信接口具有统一标准。芯片内部还有16位计时器11个、12位的数模转换器2个以及12位的双通道模数转换器1个。
STM32微控芯片的ARM 32位精简指令集处理器内核嵌入在固态和静态存储器中,能兼容ARM的一切软件及工具,代码效率非常高。STM32微控芯片存储数据和程序功能的发挥在于其内部的嵌入式固态存储器,而静态随机存储器则具有读写CPU的时钟速度的功能。STM32微控芯片支持固态存储、动态随机存储、静态随机存储和闪存四种不同模式,这也是其系统进行片选的四个信号收发点。
系统中有3个可变静态存储器中断线经过OR,然后连接到嵌套矢量中断控制器。且系统外部存储器可以执行除PCCARD外的所有代码,其目标频率为SYSCLK/2。因此,如果系统时钟运行功率为72MHz,外部访问就以36MHz的功率运行。嵌套矢量中断控制器能提供的中断优先级数量达到16个,同时可以对43个可屏蔽中断通道进行处理。
外部中断/事件控制器有可以产生中断/事件请求的探测器线,一共有19条,其中每一条线能被独自屏蔽,也能独自选择触发事件。如果外部线有超过内部外围总线长度的时钟周期脉冲,外部中断/事件控制器就能及时探测到。有16个外部中断线可以连接到EXTI的总线扩展器上。
启动STM32微控系统时首先要选择系统时钟,如果开启复位功能的话CPU时钟将会选用功率为8MHz的晶振。系统是否成功启动可以选用外部的一个4—16MHz时钟进行监视。在此过程中,系统会先后禁止控制器和关键中断管理。当STM32微控系统启动时,用Boot引脚选择导入存储器(可以从固态存储器、静态随机存储器和系统存储器这三项中选择),其导入程序存在于系统存储器中,以利用USART1对固态存储器进行重新编程。
STM32微控系统电源工作电压范围为2.0V—3.6V,接入外部电源后通过VDD引脚为系统内的输入/输出端口和调压器供电。VSSA和VDDA电压范围为2.0V—3.6V,当RC和PLL电压范围在工作电压内,VSSA必须与VSS相连,VDDA必须与VDD相连。当VDD失去作用时,需将供电源切换到备份寄存器和外部32KHz晶振中。当系统从2V电压开始启动时或系统电压掉到2V时,可以利用系统电源管理设备中的上电或掉电复位电路进行相关操作。
STM32微控系统的调压器有掉电模式、低功耗模式和主模式三种不同的运行模式。其中系统待机时用掉电模式,系统停止运行时用LPR,系统运行时用MR。微控系统的调压器电流输出状态为高阻,核心电路启用掉电模式,再加上功耗为零,这种调压情况在很大程度上保证了SRAM和寄存器中内容的稳定存在。STM32微控系统的低功耗模式,使可用唤醒源和短时启动之间的平衡点达到最佳,对系统功耗的降低十分有利。
2.4G是频段在2.400GHZ—2.4835GHZ之间的一种无线技术的简称。2.4G无线技术不接外部电线,运行效率高,成本则相对低廉,电压也很低,其特效体积能进行定向纠错,调频速度非常快。由于2.4G无线技术在运行时使用的是无须许可的全球开放频段,并将高频键控收发电路进行整合,使特效体积的数据实现高速传输。因此受到无线技术相关人士的广泛使用。
逻辑分析仪是判定时序的仪器,它通过始终采集测试设备上的数字信号,并将其显示出来。逻辑分析仪只显示高电平和低电平两种不同的状态,而对于能持续的模拟量波形则没有显示效果。
逻辑分析仪能遵循一定的规律解码电平序列,从而实现分析通信协议的目的。也能利用其更加简便地对采样信号进行设置,对不同路信号的时序进行分析,对信号的无意义干扰毛刺进行捕捉。
数据驱动头部仿生机器人的控制就是通过2.4G无线模块来接收遥控器发出的高频信号,然后发挥逻辑分析仪的功能,对此无线模块接收的波形进行测试分析。经过多次测试,结果表明逻辑分析仪接收的波形占空比随着遥控器推杆位置的变化而变化,所以判别遥控器推杆位置的方式就是识别占空比波形的异同,然后用相关程序来确认。
舵机控制流程图
头部仿生机器人的相关运行动作分别由21个舵机配合完成,这些舵机在获知遥控器推杆的位置信号之后,可以调整和控制头部仿生机器人的眼、眉、嘴及下巴等部位的运动,来使机器人的面部表情实现不同的变化。
首先,测试仿生机器人内部的各个机械组成部分之间的牵制和影响,以及每个舵机在遥控器控制下运动幅度的的大小和其它相关运动情况。通过对仿生机器人内部舵机的运动范围及幅度大小的观察、记录和分析,来了解通过单一舵机控制所能达成动作的不同变化以及机器人内部的机械组成部分,还有舵机控制过程中对其他舵机造成的影响。
其次,分析头部仿生机器人的面部结构,并根据其面部肌肉动作在脸部不同部位选取锚点。可以在仿生机器人整个脸部选取21个不同的锚点,然后为不同的锚点定下原始三维坐标。根据遥控器测试结果,将单一舵机运动幅度最大值与此锚点中人体面部实际能动范围相结合,进一步推算其它各个锚点对此锚点作用范围产生影响的关系,从而将此锚点在某种表情要求下需要达到的坐标位置得出。
特定位置的锚点作用范围根据仿生机器人的面部表情的变化,对该锚点的影响权值也会发生变化。通过多次同一个试验的分析和计算可以得出具体的数值。下面以头部仿生机器人面部锚点苹果肌最高点在高兴表情中为例,如图2,有8个点在此锚点作用范围内,分别在此锚点周围八个不同位置。
图2
Xa表示锚点
在锚点作用范围内的8个点会对锚点产生不同的影响,在表达高兴的表情时,对此锚点产生最大影响的是上下两个点,而对次锚点产生最小影响的是左右两个点。所以,在表达高兴的表情时,可以得出此锚点的坐标位置为:
Xa=Wi*X1+Wi*X2+Wi*X3+Wi*X4+Wi*X5+Wi*X6+Wi*X7+Wi*X8
Wi∈(2/9,2/9,1/18,1/18,1/9,1/9,1/9,1/9,)
通过计算得出各种表情中锚点的理论坐标之后,开始进行数据编程,然后测试坐标效果,根据测试结果观察仿生机器人的脸部表情变化是否符合人体面目表情需要,从而多次调试以达到最理想的坐标位置。这样就基本确定各个表情下锚点的不同坐标位置。
在对头部仿生机器人面部表情与锚点不同动作的关系之后,开始采集编程所需的相关各点在不同表情中的位置数据,将头部仿生机器人的已知动作变化,转化为程序中通俗易懂的数字信息。
通过反复实验,对大量采集的数据进行编程测试,最终精确融合面部各点动作与数据,成功达成在数据驱动基础上对头部仿生机器人的各种面部表情的控制目标。
实现用数据驱动控制头部仿生机器人是一个复杂而繁琐的过程,需要巨大的工作量。不仅要进行反复试验,采集大量所需数据,还要进行多次调试和分析。并且在此过程中,头部仿生机器人的各个软、硬件部分以及机械组成部分都可能发生这样那样的故障。
只有不断实验和计算,不断分析和验证,才能逐步实现数据驱动对各个舵机的控制及其作用的发挥,最终将不同的面部表情完美呈现出来。
[1]侯忠生,许建新.数据驱动控制理论及方法的回顾和展望[J].自动化学报,2009,35(6):650-667.
[2]孙立军,张晨,熊鸣.基于数据驱动的头部仿生机器人控制[J].电子测试,2015(5):161-163.
[3]孙立军,张晨,熊鸣.头部仿生机器人舵机控制研究[J].电子技术与软件工程,2015(10):130-131.