iBeaconの実装の成功:RIF + CIB 2014の200ビーコン

元のアイデアによると、この記事は「眠りにつく簡単な方法」と題されていたはずですが、今は誰を驚かせますか? そのため、RIF + KIB 2014の領域で私たちのチームがどのようにiBeacon屋内ナビゲーションを導入したかについての短いストーリーと、途中で出会ったすべてのfakapsやその他の冒険についての簡単な説明があります。



まえがき


簡単に言えば、テクノロジーについて話す価値があります。 iBeaconは、その識別子(UUID、メジャー、マイナー)に関する情報を他のデバイスに送信できる小さなBluetoothビーコンです。 アプリケーションがインストールされた人がビーコンに近づくと、スマートフォンはそのデータを受信し、サーバー上でビーコンを送信します。 データベース内でこのビーコンを見つけ、地上のユーザー座標を送信します。 当然、ユーザーが2つまたは3つのビーコンの範囲にいる場合、ユーザーの位置をより正確に判断できます。



上記のすべては屋内では非常に便利です。GPSはナビゲーションに十分な精度を提供できません。

もちろん、このテクノロジーは多くの素晴らしい機会を切り開き、熱意を持って私たちのチームはビーコンを操作するためのプラットフォームとモバイルSDKの開発に取り組みました。



パート1.準備


ビーコンのいくつかの試用サンプルで十分にプレイし、構成サービスとiOS SDKの最初のバージョンを準備したので、私たちは自分たちがもっと何かをする強さを感じました。 2月末で、RIF + CIBカンファレンスは最初のメジャーローンチの優れた選択肢のように見えました:あと2か月でしたが、これはすごいことです。



時間が必要でした:





私たちが自由に使えるビーコンの試用版は、現在ネット上に書かれているものとはほど遠いものでした。5〜10メートルの距離に到達しましたが、すべてが50ではなく、すべてが少し違った動作をしました。あまり安定していません。 しかし、彼らの低コストと私たちの楽観主義が決定的な要因になりました-会議のためにそれらを注文することが決定されました。



主催者から展覧会のおおよその地図と、指定された寸法の建築計画の小さな断片を受け取ったので、ビーコンの最適な場所について考え始めました。



問題は、建築計画、イベントの描画されたマップ、およびGoogleマップの同じ場所のビューが別々の場所でのみ互いに​​類似していることが発見されたときに始まりました。 建物の輪郭、比率、サイズは明らかに異なっていました。

より正確なマップを取得することはできませんでした。



もちろん、最善の解決策は、会議の約1か月前にそこに行き、自分で縮尺を把握し、マップを手動で修正し、ビーコンを配置するための最適なポイントを考えることです。 しかし、その瞬間に、必要なビーコンの数をおよそ計算し、上記の「予備」からいくつかを投げることに決めました。



もう1つの大きな問題は、ビーコンの設定でした。 実際、選択したデバイスには、利用可能なすべてのビーコンを表示し、オンスクリーンキーボードから16進値の形式で手動で入力して各オプションを設定できるiOSアプリケーションがありました。 200個のビーコンを分類するために、これは明確に適合しませんでした。 この点で、開発者の1人がツールを作成して、表示可能なビーコンのリスト全体を取得し、必要な設定を指定してリラックスし、ビーコンがこれらの設定をどのように受信するかを見て、青いダイオードでウィンクします。 それは3月で、すべてが計画どおりに進みました。



RIFでナビゲーションを管理するための最もモバイルアプリケーションとWebインターフェイスの準備は、最後の瞬間まで完全に進みました。



パート2. RIF + CIB


イベントの2日前にモスクワに到着した後、イベントは急速に発展し、数時間ごとに新しい予期せぬ状況が明らかになりました。



状況1


部品からビーコンを収集することは困難であることが判明し、200個ある場合はさらに困難になります。 本体部分は互いにうまくフィットせず、形状のプリント回路基板は、挿入する必要のあるカバーに完全には対応していません。







一般に、2、3時間、私たちは中国の地下工場の経験の浅い従業員のように見えました。 しかし、問題は解決しました。バッテリーが挿入され、プリント回路基板がケースにしっかりと挿入され、フロントカバーとバックカバーが可能な限り接続されました。 勝利



状況2


予想に反して、ビーコンのヒープのバッチ構成のプログラムは、ヒープサイズが10個以下の場合にのみ安定して機能することが判明しました。 しかし、私たちはgiveめませんでした。



必要なのは、次のバッチを設定するときに余分な190ビーコンの信号を何らかの方法で取り除く方法を考え出すことだけでした。プログラムが必要以上のbiconesを検出すると、すべてがうまくいきませんでした。



ビーコンの範囲がそれほど大きくないことを思い出して、バッグを隣の部屋に持って行っただけで... ...現在のバッチが1か月前よりもはるかにうまく機能していることにショックを受けました。 信号はアパートのどこでも優れたままでした。



バッテリーを取り外したくありませんでした。アセンブリにかけがえのない努力が注がれました。 シールドの絶対的に信頼できる方法の1つが実験的に導き出されました。ビーコンの袋を厚い壁の大釜に入れて蓋で閉じ、大釜を鋳鉄の浴槽の底に置きました。



ビーコンの山で一晩中走り、バスルームに戻り、午前5時までにセットアップを完了しました。







円周3、クライマックス


わずかな技術的困難にもかかわらず、将来の展示会の領域へのビーコンの設置は非常に陽気でした。 事前に準備した計画に従ってそれらを配置しましたが、実際にそれから離れる必要はありませんでした。



約100個を取り付けたので、ナビゲーションを確認することにしました。 ビーコンの袋を持った男が船体から数十メートル戻ってきましたが(シールド用の大釜と浴槽はありませんでした)、別の人は電話で船体を歩き、アプリケーションのナビゲーションに従う必要がありました。



結果は恐ろしいものでした。 アプリケーションは、ユーザーが建物の北部のどこかで常に時間をマークしていることを示しました。 これは5〜10メートルの誤差に相当し、許容できませんでした。



さらにいくつかの実験-同じ結果。



このようなパニックは、重要な試験でなじみのないチケットを取り出した学生が経験します。 そのため、彼らはほとんど差し迫った失敗に直面していると感じています。 空き部屋に落ち着き、考え始めました。 開発者の1人( grohman部屋の周りを回って、ときどきアプリケーションをちらっと見ながら、何らかの理由ですぐには思いつかなかった単純なことに気付きました。 ロケーションの座標は正しく計算されましたが、マップ自体は実際の座標から南にシフトされ、ロケーションの表示にこのような歪みが生じました。



古き良き方法で、アプリケーションに送信されるすべての座標の補正を選択しました。 すべてが所定の位置に収まりました。



状況4


すぐにチームの別の部分( itrufsuprum )に置き換えられました。 私たちを休ませた後、残りのビーコンを配置し、最終的にすべてをテストしました。 1時間半後、彼らは悪い知らせで電話をかけました。場所は再び機能せず、今回は突然歪みが現れたり消えたりしますが、エラーは数十メートルまでです。 ほぼ2日間立ち上がって、モニターにびっくりしたように見え、地図上の「ピン」の位置が幻想的に投げられているのを見ていた。



大量のログを解析すると、驚くべきものを見つけることができました。時々デバイスに表示されるビーコンのリストから、その場所には表示されないはずのビーコン#68がありました。 すぐに正しい疑いが忍び込み、そのビーコンを設置する場所に行って、何が起こったのかを確認するように依頼しました。 当然、彼はその場にいませんでした。



誰かが壁から#68を外し、ポケットに入れて歩いて、時々システムの一種の「プレゼンス効果」を作り出しました。







このビーコンからデータ処理を切断すると、場所に関する適切なデータを再び受け取りましたが、次回はそのような状況に迅速に対処する方法の問題に直面しました。



次のソリューションが導入されました。各ビーコンには「近隣」があります-他のビーコンは<= Nの距離にあります。 ユーザーが可視ビーコンと信号レベル(rssi)に関するデータを送信すると、最も高いrssiを持つビーコンを選択し、残りのビーコンが近隣にあるかどうかを確認します。 ここで明らかに隣人であってはならないビーコンを見つけた場合、位置計算から除外します。 場所は再びうまくいった。



まとめ


その後、いくつかの緊急のバグ修正、会議の3日間、多くの興味深い人々とイベントがありました。 準備の最後の日々のすべての情熱にもかかわらず、私たちはBLEビーコンの助けを借りて屋内ナビゲーションを開始することができました。 私たち自身にとって、いくつかの結論を導き出すことができました。







コメントでは、実装の詳細に関する質問にお答えします。



All Articles