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