摘要 : 数据手套在人机交互中提供了一种有效的人机交互手段,从数据手套的理论出发,本论文利用一些硬件设备以及软件开发环境,设计了一款可以与机械臂、虚拟手等终端交互的数据手套。硬件设备包括弯曲度传感器、MPU6050六轴传感器、HC-05蓝牙串口通信模块、TFT显示屏、STM32F103最小系统开发板,数据手套软件开发平台为Keil uVision5,所用的开发语言为C语言,在系统调试的时候用到了匿名四轴上位机和串口调试助手,用来对MPU6050六轴传感器和弯曲度传感器进行调试,此外在整个系统中移植了UCOS-II嵌入式实时操作系统,保证了数据在传输时的实时性和高效性。实现了数据手套对五轴机械臂的控制以及人手到虚拟手的动作映射。
引言
人机交互是研究系统与用户之间的交互关系[1]。随着社会的不断发展和科学技术水平的提高,传统的计算机输入设备(鼠标、键盘)已不再唯一。越来越多的场合出现了各种不同的人机交互的应用场景,比如人脸识别、人体感应游戏、VR(虚拟现实)[2]。数据手套作为一种新型的人机交互工具,目前在越来越多的领域得到了广泛的应用。其目的在于能够通过内置的传感器,实时获取手部包括手掌、手指等有效部位的弯曲等角度的数据[3]。而且手部某一个关节的运动,不仅会作用于对应的传感器的数据变化,而且通过软组织的相互作用,使得其他的传感器数据也发生变化,这就要求为保证一定的数据精度,必须对求得的数据进行一定的处理[4]。本课题所研究的数据手套硬件部分主要包括嵌入式控制器、TFT显示屏、弯曲度传感器、蓝牙串口通信模块、MPU6050六轴传感器等,具有可穿戴,无线连接,使用灵活等特点。目的在于做出一款可用于控制机械臂、与虚拟手交互映射等娱乐交互的数据手套。
系统硬件设计
本论文所研究的数据手套在功能上要求能够实时的检测到使用者手指的弯曲以及整个手姿态变化的数据信息[5],并对检测到的数据信息做出判断后发送相应的指令给与之交互的终端。根据数据手套在功能上的要求,本课题设计出了以下解决方案: (1)采用弯曲度传感器采集手指弯曲的数据信息,弯曲度传感器具有柔韧性好,可折叠,测量范围广等特点,比较适合用来收集弯曲即手指的数据信息。 (2)MPU6050传感器是全球首例9轴运动处理传感器。它集成了3MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可以使用I2C接口连接一个第三方的数字传感器。MPU6050传感器还免除了组合陀螺仪与加速度器时之轴间差的问题,减少了大量的封装空间,而且MPU6050支持mpu的dmp官方解算库,可以直接输出四元数,欧拉角格式的数据。 (3)在通信方式的选择上,考虑到本课题需要无线通信、功耗低,能快速连接且组网简单的通信特点,最终选择了蓝牙无线通信方式,使用的是HC-05蓝牙通信模块,HC-05蓝牙通信模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。 (4)电源可以使用USB数据线接PC机供电,也可以使用大容量锂电池供电。锂电池具有续航时间长、可循环充电、绿色环保且重量轻等特点。 数据手套硬件系统主要包括以下几个功能模块:主控芯片模块、弯曲度传感器模块、MPU6050传感器模块、电源模块、蓝牙通信模块、数据显示模块,硬件系统图、硬件实物图分别如图2.1、图2.2所示
系统软件设计及调试
数据手套软件开发平台为Keil uVision5,所用的开发语言为C语言,在系统调试的时候用到了匿名四轴上位机和串口调试助手,用来对MPU6050六轴传感器和弯曲度传感器进行调试,此外在整个系统中移植了UCOS-II嵌入式实时操作系统,保证了数据在传输时的实时性和高效性。 UCOS-II嵌入式实时操作系统是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片[6]。本系统软件主流程图如图3.1所示:
UCOS的原理就是当一个任务A正在执行的时候,如果它释放了CPU的控制权,先对任务A进行现场保护,然后从任务就绪表中查找其他就绪任务去执行,等到任务A的等待时间到了,它可能重新获得CPU控制权,这个时候恢复任务A的现场,从而继续执行任务A,这样看起来就好像是两个任务同时执行了。实际上,任何时候都只有一个任务可以获得CPU控制权。所谓的任务,其实就是一个死循环函数,该函数实现一定的工程,一个工程可以有很多这样的任务,UCOS-II对这些任务进行调度管理,让这些任务可以并发工作。本课题中创建了五个用户任务,分别是led_task,led闪烁提示系统工作状态;gui_task,显示屏实时显示姿态数据;adc_task弯曲度传感器采集手指弯曲信息;mpu6050_task,mpu6050传感器采集姿态信息;hc05_task蓝牙发送数据。 弯曲度传感器数据是利用STM32F103单片机接收经过电阻——电压转换电路转换过的弯曲度传感器的电压信号,每只手有五根手指,在单片机上设置五个ADC规则通道,用自带的AD转换电路进行AD转换得到手指的弯曲程度,ADC通道0~4分别代表大拇指、食指、中指、无名指、小指弯曲度的值。通过PC上串口调试助手读出其经过AD转换过后不同弯曲程度时的数值[7],并对其进行分别量化和判断处理,的到最后的手指弯曲数据。 MPU6050传感器的数据可以通过对MPU6050传感器的软件设置可以直接读出传感器采集到的加速度和角速度原始数据,不过这些原始数据,在本课题研究中用处不大,我们期望得到的是姿态数据,也就是欧拉角。首先我们在PC端上通过匿名四轴上位机对MPU6050传感器的原始数据输出波形进行分析并对其进行滤波处理,在此原始数据的基础上还需要通过对加速度计和陀螺仪进行融合计算得出的欧拉角,得到三个轴上的欧拉角,以度为单位。MPU6050搭载有一个运动处理器(DMP),可以将采集到的原始数据直接转换输出四元数,再根据输出的四元数计算出对应的欧拉角。 欧拉角到姿态矩阵的转换关系为:
可以直接使用欧拉角微分方程进行姿态解算:
上式中,等式左边是输出的欧拉角,分别对应三个旋转轴,等式右边是根据上一个周期测算出来的角度,每个旋转轴上的角度都是根据陀螺仪传感器实际测量的角速度和时间间隔周期计算出来的,单位为弧度。所以,根据以上微分方程即可解算出当前传感器在每个旋转轴上的欧拉角。 HC-05蓝牙模块式一款高性能的主从一体蓝牙串口模块,可以同各种带蓝牙功能的电脑、蓝牙主机、手机等职能终端配对,该模块支持非常宽的波特率范围:4800~1382400,并且模块兼容5V或3.3V单片机系统,使用非常灵活、方便。在使用的时候,首先将蓝牙模块处于AT指令模式,在PC上通过串口调试助手进行AT指令配置。蓝牙配置好后, 主控芯片将获取到的弯曲度传感器的数据和MPU6050的数据信息用特定的数据包格式通过蓝牙发送。 显示模块的主要功能是在一块TFT显示屏上显示当前手部在空间中x,y,z轴的一个姿态,分别用欧拉角pitch(俯仰角)、yaw(偏航角)、roll(翻滚角)表示。
应用场景展示
数据手套作为一种人机交互设备,可应用与多个领域多个行业,理论上与本设备交互设备能具备蓝牙通信功能,在通信协议一致的情况下便都能与本设备进行交互。在本课题中只要应用于与五轴机械臂交互和与虚拟手的交互映射。
4.1 与五轴机械臂交互
数据手套与之交互的五轴机械臂为安诺五轴机械臂,这款机械臂的主控芯片为arduino,控制方式是使用现在数字程序中常使用的指令——G代码,机械臂的五个轴从下到上分别是A轴、B轴、C轴、D轴和X轴,每个轴分为正向转动和反向转动,所以控制机械臂只需要十个控制指令即可。本课题在控制的时,五根手指分别控制五个轴,当pitch的值小于20时手指控制机械臂的五个轴正向转动,当pitch的值大于20时,手指控制机械臂的五个轴反向转动。手部首先分别读取五个弯曲传感器的初始值(即五个手指没有弯曲时的值),再给定一个触发条件,当达到这个触发条件时,数据手套发送控制指令。如:pitch的值为15,ADC通道0的初始值为200,触发条件为ADC通道0的值大于300,当ADC通道0的值大于300时,数据手套控制五轴机械臂A轴的正向转动。交互图如图4.1所示。
4.2 与虚拟手的交互映射
虚拟手的开发平台为Unity3D,所用的开发语言为C#。数据手套与之交互时所用到的通信协议为: 0x55+0x53+aacx_t+pitch_s+aacy_t+roll_s+aacz_t+yaw_s+0xaa+finger0+finger1+finger2 +finger3 +finger4 +0xbb共15(byte),虚拟手接收到数据包后对数据包进行解析,首先是对MPU6050的数据进行解析。MPU6050的数据有16位,其中aacx、aacy、aacz代表高八位,pitch_s、roll_s、yaw_s代表低八位,要得到一个MPU6050的数据,需要将高八位左移八位,然后与第八位进行或运算,具体的计算方法如下:
然后对五跟手指即五个弯曲度传感器的值进行解析。假设接口上所读取到的X,用X来除以0.06,即X/0.06即(a1~a5)为弯曲传感器上的电压值的量化Vx*3.3/4096(Vx为传感器上的电压)
根据以上方程便可求出R的阻值。 R的阻值与弯曲传感器的弯曲程度成相关比例,X的值和弯曲度成正相关。当手做出某个手势时,主控芯片获取当前五根手指的弯曲数据及手部在空间中的姿态数据,通过蓝牙发送给虚拟手,虚拟手接收到数据后进行解析,然后做出相应的手势。交互图如图4.2、图4.3、图4.4、图4.5、图4.6所示。
结束语
本课题从理论出发,完成了UCOS嵌入式操作系统在ARM平台上的移植,提高了系统稳定性,一步步的设计到实现,通过获取手指的弯曲度数据、手部在空间中姿态数据,进行了数据的分析及处理,给出了与五轴机械臂的交互及与虚拟手交互映射的方法,以实际的应用测试了数据采集和手势识别的准确性和实时性,基本达到了本课题的目的。
手套代码去我的下载查看 数据手套上位机代码 数据手套控制虚拟手代码 数据手套控制机械臂代码