利用加速度传感器设计手势识别器

发布于:2024-07-17 编辑:匿名 来源:网络

简介   手机、MP3播放器、硬盘播放器、数码相机、PDA等设备都是通过导航键控制的。

目前比较流行的导航键控制方式有四维键和摇杆,这是最常见的两种导航键。

另外,在一些手机上也有非常新颖的导航键设计,比如:LG-KG70的滚轮键、LG-KE的转盘设计、索尼爱立信W的触摸屏、多普达D的飞梭轮等。

这里我们使用一个加速键传感器设计了隐形导航键来取代四维按键的功能。

这一解决方案能够更好地满足消费者的好奇心,满足他们追逐时尚的需求。

  手势识别控制原理  本系统利用三轴加速度的值来确定物体运动的六种预定义姿势。

首先,三个轴分别采样,每个轴得到50个数据;然后,分别处理每个轴上的数据以确定是否发生了预定义的操作。

操作定义将在下一节中解释。

这里仅用Y轴来说明确定原理。

   获取Y轴上的50个数据,并将其存储在数组y_data[N]中。

将这 50 个数字相加并取平均值。

如果y_data[N]中数据的最大值与最小值之差在设定的阈值内,则认为该物体在Y轴方向上是静止的。

此时将y_init值更新为y_data[N],求得平均值;否则,如果y_data[N]中数据的最大值与最小值之差超过设定的阈值,则认为该物体处于运动状态,y_init值保持不变,仍为上次静止时的值状态。

  图1和图2分别为Y轴左右晃动时采样的加速度采样值y_data[N]。

图中红线代表静止时的最后采样值,蓝线代表运动时的采样值。

图1显示了向左摇动时的值。

可以明显看出,加速度的值与静止时相比发生了明显的变化,并且呈增大的方向变化。

  从图1和图2可以看出,两条黑线之间的数据很难确定是哪个动作产生的,因为两个动作都可能产生这样的值。

因此,要根据黑线以外的数据来判断是向右晃动还是向左晃动。

因为对于这两个动作来说,黑线之外的数据是有明显区别的,而且数据相差很大。

对于图1,这些数据大于90,对于图2,这些数据小于90。

因此,这些数据至少相差60%,并且可以很容易地区分左右两个动作。

  本系统就是基于这个原理来实现的。

首先,分别设置左右摇动时的阈值和两个计数器;然后,将50个新采样的值存储在y_data[N]中,将每个值与静止时的值y_init进行比较。

如果数据超过一定阈值,则累加到相应的计数器上,直到比较完所有50个数字;最后根据计数器值的大小判断是否执行了动作。

  同理,利用Z轴的采样值来判断是上摇还是下摇,利用X轴和Y轴来判断图像是向左还是向右翻转,这里不再赘述。

  系统描述  系统组成及功能  系统由三部分组成:CT-单片机控制部分、MM-加速度传感器部分、演示终端。

系统框图如图3所示。

  CT-MCU控制部分主要负责传感器数据的A/D转换、运动检测以及与演示终端的数据通信。

MM-加速度传感器部分负责测量加速度值并将其转换为电压值。

演示终端负责处理单片机传来的动作类型并执行相应的动作,同时向单片机返回进入和退出二级菜单的指令。

下一节将介绍CT-MCU系统的更详细设计。

这里首先介绍一下本系统设计的动作姿势和代码,以及与演示系统交互的说明。

  预定义动作  系统设计了六个动作,分别是左摇、右摇、下摇、上摇、左转图片、右转图片。

图 4 中的图直观地说明了其中两个操作,其他操作类似。

  系统还为每个动作定义了对应的动作代码,见表1。

  当单片机检测到一个动作时,会将相应的值赋给变量type_action,然后将type_action的值发送到演示终端通过SCI。

如果用户执行的动作不属于这六个动作,则将NO_ACTION分配给type_action,表示演示终端不执行任何动作。

  系统还定义了单片机与演示终端交互的指令,用于系统在主菜单和二级菜单之间进行界面切换。

演示系统通过SCI向单片机发送指令,单片机收到指令后进入或退出二级菜单。

菜单,见表2。

  这里只定义了一个二级菜单,即图片菜单。

系统还可以定义更多的二级菜单和三级菜单。

另外需要说明的是,MOVE_TURN_LEFT 和 MOVE_TURN_RIGHT 动作用于图片翻转,仅在图片菜单中可用,在主菜单中不可用。

向下摇动为切换到下一张图片,向上摇动为退出图片菜单。

  演示终端  该系统面向便携式消费电子产品,因此软件应用必须选择具有广泛基础的应用平台。

由于近年来J2ME在便携式终端中得到广泛应用,本系统也采用J2ME平台进行开发。

通过比较,我们选择了J2ME的WTK开发包,它是专门为移动无线设备设计的开发包,提供统一的平台。

在WTK框架下开发的Java程序可以被许多移动设备支持,因此可以有效解决兼容性问题。

  在WTK下,我们使用手机原型的默认模拟器DefaultColorPhone进行开发。

DefaultColorPhone 看起来如图 6 所示。

  该模拟器的外观和操作类似于手机,但它并不代表特定设备,而是提供其支持的 API 的正确实现。

每个命令按钮都对应相应的API函数。

如图6所示,手机的导航键发生了变化。

我们更改了导航键的API函数,将其从鼠标点击触发转换为串口动作代码控制。

首先,我们编写了一个J2ME串口接收程序,用于接收单片机传过来的单字节type_action值;然后将type_action以参数的形式传递给API,手机根据不同的type_action值执行不同的动作,包括菜单上下滚动、进入和退出二级子菜单、翻转图片等。

手机之间的对应关系actions和type_action如表3所示。

  根据type_action的值,在手机界面生成对应的action,手机界面发送不同的变化。

下面详细介绍演示终端的具体实现。

  硬件说明  系统硬件分为两部分:CT-和MM-。

  CT-是一款由MC9S08QG微控制器组成、由USB总线电源供电的小型评估板。

CT-配备有按钮开关、LED灯、蜂鸣器等作为开发的输入输出设备。

同时USB-COM转换电路采用FTDI公司生产的FTR,允许单片机与计算机通过USB接口进行串行通信。

BDM用于代码编程和系统调试。

  MM-是包含飞思卡尔制造的MMAQ三轴小量程加速度传感器的模块。

可直接安装在CT-专用插座上。

MM-的供电由CT-上MC9S08QG8单片机的PTB5端口控制。

当PTB5端口为L时,电源打开。

另外,g-SELECT开关是用于选择传感器灵敏度的开关。

使用时只需将MM-插入CT-接口即可。

本系统中使用的加速度传感器的灵敏度为mV/g。

  软件说明  单片机主程序流程如图7所示。

  系统上电后,首先要对单片机的硬件系统进行初始化,配置寄存器等操作,然后可进行数据采集,并将加速度值进行A/D转换,得到量化值。

图片菜单是二级菜单。

如果演示系统没有向单片机发出进入二级菜单的指令,单片机将一直运行在主程序中,不断采集A/D值,进行动作判断,并向演示系统发送type_action。

操作说明。

演示系统可以根据收到的type_action的类型采取相应的动作。

如果单片机接收到进入二级菜单的命令,则进入图片菜单,同时还执行与主程序类似的动作判断程序,不断更新A/D采样值,发送type_action,直到接收到才退出退出二级菜单的指令。

利用加速度传感器设计手势识别器

下面详细介绍各个功能模块的具体设置。

  MCU硬件初始化  MCU系统的主要任务是:对加速度传感器的模拟数据进行A/D转换,将type_action的动作类型发送给演示系统,接收进入和退出次级的指令从演示系统菜单中,设置采样值。

另外,还需要配置系统时钟和外部设备(灯、蜂鸣器)。

根据单片机的主要工作内容选择单片机内部的功能设备,包括A/D转换器、模拟定时器、串行通信模块(SCI)、内部时钟源模块等。

  数据采集  系统设定的采样频率为Hz,每秒在X、Y、Z轴上采样数据。

因此,定义了三个大小为N的数组来缓存数据。

分别是:  char x_data[N];  char y_data[N];  char z_data[N];  这里N为50,每0.25s访问一次,可以访问4次1秒内。

保证采样率。

函数void acce_meas(void)负责将采样数据分别放入这三个数组中。

下面是程序的具体实现:   for(j=0;j  {  for(i=0; ipreferences->J2ME->Platform Component),然后右键选择Wireless Toolkil ,然后在弹出的菜单中选择Add Wireless Toolkil,选择刚刚安装的J2ME Toolkit的安装路径:C:WTK22,这样  J2ME开发包的基本配置就完成了。

专为移动无线设备设计并提供统一的平台。

在WTK框架下开发的Java程序可以得到很多移动设备的支持,可以有效解决兼容性问题。

  软件应用  程序分为三个部分:主流程、串口监控模块和定制用户界面。

它们分别派生自不同的J2ME类库。

三部分通过消息机制互连,共同构成整个程序执行周期。

各模块具体实现的功能请参考下一节。

  软件应用的组织结构  本软件应用是在WTK手机模拟器下设计的,分为两个包:Base和display。

基础包包含两个java文件,MainRoutine.java和RSPort.java; display包中有很多文件,主要实现UI和基本按键响应。

下面介绍软件部分的实现方法:   ·MainRoutine类  MainRoutine是程序的入口类,集成了程序中的所有对象。

MainRoutine派生自MIDlet类,并重载MIDlet中的startApp、pauseApp、destroyApp等方法,并在构造函数中添加exitCommand命令,实现手机的关机功能。

   可以看出MainRoutine实现了程序的进入和退出,同时也标志着程序的基本框架,为具体的功能应用打下了坚实的基础。

  ·vCanvas 类   vCanvas 继承了Canvas 类,并添加了externalMsg 方法。

之所以在其中添加externalMsg方法,是因为它的超类Canvas无法动态响应按键,而我们对Canvas的要求是能够通过从串口导入的数据(或按键)中获取到的keyCode来采取相应的动作端口,如图所示。

文本的翻转、滚动等。

因此,我们可以通过vCanvas派生出一系列的子类来实现我们的具体需求,为以后的开发提供方便。

  ·DisplayItem类  DisplayItem是一个基本类,提供通用的字符串数据组合。

该类的构造函数需要输入三个字符串参数:shortText、longText和extra。

这样保证了每个DisplayItem可以返回三种不同长度的文本信息,并且可以在不同的场合使用。

其中,shortText用于UI中的标题显示,longText是Item的主要内容,extra是Item的附加信息。

本系统中会实例化DisplayItem类来描述菜单和子功能的内容。

它是一个广泛使用的基础类。

  ·ImageCanvas类  ImageCanvas同样继承自基础类vCanvas。

它的主要功能是实现图像的浏览、旋转、镜像等基本操作。

  考虑到使用手机浏览和拍照的多方向性,如果能够通过加速度传感器自动修正图片的方向,使其自动符合我们想要的方向,那么我们会省去很多不必要的麻烦麻烦。

所以我们在图片浏览功能模块中添加了向左或向右旋转90°的功能。

这样,用户就会惊喜地发现,无论手机如何放置,显示的画面始终保持与地面垂直。

  ·ListCanvas类  ListCanvas提供主屏的显示能力,并将用户操作导出给内部聚合成员。

具有特定功能的项目将包含在ListCanvas中。

每个 Item 都有一个显示在屏幕上的 ShortItem、一个显示在详细信息屏幕上的 LongText 以及一个不显示的 ExtraText。

当然,我们也可以获得它的信息。

在ListCanvas中,我们可以使用“右键”来显示Item的详细信息,也可以使用SELECT键来标记每个Item。

  ·ItemListCanvas类:   ItemListCanvas同样继承了vCanvas类,实现了多项文本浏览的功能。

构造函数方法的输入是 Display、Displayable、Font、Title 和 ItemVector。

将多个 String 构造为 Vector 并将它们传递给 ItemListCanvas 后,此类可以提供由多个文本项实现的用户界面。

通过实例化该类获得本系统的“关于本系统”子功能。

  结论  本系统采用飞思卡尔的微控制器MC9S08QG和加速度传感器MMAQ实现便携式手持设备的手势控制,并使用开放的J2ME平台实现终端应用。

系统完整、实用性强、成本低。

不仅满足了用户的基本操作需求,还增加了移动设备操作的乐趣和灵活性。

同时,加速度传感器MMAQ较小的尺寸和独特的省电模式使其在移动设备应用中具有巨大的优势。

可以预见,类似的手势识别功能将在未来的手持设备系统中得到广泛应用,因此具有广阔的市场应用前景。

利用加速度传感器设计手势识别器

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 获得3500万美元A轮融资后,迪普科技如果不做“中间平台”怎么办?

    获得3500万美元A轮融资后,迪普科技如果不做“中间平台”怎么办?

    雷锋网 今年企业服务融资市场比较冷淡,但只有在这种环境下,企业的战斗力才能充分展现,眼光敏锐的投资者才会毫不犹豫地出手。 9月24日,迪普科技宣布完成1万美元A轮融资,并发布企业数字智能平台DEEPEXI 2.0。 明年,迪普科技将打造升级版领域中台和通用中台,完善智能物联

    06-17

  • 本周趣事:小米和三星发布了两款可能改变行业格局的产品

    本周趣事:小米和三星发布了两款可能改变行业格局的产品

    5月22日至28日,本周最值得关注的新品。 小米无人机 小米没有举行新闻发布会。 5月25日晚上7点30分,该产品通过时下流行的视频直播方式发布。 有 p 和 4K 版本,起价分别为 ¥ 和 ¥。 不过,小米无人机不会立即发射。 P版本将于5月26日在小米智能家居应用程序上开始众筹注册

    06-18

  • 有消息称,商汤正在考虑年底前在香港IPO,规模为20亿美元

    有消息称,商汤正在考虑年底前在香港IPO,规模为20亿美元

    商汤正在考虑在年底前在香港IPO,规模为20亿美元。

    06-18

  • Facebook IPO或成股市新骗局:散户要起诉

    Facebook IPO或成股市新骗局:散户要起诉

    年初,Facebook上市的呼声和掌声犹在耳边。 如今,随着Facebook IPO后股价暴跌,已成为投资者心中难以磨灭的痛。 。   跌倒!落下!落下!   对于熟悉Facebook股价表现的人来说,这种情况似乎已经成为家常便饭。 美国时间8月2日,Facebook股价收于20.04美元,较IPO价下跌

    06-18

  • 腾讯音乐娱乐集团成为NBA中国官方音乐合作伙伴

    腾讯音乐娱乐集团成为NBA中国官方音乐合作伙伴

    NBA中国与腾讯音乐娱乐集团(纽约证券交易所股票代码:TME)今日共同宣布,双方正式达成战略合作伙伴关系。 作为NBA中国区官方音乐合作伙伴,QQ音乐将携手NBA打造“音联动”组合,为广大大众提供形式新颖、题材丰富的NBA内容。

    06-18

  • 雷军:造车!程维:

    雷军:造车!程维:

    我和滴滴要正式造车了?这并非没有根据。 据悉,滴滴已启动造车项目,负责人为滴滴副总裁,小聚汽??车戴总经理、杨军。 目前,团队已开始向车厂招人,但具体形式和路径滴滴的汽车制造尚未确定。 投资界向滴滴求证此消息,但对方表示不会有官方回应。 就在日前,雷军与造车新势

    06-17

  • 净零排放目标每年可能带来超过630GW的太阳能机会

    净零排放目标每年可能带来超过630GW的太阳能机会

    分析机构彭博新能源财经根据行业情况预测了未来实现净零排放目标的三种路径。 其最新的《新能源展望》中提出的“绿色”情景对于太阳能行业来说肯定比其他可能性(由核电或化石燃料驱动的未来)更具吸引力。 分析公司彭博新能源财经 (BNEF) 发布的一份《年新能源展望》报告宣称

    06-08

  • 交易数量和金额均创三年来新低,疫情期间融资最热门的是哪三大行业?

    交易数量和金额均创三年来新低,疫情期间融资最热门的是哪三大行业?

    新年伊始,受春节假期以及新型冠状病毒疫情影响,公布融资消息的企业数量达到近三年来的最低水平。 截至2月29日,创头条融资报告包含年初以来境内投融资事件(不含IPO)。 1月至2月,公告总数约为去年同期的65%。 1-2月融资总额合计1亿元,同比下降约64.5%。 创头条融资报告显

    06-18

  • 引领医药研发领域优质新服务,药研院完成近亿元A轮融资

    引领医药研发领域优质新服务,药研院完成近亿元A轮融资

    据投资界6月13日消息,临床研究“新服务”协同平台药研院研究院宣布今年5月已完成近亿元。 元A轮融资,本轮融资由经纬创投领投,上轮投资的方元璟资本将继续跟进,光爵投资顾问提供全力支持。   药研院创始人孙美林表示,本轮融资后,药研院将加强平台用户和数据建设,提升

    06-18

  • 张一鸣和TikTok的危险时刻

    张一鸣和TikTok的危险时刻

    ?迫于官方压力,TikTok于10月4日正式关闭了在印尼的TikTok Shop功能。 此时,距其在印尼开展电商业务仅2年时间。 此前,印尼贸易部9月底宣布,以TikTok Shop等威胁利益为由,禁止TikTok等社交平台在平台内进行商品交易或将用户数据用于电子商务目的。 当地中小企业。 2016年,

    06-18

  • 阿里巴巴封神之战山东站决赛即将举行,三大亮点早知道

    阿里巴巴封神之战山东站决赛即将举行,三大亮点早知道

    阿里巴巴神战山东站暨智汇谷创新创业大赛决赛将于3月24日正式举行。 阿里巴巴封神之战山东站暨智慧谷创新创业大赛是阿里巴巴封神之战系列专题活动之一。 本次活动由聊城高新技术产业开发区管委会、共青团聊城市委员会主办,阿里云创新中心、山东壹号协办,布洛克产业发展集团

    06-17

  • 《达摩院2020年十大科技趋势》正式发布

    《达摩院2020年十大科技趋势》正式发布

    阿里云创新中心致力于打造科技型中小企业首选创新平台,量身定制“成长期”、“孵化期”创业公司的“加速期”和“加速期”三大创新和服务周期体系将创业公司与阿里巴巴的生态资源和风险资本连接起来,帮助他们在整个生命周期中成长。 其中,达摩院作为重要合作部门之一,深度

    06-18