私は基本的にコンパスを作成するためにTYPE_MAGNETIC_FIELD/TYPE_ACCELEROMETERセンサーを使用しています。Androidセンサーの回転角度
私は軸を交換するgetRotationMatrix、その後、(いつもランドスケープ)remapCoordinateSystemを呼び出し、その後getOrientationはその後、私は軸を取り、私は現在、インデックス0を必要とし、その後、私はtoDegreesを呼び出してから、私はそれを0から360の範囲で作る
ヴァル=(val + 360)%360;
私は検索の神(google)に行き、ローパスフィルターtheresを割り振って、ほとんどがあまりうまく動作しないが、私はほとんど動作するものを見つけた。
newval = oldVal + ALPHA *(newval- oldVal);
アルファ程度0.2-0.5
だから今、それはすぐに0にジャンプし、それは181(-179回転)に行くが、私は、フィルタを削除する場合、それはこれをしない180(回転-180)で、 。
フィルタに問題がありますか、これをどのように修正できますか?
アンドロイド2.2ありませんのでTYPE_LINEAR_ACCELERATIONまたはTYPE_ORIENTATION(非推奨)
おかげ
このような問題に直面した場合、問題を含む期間にわたってフィルタに入力されたサンプルとフィルタ出力の両方を記録することが有益です。結果を表にフォーマットして熟考すれば、ラップアラウンドや本当に野生のサンプルデータで問題があるかどうかを理解するのに役立ちます。それを修正することはもう少し難しいかもしれません...問題について考えてみると、スプレッドシートは "もしあれば..."というシナリオを立てるのに役立ちます。 –
こんにちは。私はそれをエクセルに追加し、180度後に0にジャンプすると判断したグラフを作成しました。ホワイトボード上に描画しても、それは理解できません。まず、私はそれがそれを乱して小数のためだと思った...ありがとう – Pintac
彼らは180を少し超えて回転されたとき、入力はどのような価値がありますか? 180の後に期待される次の値は何ですか? 180と-180が同等である場合、問題は、フィルタがこれらの2つの値をゼロにすることです。 –