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),小腿加兩個節點,各節點的互動邏輯由下圖進行說明:
談到上位機,做嵌入式的人都比較頭疼,當年的我也是,雖然單片機的代碼編的風生水起,可是愣是不能在電腦上做界面。從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版本的開發。