毫無疑問,今天的智能手機已經是人們注目的焦點,作為移動計算最堅定的鼓吹者,我實在想不出它將來不風卷整個世界的理由。它小巧,易攜,功能卻很強大,可以用它當照相,攝像,玩遊戲,玩虛擬現實應用,當然,最重要的一點,就是可以拿來裝B。它可以通過你的不同動作來辨別你對它的控制期許,根據你的使用方式進行即時反饋。它是未來數字世界智能化的先鋒,也是單身青年的泡妞利器。但是,在你在無聊時大玩Labyrinth2迷宮滾球時,當你在追女孩時拿出手機在Google Map上找酒吧時,當你手持iPad在飛機上低調不語還能引來空姐圍觀時,有沒有仔細想過,是什麼東西將這種新潮,智能,百般武藝樣樣精通的光環帶給移動手機呢?
是感應器。看看左邊這張圖。先說明一下,我本來準備放iPhone4的玉照上來的,但實在是每次看見就忍不住想起教主對我們拿手機姿勢的教誨,所以還是用一張iPhone3將就了。作為引美女英雄盡折腰的代表,水果公司推出的iPhone是手機設計潮流的引導者,設計精神的集大成者,也是整合感應器的永遠的先鋒。從光強感應器,接近感應器,加速度感應器,到電子羅盤,然後到最近推出的陀螺儀,當然還有我們平時基本已經司空見慣的感應器,比如GPS,映像感應器,等等。種類多樣,讓人目不暇接。不過種類的目不暇接,對於很多普通手機使用者來說,可能就是亂花漸欲迷人眼。問一下你自己,當你準備挑選一款手機,在琳琅滿目的iPhone,Android大軍以及Nokia大軍中徘徊不定,準備仔細對比spec的時候,你真的對這些感應器能帶給你什麼都很清楚嗎?如果不是,那你就是這篇文章的潛在讀者了。
恩,在當潛在讀者之前,你可能還會對感應器的意義感到懷疑,比如你會覺得太trivial了,這玩意不就是拿來打遊戲的麼。其實吧,說白了,這實際上就是目前這玩意最迷人的地方。但我們現在要介紹這東西,總得給它安一些大帽子對不對,得對人類進步,社會高雅有貢獻才能登大雅之堂。你說CCAV要整江蘇衛視,也要安一個”影響社會風氣“的高帽子嘛。你要直接舉起擺明了本質的“搶收視率”的大旗,那就沒人理你了。所以,這裡簡單總結一下學術界對手機+感應器的高帽子:這個組合可以用來組建最大的感應器網路,基於這個網路的應用,可以致力於減少汙染,預防疾病,高效利用能源,最大化個人社交網路,維護社會和諧穩定,還能給每個人發財的機會。
當然,這些高帽子,大家看看就好了,不見得每一條都是對的,就算都是對的,怎麼理解,怎麼實現,也是很複雜的事情,要不哥們我早發財了,對吧。總的來說,基於智能手機+感應器的應用現在確實是越來越多。比如下面幾個項目:
- Diabetes Meter Mates for PC/Phone to Track Trends;
- Fitbit;
- The iCarte – a RFID Sensor for iPhone;
- l5 remote, iPhone remote control;
還有一些有趣的系統原型:
- iPhone + Arduino + Heartrate Monitor = HumanAPI;
- Radar from Nokia in Your Pocket;
Nokia也針對此提出了一個比較高端的概念:
- Nokia Eco Sensor Concept;
基本上,在娛樂,商業和醫學保健領域,感應器的概念已經在逐漸開始滲透了。可以肯定的是,這個市場,主要利潤並不會流入製造商的腰包,而是會流入服務提供者的腰包。你,我,他,每一個移動開發人員,都可能成為這個服務提供者。
好,不再貧嘴了,進入主題,下面簡單介紹一些目前主流手機大多數都配備的感應器,希望能給讀者朋友一些基本的概念,不至於在享受各種智慧型服務的時候不清楚底下的基本原理。下表是一個總結性的表格,包括了除了太簡單的光強感應器以外的別的代表性感應器。現在,我們就來一一介紹。
| |
加速度感應器 |
電子羅盤 |
陀螺儀 |
接近感應器 |
| 功能 |
通過測量三個軸的加速度大小來判斷人體運動。 |
通過測量裝置周圍地磁場的強度和方向來判斷朝向 |
通過測量三個軸的旋轉速率來判斷朝向 |
無須物理接觸就判斷附近物體的存在 |
| 主要局限性 |
受重力幹擾大,瞬時誤差大 |
誤差大,容易受其他磁場和金屬物體影響。主要用於校正其他裝置 |
誤差會累積,長時間讀數的準確性差 |
不通用,大多數只針對幾種材質 |
| 應用 |
活動測量 |
導航 |
導航 |
智能省電 |
1. 接近感應器
接近感應器,顧名思義,就是用來檢測非常接近的目標物體的。這類感應器通常利用電磁場或者靜電場的改變,或者測量發射的電磁波的反射波的改變,來進行判斷。因為手段不一樣,所以接近感應器的目標物體種類也不一樣,有的針對金屬物體,有的針對塑料物體。具體到手機上來說,現在的手機都是使用了新一代的反射光學接近感應器,可以針對較多種表面類型來檢測。過程很簡單,它們會發出人眼看不到的紅外光,一旦手機來電話了,你肯定會接聽,接聽會導致臉部皮膚離感應器很近,這樣只需要用光學探測器檢測從皮膚反射回來的光的總量的變化,接近感應器就檢測到了這個接近。這個感測結果有什麼用呢?一個明顯的例子,就是可以改進手機的節電功能,比如判斷什麼時候自動開啟或關閉顯示屏,鍵盤背光或者觸摸功能,甚至於什麼時候自動關機/待機,取決於裝置的主人是正在通話,正在打字,還是就直接把裝置扔到口袋中了。這些任務,就由接近感應器一肩挑了。
2. 加速度感應器
我個人估計,大家最熟悉的,就是加速度感應器。由於其帶來了更多的直覺遊戲體驗,基本姿態識別和環境感知功能,這類感應器從08年開始井噴,因iPhone、iPod的帶動而紅火,因Wii的整合而大規模部署,並由此帶動了價格的下降。現在如果還有哪款手機或者音樂播放器不配備這個感應器阿,出廠去商店都不好意思和擺在一起的別的裝置打招呼。加速度計的原理很簡單,現在手機裡面基本配備的都是3維線感應器,也就是說,用來測量x,y,z三個軸上的加速力。加速力就是當物體在加速過程中作用在物體上的力,就好比地球引力,也就是重力。用一個簡單的圖例表示:
我為什麼說大家應該都熟悉加速度感應器呢,如果用IBM筆記本的朋友就知道,前IBM,現聯想,的Thinkpad系列筆記本,一直都有硬碟保護功能,這個功能利用的就是通過加速度感應器動態監測出筆記本的震動,並根據這個震動選擇關閉硬碟還是繼續運行。這樣可以最大程度的保護由于振動,比如顛簸的工作環境,或者不小心摔了電腦做造成的硬碟損害,最大程度的保護裡面的資料。類似的一個非常普及的用處就是目前用的數位相機和攝像機裡,用加速度感應器,來檢測拍攝時候的手部的震動,並根據這些震動,自動調節相機的聚焦。現在,我們手頭都有iPhone,Android軍團,Nokia N900等手機,我們至少都知道,加速度感應器可以協助你打遊戲。典型的例子比如Labyrinth2,中文名叫做迷宮滾球。但更廣義地說,加速度感應器在檢測人的即時背景環境資訊上更有用處。比如說,通過三個軸上加速度的變化值的分析處理,手機可以知道你現在是在走路還是騎車還是坐車,是上坡還是下坡,等等。
從理論上講,有了三個軸的加速度立體資訊,我們可以推斷出加速方向的資訊,比如,你加速騎車的方向,或者你乘坐的電梯正在朝上還是朝下。根據初中數學的知識,這些方向和角度都是可以通過向量的加減運算算出來的。可惜的是,我們沒法僅僅依靠加速度感應器來檢測加速方向的角度,也無法得知手機本身的朝向。這是為什麼呢?要解釋這個,就牽涉到一個困擾加速度儀的大問題,就是重力加速度分量的幹擾。
當你的行動裝置處於靜止狀態時,加速度計能告訴你它相對於地平面的朝向,這是沒有問題的; 然而,當裝置動起來的時候,分析朝向就相當複雜了。這種情況下,要分四種類型討論
- 裝置處於水平完全靜止或者勻速運動,這時的它會在垂直方向的軸上輸出一個值,那就是重力加速度,接近9.8 。
- 裝置自由落體的時候,會三個軸都輸出0呢。
- 裝置靜止或者勻速運動狀態時,但沒有處於絕對水平。此時任何軸都可能有輸出值,但都是重力加速度的分量。一旦處於這種狀態,我們可以通過求分量於三個軸的角度來得知手機旋轉的角度。
- 裝置沿著任意方向加速。這時,問題就變複雜了,因為你沒辦法知道裝置目前的方向角度資訊,所以你根本就不知道重力加速度的分量到底是怎麼分解的,於是……你也就不清楚某個軸所報告的數值,哪些是重力加速度部分,哪些是真正的線性加速度部分
除此之外,另一個加速度感應器無能為力的地方,就是純水平旋轉,或者勻速水平變向,見:
這類運動,加速度感應器也只會輸出一個值:g。因為無論是x,y,還是z軸,都沒有真正意義上的加速運動。這會帶來什麼問題呢?好比你帶著一個手機在街上走,沿著一條大街走了一段路,這段路的加速度自然是能被採到的。然後你轉彎,在另一條路上走一段,這一段的加速度也是能被採到的。你回到家,拿出手機看資料,沒錯阿,兩端加速度都有,手機知道我走了兩段路,很智能阿,缺少了什麼東西?你轉彎的動作和角度!這個加速度計是采不到的,而這個資訊,在很多增強現實的智能應用中,卻是非常有用的。
為瞭解決這個問題,人們開始引入其他種類的感應器,比如接下來要介紹的這個陀螺儀。
3. 陀螺儀
陀螺儀代表著另一個重要的,但可能還需要等待一兩年才能騰飛的感應器領域,主要是因為導航級MEMS陀螺儀目前對於手機來說仍然過於昂貴,普通陀螺儀一般廠商都很少看上眼。當然,在iPhone4的帶動下,可以預見的手機軍備競賽,遲早會讓陀螺儀逐漸普及開來。陀螺儀的主要作用,是基於角動量守恒的理論,沿著某個特定的座標軸測量旋轉速率。在使用中,陀螺儀的轉子在高速旋轉時,始終指向一個固定的方向,當運動物體的運動方向偏離預定方向時,陀螺儀就可以感受出來。在現代航空裝備中,飛機駕駛的時候,就是通過多達十多個的陀螺儀來測量機體是否翻滾,以及如何翻滾的。
下面三個圖,是Wiki上關于飛行動力學講解中的,分別表示飛機上pitch, roll和yaw三個角度變化,這三種變化,都是陀螺儀的測量目標。同樣的,在人帶著行動裝置到處走動的時候,行動裝置也會有這三個角度方向上的變化,而監測這種變化,並將該變化以角度變動率的形式輸出,就是行動裝置中三維陀螺儀的任務。需要注意的是,這裡的三個角度,和加速度計的x,y,z三維意義完全不同,不要混淆了。具體的區別,請參考這裡。
陀螺儀的測量是隨時間累計的,要知道當前的角度,只需要將之前所有的輸出數值積分即可。當然,陀螺儀只會輸出當前旋轉的變化值,比如說,如果一架飛機是以60度的傾斜角度徑直飛行,此時陀螺儀的輸出為0,因為當前就沒有機體旋轉。但是,你可以通過之前的輸出累計計算出當前機體傾斜角度是多少。陀螺儀有兩個好處:
- 可測頻率比較大,低可以低到直流訊號,就是0Hz,高可以高到60-70Hz。這個範圍,基本是根據人類的普遍動作頻率所決定的,而且也考慮了很大的餘量。一般的陀螺儀會對採集到的訊號濾波,最終顯示的資料基本是在0-20Hz範圍的。當然,並不是所有陀螺儀都能測量到這個頻率範圍,這個取決於具體的檔次了。
- 在裝置中的位置並不重要。陀螺儀測量的角速度本質上是慣性角速度,所以你把它放在裝置的前端或者後端,輸出的值都會是一樣的,沒有什麼區別。
說完了陀螺儀的優點,說說缺點吧。聰明的讀者在看到陀螺儀計算角度的原理是,肯定能一下就發現陀螺儀的缺陷:這玩意的誤差是累計的!也就是說,某一個時刻你因為不管什麼樣的原因引進了角度的誤差,可能是靜態漂移誤差,可能是讀數誤差,whatever,這個誤差就會一直跟著你,一直在後面的讀數和計算中延續!更有趣的是,陀螺儀有一個臭名昭著的特性:它會隨著時間而漂移!換句話說,每分每秒,它都會自動引入附加的誤差!!時間一長,完了,你關於旋轉度的測量值就變成了中國有關部門:可信度為0 。當然,科技是在發展的,現在很多高端的陀螺儀的隨機誤差很小,普通應用有時候都可以不用管這個誤差。當然,一分錢一分貨,這種高端陀螺儀通常都很貴,很少會採用到手機系統中。
這下好玩了,在一個短的時幅裡,加速度值雜訊特別大,而且還有重力的影響。在長的時幅裡呢,加速度值總體是靠譜的,沒有誤差累計。而在短的時幅裡,陀螺儀很准,因為誤差累計的速度還是很慢的。但在長的時幅裡,陀螺儀就不準得離譜。在某些情況下,加速度感應器可以用來校準陀螺儀,比如裝置完全靜止的時候,和重力相關的方向上,就可以這樣做。那麼,什麼時候不行呢?回頭看我們剛才放的那三個圖,其中yaw的
yaw角度的變化方向是垂直於重力方向的!所以,通過剛才關於加速度的介紹我們知道,在這個垂直於重力的平面上,加速度感應器就沒辦法幫陀螺儀了。
本質上,通過三維加速度感應器+三維陀螺儀的合作,我們等同於擁有了一個六維的感應器,但無處不在的誤差會讓這個六維感應器偶爾感到無助。這時候,我們就需要另外的裝置來幫忙做進一步的校正,這就是下面要介紹的電子羅盤。
4. 電子羅盤
電子羅盤,也稱磁力計,或者電子指南針,是繼加速度計之後,從09年開始井噴的一種感應器。如果我沒記錯的話,最早整合這個感應器的主流智能手機就是Google的G1,從這個意義上講,G1對於磁性感應器市場的帶動作用,可能堪比iPhone對於加速度感應器的意義。這玩意啥用處?顧名思義,就是告訴你南北極方向的。以前古老的那種指南針,或者叫平面羅盤,可以在你放平羅盤後告訴你南極北極在哪,這樣,你就知道了目前你的正前方在地球這個大平面座標軸上的角度了。當然,出於技術的限制,平面羅盤要求你保持水平,如果有傾斜就不準確了。後來出現的電子羅盤,很多是兩軸的,也就是說,等同於電子平面羅盤。在我記憶中,幾年前的openmoko手機就是整合的這種,所以有同樣的限制。現在高端智能手機裡面整合的都是三維電子羅盤,由於加入了傾角感應器,可以對羅盤進行傾斜補償,這樣就克服了這個缺陷,可以輸出三維方向上的角度資訊。
電子羅盤的原理也很簡單,就是我們物理都學過的霍爾效應。當電流通過一個位於磁場中的導體的時候,磁場會對導體中的電子產生一個橫向的洛倫茲力,電荷因此產生偏轉,偏轉的方向垂直於電流方向和磁場方向,而且正電荷和負電荷偏轉的方向相反,從而在導體的兩端產生電壓差。 這個電壓差也叫霍爾電壓,和兩個因素成比例:電流大小和磁場強度。當然這裡有一個要注意的問題,如果磁場的方向是和導體非垂直的話,實際作用的磁場實際上是原來磁場的一個向量分量。如何知道這個磁場分量的角度呢?我們可以用兩個或者多個霍爾效應感應器,相互垂直,這樣的話,磁場的方向就可以通過不同感應器上霍爾電壓的比例值來求出,這個計算過程只需要知道基本的線性代數運算即可。當然,具體的計算中肯定有一些tricky的地方,不過不是關鍵點,所以這裡就暫時不介紹了。所以和陀螺儀不一樣的是,電子羅盤輸出的是角方向值,而陀螺儀輸出的是角方向的加速度。
所以大家應該都明白了,在電子羅盤的應用中,上述的磁場就是地球磁場,電子羅盤測量地球磁場的向量值,然後再轉換並表示在系統座標中。在理想情況下,這樣測出來的方向值也是比較準確的,一旦我知道行動裝置剛開始的方向值,就能通過之後電子羅盤的輸出,求出該裝置接下來的一系列方向改變資訊。
不幸的是,這個世界上的理想情況不存在。在我們經常使用行動裝置的環境中,有時候會存在除了地球以外的別的,未被有效屏蔽的磁場,這個外加磁場會有很大可能干擾電子羅盤的讀書,而讓結果不可信。而且,如果行動裝置周圍有金屬,一旦金屬被磁化,電子羅盤也會受很大的影響。比如說,下面這張圖,是把Nexus One平放在案頭上,旋轉一圈,得到的值對應到座標繫上的
但是,當我們把一把剪刀放在Nexus One上,得到的值變成了
很明顯的,受剪刀材質的影響,所有的值被聚類成了兩類。
很有意思的是,有人根據這個特性,專門做了一個基於Android的金屬監測器,參見這裡,基本原理就是上面這個金屬影響磁場。
回過來說電子羅盤,從上面的講解,我們知道,電子羅盤在實際生活應用中,一是容易受到幹擾,二是受了幹擾你也很難明白為什麼會被幹擾,再加上一些民用電子羅盤固有的缺陷,比如低信噪比,低動態範圍,等等,所以呢,電子羅盤在很多的實際應用中,都是用來做校正作用的,換句話說,人們不會直接採用它的值,但可以參考這個值來校正陀螺儀或者加速度計計算出的角度。因為不管怎麼說,電子羅盤至少誤差是不會隨著時間增長的,也不會受重力的幹擾。
5. 綜合應用
看了上面的介紹,相信大家心裏面也都有了數。這三個玩意,各有神通,也各有缺陷,很多時候還真得相互配合來使用,才能達到預期的效果,真正準確檢測出裝置主人的行動資訊。這個協作的過程比較複雜,但一般就是兩個階段,一是多感應器資訊融合,一是濾波。要知道,進階點的感應器,一個都有幾千美元,行動裝置上自然不會使用很高檔的感應器,同時也就意味著你從行動裝置上得來的數值都會有很多雜訊。
對於一般的app開發人員來說,沒有很多控制論方面的背景知識,所以濾波方面,可能簡單的固定增益濾波方法就可以了。如果你能確定雜訊訊號可以被建模為隨機過程的話,你還可以用卡曼濾波器。這裡要提醒一下,不是所有的雜訊都可以建模為隨機過程,陀螺儀的通常符合,但加速度感應器的通常不符合:很多雜訊是來源於人體的抖動,這個抖動是不能被建模成隨機過程的。
下面這張圖是學術界使用這三種感應器的典型的框圖,供大家參考
說到這裡,目前手機普遍整合的最重要的幾種感應器就都介紹完了。希望能給普通使用者提供一些普及性的知識,也希望能給app開發人員們一些參考。多使用感應器,讓你的app更加智能,你能從中得到的利潤就更多。記住,在移動計算時代,利潤瓜分的主人已經從生產製造者,變成了服務提供者。
參考網址:
1 http://www.motusbioengineering.com/index.htm
2 http://droidsensors.com/2010/02/sensors-for-mobile-phones-more-data-more-services-more-profit/
3 http://mylifewithandroid.blogspot.com/2010/03/sensors.html
本文轉自http://www.kunli.info/2010/07/07/mobile-device-sensor/