基于Arduino手势控制器的设计与实现
2020-04-09耿龙陈荻莹韩天野徐祯张杨田英爱
耿龙 陈荻莹 韩天野 徐祯 张杨 田英爱
摘 要:在科技迅速发展的新时代,机器人不断影响着人类的工作和生活,未来有望成为影响全球经济发展的关键因素。在机器人的工作中,良好的操作系统能让机器人在使用过程中更加灵活、多变。文章预期设计一种以手势控制为突破口,通过Arduino实现操作形式和多变的手势操纵,让机器人的能力进一步提升,以增加乐趣并提高工作效率。
关键词:Arduino;机器人;手势控制器
以VEX机器人为例,现今VEX机器人主要是以手柄为操控方式,但在实践中却发现,手柄的操作方式过于机械化,机器人缺乏灵动性因此,本团队希望设计一种以手势控制为基础的操作平台,利用手势灵活与多变性提升机器人的灵活度,使之有更高效的工作效率。本项目重点在于完成手势控制器相关程序的设计与实现,Arduino可用于开发交互式物体,接受来自各类开关或传感器的输入,并能控制各种灯光、马达和其他物理输出装置,利用Arduino IDE跨平台、开源的优势实现通过手势控制器发出命令控制机器的目标。
1 项目原理
1.1 Arduino介绍
Arduino是一款电子原型平台,不仅对初学者特别友好,所有东西都是开源的,而且具有便捷、灵活、方便上手的优点。此外,作为一个成熟的平台,其包含了各种型号的Arduino板以及用于编程的Arduino IDE,其中的硬件部分Arduino电路板可以用来做电路连接;软件部分Arduino IDE,则是计算机的程序开发环境,其组合使得软件与硬件能够更安全、便捷地连接到一起[1]。
Arduino可以通过各式各样的传感器去感知外界环境,并且获得控制器的控制,通过控制灯光、马达或其他的装置去改变运行状态。电路板上的微控制器可以通过Arduino编程语言来编写所需的程序,进而将其编译成二进制文件,最终烧录进微控制器,实现软件与硬件的结合。
2 系统总体组成架构方案设计
2.1 硬件描述
手势控制器是感知操作人手势的变化并将对应信号传输给机器人,最终使其运动的配件,是在Arduino UNO控制板的基础上改进而来的,搭载了5个滑动电阻,用于感测手指的运动状态,并搭载了陀螺仪和倾角传感器,用于精确感测整个手掌的运动状态[2]。
手势控制器以单片机为核心,型号为ATmega328P。选择单片机是因为其有众多优点:第一,体积比较小,内部芯片作为计算机系统,结构简单、功能完善,使用起来十分方便,可以模块化应用,与控制器十分契合。第二,较高的集成度,可靠性比较强,即使处于长时间的工作状态也不会发生故障。第三,在应用时低电压、低能耗。第四,对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。还内置了陀螺仪加速度传感器,使其能够检测控制器的倾角,扩展手势设计的维度,不再限制于单调的手指控制。单片机上还有5个滑动电位器,由于电位器一般是薄膜(碳膜)电阻,体积和功率都很小,因此十分适合用来感知手指动作。
机器车使用的是履带式铝合金小车,履带使小车有更好的抓地力,且有着不错的灵活性。小车使用的开发板是STM32嵌入式单片机,型号为STM32F103RBT6,优点是高性能、低成本、低功耗,内置蓝牙模块,使其能与手套连接,二次开发等多种接口也让项目开发更加便利。
现有的WiFi控制是同一路由網络下的、上位机对下位机的远程操控,但是上位机端的软件开发和下位机与路由的连接较为困难。针对这个问题,文章选用了匹配较容易、软件开发难度较低的蓝牙模块作为无线传输模块,进行控制系统研究。通信使用基于蓝牙4.0协议的HC-08蓝牙模块,可以和对应的HC-08蓝牙模块达成主从机通信,快速进行信号的传输通信[3]。
2.2 软件描述
本设计,主要就手势控制器对小车的操控部分进行了设计与实现,Arduino开发板测试程序主要在Arduino IDE上执行。部分功能大致思想如下。
前进操作<1>:
if 手心朝下 && 食指张开 && 其余四指紧握
if 手掌倾斜角度 < 30
小车向前直行;
else if 手掌向右倾斜角度 > 30 && 手掌向右倾斜角度 < 60
小车原地顺时针旋转(慢速);
else if 手掌向右倾斜角度 > 60 && 手掌向右倾斜角度 < 90
小车原地顺时针旋转(快速);
else if 手掌向左倾斜角度 > 30 && 手掌向左倾斜角度 < 60
小车原地逆时针旋转(慢速);
else if 手掌向左倾斜角度 > 60 && 手掌向左倾斜角度 < 90
小车原地逆时针旋转(快速);
else
小车原地不动;
后退操作:
if 手心朝上
if 五指紧握
小车向后直行;
else if 大拇指张开 && 其余四指紧握
小车原地逆时针旋转;
else if 大拇指张开 && 食指张开 && 其余三指紧握
小车原地顺时针旋转;
else
小车原地不动;
3 实验结果
(1)理論可实现手势。已实现功能如表1所示。
(2)测试数据。手势识别准确率如表2所示。
(3)Data。将测量值映射到500~2 500,握紧手时为500,张开时为2 500。手指返回角度的存储如表3所示。
(4)RadianY_last 最终获得的Y轴倾角,如图1所示。
(5)手势操控现存问题。首先,使用滑动变阻器感知手势变化,不能确保完成对精度有较大要求的操作。其次,在实际操作中会因操作人的不同而产生不同的使用感受,如手套佩戴感觉不合适等。最后,使用蓝牙进行信号的通信,遥控距离受限。
4 结语
本项目基于Arduino开发板结合手势设计,完成了以手势控制为基础的操作系统,根据设计需求,可以通过该操作系统利用手势控制机器车的移动。在拥有多种组合手势的前提下,用户可根据自己的喜好来设计手势对应的动作,并且该控制器使用单手操作,避免双手操作带来的不必要麻烦,使得用户在使用中感受到方便,同时提高了用户的参与感,增加了使用的乐趣。针对不同行业的不同需求,该控制器可以重新设计,从而衍生更多的功能,有着很大的发展空间。
[参考文献]
[1]宋楠,韩广义.Arduino开发从零开始学:学电子的都玩这个[M].北京:清华大学出版社,2014.
[2]托尼·奥尔森.Arduino可穿戴设备开发[M].胡训强,译.北京:机械工业出版社,2016.
[3]陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2015.
Abstract:In the new era of rapid development of science and technology, robots continue to affect peoples work and life, and are expected to become a key factor of the global economic development in future. In the work of robots, a good operating system can make the robot more flexible in the use process. This paper expects to design an operation form that takes gesture control as a breakthrough and realizes through Arduino. Through the changeable gesture control, the ability of robots can be further promoted to improve the fun or work efficiency.
Key words:Arduino; robot; gesture controller