亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以補償傾斜和俯仰的Android指南針

可以補償傾斜和俯仰的Android指南針

神不在的星期二 2019-12-25 10:53:03
我正在嘗試在Android手機(Nexus 4)上制作一個應用程序,該應用程序將在模型船中使用。我添加了低通濾波器,以濾除傳感器的抖動。但是,指南針僅在手機平放時才穩定。如果我將其向上傾斜(例如翻開噓聲的一頁),則指南針的方向會偏離-多達50 *。我已經使用Sensor.TYPE_MAGNETIC_FIELD和Sensor.TYPE_GRAVITY和Sensor.TYPE_ACCELEROMETER進行了嘗試,效果是相同的。我已經使用了這里提到的解決方案以及其他許多地方。我的數學不是很好,但這肯定是一個常見問題,令我感到沮喪的是,沒有API可以處理它。我已經研究了3天,但仍未找到任何解決方案,但是當我使用Catch的Compass時,無論手機傾斜了多少,他們都保持穩定。所以我知道這是有可能的。我要做的就是創建一個指南針,如果手機指向北,則指南針將向北顯示,并且當手機沿任何其他軸(滾動或俯仰)移動時,指南針不會跳來跳去。在我不得不放棄我的項目之前,誰能幫忙。
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

好吧,以為我解決了。


我沒有使用Sensor.TYPE_ACCELEROMETER(或TYPE_GRAVITY)和Sensor.TYPE_MAGNETIC_FIELD,而是將Sensor.TYPE_ROTATION_VECTOR用于:


float[] roationV = new float[16];

SensorManager.getRotationMatrixFromVector(roationV, rotationVector);


float[] orientationValuesV = new float[3];

SensorManager.getOrientation(roationV, orientationValuesV);

無論手機的傾角或傾角如何,這都會返回穩定的方位角。


如果您在此處查看表1下方的Android運動傳感器,它表示ROTATION傳感器非常適合指南針,增強現實等。


當您知道如何時,就這么簡單。...但是,我還需要對它進行一段時間的測試,以了解是否引入了錯誤。


查看完整回答
反對 回復 2019-12-25
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

這是獲得磁航向而不受俯仰或側傾影響的另一種方法。


private final static double PI = Math.PI;

private final static double TWO_PI = PI*2;


 case Sensor.TYPE_ROTATION_VECTOR:

                float[] orientation = new float[3];

                float[] rotationMatrix = new float[9];


                SensorManager.getRotationMatrixFromVector(rotationMatrix, rawValues);

                SensorManager.getOrientation(rotationMatrix, orientation);


                float heading = mod(orientation[0] + TWO_PI,TWO_PI);//important

                //do something with the heading

                break;




private double mod(double a, double b){

        return a % b;

    }


查看完整回答
反對 回復 2019-12-25
  • 3 回答
  • 0 關注
  • 683 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號