科學研究

Scientific Research
VR技術研究—9軸融合算法—磁力計校準(一)
2018

05/15

16:09

475人閱讀

發布者:admin

分享

對于VR的驅動層而言,一個很重要的工作就是融合加速度計、陀螺儀、磁力計的數據。一般而言,采用IMUupdate算法融合加速度計和陀螺儀就可以得到比較準確的數據了,在大多情況下使用也就足夠了。但是IMUupdate算法的一個缺陷是它不能長時間得到準確的Yaw角,在經過一定時間后Yaw角會隨著陀螺儀積分誤差的增大而偏差越來越大。那么如果出現這種情況,用戶在玩游戲的時候會出現這么一種情況:

剛開始的時候用戶正對著屏幕玩游戲剛剛好,但是半個小時候用戶不得不朝著左邊或者右邊才能正常的玩游戲。

這種情況稱為Yaw角漂移,也就是頭顯在靜止的時候,Yaw持續增大的情況。為了解決這個問題需要融合磁力計的數據。磁力計是利用地球的磁場進行定位,磁力計能夠提供相對準確的方向,例如HMC5883芯片的廠商就號稱他們的磁力計辨識度能到1°~2°。這個誤差看起來是很小,實際上如果單純的應用到游戲中,你會發現屏幕在不停的抖。但是依靠磁力計和陀螺儀的信息,我們可以通過一定的算法融合得到不會漂移的準確數據。我們融合磁力計常用的算法是Madgwick寫的AHRSupdate算法。其實IMUupdate算法是AHRSupdate算法的一個閹割版。

AHRSupdate算法如下:

ex = (ay*vz- az*vy) + (my*wz- mz*wy); ey = (az*vx- ax*vz) + (mz*wx- mx*wz); ez = (ax*vy- ay*vx) + (mx*wy-my*wx);

  • 1
  • 2
  • 3
  • 4

IMUupdate算法如下:

ex = (ay*vz- az*vy); ey = (az*vx- ax*vz); ez = (ax*vy- ay*vx);

  • 1
  • 2
  • 3

使用IMUupdate算法一直都很好角度也非常準確,除了Yaw角有些漂移。AHRS算法折騰了好一段時間,雖然融合了磁力計再也不會出現漂移情況了,但是出現了角度不匹配的情況。

角度不匹配:當我們旋轉頭盔一定的角度后立即停下來,但是Yaw角并不會隨著轉動停止而立即停止,而是繼續緩慢變化一小會兒然后才停止變化。

剛開始的是我一直不知道是什么原因,以為是轉動速度過快導致陀螺儀不能檢測到過高的轉動速度。后來我單純對比了IMUupdate算法進行測試,發現完全不會出現這種情況。說明是磁力計融合得到的數據和陀螺儀計算的數據不匹配,產生了這個緩慢校正的過程。當然,在短期內陀螺儀是遠遠比磁力計要準確的,說明磁力計的數據存在問題。 
為了解決這個問題,首先先輸出磁力計原始數據到文本中。然后用matlab進行讀取,這里我讓VR頭顯在平面旋轉一圈,得到完整一圈的磁力計數據。

%加載數據文件到matlab的workspace中loaddata.txt;%讀取x軸數據x = data(:,1);%讀取z軸數據z = data(:,3);%畫出圖像plot(x,z);

相關推薦
聯系我們
  • 合作電話:0791-87193886(轉短號611683)
  • 公司地址:江西省南昌市紅谷灘新區九龍大道1388號VR產業基地一號樓6樓
關注我們
友情鏈接:
Copyright ? 2018 南昌虛擬現實研究院 版權所有 ( 備案號: 贛ICP備18004577號-1 ) 技術支持:云端科技
欧美av电影,欧美av旡码高清在线