编者注: X-MOVE是作者在业余时间于2010年6月份启动的以运动传感开发,算法和应用的平台,目前已经发展了三个版本,第四版的开发接近尾声。发布在博客园仅为交流技术,不存在商业目的,作者保留一切权利。
一 . 前言
XMOVE 2.0开发时间: 2010年10月-2011年1月
XMOVE1.0的开发在八月份后只做了小修小补,以为它就是最后的完整系统。我为它用GDI开发了3D的姿态演示,由于只有加速度传感器,因此效果不是太好。但没有办法,马上就要考研了,我不能在这个事情上再付出更多。
但是后来事情的发展有点出乎意料。我幸运的通过她和以前完成的两个嵌入式开发项目获取了北邮特殊保研资格,同时于十月份参加了中国电子学会在成都举办的本科创新大赛,拿到一等奖。我甚至有种感觉,好事一下子都来了O(∩_∩)O~为了庆祝,我给自己买了一台当时看起来配置还不错的台式机。同时,为了回报XMOVE给我带来的好处,我决定进行XMOVE 2.0的开发。这几乎是我本科期间最幸福的时光,没有压力,专心做自己喜欢的事情,没事还可以玩玩心爱的游戏。
先上个图,展示下大四自己的开发环境和寝室:实在是破的可以,我的全部面积就是一张床,代码就是在上铺敲出来的。
下面这张图是床的另外一侧,上面所有的盒子都装着电路板,ARM,MSP430,AVR,51...各种无线模块液晶屏键盘传感器,我床底下还有个大箱子,各种电阻电容:最上方的架子,塑料盒子里装着的就是XMOVE1.0的全套设备,看着真是太山寨了!!
我的改进目标主要有以下几点:
- 开发嵌入式彩屏体感手持终端,升级和改进原有的嵌入式OS
- 传感器升级:更好的加速度计ADXL345,引入陀螺仪,磁场计和气压计
- 改变上位机软件结构,换用C#作为主要的开发语言
- 升级无线协议,改进架构
- 向下兼容1.0版本
二. 系统框架
下图表示了2.0版本的主要设计思路和架构,它对1.0系统做了整体的改性,表现在传感器的升级和扩展性能的提升。它已经不限于简单的应用场景,比如游戏和简单的人机交互。我把它的目标定位继续扩展到全身人体监测,虚拟现实和机械控制领域。当然,全身人体监测在4.0以后才实现。
升级节点数量到四个,其中,两个手持节点(含有LCD),小腿加两个节点,各节点的交互逻辑由下图进行说明:
其中,2.0版本中最重要的子系统,是手持终端。它的设计和开发是我当时最主要的核心,由于已经有五篇文章介绍了它的详细实现过程,此处不再详述。可参考XMOVE手持终端的介绍。
三. 上位机系统的改进
谈到上位机,做嵌入式的人都比较头疼,当年的我也是,虽然单片机的代码编的风生水起,可是愣是不能在电脑上做界面。从MFC到C#,我花了将近一年的时间。
从学习C#开始,我就惊叹于这门语言的简单和优美。我一直很奇怪语言没有指针怎么操作数据,但C#给了我完整的也是更安全的答案,它给了我一直想要的封装性:我只需拿过来用,而不需关心内部实现。于是,2.0版本的界面顺利诞生。
对一个写惯单片机的人来说,很容易把所有的逻辑都写在一个文件里,完全没有设计模式的概念。从1.0到3.0我都是这么做的,汗~ 当然,UI我也做了比较完整的设计,下面是设计图:
上位机系统做了大幅度的功能增强:
- 使用MSCHART控件,可同时显示所有传感器的数据
- 内置模拟游戏手柄驱动,再也不用带着巨大的PS2仿真器了
- 空中鼠标功能
- 对游戏(COD等)的全身体感支持
四. 荣誉和总结
XMOVE2.0作为中间版本,在后代的发展中起了非常重要的作用。设计思路基本定型也更加成熟。当然它有不少缺点:
1. 算法不足,多数应用没有采用良好的模式识别算法,也没有使用传感器融合技术
2. 应用偏少,只能支持使命召唤,雷电3等应用,缺乏杀手级应用。
3. 上位机软件缺乏重构:当然这是我现在的看法,当时是引以为傲的。
说到荣誉,最大的荣誉应该是代表北邮参加了中国移动研究院举办的移动创新大赛,荣获二等奖。我在比赛上认识了不少志同道合的人,其中天大比我小一届的同学给我留下了极为深刻的印象。他的C#水平比我先进了整整五年而不可望其项背。而他在手机上开发的体感系统,也给我以很大的启发。我在4.0版本中引入了手机的支持,同时借鉴了他的模式识别算法,在此表示感谢。
大四寒假,我开始了3.0版本的开发。