EZ430 Chronos 开发设想 :广义手势语言算法
终于收到了代购的开发套件,这几天都在思考究竟用它来开发一款什么样的有趣应用呢? 终于在昨天肯定了开发设想:手势语言,充分利用套件的3轴加速度感应器,捕捉手势数据,再根据预先设定的对应模型翻译成字符、数字或者指令,能够把翻译结果保留在手表内存/FLASH里,等到联机时再用RF传到PC上,也能够直接就用RF同步传送到PC上。编程
为何起名为“广义手势语言”,而不是“手势交互”或者“手势输入”?由于准备设计一个比较全面的手势语言系统,相似于手语之类的,固然,仍是一步步来,不可能一次就搞定,分阶段进行,最终可以跟实际的天然语言一一对应。架构
这种手势语言跟MCU结合紧密,好比能够直接利用手势来输入程序指令(好像须要编译才能够运行,后面再关注细节),能够直接在手表上把特定的三轴坐标翻译成指令来操做MCU的底层硬件(好比启动一个程序、进入程序的菜单进行设置,确认设置结果,等等),也能够利用手势来开启/关闭无线传输,还能够用手势来代替按钮的功能,调用不一样的内置程序,修改设置什么的,好比调整时间,调整日期。架构设计
现阶段主要以手腕上能够方便佩戴的 chronos 为手势输入源,后续有必定进展后计划使用手套式传感器,每一个手指头上都放置一个相似的三轴传感装置,由于手指的移动范围更灵活,更省力,能够创造更丰富简单的手势语言。翻译
这个设想的难点是对于手势语言的设计,至于利用 chronos 收集手势信号,分析三轴数据并转换为有意义的语言,这些均可以经过建模编程来实现,都是一些按图索骥的工做,难度不是很高。设计
【 20120703更新:】内存
难点仍是在前面的设计,由于属于无中生有地创造一个新体系--虽然能够参考一些现有的资料,不过难度仍是比较大,至于后面的软硬件实现,就是按图索骥了,只要保证不出错,再兼顾一下手势识别算法的效率(这块可能有较多改进余地),就能够了。开发
综合来讲,主要有下面2个难点:
一、高难度:设计手势语言的各类手势,以及对应的含义,要符合人类的习惯(就是顺着关节的运动,不搞特别别扭的),要有较大信息带宽,各个手势不要太类似--要从架构设计层面来下降识别算法的难度;
二、中难度:手势识别算法模块,把各类手势对应的3轴变化数据创建对应关系,尽可能下降误判,尽可能下降算法复杂度(先考虑时间复杂度,再考虑空间复杂度)。同步
须要避免无心触发,因此我这几天在考虑是否在触发手势发出后再启动一个5秒定时器来等待一个确认手势,如今想到一种很方便的触发手势:
一、手腕静止3秒;
二、迅速翻转手腕180度,保持2秒;
三、再次迅速翻转手腕-180度(反方向转动返回原来位置)。编译
确认手势:(LCD显示提示是否进入手势捕捉状态)
一、手腕迅速转动90度,不保持;
二、手腕迅速转动-90度(反方向翻转恢复原位),不保持;
三、手腕迅速转动90度,不保持;
四、手腕迅速转动-90度(反方向翻转恢复原位),不保持;
其实确认手势就是连续2次快速转动90度
这个广义手势语言的设想有些太大,因此也没期望一步登天地短时间内迅速搞定,不过能够一步步来,先识别简单手势,再识别复杂手势,能放在CC430上处理的算法就放在CC430上,过于复杂的手势算法就由PC来实现,让手表在没法识别时就把未知手势的所有3D坐标打包发给PC,总之思路是很丰富的。
过段时间会先实现一些简单的指令性的手势,好比:
一、启动手势识别;
二、关闭手势识别;
三、用手势调用温度显示程序;
四、用手势调用秒表程序,显示上次状态;
五、用手势开关秒表程序;
六、用手势调用时间程序;
七、用手势调整时间。
估计须要预先设计出如下手势: 一、启动手势识别的手势; 二、关闭手势识别的手势; 三、确认的手势; 四、取消的手势(默认超时无确认就是取消); 五、调用某个程序的手势(实际上是用手势进入那个菜单选择,包括进入主菜单,进入子菜单); 六、10个数字输入的手势(感受这个最麻烦)