2017-01-11 8 views
0

Androidスマートフォンの加速度計を使用して各軸の車両の加速度を測定するアプリを作成しています。私は何とか、車のコーディネーションシステムに電話の測定コーディネーションシステムを回転させる必要があります - ドライバーが電話をホルダーに入れることができるように - そして、電話は車にいくらか異なる回転を持ちます。Androidの2つのアクセラレーションベクトル間の3D回転を計算する

車の調整システムと一致するように電話を保持するようにユーザーに指示するキャリブレーションプロセスから始めました。そのため、TYPE_GRAVITYセンサーのX、Y、Z重力加速度値を保存します。次に、ユーザーに電話をかけてTYPE_GRAVITYセンサーのX、Y、Zの重力加速度値を保存するように指示します。

これらの2つのベクトルの関係を調べるには、TYPE_LINEAR_ACCELERATIONX、Y、Zデータを車の座標系に合わせて修正(回転)するために使用する必要があります。

答えて

0

ちょうど重力センサーを使用すると、あなたが望むものを計算するために回転軸が1つ不足します。

あなたの携帯電話が垂直に保持されていると想像してください、加速度計はあなたの方向を電話機の下に表示します。垂直軸を中心に回転させると、加速度計と同じ結果が得られます。これは、この方法で垂直軸の周りに回転を得ることができないことを意味します。

解決策の1つはジャイロスコープを使用することです。これは携帯電話の回転を全面的に行いますが、アプリのハードウェア要件を増加させます。

もっと良い解決策は、較正プロセス全体を取り除くことです。車はほとんど直線的に移動しますが、時にはサイド方向の加速度が得られるので、数秒間読み値をスキャンして「主軸」と「側」を見つけることができます。

さらに、キャリブレーションプロセスは、電話機の設置中のユーザーの精度にも依るため、期待通りに機能しない可能性があります。

関連する問題