專利名稱:一種移動裝置的指南針校準(zhǔn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動裝置的定位系統(tǒng)領(lǐng)域,尤其涉及一種移動裝置的指南針校準(zhǔn)方法。
背景技術(shù):
指南針在目前移動裝置設(shè)備上使用率越來越高,甚至在使用谷歌的android (—種開放源碼操作系統(tǒng),中文譯名安卓)系統(tǒng)的移動裝置上,指南針已經(jīng)成了必備的應(yīng)用軟件。但是在指南針的開發(fā)過程中存在著一個比較重要的問題,就是在每次移動裝置重新開機后,指南針都需要校準(zhǔn)之后才可以正常使用。指南針的方位角是通過磁偏角(offset)計算而來,如圖I所示,所述磁偏角包括三維空間里X、I、z軸的磁偏角基準(zhǔn)值,分別取名為 offset_x> offset_y> offset_z,這些磁偏角基準(zhǔn)值都是通過加速度傳感器獲取,所述磁偏角值會根據(jù)移動裝置校準(zhǔn)的情況實時改變。然后指南針結(jié)合上述的磁偏角值,通過磁感應(yīng)強度計算得到方位角(即移動裝置與地磁北極間的夾角),而校準(zhǔn)指南針就是確定此磁偏角值。現(xiàn)有技術(shù)中實現(xiàn)指南針校準(zhǔn)有兩種方法
方法1,是在用戶的使用過程中,通過指南針自動校準(zhǔn)。方法2,通過用戶手動校準(zhǔn)。這兩種方法都有其明顯的缺點
方法I的缺點由于校準(zhǔn)是移動裝置自動完成的,并且需要在用戶使用過程才能完成,這樣在用戶每次開機后第一次使用指南針時,在剛開始使用的一段時間內(nèi),指南針還未能完成自動校準(zhǔn),此時指南針會變的非常不準(zhǔn),而用戶不知道原因,也不知道什么時候才能校準(zhǔn)完成,從而影響了用戶的使用。方法2的缺點在用戶每次開機后第一次使用指南針時,須提示用戶進行校準(zhǔn),力口速度傳感器在移動裝置上的坐標(biāo)系是三維的,上下方向定義為X軸,左右方向定義為I軸,里外方向定義為Z軸,具體校準(zhǔn)的方法是用戶拿著移動裝置在空中不停的按“C ”軌跡移動。所述“⑴”軌跡是一個具有空間感的環(huán)軌跡,形狀類似于將一個平面圓彎折的立體環(huán)。如果移動裝置按圖I所示放置,那么此時X軸受到的重力加速度大小為I g,而y軸和Z軸受到的重力加速度大小為0g。我們先看X軸的變化,當(dāng)移動裝置在三維空間中按軌跡移動時,移動裝置有從正立到倒立再到正立的過程,在這個過程中X軸受到的重力加速度的變化其實是從Ig到-Ig再到lg,同理看I軸和z軸,當(dāng)移動裝置移動時,移動裝置也有從左側(cè)立到右側(cè)立和從正面朝下到反面朝下的過程,在這個過程中I軸和z軸的值的變化也是在Ig到-Ig之間,而指南針在實際使用中用到的加速度傳感器X、y、z各個軸的值的范圍也是從-Ig到Ig之間,這就是說在移動裝置在三維空間中按“⑴”軌跡移動時,就能通過速度傳感器獲取移動裝置在三維空間中的每個位置對應(yīng)的加速度傳感器的X、I、z軸的磁坐標(biāo)值,從而得出移動裝置的方位角。但是這兩種方法都有一個共同的缺點,就是像“谷歌地圖”這種需要用到指南針的android通用軟件不會等到指南針校準(zhǔn)完成再使用指南針,如果用戶在移動裝置開機后沒有等指南針校準(zhǔn)完成就直接使用“谷歌地圖”,會造成“谷歌地圖”等軟件無法正常使用。 因此,現(xiàn)有技術(shù)有待于完善和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能夠在指南針沒有完成校準(zhǔn)前能基本正常工作的移動裝置的指南針校準(zhǔn)方法。一種移動裝置的指南針校準(zhǔn)方法,包括以下步驟
A,通過加速度傳感器獲取移動裝置的磁偏角;
B,將所述磁偏角儲存在移動裝置的儲存器中;
C,使用指南針時,調(diào)用儲存器中的磁偏角作為初始值;
D,當(dāng)所述磁偏角發(fā)生改變時,判斷其校準(zhǔn)等級是否達(dá)到預(yù)定精度,是則
使用改變后的磁偏角并替換儲存器中磁偏角的初始值,否則繼續(xù)使用原有的磁偏角;
E,再次使用指南針時,返回步驟C。所述移動裝置的指南針校準(zhǔn)方法,其中,所述步驟A中還包括,
Al,將移動裝置在三維空間里沿“①”軌跡移動,通過加速度傳感器獲取移動裝置在X、Y、z軸的加速度值;
A2,通過所述加速度值計算出移動裝置的磁偏角;
所述的移動裝置的指南針校準(zhǔn)方法,其中,在步驟A2中,計算磁偏角使用的算法為 fData
= (acc. X * 9. 8f) / 64 fData[l] = (acc. y * 9. 8f) / 64 fData[2] = (acc. z * 9. 8f) / 64
其中,fData
、fData[l]、fData[2]分別為磁偏角基準(zhǔn)值,acc. x、acc. y、acc. z分別表示從加速度傳感器中取得的X、I、Z軸的加速度值,f代表浮點計算,所述磁偏角由fData
> fData[l]和 fData[2]組成。所述的移動裝置的指南針校準(zhǔn)方法,其中,所述步驟B中還包括,
BI,所述磁偏角以文本形式儲存,所述儲存器為移動裝置的閃存。所述的移動裝置的指南針校準(zhǔn)方法,其中,所述步驟D中還包括,
D1,所述校準(zhǔn)等級分為1、2、3、4四個等級,分別代表不準(zhǔn)、不太準(zhǔn)、較準(zhǔn)和準(zhǔn)確,所述預(yù)定精度為第3等級或第4等級。所述的移動裝置的指南針校準(zhǔn)方法,其中,所述移動裝置為手機。本發(fā)明是通過在移動裝置內(nèi)的儲存器里記錄和儲存初始的方位角,當(dāng)移動裝置的指南針自我校準(zhǔn)達(dá)到一定精度后,再將更新后的方位角記錄和儲存在移動裝置內(nèi)的儲存器里,下次再使用指南針軟件時,直接從儲存器里調(diào)用即可,保證了指南針在啟用時的開始階段也能有較準(zhǔn)的精度,基本使用正常;從而解決指南針啟用時由于方位角不準(zhǔn)確無法使用的問題。
圖I為現(xiàn)有技術(shù)中移動裝置所處位置對應(yīng)的x、y、z磁坐標(biāo)示意圖。
圖2為本發(fā)明一種移動裝置的指南針校準(zhǔn)方法的流程圖。圖3為本發(fā)明一種移動裝置的指南針校準(zhǔn)方法中的移動裝置在出廠前的準(zhǔn)備流程圖。圖4為本發(fā)明一種移動裝置的指南針校準(zhǔn)方法的移動裝置出廠后使用指南針的流程圖。
具體實施例方式本發(fā)明提供了一種移動裝置的指南針校準(zhǔn)方法,為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實例對本發(fā)明進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖2所示,本發(fā)明一種移動裝置的指南針校準(zhǔn)方法的流程示意圖,步驟包括 步驟A,通過加速度傳感器獲取移動裝置的磁偏角;對于如何獲取移動裝置的磁偏角
已是現(xiàn)有技術(shù),無論是指南針應(yīng)用本身還是“谷歌地圖”軟件,要計算最終的方位角(也就是移動裝置的朝向與地磁北極間的夾角),都需要用到移動裝置當(dāng)時所處的位置對應(yīng)的磁偏角,目前市面上大部分移動裝置提供的指南針功能都是能在三維空間使用的,所以一般都會配備一個加速度傳感器與其協(xié)同工作,利用加速度傳感器計算出移動裝置當(dāng)前在三維空間中的位置信息即磁偏角。具體地,所述步驟A中包括,
步驟Al,將移動裝置在三維空間里沿“①”軌跡移動,通過加速度傳感器獲取移動裝置在三維空間里X、I、z軸的加速度值;
步驟A2,通過所述加速度值計算出移動裝置的磁偏角;最后再通過所述 磁偏角計算出移動裝置的方位角。具體計算磁偏角使用的算法為 fData
= (acc. X * 9. 8f) / 64 fData[l] = (acc. y * 9. 8f) / 64 fData[2] = (acc. z * 9. 8f) / 64
其中 fData
、fData[l]、fData[2]分別為磁偏角基準(zhǔn)值,acc. x、acc. y、acc. z 分別表示從加速度傳感器中取得的X、I、z軸的加速度值,f代表浮點計算。一般加速度傳感器都支持標(biāo)準(zhǔn)的I2C接口,因此本發(fā)明中也可以通過I2C接口取得這三個值的。這里示例的加速度傳感器的精度是6位的,所以它對應(yīng)的量程是64,而Ig對應(yīng)的數(shù)值是9. 8,通過上面的換算就可以通過加速度傳感器的值轉(zhuǎn)換成磁偏角基準(zhǔn)值,所述磁偏角由磁偏角基準(zhǔn)值fData
> fData[l]和 fData[2]組成。然后再將磁偏角傳輸?shù)絚ompass算法的校準(zhǔn)接口,compass算法就可以通過磁偏角進行校準(zhǔn)。本發(fā)明中所述校準(zhǔn)接口具體的型號為AKM8975,對應(yīng)的compass算法校準(zhǔn)接口為
Direction6D(fData[]);
校準(zhǔn)后的磁偏角傳輸?shù)紻irection6D (fData[]),從而計算出最終的方位角。當(dāng)然不同的compass算法,標(biāo)準(zhǔn)接口也不一樣。步驟B,將所述磁偏角記錄儲存在移動裝置的儲存器中;具體可以文本形式儲存,所述儲存器為移動裝置的閃存。之所以要以文本文件的形式保存到文件系統(tǒng)中,是因為文件都是放在移動終端的flash中,而flash是非掉電易失的存儲介質(zhì),這樣移動終端關(guān)機或重啟后保存在文件中的磁偏角值都不會消失或改變,而文件系統(tǒng)的操作,即如何創(chuàng)建文件,把磁偏角值寫到文件中,讀取及更新文件中的磁偏角值都可以用標(biāo)準(zhǔn)的C語言中的文件處理來完成。 步驟C,使用指南針時,直接調(diào)用儲存器中的磁偏角作為初始值;所以即使指南針沒有經(jīng)過校準(zhǔn)也能保證基本正常工作,因為我們在開機之前就已經(jīng)給了它一個合理的磁偏角。這樣就基本解決了移動終端出廠之后,用戶第一次開機并使用指南針時,指南針不能使用的問題了。步驟D,當(dāng)所述磁偏角發(fā)生改變時,判斷其校準(zhǔn)等級是否達(dá)到預(yù)定精度,是則使用改變后的磁偏角,并替換儲存器中的磁偏角初始值,否則繼續(xù)使用原有的磁偏角;此處所說的改變可因移動裝置自身校準(zhǔn)而進行的改變,因此隨著移動終端不斷地在空中畫“c ”或者其他的移動,指南針的校準(zhǔn)精度就會逐漸提高,當(dāng)其精度到達(dá)預(yù)定值時,具體可將指南針的校準(zhǔn)等級分為1、2、3、4四個等級,指南針在校準(zhǔn)等級I時不準(zhǔn)、在校準(zhǔn)等級2時是不太準(zhǔn)的,在校準(zhǔn)等級3時較為準(zhǔn)確,而到校準(zhǔn)等級4時是最為準(zhǔn)確的,當(dāng)校準(zhǔn)等級為I時,offset_x,offset _y,offset _z的初始值都為4096,4096是指南針剛剛啟用時所用的默認(rèn)值,此時的精度是十分不準(zhǔn)的。本發(fā)明中,所述預(yù)定精度定為第3等級或以上。當(dāng)符合所述的預(yù)定精度,移動裝置就會使用更新后的磁偏角并替換原有的磁偏角記錄儲存在儲存器中,否則繼續(xù)使用原有的磁偏角;畢竟移動終端的使用環(huán)境不固定,用之前預(yù)設(shè)的磁偏角值未必更好,所以當(dāng)compass自身的校準(zhǔn)達(dá)到一定的精度時,就沒必要再用之前預(yù)設(shè)offset值了。如圖3所示,為本發(fā)明一種移動裝置的指南針校準(zhǔn)方法中的移動裝置在出廠前的準(zhǔn)備流程圖;上述的校準(zhǔn)等級也可以應(yīng)用在移動裝置在出廠前的調(diào)試中使用,在開始使用compass (指南針)時,對compass進行校準(zhǔn),并觀察其校準(zhǔn)等級,當(dāng)達(dá)到第3等級時,即level3,就記錄此時的offset值,作為出廠后第一次使用compass時的offset的初始值,最后就關(guān)閉compass。步驟E,再次使用指南針時,返回步驟C。即將作為下次啟用指南針時的初始化值,此時指南針或“谷歌地圖”通過直接使用記錄在儲存器中的磁偏角值計算出的方位角都能基本等達(dá)到用戶的要求。如圖4所示,為本發(fā)明一種移動裝置的指南針校準(zhǔn)方法的移動裝置出廠后使用指南針的流程圖;當(dāng)開始使用compass時,就判斷是否有offset值保存在移動裝置儲存器內(nèi)的文件中,是則直接使用文件中的offset值作為offset值的初始值,否的話就像出廠前調(diào)試一樣,用調(diào)試時得到的一組校準(zhǔn)后的offset值作為offset的初始值;移動裝置在使用過程中,會不斷地進行自我校準(zhǔn),此時就等待compass算法校準(zhǔn)完成,校準(zhǔn)完成后,達(dá)到預(yù)定精度,就將校準(zhǔn)完成后的offset值替換原先的初始值,關(guān)閉compass前,則將最新最準(zhǔn)確的offset值保存在文件中,最后關(guān)閉compass,下次使用時再如此循環(huán)。本發(fā)明中所述移動裝置可為手機。本發(fā)明的方法的核心思想是結(jié)合指南針本身的自動校準(zhǔn)算法加上額外的軟件補償來完成指南針的自動校準(zhǔn),為移動終端找到一個較為合理的初始化offset值。特別是解決開機后在指南針完成校準(zhǔn)前不能使用“谷歌地圖”的問題。
應(yīng) 當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進或變換,而所有這些改進和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護范圍。
權(quán)利要求
1.一種移動裝置的指南針校準(zhǔn)方法,包括以下步驟 A,通過加速度傳感器獲取移動裝置的磁偏角; B,將所述磁偏角儲存在移動裝置的儲存器中; C,使用指南針時,調(diào)用儲存器中的磁偏角作為初始值; D,當(dāng)所述磁偏角發(fā)生改變時,判斷其校準(zhǔn)等級是否達(dá)到預(yù)定精度,是則使用改變后的磁偏角并替換儲存器中磁偏角的初始值,否則繼續(xù)使用原有的磁偏角; E,再次使用指南針時,返回步驟C。
2.如權(quán)利要求I所述移動裝置的指南針校準(zhǔn)方法,其特征在于,所述步驟A中還包括, Al,將移動裝置在三維空間里沿“①”軌跡移動,通過加速度傳感器獲取移動裝置在X、Y、z軸的加速度值; A2,通過所述加速度值計算出移動裝置的磁偏角。
3.如權(quán)利要求2所述的移動裝置的指南針校準(zhǔn)方法,其特征在于,在步驟A2中,計算磁偏角使用的算法為fData
= (acc. X * 9. 8f) / 64fData[l] = (acc. y * 9. 8f) / 64fData[2] = (acc. z * 9. 8f) / 64 其中,fData
> fData[l]> fData[2]分別為磁偏角基準(zhǔn)值,acc. x、acc. y、acc. z 分別表示從加速度傳感器中取得的x、y、z軸的加速度值,f代表浮點計算,所述磁偏角由fData
> fData[l]和 fData[2]組成。
4.如權(quán)利要求I所述的移動裝置的指南針校準(zhǔn)方法,其特征在于,所述步驟B中還包括, BI,所述磁偏角以文本形式儲存,所述儲存器為移動裝置的閃存。
5.如權(quán)利要求I 4任一所述的移動裝置的指南針校準(zhǔn)方法,其特征在于,所述步驟D中還包括, D1,所述校準(zhǔn)等級分為1、2、3、4四個等級,分別代表不準(zhǔn)、不太準(zhǔn)、較準(zhǔn)和準(zhǔn)確,所述預(yù)定精度為第3等級或第4等級。
6.如權(quán)利要求I所述的移動裝置的指南針校準(zhǔn)方法,其特征在于,所述移動裝置為手機。
全文摘要
本發(fā)明公開了一種移動裝置的指南針校準(zhǔn)方法,本發(fā)明通過在移動裝置內(nèi)的儲存器里記錄和儲存方位角,當(dāng)移動裝置的指南針自我校準(zhǔn)達(dá)到一定精度后,再將更新后的方位角記錄和儲存在移動裝置內(nèi)的儲存器里,再次使用指南針軟件時,就直接從儲存器里調(diào)用更新后的方位角進行運算,保證了指南針在啟用時的開始階段也能有較準(zhǔn)的精度,基本使用正常;從而解決指南針啟用時由于方位角不準(zhǔn)確無法使用的問題。
文檔編號G01C17/38GK102620725SQ20121007027
公開日2012年8月1日 申請日期2012年3月16日 優(yōu)先權(quán)日2012年3月16日
發(fā)明者吳奇峰 申請人:惠州Tcl移動通信有限公司