[XMOVE自主设计的体感方案] 历代版本系统介绍(二)X-MOVE2.0

简介:

 

编者注: 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版本的开发。

相关文章
|
存储 算法 调度
探索AIOS:LLM智能代理操作系统的未来
【4月更文挑战第5天】AIOS是一种创新的LLM智能代理操作系统,旨在解决资源分配、上下文维护和异构代理集成的挑战。它将OS作为代理的“大脑”,采用模块化设计优化LLM功能,包括代理调度、上下文管理、内存和存储管理。AIOS提供并发执行、工具集成及访问控制,提升效率和安全性。其SDK加速应用开发,开源特性促进研究合作。尽管有调度优化、上下文管理效率和安全性的改进空间,AIOS为智能代理的发展开辟了新途径。
749 11
探索AIOS:LLM智能代理操作系统的未来
|
前端开发 JavaScript Java
计算机Java项目|图书大厦图书管理系统的设计与实现
计算机Java项目|图书大厦图书管理系统的设计与实现
115 0
|
Java Maven
maven 项目配置日志打印以及异常日志打印问题
maven 项目配置日志打印以及异常日志打印问题
497 0
|
安全 Java 应用服务中间件
记一次异常外联事件应急响应
记一次异常外联事件应急响应
575 0
|
程序员 数据库
VB.NET—Bug调试(参数话查询、附近语法错误)
VB.NET—Bug调试(参数话查询、附近语法错误)
146 0
|
机器学习/深度学习 人工智能 边缘计算
|
SQL 关系型数据库 MySQL
七种 JION 的理论|学习笔记
快速学习七种 JION 的理论
1402 0
七种 JION 的理论|学习笔记
|
算法 搜索推荐 Go
跟着动画学 Go 数据结构之插入排序
插入排序有点像小时候我们抓扑克牌的方式,如果抓起一张牌,我们放在手里;抓起第二张的时候,会跟手里的第一张牌进行比较,比手里的第一张牌小放在左边,否则,放在右边。因此,对所有的牌重复这样的操作,所以每一次都是插入最正确的排序顺序,直到牌抓完为止。
跟着动画学 Go 数据结构之插入排序
|
Linux vr&ar
使用光盘iso实现Linux操作系统的自动安装部署
前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装。如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kickstart 的方式来实现自动化安装部署。
1248 0