在我當前的項目中,我遇到了有關Core Motion CMAttitude提供的四元數的問題。我將iPhone 5(iOS 6.0.1)放在明確的起始位置。然後,我開始快速移動設備,就像在快速步調遊戲中一樣。當我在10-30秒後返回起始位置時,報告的偏航角度與起始位置相差10-20度(大部分時間≈11°)。快速移動後漂移偏航角
我用舊的(可悲的是不再可用)Core Motion茶壺樣本來驗證效果。歐拉角的記錄是從CMAttitude直接讀取:
NSLog(@"pitch: %f, roll: %f, yaw: %f", attitude.pitch * 180/M_PI, attitude.roll * 180/M_PI, attitude.yaw * 180/M_PI);
,我發現這個在不同時間在不同的工廠生產兩種不同的iPhone 5的設備。但真奇怪的是,我的運行iOS 5.1.1的iPhone 4按預期工作。在我看來,這是一個iOS bug,我已經提交了一個bug報告,但另一方面,我很難想象沒有人會發現它。我懷疑它可能與重新設計的Core Motion API有關。從版本5開始,磁力計(指南針)也被用於傳感器融合。控制檯顯示,從locationd偏置估計被提供給CoreMotion:
locationd[41] <Notice>: GYTT inserted: bias,-0.196419,1.749323,-1.828088,variance,0.002644,0.004651,0.002527,temperature,31.554688
我的問題(S):是否有機會使用設備到運動時阻止磁力計讀數?我嘗試停用位置服務,但它不影響Core Motion。如果不可能,替代/解決方法是什麼,基於加速度計的重力估計?
PS:由於我們面對的是基於四元數模型,這是關係到萬向鎖
編輯不: 做一些更多的測量它似乎很清楚,只有偏航受到影響後。無論起始位置如何,在偏航漂移的情況下,俯仰和側傾顯示偏差在公差內(< = 1°)。 CMDeviceMotion.gravity
看起來也很乾淨。
編輯(2): 我可以重現最新的XCode版本附帶的MotionGraphs示例的問題。偏航圖可重現地偏離原點。
Upvoted,一個有趣的問題!是的,我對磁力計也有不好的經驗:它滯後(引起偏見!)和嘈雜地獄。我也注意到,很容易飽和陀螺儀,尤其是快速移動。有沒有辦法排除犯罪嫌疑人的飽和? – Ali
@Ali我不知道一個方法。但另一方面,我的iPhone 4的iOS 5.1.1與之前安裝的iOS 4.3一樣也很有魅力。在黑暗中拍攝,但我認爲應該責怪iOS 6。 – Kay
我希望有人會知道答案,對不起,我不能幫助:( – Ali