私たちは、ストア全体で複数のiBeaconを使用することで、顧客がストア内にいるとき(もちろん、クライアントのアプリがインストールされているとき)に顧客の正確な位置を追跡するのに役立つかどうかを知りたい小売クライアントと協力しています。
この目的のためにすでに利用可能なソフトウェアツールを知りたいですか?
明らかなことは、基本レベルでは、デバイスの位置は、複数(少なくとも2つ)のiBeaconからの相対距離に基づいて決定できることです。もしそうなら、これを助けるツールはありませんか?
ありがとう
明らかに、RSSI値(Bluetooth信号)の不整合のため、これがうまく機能する可能性は低いです。ただし、これはあなたがそれを取りたいと思うかもしれない方向です(多くのスタックオーバーフロー研究から適応されました):
RSSIをフィルタリングする
0.1のkFilteringFactorを使用して、ビーコンが範囲指定されるたびに、これでローリングフィルターを使用します。
rollingRssi = (beacon.rssi * kFilteringFactor) + (rollingRssi * (1.0 - kFilteringFactor));
そして、これを使用して、ローリング精度の値(メートル単位)を取得します。 (Davidに感謝します!)
- (double)calculateAccuracyWithRSSI:(double)rssi {
//formula adapted from David Young's Radius Networks Android iBeacon Code
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
double txPower = -70;
double ratio = rssi*1.0/txPower;
if (ratio < 1.0) {
return pow(ratio,10);
}
else {
double accuracy = (0.89976) * pow(ratio,7.7095) + 0.111;
return accuracy;
}
}
三辺測量を使用してXYを計算します(ビーコン1、2、および3は、位置と距離のX値とY値が事前に設定されたビーコンサブクラスであり、上記のように計算されます)。
float xa = beacon1.locationX;
float ya = beacon1.locationY;
float xb = beacon2.locationX;
float yb = beacon2.locationY;
float xc = beacon3.locationX;
float yc = beacon3.locationY;
float ra = beacon1.filteredDistance;
float rb = beacon2.filteredDistance;
float rc = beacon3.filteredDistance;
float S = (pow(xc, 2.) - pow(xb, 2.) + pow(yc, 2.) - pow(yb, 2.) + pow(rb, 2.) - pow(rc, 2.)) / 2.0;
float T = (pow(xa, 2.) - pow(xb, 2.) + pow(ya, 2.) - pow(yb, 2.) + pow(rb, 2.) - pow(ra, 2.)) / 2.0;
float y = ((T * (xb - xc)) - (S * (xb - xa))) / (((ya - yb) * (xb - xc)) - ((yc - yb) * (xb - xa)));
float x = ((y * (ya - yb)) - T) / (xb - xa);
CGPoint point = CGPointMake(x, y);
return point;
正確な位置を取得する最も簡単な方法は、気になる各ポイントに1つのiBeaconsを配置し、iBeacon対応アプリに「精度」フィールド(実際には1メートルの大まかな距離推定値を提供)を比較させ、ユーザーを想定することです。 「精度」の読み取り値が最も低いiBeaconポイントにあります。明らかに、このアプローチでは、大きなフロアプラン上で正確な位置を特定するために、多数のiBeaconsが必要になります。
多くの人々が、少数のiBeaconsのみを使用するための三角測量のような戦略を提案しています。これははるかに複雑であり、これを行うためのビルド済みソフトウェアはありません。私はこれを望んでいる、またはしようとしている人々についてたくさん読んだことがありますが、人々がそれをやめたという報告はまだ聞いていません。
これを自分で試してみたい場合は、少し科学プロジェクトに取り組んでいることを理解する必要があります。未知の結果でそれを実現するには、多大な時間と労力が必要になる可能性があります。
正確な位置は達成可能性が低いものですが、ある程度の許容値内の何かは確かに可能です。これについてはまだ詳細なテストを行っていませんが、3つのビーコンがある3x4mの小さなエリアでは、理想的な状況で適切な位置を取得できます。問題は、通常、理想的な状況がないことです。
難しいのは、受信機からiBeaconまでの正確な距離を取得することです。RSSI(受信信号強度)が唯一の情報です。これを距離に変換するには、送信機からのさまざまな距離での既知の信号強度に基づく測定を使用します。 例:Qiu、T、Zhou、Y、Xia、F、Jin、N、およびFeng、L 2012 。このビットはうまく機能します( そしてiOS SDKではすでに平均的な精度で実装されています )が、残念ながら、湿度や受信機と送信機の間に入る他のオブジェクト(人など)などの環境条件は信号を劣化させます予想外に。
SlideShareで私の最初の研究プレゼンテーションを読むことができます 、いくつかの基本的な環境への影響をカバーし、測定の精度への影響を示し、RSSIがどのように距離に変わるかを説明する記事といくつかのアプローチを参照します環境要因を克服します。ただし、小売業の状況では、人間の障害物の数を減らすため、iBeaconsを天井に配置することが最も重要です。
三辺測量は基本的にあなたが何をするにしても同じです、私は Gema Megantaraの バージョンを使用しています。ポジショニングをさらに改善するには、環境条件を考慮した手法が必要になります 例:Hyo-Sung&Wonpil 2009 。
6mx11mのエリアでの屋内測位には、ジンバルのibeaconsを使用しました。 RSSIの変動は、粒子フィルタリングで処理した大きな問題でした。プロジェクトのコードは https://github.com/ipapapa/IoT-MicroLocation/ にあります。 githubリポジトリには、iOSアプリケーションとJavaベースのApacheTomcatサーバーが含まれています。0.97メートルもの精度が得られましたが、マイクロロケーションにビーコンを使用することは依然として非常に困難です。 IEEE Globecomカンファレンスでの公開が承認された論文 http://people.engr.ncsu.edu/ipapapa/Files/globecom2015.pdf を確認してください。
これらすべての問題は、返されるRSSI信号が非常に不安定であるということです。生のRSSIを取得するだけでは、非常に信頼性の低い回答が得られます。三角測量を実行する前に、取得したデータを何らかの方法で処理する必要があります。つまり、1)平均化または2)フィルタリング(あるいはその両方)を意味します。そうしないと、フリンジエリアにいても「即時」の近接応答が得られる場合があります。
解決策は 三辺測量 と呼ばれる手法です。それにはまともなウィキの記事があります。
すべてのビーコンと受信機が同じ平面上にあると仮定すると、Z次元を無視でき、円に単純化されます。
数学はまだちょっと厄介です。 1つのビーコンを原点にシフトし、2番目のビーコンをx軸に配置するために、ビーコンの位置で行列計算を実行してから、行列の逆数を結果に適用して、「実際の」に戻す必要があります。 "座標。
大きな問題は、「精度」(別名距離)の値が正確ではないことです。干渉のない広いオープンスペースでも、距離信号はかなり変化します。 (電話を持っているあなたの体からのように)干渉を加えると、それは悪化します。壁、家具、金属面、他の人などを追加すると、本当に不安定になります。
三辺測量コードを記述し、庭のグリッドを測定し(天候が暖まったとき)、巻尺を取り、いくつかのテストを行うために行うべきことのリストにあります。
Bluetooth Low Energy(4.0)だけでは、堅牢な屋内測位およびマッピングテクノロジーではなく、Wi-Fi信号を使用して都市のGPS信号に忠実度を追加するのとほぼ同じ方法で、屋内測位テクノロジーのファブリックの一部になる可能性があります。 。現在、iBeaconは、「靴売り場」(大規模な店舗を想定)など、屋内のかなり曖昧なノードにのみ使用できます。
'iBeacon'サービス(または別の名前のサービス)を介して、Appleはアプリ開発者向けの高解像度の屋内ロケーションに取り組んでいます。WifiSLAMを購入するだけで、 2013年半ば、証拠として。まだ、iBeaconやその他のBLEテクノロジーだけでは、正確な屋内位置はわかりません(おそらく、店舗をビーコンで覆い、確率モデルと物理モデルを組み合わせると、それが可能になります。 、ただし、実際に実装可能なビーコン戦略ではありません。)
また、ノキアの次世代BLE HAIP(高精度屋内測位)バージョンに関する議論も注目に値します http://conversations.nokia.com/2012/08/23/new-alliance-helps-you- find-needle-in-a-haystack /
基本的に正確な屋内測位はまだ実際には存在しませんが、もうすぐ...
ポジショニングについて議論するときは、最初にニーズをより具体的に定義する必要があります。
コンピューター/ GPSオタクは、より細かいとは言わないまでも、ミリメートルまでの精度が必要であると想定します。そのため、必要以上の情報を提供するか、実行できないと通知します[両方の実行可能な回答]。
ただし、REAL WORLDでは、ほとんどの人が最大3フィート[または1メートル]の精度を求めており、おそらく10フィート[つまり視覚距離]以内の精度を受け入れようとしています。
iOSはすでにそのレベルの精度を提供しており、APIは距離を「近、中、遠」として提供します。したがって、10フィート以内で確認する必要があるのは、距離が「近」または「中」であることだけです。
ニーズがそれを超える場合は、カスタム機能を非常に簡単に提供できます。 32ビットの情報[メジャーコードとマイナーコード]があります。これは、モートンコーディングを使用してビーコン自体に各ibeaconの緯度と経度を格納するのに十分な情報です http://www.spatial.maine.edu /~mark.a.plummer/Morton-GEOG664-Plummer.pdf
高度[高さ]が要因ではなく、別のビーコンから1メートル以内にビーコンが展開されない限り、各緯度/経度のペアを単一の32ビット整数にエンコードしてメジャーコードとマイナーコードに格納できます。
主要なコードだけを使用して、ビーコン[したがって電話]の位置を100メートル以内[控えめに]決定できます。これは、同じ半径100メートル以内の多くのビーコンが同じメジャーコードを持つことを意味します。
マイナーコードを使用すると、ビーコンの位置を1メートル以内に、電話の位置を10フィート以内に特定できます。
このためのコードはすでに作成されており、広く利用可能です。これを行うことが「不可能」であることを示すコードを探してください。気になるよりも精度に重点が置かれているため、不可能であるというコメントは無視してください。
**注:後の投稿で説明するように、外部要因は信号強度に影響しますが、これもニーズに関係がない可能性があります。 iphone sdkによって提供される3つの「距離」、「近い、近い、遠い」があります。
はるかに問題のあるものです。 150フィートの範囲のビーコンを想定します。 iPhoneで確認して、2つの近距離が理想的かどうかを判断します... 5フィート以内が「近い」、15フィート以内が「近い」と想定します。
電話AがビーコンB [既知の場所]の近くにある場合、その人はポイントXから15フィート以内にいることがわかります。干渉が多い場合は、3フィート離れているか、15フィート離れている可能性があります。しかし、どちらの場合でも、それは「15フィート以内」です。必要なのはそれだけです。
同様に、それらが5フィート以内にあるかどうかを知る必要がある場合は、「近い」測定を使用します。
私は、すべてのポジショニングのニーズの80%が現在のスキームによって提供されていると確信しています。そうでない場合は、概念実証として制限付きで最初の実装を行い、多くのibeaconエキスパートの1人に連絡して最後のビットを提供します。正確さ。
確かに、個々のiBeaconの正確な位置(緯度/経度)を測定できる場合は、ビーコンメッセージに含めることができます。しかし、静止した場所を想定すると、明らかにこれは一度だけ行う必要があります。一種の独立した「キャリブレーション」演習-それ自体を自動化することができます。
固定位置に留まらなければならない周囲のiBeaconsに基づいてユーザーの位置を決定するために、信号強度の三角測量によって可能です。 Bluetooth屋内測位 ;-)についてのこの論文を見てください
私はフィルの修士論文の上に入ったと私が信じる広範な研究をしていませんが...
さまざまなAIアルゴリズムを使用してこれを理解したと主張している別のチームがあります。このLinkedInの投稿を参照してください: https://www.linkedin.com/groups/6510475/6510475-5866674142035607552
ビーコンを開発する人として( http://www.getgelo.com )私は、ほとんどすべてのオブジェクトがRSSIの一貫性と精度を大幅に変更し、コンピューティングを正確な位置は不可能です。 (フィル、あなたが私を間違っていると証明してくれることを願っています、私はあなたの論文をまだ読んでいません)。
ビーコンのグリッドがある広いオープンスペースで唯一の人であれば、これを機能させることができますが、他の人、壁、オブジェクトなどを追加するとすぐに、あなたはSOLになります。
あなたはiBeaconsがやっていることでかなり苦手な場所を概算することができますが、それは方向性がありません。
十分な数のビーコンを配置して、小売店のどこにいてもビーコンの非常に近くに立っていて、通路5にいることを(反対側にいるのではなく)約20フィート確信できるようにすることができます。通路、通路6、および20フィート下)。ここではコストが問題になる可能性があります。
BLEをWifiやその他のテクノロジーと組み合わせて、より正確な屋内測位ソリューションを作成しているチームがあります。
要するに、これはすでに投稿されたものの反響として来るでしょう、BLEは非常に正確な位置決めのためだけに使用される良い技術ではありません。