質問

Android電話用の慣性ナビゲーションシステムの実装を検討していましたが、加速度計の精度と測定値の一定の変動を考えると、これは難しいことがわかりました。

まず、携帯電話を平らな表面に設定し、X方向とY方向に1000の加速度計の測定値をサンプリングしました(テーブルに平行なので、これらの方向に重力が作用しません)。次に、これらの測定値を平均して、この値を使用して電話を調整しました(その後の読み取りごとにこの値を差し引きます)。

次に、システムを再度テーブルに配置し、X方向とY方向に5000の加速度計の読み取り値をサンプリングしてテストしました。キャリブレーションを考えると、これらの加速度は各方向に0(ほぼ)になるようになると予想されます。ただし、これは事実ではなく、5000の反復を超える合計加速度は0に近い(各軸で平均約10)。

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

これは、加速度計の測定値が携帯電話(HTC欲望)でどのように不正確になっているかの単なる例ですか、それともコーディングでいくつかのエラーを犯した可能性が高いですか?

役に立ちましたか?

解決

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

ここは 説明の説明(Google Tech Talk)23:20. 。このビデオを強くお勧めします。

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

屋内のポジショニングについては、これらが便利だと感じました。

RSSIベースの屋内ローカリゼーションとSigma-Point Kalman Smoothersを使用した追跡

靴に取り付けられた慣性センサーを備えた歩行者追跡

単一の加速度計を使用して、歩数計の性能を向上させます

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

同様の質問があります これ.

アップデート:

どうやら、上記のオリバーJ.ウッドマン、「慣性ナビゲーションの紹介」、彼の博士論文よりも新しいバージョンがあります。

屋内環境向けの歩行者のローカリゼーション

他のヒント

私はただ大声で考えています、そして、私はまだAndroid加速度計APIで遊んでいないので、私に耐えてください。

まず、伝統的に、加速度計からナビゲーションを取得するには、6軸の加速度計が必要になります。 x、y、zの加速だけでなく、回転xr、yr、zrも加速する必要があります。回転データがなければ、デバイスが態度を変更しないと仮定しない限り、ベクターを確立するのに十分なデータがありません。これはかなり制限されるでしょう。とにかく誰もTOSを読みません。

ああ、あなたはインスが地球の回転で漂うことを知っていますよね?だからそれもあります。 1時間後、あなたは不思議なことに15°の斜面で宇宙に登っています。それは、あなたが長い間その場所を維持できるINSを持っていると仮定していますが、電話がまだできないことです。

ナビゲーションに加速度計を使用するより良い方法は、ナビゲーションのために航行するためのより良い方法は、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. それに応じてピースを前進させます。ポケットに電話をかけるだけで、ポケットを切り替えると8つの異なる方向のいずれかに向けられている可能性があるため、完全に盲目であることが重要です。また、携帯電話を保持する方法もたくさんあります。ここでは多くのデータについて話している。

あなたは明らかに多くのドリフトを持っているでしょうが、あなたが歩くのを止めたときにデバイスが知るので、あなたはこの方法であなたがより良い運を持っていると思います、そして、ポジションドリフトは永続的ではありません。履歴データに基づいて依然として立っていることを知っています。従来のINSシステムにはこの機能がありません。ドリフトは、すべての将来の測定値と複合化を指数関数的に永続させます。不敬な精度、または定期的にチェックするための二次的なナビゲーションがあることは、従来のINSにとって絶対に不可欠です。

各デバイスと各人は、独自のプロファイルを持たなければなりません。それは多くのデータと多くの計算です。誰もがさまざまな速度を歩き、さまざまなステップで歩き、携帯電話をさまざまなポケットなどに入れます。現実世界にこれを実装するには、サーバー側を処理するには数字を計算する必要があります。

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

私の方法を使用して、INSを使用した角度ドリフトがまだあります。これは問題です。しかし、これまでにANNを構築して、Nユーザーの間に数週間分のGPSとINSデータを注ぐためにANNを構築し、実際にこの点まで機能した場合、これまでのところビッグデータを気にしないでください。その道を進み続け、より多くのデータを使用して角張ったドリフトを解決するのに役立ちます。人々は習慣の生き物です。私たちは、歩道を歩いたり、ドアを通ったり、階段を上ったりしたり、高速道路を横切ったり、壁を通り抜けたり、バルコニーから離れたりするなど、クレイジーなことをしないように、ほぼ同じことをしています。

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

交通量の多いエリアは、体重が高くなり、誰も0体重になっていない領域が得られます。より高い交通エリアの解像度は高くなっています。本質的には、誰もが行ったすべての場所のマップになり、予測モデルとして使用することになります。

この方法を使用して、劇場で人がどのような席をとったかを判断できても、私は驚かないでしょう。劇場に行く十分なユーザーと十分な解像度を考えると、劇場の各列をマッピングし、各列の幅をマッピングします。より多くの人々が場所を訪れるほど、その人が位置していると予測できる忠実度が高くなります。

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

ユニットを含めるのを忘れたので、あなたのオフセットがどれほど素晴らしいかはわかりません。 (「各軸で10程度」はあまり語らない。:p)それは、それはまだハードウェアの不正確さのためにおそらくおそらくあります。

加速度計は、重力に対する携帯電話のオリエンテーションを決定したり、ジェスチャーを検出したり(電話を振ったりぶつけたりするなど)など、問題ありません。

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

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

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

モードと+/-変動を取得したら、Kalmanフィルタリングをお勧めします。

私はこれが非常に古いことを認識していますが、手元の問題は、与えられた答えのいずれにも対処されていません。

あなたが見ているのは、重力の効果を含むデバイスの線形加速です。携帯電話を平らな表面に置くと、センサーは重力による加速度を報告します。 9.80665 m/s2, 、したがって、あなたが見ている10を与えます。センサーは不正確ですが、それほど不正確ではありません!見る ここ センサーに関するいくつかの有用なリンクと情報については、おいしいかもしれません。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top