web-dev-qa-db-ja.com

2台のデバイス間の距離を推定する方法Androidデバイス?(Bluetooth推奨)

目標は、実際の距離を持つことではありません。それはもっと単純なものです。
ターゲットはチェックすることです別のデバイスが非常に近いかどうか。正しいか間違っているか。 10または15 cmsが接近しているため、チェックは真であり、それより離れたデバイスはチェックに失敗し、偽であるとしましょう。

私の最初のアプローチは、apiのメソッドfetchUuidsWithSdp()を使用することでしたが、失敗しました!
数センチ離れたデバイスでも、大きな部屋の反対側でも、レイテンシは同じに見えました。

Bluetoothがなくても、どのようなソリューションでも問題ありません。たとえば、私はwifi direct p2pプロトコルにまったく慣れていません。多分そこに距離のおおまかな推定をするのに役立つ何かがあるかもしれません。

編集:受信信号強度インジケーター([〜#〜] rssi [〜#〜])について読んでいます。これは、特定のケースであるデバイス間の距離の概算に使用できます。しかし、おそらく精度を向上させるために組み合わせるものが存在する可能性があります。

編集:私はテストにラルガの答えを入れました。私は接続を確立し、デバイス間でping-pongへのマイナープロトコルを使用しました。
1バイトでpingされたときの平均レイテンシは、非常に近い場合は22.6000ミリ秒、部屋の反対側のコーナーでは22.6087ミリ秒でした。
1024バイトでpingされた場合、平均レイテンシは、部屋のもう一方のコーナーにあるときは非常に近く、42.3173ミリ秒で、さらに小さい場合は32.3138ミリ秒でした。
結局のところ、確かに、待ち時間は距離に関する情報を一切持ちません

ありがとう!

19

音で距離を測定 できます。

10
Kornel

私はBluetoothの位置を調べましたが、信号強度を検出するほど簡単ではありません。本当に正確な結果を得るには、使用している電話の種類、バッテリーの種類、およびバッテリーの状態も考慮する必要があります。また、環境とそれが信号強度にどのように影響するか、人、壁、テーブルなど、信号に干渉する可能性のある障害物も考慮する必要があります。

距離を特定するには、三角測量の手法を使用して携帯電話の位置を特定する必要もあります。また、環境内に多数の送信機をセットアップし、それぞれに対して測定することもできます。これらの送信機の位置がわかっていると、電話の位置を知ることができます。

ただし、信号強度は変化し、多くのキャリブレーションを行う必要があります。必要なアルゴリズムにいくつかの洞察を与える多くの科学論文があります。モール、美術館などで使用されるサービスとしてこれを提供する企業もいくつかあります。

とは言っても、信号強度を得ることができれば、基本的な近距離または遠距離の結果を出すことができるはずです。それは完全に正確ではありません。この場合でも、多くのトランスミッターがあると、たくさん。

紙、いくつかの落とし穴PDF(ダウンロード)、別の論文

これは、私があなたにいくつかの指針を与えるであろうグーグルのBluetoothポジショニングから読んだたくさんの論文です。

5
Emile

私が考えることができる唯一の実行可能な方法は、NFCを使用することです。 BluetoothまたはWi-Fiを使用するには、信号強度を介して行う必要がありますが、すべての送信機が異なるため、信頼性はまったくありません。

電波は光速で移動し、1インチと1マイルを移動する時間差は本質的にゼロであるため、待ち時間はあまり役に立ちません。その違いを測定するには、電話よりもはるかに高い解像度が必要です。

4
Ralgha

この距離検出の目的を指定していませんが、これにいくつかの追加要件(つまり、電話の向きとフラッシュライト)を追加できる場合は、まったく異なるアプローチを使用する可能性があります。

両方のデバイスが両方のカメラが互いに向き合うように向けられている場合、フラッシュライトを使用して正しい電話と距離を検証できます。カメラの画像で生成される白い点のサイズは距離とともに急速に減少し、特定のフラッシュシーケンスにより、他の電話のフラッシュライトと他の光源を区別できます。

同じ距離の場合、スポットサイズははるかに小さくなるので、屋外で作業するには多少の調整が必要になる場合があります...

よろしく。

3
Luis