搜索详情-毕业论文网

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回

基于Arduino手势控制器设计与实现毕业论文

 2020-04-10 16:45:35  

摘 要

当前,键盘加上鼠标以及触摸屏幕已经成为了人机交互方式中绝对的主流,然而不断涌现的新技术也使得传统的方式受到了挑战,人们对于更加高效和自然的交互方式的探索从未停止,比如基于语音操控的产品在市场上就已经出现了不少,但是利用手势来进行控制的方法则鲜有应用。

本文主要尝试了将手势操控应用在人机交互当中,设计了具体的实现方案并给出了其应用场景,给未来更多的应用方式提供一种可能的方向和借鉴。

在本文中,笔者设计了一套手势操控的逻辑,利用现有的硬件开发平台(Arduino开发平台)和程序设计语言(Python),结合超声波传感器搭建了一个手势控制系统,实现了只用手势来对个人计算机进行一些简单的控制的功能,并测试了其在几个简单的实际场景中的应用。

测试的结果显示,该控制系统可以在比较简单的应用场景中替代键盘和鼠标,实现人机交互的功能,虽然它的工作效率和控制精度与键盘加鼠标相比还有一定的差距,但是在这个过程中笔者感受到了这种交互方式的独特魅力,相信手势控制在将来的人机交互方式中必定可以占有一席之地。

关键词:人机交互;Arduino;手势控制

Abstract

Currently, keyboard and mouse together with touch screen have become the absolute mainstream of human-computer interactions. However, the emerging technologies have also challenged the traditional way, and people's exploration of more efficient and natural interaction has never stopped,

However, new technologies have also emerged that have challenged traditional methods. People have never ceased to explore more efficient and natural ways of interaction. For example, products based on voice manipulation have appeared on the market, but methods using gestures to control are rarely used.

This paper mainly tries to apply the gesture control in the human-computer interaction, designs a specific implementation scheme and gives its application scenario, and provides a possible direction and reference for more applications in the future.

In this article, the author designed a set of logic for gesture control, using the existing hardware development platform (Arduino development platform) and programming language (Python), combined with ultrasonic sensors to build a gesture control system that achieves only gestures A simple control of the personal computer was performed and tested for its application in several simple real-world scenarios.

The test results show that the control system can replace the keyboard and mouse in a relatively simple application scenario to realize the human-computer interaction function. Although its work efficiency and control accuracy are still different from those of the keyboard plus mouse, it is In this process, the author felt the unique charm of this interactive way, I believe that gesture control in the future of human-computer interaction will certainly have a place.

Key Words: human-computer interaction; Arduino; gesture control

目 录

第1章 绪论 1

1.1 课题背景 1

1.2 研究的目的及意义 2

1.3 国内外研究现状 2

1.4 研究平台简介 3

1.4.1 Arduino的简介 3

1.4.2 Python的简介 4

第2章 需求分析及方案的选择 5

2.1 需求分析 5

2.2 方案论证 5

2.2.1 方案一 6

2.2.2 方案二 7

2.2.3 方案的比较与选择 9

2.3 本章小结 9

第3章 硬件系统设计与选择 10

3.1 总体设计 10

3.2 Arduino开发板的选择 11

3.3 传感器的选择 11

第4章 软件设计与实现 14

4.1 Arduino程序设计 14

4.2 Python程序设计 19

4.3 本章小结 21

第5章 测试和总结 22

参考文献 26

致谢 27

  1. 绪论
    1. 课题背景

步入新世纪以来,科技飞速发展,尤其是在消费电子领域,各种各样的电子产品不断地出现,又不断地更新迭代,可谓是日新月异。从一开始个人计算机的普及,到后来智能手机的兴起,再到各种可穿戴设备都纷纷进入人们的视野。到如今,这些电子设备早已经成为了我们生活中十分重要的一部分。尤其是像智能手机这样的设备,已经成为了我们最重要的工具和无话不谈的“伙伴”,它渗透到了我们日常工作和生活的方方面面,几乎到了人手一台(甚至有不少人同时拥有着多台手机)的地步,而且由于它占据了我们越来越多的时间,对手机的过度依赖甚至已经成为了一个社会热点话题。

智能手机实质上可以看成是一种十分便携的微型的计算机,但是在个人计算机产业不断地萎缩的当下,为什么智能手机却可以不断地增长呢?除了便携性之外,一个相当重要的因素就是它们在交互方式上的区别。在用户与产品的交互过程中,行为的交互贯穿始终[1]

虽然个人计算机的计算速度越来越快,屏幕和外观等方面也有不小的改善,但是我们在使用它的时候,交互方式却一直停留在用键盘加鼠标进行输入,用屏幕来输出。尽管近年来微软等与计算机相关的大厂商已经在试图向智能手机学习,引入触控屏的操作方式,但就目前来说这项技术和个人计算机仍有许多龃龉之处,还不能很好地融合起来。当今社会的节奏越来越快,人们一方面对人机交互的实时性和效率的要求越来越高,另一方面对于新奇的和智能化的交互方式上的创新也十分期待,从近两年大热的虚拟现实、增强现实和人工智能等技术中即可见一斑,而通过更加自然的语言和手势等手段来操作各种设备的方式则可能会在未来变得更加普及。随着技术的不断进步,我们身边的很多设备正在变得越来越智能,但是在交互方式上却基本还是沿用了传统的方式,在类似AR和VR等新型的平台上已经不太适合了。这些都给新的交互方式的出现提供了必要性和可能性。

当前世界上的许多科技巨头都已经纷纷在基于语音的全新的交互方式上发力,让人们可以摆脱按键,与机器直接进行“对话”,比如苹果公司早在2011年就为iphone引入了语音识别系统Siri[2],而微软也在2014年推出了Cortana语音助手[3],经过近年的不断完善,此类设备在某些场景,例如在家庭环境中使用时,确实已经有了还不错的用户体验。不过现在声音识别的准确率仍旧不够高,特别是当环境中的背景声音比较嘈杂的时候,而在另外一些场景下,出于保护自己的隐私或者不想打扰他人等考虑,用户是不方便使用语音交互方式的。

除了语音之外,手势之中也包含着大量的信息,这两者在人与人的交互之中一直都起着非常重要的作用,相信在人机交互上也有很大的潜力可以挖掘。

对于利用手势进行控制的实际应用,我们在日常生活中也可以看到很多例子,比如交警在指挥交通的时候,会站在路口做出某些特定的手势,行人和驾驶员就可以读懂这个手势,理解其中所包含的指令,然后各自遵守指令来行动,这样就可以保持整个交通秩序的正常,但是在人机交互当中,我们却很少能够看到它有实际的应用。

    1. 研究的目的及意义

传统的以鼠标和键盘为主的输入方式,在使用的时候会要求操作的人长时间保持着同一个姿势,而且这个姿势常常是不符合人体工程学的,不但会让用户感觉不舒服,长此以往更有可能会引起健康方面的问题。如果利用手势识别来对计算机进行控制,则会显得更加灵活和自然,其学习成本也较低,若能结合适当的应用软件,还可以使操作的过程变得更加富有趣味性。因此,手势控制在将来可能会成为一种重要的人机交互方式。

未来的人机交互方式有着无数种可能,而手势控制的发展还处于很初级的阶段,它也可能有无数种实现的形式,但在当前显然还是要先从最简单的场景来看它能否取代键盘加鼠标的操作方式,本次研究的目的就是探索手势控制在日常生活中的具体应用方式,以及它的可用性和实用性,并为将来更多手势控制应用的发展提供一个思路。

    1. 国内外研究现状

美国科技公司微软曾经为其旗下的游戏主机产品XBOX360推出过一款名为Kinect的体感外设[4][参考文献],它可以通过摄像头等传感器捕捉用户全身的动作,其中当然也包括手势,不过其成本比较高且主要用于游戏,因此在日常生活中较少用到。

如今已经在智能手机上得到广泛应用的触摸屏幕的操控方式也可以算作是一种另类的“手势控制”,只不过它所用到的手势与我们平常所做的手势有着很大的不同,只是在一个二维的平面上进行,而且是接触式的,并且其有效区域是始终被局限在手机屏幕的大小之内。

近几年来也出现了一些创新的尝试,比如苹果公司的iphone手机率先采用了一种带有压力感应的屏幕,能够感受用户触摸屏幕时按下去的力度,并根据力度的大小来做出不同的反馈,不过用户的手实际上并没有真的“按下去”,因此它并不能算是真正的三维运动。还有一些国产机型中能够找到一些“快捷手势”的功能,比如将三个手指同时置于屏幕上并一起向下滑动,可以触发截屏的操作,还有的可以用指关节敲击屏幕或者在屏幕上滑动来触发一些特定的操作。

实际上,真正的手势控制在消费级的智能手机上也曾经出现过,例如华为就曾经在某款智能手机上推出过一种手势操控方式,用户只需要用手掌覆盖手机屏幕特定的一个部分(悬于上方而不用实际接触手机屏幕),就可以让手机的屏幕自动熄灭。不过此项功能的实用性不是很高(在效率方面不如直接点击屏幕上的锁屏的快捷方式或者直接按手机侧面的电源键),笔者也几乎没有见到过其他手机用户使用或者谈论过此种手势操控方法,并且在华为后来的机型和系统中,此项功能也被移除了。徐曾春等[5]在2018年提出了一种面向智能手机的手势识别系统,用设备自带的扬声器发射超声波信号并用话筒接收反射信号,识别率可以达到95%。这表明虽然真正的手势控制方案还不成熟,它在市场上的应用也还不普遍,但现在已经有学者在探索移动智能设备上的更复杂、更高效的手势控制方式。

    1. 研究平台简介

由于笔者的知识水平和时间有限,为了能够提高研究的效率,本次的设计是基于已有的软硬件平台来进行的,其中最主要的两个平台就是Arduino和Python。

1.4.1 Arduino的简介

  1. Arduino简介

Arduino始于2005年伊夫雷亚交互设计院的一个学生项目,当时学生们需要的一个集成芯片价格高达100美元,于是教师Massimo Banzi和微处理器设计师David Cuartiellis以及学生David Mellis设计了一款电路板并命名为Arduino开发板[6]。后来,由于Arduino开发板的发明者将它完全开源了,有关于这款开发板的所有的资料都完全是处于公开的状态,使用者可以很方便地获取,而且其价格也比较低廉,所以受到了许多电子设计的爱好者的青睐。随着Arduino逐渐被推广开来,世界各地有越来越多的人开始使用它,Arduino的涵义也越来越广泛,它不单单是特指狭义上的名为Arduino的开发板,而是包含了许多新的内容,包括配套的各种硬件和软件开发环境,逐渐地演变成了一个较为完善的开源的电子原型平台。Arduino已经可以用于开发许多不同的智能硬件产品,不过还要加上不同的传感器和配件,因此开发者要有基本的电路知识才能将它们正确地连接[7][参考文献]。

  1. 选择Arduino的原因

Arduino开发板的本质其实还是一种单片机,但它和一般的单片机相比最大的不同之处就是将许多底层硬件的烦琐设置都封装起来了,因此使用者就不需要太过深入地学习相关的硬件知识,可以说是大大地降低了使用的门槛,使得用户可以拿出更多的精力去集中考虑如何使用好开发板来实现自己想要的功能。此外,相比于单独购买一个单片机和其他组件来说,直接购买一个Arduino的开发板的成本也会更低。这些是它的优势所在,也是笔者选择Arduino平台的主要原因。选择它的另一个重要原因就是由于它的广泛应用所带来的较为完善的开发环境和良好的兼容性,除了Arduino本身就是一个开源的平台之外,还有无数的Arduino的爱好者都不吝将自己在开发过程中所遇到的问题和得到的经验教训无偿地分享到互联网上,这些内容对于Arduino开发板的使用者,尤其是对新手来说还是能提供较大的帮助的。

1.4.2 Python的简介

  1. Python简介

Python语言是一种功能强大的具有解释性、交互性和面向对象的第四代计算机编程语言,是由荷兰人Guido van Ros-sum在八十年代末和九十年代初设计出来的[8]。Python语言的语法非常清晰和简洁,支持多种编程范式,而且作为一种动态语言,Python语言还具备垃圾回收功能,因此能够自动管理内存。它常用于系统管理任务,也适合完成各种高级任务,如GUI编程、网络编程、游戏编程等[9]。目前有许多的知名站点都已经在他们的产品中使用了Python语言。

  1. 选择Python的原因

Python语言是一种比较高级的语言,因此用它来开发软件的效率会非常高,在完成同样的任务时,若是采用Python语言来编写代码,其代码量相比于其他的语言来说会少很多,这样整个程序看起来会更加简洁,也更有利于排查错误。另外,Python还可以支持安装许多第三方的标准库,这就使它的功能变得更加地强大,笔者在此次设计中就受益于这些额外的库的支持。

  1. 需求分析及方案的选择

需求分析是进行设计的第一步,只有对于要实现的目标有一个清晰的认识,才能在设计的过程中不盲目,不偏离方向,继而根据定下的方向来选择设计的方案,然后完善具体的细节,再最终一步一步地去实现目标。

2.1 需求分析

本次毕业设计的目标是通过软硬件的结合,做出一套实际可用的手势控制器,使用户能够摆脱鼠标和键盘,只需使用手势就能够对电脑进行一些简单的控制,例如播放和暂停视频,调整其音量的大小,以及简单地浏览一些常用的网页(不包括输入关键字搜索网页的复杂使用场景)等。

由于键盘和鼠标是通过按键来触发的,所以它们的操作会相对比较精准,而对人的手进行精准的识别会有比较大的难度,并且由于手势本身的特性,在使用的过程中不方便加入像尺子一类的参照物,用户的手势和标准的手势之间会有一个较大的误差。另外,用户的个体差异也是不能忽略的,因此即便是同样的一个手势,让不同的人来做可能也会有着很大的不同。这些特点就要求实际的手势要设计得尽可能简单并且便于记忆,而且不同的手势之间的差别也要比较明显而直观。最后完成的手势控制器在对用户的手势进行识别时,应该具有较高的宽容度,即不能对用户的手势有过于“苛刻”的要求。

2.2 方案论证

要用手势来进行控制,首先就需要对“手势”这个概念进行分析。从手势的运动特点出发,我们可以将手势分为动态手势和静态手势两大类[10]。静态手势是手势当中最基本的一类,人的手可以分解为手指、手掌、手腕、手臂、手肘和肩膀等许多个不同部位,每个部位都可以有多种不同的形态,在某个特定的时刻,手的各个部分各自处于特定的形态,把这些元素看作一个整体,就是一种静态的手势。而动态手势是静态手势的时间序列,随着时间的变化手势本身的形态和它在空间中所处的位置也发生着相应的改变[11]。即在一个时间段中,依次做出多个特定的静态的手势,并将这整个过程看作是一个整体,就是一种动态手势。

超声波传感器能够用于距离的探测,若同时将多个传感器放置在不同的位置,从不同的角度进行探测,就可以立体地识别用户的手势。在人与人的交互过程中,已经有了许多约定俗成的手势,它们被和特定的含义联系在一起,比如把一只手的食指顶在另一只手手掌的掌心来示意对方停下;伸出一只手,反复勾动手指或者挥动手臂示意对方过来。这些动作对于人来说是很明显的,很好识别的,但是对于本设计中所使用的平台来说,要对这些手势进行比较精准的识别是比较困难的,而且设计中要求实现的功能比较简单,因此笔者选择将手势进行简化。将本来在三维空间中的手势简化到只有一个维度,具体的实现方案就是,将超声波传感器置于一个平面上,用户的手在垂直于这个平面的方向上运动,只根据手与这个平面的距离(及其变化)来识别不同的手势,而忽略用户的手指等部位的具体形态细节。

结合对需求的分析,经过仔细考虑,最后设计并选择了两套不同的方案来实现手势控制器的功能。

您需要先支付 80元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。