光荣与梦想 | XMove动作捕捉系统(一)

简介:

XMove是我和几个死党从2010年开始开发的一套人体动作捕捉系统,软硬件全部自行开发,投入了大量的精力,历经三年,发展四个版本。

此处输入图片的描述

今年春节回到老家,翻出了2011年春节时焊电路用过的松香和和硬盘角落里的代码。感慨万分,遂有此文。文章过长,分为两部分,本文为2010-2011年,XMove从第一代到第三代的故事。

诞生于考研的第一代

保研尚未确定,我挤在考研自习室里非常无趣,看到了一篇关于加速度传感器的新闻。也许是弥漫在空中的泡面味和臭脚味刺激到了我,我灵光一现,想到了利用这种传感器开发游戏控制器的想法。彼时,市面上还没有这样的成熟产品,更谈不上AR和VR了。

我似乎都忘记了考研,之后是疯狂的元器件采购,我创下了一天拿6个快递的记录,跑了无数趟电子市场。也许你不不信,我的第一代电路板竟然是自动布线的!

第一代XMove非常简陋,只使用了一枚MMA7455加速度计,裸露的电线,伸出来的无线发射器,非常山寨,只有位于双手和双脚的四个节点。

此处输入图片的描述

回家之后,别人都在看考研书,我在盛夏的酷热中通宵达旦地焊电路调代码,终于在某天夜里的凌晨两点,我迷迷糊糊地发现了bug,程序被我调通了!当时兴奋地差点撞到天花板。

我妈妈给我缝了一个简单的手套,能把传感器套在手上而不影响操作,很贴心:

此处输入图片的描述

玩极品飞车9看起来是这个样子,怎么刹车呢?左右脚的传感器能很好地实现加速和刹车,不过肯定没有力回馈啦。

此处输入图片的描述

我给它开发了第一版的宣传册,现在看来感觉好浮夸:

image_1b7cuu8irlir1n9qgul1c061i3r1c.png-2750.7kB

我还用MFC设计了第一版服务器端的控制软件,所有的C++代码都在一个文件里,路子特别野,连图表控件都是一个个的点画出来的(80后可能听过有种叫GDI的技术):

image_1b7cv1vn71gav1nii1nmuhmahnq1p.png-834.8kB

第一代版本非常简陋,却赢得了一致好评,在当时的全国大学生创新竞赛中轻松拿了一等奖。想起来都要偷笑,总共的开发时间也不超过10天...

第二代:手持控制器

开发完第一代的XMove,我得知自己已顺利保研,在那段现在想起来最无忧无虑的时光里,我开始着手第二代系统的研发。

第一代系统没有按键,加速度计只能检测线性动作,精度不够。在那个街机还是诺基亚N97的时代,陀螺仪很稀奇,比米粒还小却几百块钱一枚。这套控制器的硬件堪称豪华。有了硬件大神的加盟,我们的硬件比之前做的精细多了。

第二代的主要进步是下面这个带有按键和彩色LCD的手持手柄,还内置了我为其在裸机上开发的操作系统,从底层调度,硬件驱动到上层的GUI控件,都是纯手工打造的,C代码约一万行。

此处输入图片的描述

这个手持终端在2KB内存的单片机上,实现了漂亮的动态菜单,支持人机对战的五子棋,俄罗斯方块:这些游戏都可以通过旋转控制器来实现,几乎不需要按键:

此处输入图片的描述

此处输入图片的描述

甚至我还在上面开发了能通过旋转操作的中文输入法,只要旋转它就能输入全部的文字,单手利器,也算是当时一个很超前的创新吧:

此处输入图片的描述

那段时间,我每天早上起来先打两个小时的游戏,中午吃过饭拿根雪糕,慢悠悠地在北邮的主干道上遛弯,之后便拿着电脑去实验室写代码。看得出当时的我是有多闲,能投入那么多时间。

小学有个梦想,就是拥有一个无所不能的掌上电脑,换了三台文曲星都不过瘾。这个自底向上设计的“电脑”算是实现了这个梦想,大四那年,我把它随时随地地装在身上,没事就看看现在几点,气压多少,还用它的指南针导航。现在想想真是好中二。

第三代黄金岁月

2011年春天,大四的我边写毕业论文,边将上两代的硬件进行了充分的整合,优化软件,开发了当时比较完善的XMove第三代。这是硬件的全家福:

此处输入图片的描述

它的最主要功能就是玩游戏,演示效果相当好。这是当时用全身动作捕捉玩街霸4的场景,减肥利器,打5分钟就气喘吁吁,校领导相当喜欢把它介绍给外面的领导看:

此处输入图片的描述

不过当时最酷的莫过于用来玩使命召唤(一种风靡全球的第一人称射击游戏),用双手柄控制枪,用脚部传感器控制跳跃和行走,动作数据可以送入SVM(一种分类算法)中,能够识别上膛,标准,扔手雷等动作。不过我当时机器学习刚入门,对于流式的动作识别就无能为力了。

这是我当时为其设计的宣传册,是不是比第一代的强很多?我居然为了它,放弃了当时实验室的春游,现在想起来好后悔~

外页:

此处输入图片的描述

内页:

此处输入图片的描述

之后我自学了C#,用WinForm技术开发了这一版本的桌面控制端,比第一代漂亮多了,能够监控每个传感器的实时运动数据,茶壶能够准确地展现每个传感器的姿态。这是我第一次在桌面端编写如此复杂的软件,不过代码非常乱...

此处输入图片的描述

有两个特别有趣的演示一定要提一下:

远程机械手控制

把传感器绑在自己的胳膊上,就能通过XMove的动作捕捉,实时地1:1 远程控制机械手。

整个结果非常流畅,不过机械手是淘宝购入,自行组装,受限于舵机的扭矩,手臂速度太快就跟不上了。当年一天的演示就烧掉了三个舵机!演示也很吸引眼球,但我居然一张照片都没有留下来,好郁闷。

虚拟现实(VR)

六年之前,我们就自行实现了VR系统。我在淘宝上用2300大洋买了头戴显示器,分辨率640*480, VGA接口,不支持立体显示,不过那是当时能找到的最好的头戴了。包装盒外面印刷了比基尼美女,看着特别像羞羞电影的设备,我都不好意思拿出来给人看...

某一天晚上,我把笔记本电脑背在书包后面,把XMove的传感器装在全身四个位置,戴上头戴显示器,开启了使命召唤2。 那是反映二战的一道关卡,虽然设备简陋,但我在空旷而黑暗的实验室楼道里,蹦蹦跳跳,左躲右闪,竟然真的融入了那个场景,15分钟的体验让我至今印象深刻。虽然比不了现代的VR设备,但身边同学不停地喊“SB”,就知道那时有多么欢乐了。

然而不幸的是,这些我也一张照片没留下来。VR眼镜后来上交学校,这样的体验有且只有最后一次。

结语: 那是我的黄金时代

大四的这一年,我对XMove达到了几乎狂热的程度,连电脑桌面都是我设计的XMove主题。这三代,综合起来花费了我大四一年近500小时的开发时间。由于要做PCB,要焊接,要在文本编辑器写C代码和调试,要与其他传感器的通信和协同,还要面对不少外部困难,最终还是完成了。XMove带给了我数不清的荣誉和进步,我的技术栈也基本上是那个时代发展起来的。

大四毕业了,它的故事才刚刚开始。我着手进行第四代的开发,它的目标堪称宏伟,技术难度异常复杂。不过,它带给我的不仅是进步的喜悦,更是深陷泥潭中的痛苦,过度设计的教训。这些会在下一篇文章里,容许我慢慢地讲给各位读者听。


作者:热情的沙漠
出处:http://www.cnblogs.com/buptzym/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类: 开源项目

本文转自FerventDesert博客园博客,原文链接:http://www.cnblogs.com/buptzym/p/6369857.html,如需转载请自行联系原作者
目录
相关文章
|
网络协议 Linux 数据安全/隐私保护
如何在Windows本地快速搭建SFTP文件服务器,并通过端口映射实现公网远程访问
如何在Windows本地快速搭建SFTP文件服务器,并通过端口映射实现公网远程访问
10823 1
|
安全 数据库 存储
数据库设计基石:一文搞懂 1NF、2NF、3NF 三大范式
数据库设计常遇数据冗余、增删改异常?根源往往是表结构不规范。本文带你轻松掌握数据库三大范式——1NF、2NF、3NF,从原子列到消除依赖,层层递进,提升数据一致性与可维护性,让数据库设计更高效、安全!#数据库 #范式设计
2812 0
|
存储 关系型数据库 MySQL
开源免费真香!Star 1.4k 这款开源在线教育系统让万人学习零压力,企业培训系统一键搭建神器
PlayEdu 是一款基于 SpringBoot3 + Vue3 开发的开源企业培训系统,提供从课程管理、学员管理到考试测评
932 4
|
NoSQL Ubuntu 网络安全
docker安装redis并允许远程访问
docker安装redis并允许远程访问
docker安装redis并允许远程访问
|
存储 负载均衡 算法
Nacos注册表解读
Nacos注册表解读
|
缓存 Kubernetes 负载均衡
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(7)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(7)
316 85
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
1454 0
|
Java Linux 开发工具
Linux安装Java
Linux安装Java
1104 0
|
数据采集 搜索推荐 算法
什么是谷歌蜘蛛池?具体有什么用?
答案是:谷歌蜘蛛池就是GPC爬虫池,可以快速收录网站页面。 谷歌蜘蛛池概述 谷歌蜘蛛池,又称Googlebot池,是由谷歌爬虫或"蜘蛛"组成的一种资源池。 这些蜘蛛在互联网上爬行,寻找新的和更新的网页,并将这些信息带回谷歌的索引。 谷歌蜘蛛的工作原理 谷歌蜘蛛从已知的网页开始,然后通过网页上的链接找到新的网址。 在找到新的网址后,它们会抓取这些页面的内容,并使用复杂的算法来决定这些页面在搜索结果中的排名。
1142 0
什么是谷歌蜘蛛池?具体有什么用?
|
缓存 Linux 数据安全/隐私保护
aspose win/linux WORD转PDF(及其解决乱码方式)
aspose win/linux WORD转PDF(及其解决乱码方式)
3079 1