摘要 : 数据手套在人机交互中提供了一种有效的人机交互手段,从数据手套的理论出发,本论文利用一些硬件设备以及软件开发环境,设计了一款可以与机械臂、虚拟手等终端交互的数据手套。硬件设备包括弯曲度传感器、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所示
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),可以将采集到的原始数据直接转换输出四元数,再根据输出的四元数计算出对应的欧拉角。
欧拉角到姿态矩阵的转换关系为:
结束语
本课题从理论出发,完成了UCOS嵌入式操作系统在ARM平台上的移植,提高了系统稳定性,一步步的设计到实现,通过获取手指的弯曲度数据、手部在空间中姿态数据,进行了数据的分析及处理,给出了与五轴机械臂的交互及与虚拟手交互映射的方法,以实际的应用测试了数据采集和手势识别的准确性和实时性,基本达到了本课题的目的。
手套代码去我的下载查看
数据手套上位机代码
数据手套控制虚拟手代码
数据手套控制机械臂代码