Android加速度計の精度(慣性ナビゲーション)


109

私は、Androidフォンの慣性ナビゲーションシステムの実装を検討していましたが、加速度計の精度と一定の読み取り値の変動を考えると難しいと思います。

まず、電話を平らな面に置き、X方向とY方向に1000個の加速度計の読み取り値をサンプリングしました(表に平行なので、これらの方向に重力は作用していません)。次に、これらの測定値を平均し、この値を使用して電話を調整しました(後続の各測定値からこの値を差し引きます)。

次に、システムを再びテーブルに置き、X方向とY方向に5000の加速度計の読み取り値をサンプリングして、システムをテストしました。キャリブレーションを考えると、これらの加速度は各方向で(ほぼ)0になるはずです。ただし、これは当てはまりません。5000回の反復の合計加速度は0に近くありません(各軸で平均約10)。

私のコードを見ないでこれに答えるのは難しいかもしれませんが、より一般的な意味で...

これは、携帯電話(HTC Desire S)での加速度計の読み取り値の不正確さの単なる例ですか、それともコーディングでエラーが発生した可能性が高いですか?


1
webvr-polyfillは素晴らしいインスピレーションの源です:github.com/borismus/webvr-polyfill/tree/master/srcそれらが加速度計データを使用してVRセンサーをどのようにポリフィルするかを見てください:github.com/borismus/webism-polyfill/blob/master / src /…
SC

:また、ジャイロスコープと考えていることを質問stackoverflow.com/questions/8264518/...
チロSantilli郝海东冠状病六四事件法轮功

回答:


128

線形加速度を2回積分することで位置を取得します、エラーは恐ろしいものです。実際には役に立たない。

ここで説明する理由(グーグルテックの話)23:20。私はこのビデオを強くお勧めします。

問題を引き起こすのは加速度計ノイズではなく、ジャイロホワイトノイズです。サブセクション6.2.3エラーの伝播を参照してください。(ちなみに、ジャイロスコープも必要になります。)

屋内測位に関して、私はこれらが有用であるとわかりました:

シグマポイントカルマンスムーザーを使用したRSSIベースの屋内定位および追跡

靴に取り付けられた慣性センサーによる歩行者の追跡

単一の加速度計を使用して歩数計のパフォーマンスを向上させる

これらのメソッドが実際のアプリケーションでどのように機能するのか、またはそれらを素晴らしいAndroidアプリに変換する方法はわかりません。

同様の質問はこれです。

更新:

明らかに、上記のオリバーJ.ウッドマンよりも新しいバージョン、「慣性航法入門」、彼の博士論文:

屋内環境での歩行者の位置特定


2
これはかなり前のことだと思いますが、フォローアップの質問があります。Android JBのカメラには「パノラマ」機能があり、スマートフォンを動かしたり、回転させたり、1つの軸に沿って直線的に動かしたりして、パノラマ写真を撮ることができます。これを行うには、電話の位置を比較的正確に追跡する必要があります。少なくとも、この回答がリンクしているビデオで言及されている20cm / sエラーよりも優れています。どうやってやるの?慣性追跡の品質を向上させる方法はありますか?それとも、カメラのみを使用して巧妙な画像処理を行うのですか?
トム・

1
@トム私は後者を信じています、電話は純粋に画像処理アルゴリズムによって写真を一緒に連結します。パノラマ写真を作成するために、携帯電話がその位置を追跡する必要があると思いますか?90年代の普通のカメラでそれを行うことは可能でした。明らかに、当時のカメラには加速度計がありませんでした:)もちろん、写真は普通のPCで連結されました。しかし、このための位置は必要ありません。画像処理アルゴリズムで十分です。お役に立てれば。
Ali

これは、手動で写真を撮り、その後ステッチして、後で実行する古いジョブとはかなり異なります。どういうわけか、リアルタイムでその位置を追跡します。デモなしで説明するのは少し難しいです。手動で写真を撮る必要はありません。別の写真を撮るのに十分な距離に移動したときに、電話が判断します。写真を撮っている間、下部に小さなバーがあり、パノラマのプレビューが表示されます。カメラを下に向けすぎると(たとえば)、ビープ音が鳴り、上向きの矢印が表示されて上に戻す必要があることを示します。
トム・

2
実際には、画像処理を使用しているようです。パノラマを開始し、カメラの前で手を振ると、位置追跡システムが非常に混乱します。
トム・

@トム大丈夫。私はそれが主に画像処理を使用すると思います(最後のコメントもそれを示唆しています)が、方向の追跡(位置ではない)と組み合わせられる可能性があります。
アリ

19

私は大声で考えているだけで、まだAndroid加速度計APIを使ったことがありません。

まず第一に、伝統的に、加速度計からナビゲーションを取得するには、6軸の加速度計が必要になります。X、Y、Zの加速度だけでなく、回転Xr、Yr、Zrも必要です。回転データがないと、デバイスがその姿勢を決して変更しないと想定しない限り、ベクトルを確立するのに十分なデータがありません。これはかなり制限されます。とにかくTOSを読む人はいません。

ああ、あなたはINSが地球の自転とともにドリフトすることを知っていますよね?それもある。1時間後、あなたは不思議なことに15°の坂を上って宇宙に登っています。これは、あなたがその位置を長く維持できるINSを持っていることを前提としています。これは、電話ではまだできません。

ナビゲーションに加速度計を使用するより良い方法-3軸加速度計を使用する場合でも-可能な場合は、GPSに接続してINSを調整することです。GPSが不足している場合、INSはうまく機能します。樹木に近づきすぎたため、GPSが突然3ブロック離れてあなたを撃ちます。INSは素晴らしいものではありませんが、少なくとも流星に襲われなかったことがわかります。

あなたができることは、電話の加速度計データとその多くをログに記録することです。価値のある週のように。それを良い(私は本当に良い)GPSデータと比較し、データマイニングを使用して、加速度計データと既知のGPSデータ間の傾向の相関関係を確立します。(上級者向けのヒント:GPSアルマナックを確認して、優れたジオメトリと多数の衛星を使用する日を確認してください。衛星が4つしかなく、それだけでは十分でない日もあります)できることは、人がスマートフォンをポケットに入れて歩いていると、加速度計データは非常に特定のパターンを記録します。データマイニングに基づいて、そのユーザーと一緒にそのデバイスのプロファイルを確立し、それにGPSデータが含まれているときにそのパターンがどのような速度を表すかを確立します。ターン、階段の上り、座っていることを検出できるはずです(0速度時間へのキャリブレーション!)およびその他のさまざまなタスク。電話がどのように保持されているかは、完全に別個のデータ入力として扱われる必要があります。データマイニングに使用されているニューラルネットワークの匂いがします。つまり、入力の意味が分からないものです。アルゴリズムはパターンの傾向を探すだけで、実際のINSの測定値には注意を払いません。それが知るすべてはhistorically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now.そして、それに応じてピースを前方に移動します。携帯電話をポケットに入れるだけで4つの異なる方向、ポケットを切り替えると8つの方向に向けられる可能性があるため、完全にブラインドであることが重要です。また、スマートフォンを保持する方法もたくさんあります。ここでは多くのデータについて話しています。

あなたは明らかに多くのドリフトをまだ持っているでしょうが、あなたが歩くのをやめたときにデバイスがそれを知っており、位置ドリフトが永続的ではないので、私はあなたがこの方法でもっと幸運になると思います。履歴データに基づいて、あなたが静止していることを認識しています。従来のINSシステムにはこの機能はありません。ドリフトは、将来のすべての測定と化合物に対して指数関数的に持続します。不正確な正確さ、または定期的な間隔で確認する2次ナビゲーションがあることは、従来のINSでは絶対に不可欠です。

各デバイス、および各人は、独自のプロファイルを持っている必要があります。多くのデータと多くの計算です。誰もがさまざまな速度で、さまざまなステップで歩き、スマートフォンをさまざまなポケットに入れています。確かに、これを現実の世界で実装するには、サーバー側で数の処理を行う必要があります。

最初のベースラインにGPSを使用した場合、GPSの問題の一部として、時間の経過とともにそれ自体が移行する傾向がありますが、永続的なエラーではありません。1つの場所に受信機を置き、データを記録します。WAASの修正がない場合は、100フィート離れたランダムな方向にドリフトする位置フィックスを簡単に取得できます。WAASでは、おそらく6フィートまで。実際には、少なくともANNのアルゴリズムをダウンさせるために、バックパックのサブメーターRTKシステムで運が良かったかもしれません。

あなたはまだ私の方法を使ってINSで角度ドリフトを持っているでしょう。これは問題です。しかし、これまでにn人のユーザーの間で何週間にもわたってGPSとINSのデータを注ぐANNを構築し、実際にそれをこの時点まで機能させていれば、明らかにこれまで大きなデータを気にする必要はありません。その道を進み続け、角度ドリフトを解決するのに役立つより多くのデータを使用します。人々は習慣の生き物です。私たちは、歩道の上やドアを通って階段を上るなど、ほとんど同じことをします。高速道路を横切ったり、壁を通り抜けたり、バルコニーから降りたりするようなクレイジーなことはしません。

それで、あなたがビッグブラザーからページを取り、人々がどこに行っているかに関するデータを保存し始めたとしましょう。人が歩くと予想される場所のマッピングを開始できます。ユーザーが階段を上るようにすると、彼女が階段を上る前と同じ階段のふもとにいることは間違いありません。1000回の反復といくつかの最小二乗法による調整の後、データベースは、これらの階段がどこにあるかを非常に正確に認識します。これで、人が歩き始めるときに角度ドリフトと位置を修正できます。彼女がそれらの階段にぶつかったり、そのホールを下ったり、歩道を下ったりすると、ドリフトを修正できます。データベースには、人がそこを歩く可能性、またはこのユーザーが過去にそこを歩いた可能性によって重み付けされたセクターが含まれます。空間データベースはこれを使用して最適化されていますdivide and conquer意味のあるセクターのみを割り当てます。それは、レーザー装備のロボットが黒い画像で始まり、すべての壁がどこにあるかを照らすことで、すべての回転をとることによって記憶の迷路を描くMITプロジェクトのようなものです。

トラフィックの多いエリアはウェイトが高くなり、誰もウェイトが0になったエリアはありません。交通量の多いエリアほど解像度が高くなります。基本的には、誰もが行ったことのあるすべての場所のマップになり、それを予測モデルとして使用します。

この方法を使って、劇場のどの席に着いたかを判断できても驚くことではありません。劇場に行く十分なユーザーと十分な解像度が与えられれば、劇場の各行と、各行の幅のデータをマッピングすることになります。訪問する人が多いほど、その人の所在を予測できる忠実度が高くなります。

また、この種のものに関する現在の研究に興味がある場合は、GPS Worldマガジンの(無料)サブスクリプションを取得することを強くお勧めします。毎月私はそれをオタクにしています。


「GPSと連携して、可能な限りINSを調整する必要があります。GPSが不足している場合、INSはうまく機能します。」私が理解しているように、これがカルマンフィルタリングの目的です。それぞれの方法の長所を組み合わせて、他の方法の弱点を打ち消します
エンドリス

8

単位を含めるのを忘れたため、オフセットがどれほど大きいかわかりません。(「各軸で約10」はあまり言いません。:P)とはいえ、ハードウェアの不正確さが原因である可能性があります。

加速度計は、重力に対する電話の向きを決定したり、ジェスチャーを検出したり(電話を振ったりぶつけたりするなど)には適しています。

ただし、加速度計を使用して推測航法を実行しようとすると、多くの複合エラーが発生します。それ以外の場合、加速度計は非常に正確である必要がありますが、これは一般的なユースケースではないため、ハードウェアメーカーが最適化しているとは思えません。


答えてくれてありがとう。加速度計は、静止時にX軸とY軸の両方で約-0.8 ms ^ -2を読み取るため、これをオフセットとして使用しました。「10前後」ビットとは、センサーからの単一軸の各加速度を5000回以上繰り返しても、合計が約0 ms ^ -2にならないことを意味します(オフセットの上下で均等に変動した場合のように)値)ですが、代わりに一方向の加速度を記録する傾向があり、位置を見つけるために二重積分した後、電話が1分あたり約3m移動するときに機能しました。
woodstock365 2011年

航空航法用語「推測航法」を使用する場合は+1。推測航法は、INSよりもカメラでのナビゲートに適しています。
RyanJMcGowan 2013

7

Androidの加速度計はデジタルであり、同じ数の「バケット」を使用して加速度をサンプリングします。たとえば、256のバケットがあり、加速度計が-2gから+ 2gまでを検出できるとします。これは、出力がこれらの「バケット」に関して量子化され、いくつかの値のセットをジャンプすることを意味します。

Androidの加速度計を調整するには、1000ポイントをはるかに超えるサンプルをサンプリングし、加速度計が変動している「モード」を見つける必要があります。次に、出力の変動量によってデジタルポイントの数を求め、それをフィルタリングに使用します。

モードと+/-の変動を取得したら、カルマンフィルター処理をお勧めします。


1
校正方法を探していました。あなたの提案は私が必要としているもののようです。確認するだけです。モードを見つけたら、それが0.5だと言います。「出力が変動する量からデジタルポイントの数を見つけて、それをフィルタリングに使用する」ことはできませんでした。もう少し詳しく教えてください。
Nazerke 2013年

1
加速度計に256個の出力ポイントがあり、測定値間で0.015m / s ^ 2変動するとします。デバイスをテーブルの上に置くと、出力が0.015m / s ^ 2の倍数でも変動する可能性があります。0 +/-(X * 0.015)の読み取り値を取得するとします。X(偶数)を見つける必要があります。たとえば、私のXが3の場合があります。この場合、加速度計の読み取り値の0.045 m / s ^ 2未満の変化は無視します
Alex Stone

Androidフォンの加速度計はまだそれほど良くありません。
Techsin 2013年

4

これはかなり古いと思いますが、当面の問題は、与えられた回答のいずれにも対処されていません。

表示されているのは、重力の影響を含むデバイスの線形加速度です。スマートフォンを平らな面に置くと、センサーは重力による加速度を報告し9.80665 m/s2ます。これにより、表示されている10が得られます。センサーは不正確ですが、それほど不正確ではありません!役立つリンクとセンサーの情報については、こちらをご覧ください。


17
いいえ-「X方向とY方向の読み取り値(表に平行なので、これらの方向に重力が作用しない)」という質問を誤解していると思います。9.8 / s2はZ軸上にあります。
ティーポット

0

X方向とY方向の加速度計の読み取り値(この場合は完全にハードウェアノイズ)が、平均値の周りに正規分布を形成すると仮定しています。どうやらそうではありません。

試すことができる1つのことは、これらの値をグラフにプロットして、パターンが現れるかどうかを確認することです。そうでない場合、ノイズは統計的にランダムであり、少なくとも特定の電話ハードウェアに対しては調整できません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.