2020-12-30

IPSのテストベッドをつくる際のTIPS ― デバイスの保護とスマート電源

お知らせ

 屋内測位システム『TPC_IPS Ver1.0』を2022/4/1にリリースしました。

 同製品に関する質問またはデモを希望されるお客様はこちらよりお申し込みください。

 尚、外部のIPS/RTLSと連携して動作するIPSアプリケーション・テンプレート『QuickIPS』及び 『TPC_IPS Web API』 も順次リリースを予定しています。

  当社では Raspberry Pi と ビーコン を使用した IPS(Indoor Positioning System)を開発しています。ソフトウェア開発自体や機器の設定管理等も大変ですが、テストベット(ソフトウェアのテスト・実証環境、長期間、継続的に使用するのが前提)の構築・維持もそれなりに大変です。今回は当社のような小規模組織がIPSテストベットを作る際のTIPSをご紹介します。

テストベッド 

 下図のようなスペースを常時確保できるような大きな企業や研究機関であれば事は簡単ですが、小社のような小規模な会社では日常の労働生活空間とテストベッドを共用することになります。 多数のビーコンのスキャンテストを行う度にRaspberry端末やビーコンを敷設するのは労力も時間も要します。 また、ビーコンや端末を床や机等に長時間放置するのは他の業務の妨げにり、無断で移動されたりすれば、テスト結果が不正確なものとなってしまいます。また、機器の破損も心配です。

図1:当社テストベッド


 今回はテストベッドで使用する ビーコン や Raspberry Pi 設置方法や、電源に関するTIPSをご紹介します。

ビーコンの保護

 ビーコンは屋内と屋外に常設していますが、屋内、屋外を問わず、携帯電話用防水のケースにクッションを入れた上で、その中に収納しています。クッションにより、誤って落下した際に床からの衝撃を吸収させ、ビーコンを守ります。ストラップはスタンド、壁、天井にフックする際に便利です。防水性能ですが、IP規格を取得しているケースを調達します。

IP規格を取得している防水ケース


ビーコンを屋外に常設する

 ビーコンを屋外に常設する際は上記のように防水ケースに入れて、スタンドや地面に設置します。台風、梅雨、秋の長雨の際も放置して良いと思いますが、定期的にチェックするようにしましょう。

地面に設置する際はカラコンを被せるとさらに安心


ビーコンを屋内に常設する

 ビーコンを屋内に常設する場合は他の業務の邪魔にならないように、蹴飛ばされないように、天井から吊り下げます。

誤って落下した場合、ケースとクッションで衝撃を吸収


Raspberry Pi を屋外に常設する

 Raspberry Pi を屋外に常設する場合、IP規格対応の防水ケース入れて電源コードを引きます。


未来工業製WB-10DM、屋外用コンセントの引き込みも可


Raspberry Pi の電源

  図1のような十数台の Raspberry Pi の電源のオン/オフにも意外に手間がかかります。開発・デバッグ中は頻繁に電源のオン/オフが発生することもあり、これが数十台、数百台の規模になると、開発者には地獄です。 Raspberry Pi はWOL (Wakeup On Lan)に対応していないため、マジックパケット送信による遠隔起動はできません。

 そこでスマート電源を使い、iPhone/Android から 電源自体をオンオフできるようにしてあります。

Meross社製スマート電源、Amazonで1500円程度

スマート電源は奥行があるので蹴飛ばされないように配置、ルンバが来ても大丈夫


屋外でスマート電源を使用する

 スマート電源は大きく、屋外の電源コンセントに直接差し込むのは難しいです。その場合、以下のような防水ケースに入れて収納します。複数のコンセントはその先の延長コードに繋がり、その延長コードが Raspberry Pi に接続されます。




外に配置

NuckyT


IPS関連のBlog記事

土屋企画のIPS製品について/IPS product of TPC

2020-12-26

機械学習によりIPSの位置測位精度を改善する


お知らせ

 屋内測位システム『TPC_IPS Ver1.0』を2022/4/1にリリースしました。

 同製品に関する質問またはデモを希望されるお客様はこちらよりお申し込みください。

 尚、外部のIPS/RTLSと連携して動作するIPSアプリケーション・テンプレート『QuickIPS』及び 『TPC_IPS Web API』 も順次リリースを予定しています。


  弊社では Raspberry Pi とビーコンを利用した IPS(Indoor Positioning System / 屋内位置測位システム ― 屋内のモノの位置を推定するシステム)を開発しており、昨年、独自のアルゴリズム・TCOT(二円指向三点測位)に基づくシステムのプロトタイプを本ブログと YouTube にて紹介しました。

 TCOTを含む三点測位系の位置推定は、フィンガプリント方式に比べ事前のデータ蓄積・データ更新が不要な点が大きなメリットですが、反面、測位精度が低いのが弱点です。

 今回、Raspberry Pi(以下、端末と呼ぶことがあります)とビーコンをテスト環境に敷設し、予めビーコンと端末の位置座標と、端末が取得したビーコンのRSSIをデータベースに記録(これを「フィンガプリント」と言います)し、そのフィンガプリントデータを機械学習にかけてることにより、測位精度がどの程度向上するのかを検証しました。

 機械学習ツールは多くありますが、今回はノープログラミングで利用できる Orange と、Pythonの機械学習ライブラリとして有名な scikit-learn を使用し、それぞれで得た推定位置の結果を matplotlib によりプロットしています。


テスト環境

 テスト環境は当社事務所にAplix社製ビーコン54台とRaspbery Pi 端末13台を下図のように配置し、構築しています。端末13台は4mを辺とする正方形の4頂点上に配置し(これをグリッドと呼びます)、さらに各正方形の中心にも端末を配置しています。位置測位の対象となるビーコンは図の[R]と[B]の両方に配置しています。

 



データと特徴量について

 フィンガプリントを記録するデータベーステーブルには多くのフィールドがありますが、機械学習で使用する特徴量には端末の名称(下図のN1T、N2T、N3T・・・)、各端末が取得したRSSIに基づき算出したが端末からビーコンまでの距離(N1R、N2R、N3R・・・)を取り、目的変数(ラベル)はビーコンの位置座標(ax, ay)となります。 

データベーステーブルに記録されたフィンガプリント(一部)をExcelで表示


機械学習による位置推定

 

TCOTによる位置推定

 機械学習に入る前に、当社の二円指向三点測位(TCOT)により算出した推定位置を  matplotlib によりプロットした結果を以下に提示します。

図1:TCOTによる位置推定のプロット


 各矢印の始点が実際のビーコンの位置、終点がTCOTにより算出された推定座標となります。 

 以下では今回使用する機械学習のツールについて説明すると共に、TCOTで使った同じデータを機械学習に適用し、どの程度、推定位置が改善するかを見ていきます。

 

Orange Data Mining による位置推定

 今回使用した機械学習ツールの1つが Orange Data Mining で、スロベニアのリュブリャナ大学が開発提供するオープンソースのデータマイニングツールです。どなたでも無料ダウンロードして使用することができます。
 本ツールでは、データ読み込み、モデル定義、予測、出力までの流れを GUI で組み合わせていくことにより、ノープログラミングで機械学習を実行できます。

 操作画面のサンプルは以下のようになります。

 今回は 数多くある機械学習の手法の中のk近傍モデル(kNN)を用いてビーコン位置の推定を行いました。kNNでは、あらかじめ教師となるデータを収集し、データは全て数値に変換されます。次に運用データ(機械学習の教科書では、"テストデータ"と呼ばれます)をkNNに渡すと、各テストデータが最も近接する教師データに分類され、それが持つ目的変数(ここでは教師データのxとy座標)を返してきます。

 下図が Orange kNNの返してきたビーコンの推定位置をプロットしたものです。予め教師データを作成するというコストはかかりますが、図1のTCOTに比べると推定位置の誤差は改善されいます。

Orange kNN で指定した主なパラメータ:

  • k:1
  • メトリック:Manhattan
  • Weight:Distance

注:
kNNは教師データに基づき分類を行うアルゴリズムであり、本例では教師が持つ目的変数(x、y座標)に分類されます。従って、上図でビーコンが座標(0.5,0.5)に位置する場合でも、アルゴリズム的には座標(0, 0)が正解値となります。


scikit-learn による位置推定

 次に、Google が提供するオープンソースの Python 用機械学習ライブラリ scikit -learn を使用します。

 ここでは Orange Data Mining と同様に k近傍法(最近傍法)を採用します。ビーコン座標の予測モデル関数として KNeighborsClassifier、KNeighborsRegressor の二つを使います。

 

KNeighborsClassifier による位置推定

 ここでは K近傍法のクラス分類となる KNeighborsClassifier 関数を使い、教師あり学習によりビーコンの位置を推定します。ラベル(分類クラス、目的変数)は X座標、Y座標 の多クラスを与えます。

パラメータ指定:

nbrs = KNeighborsClassifier(n_neighbors=1, metric='manhattan', algorithm ='brute', weights='distance')
nbrs.fit(teacherData, teacherXYLabel)
prediction = nbrs.predict( testData )


パラメータ指定:

  • k:1
  • アルゴリズム:brute
  • メトリック:manhattan
  • Weights:distance


 プロット結果は Orange とほぼ同等となりました。ただ、Orange と scikit-learn で同じ kNNを使いながら、個々のビーコンの推定座標に違いがありました。kNNは比較的単純なアルゴリズムなので Orange と scikit-learnで同じ結果を返すものと思っていたのですが、少し意外でした。この理由は、Orange では指定できない、brute(総当り) にあるのかもしれません。

 

KNeighborsRegressor による位置推定

 ここでは K近傍法の回帰分析となる KNeighborsRegressor 関数を使うことによって、教師あり学習により位置を推定します。ラベル(分類クラス、目的変数)として X座標、Y座標 の多クラスを与えます。

パラメータ指定:

nbrs = KNeighborsRegressor(n_neighbors=1, metric='manhattan', algorithm ='brute', weights='distance' )
nbrs.fit( teacherData, teacherXYLabel )
prediction = nbrs.predict( testData )

主なパラメータ指定:

  • k:1
  • アルゴリズム:brute
  • メトリック:manhattan
  • Weights:distance

  KNeighborsClassifier 関数と同一のプロット結果となりました。

 

参考リンク:
k近傍法
2.4 アルゴリズム1 k-最近傍法

今後の課題

 今回、いくつかの方法でビーコンの位置推定を試みました。scikit-learn のkNN関数で指定したパラメータは、GridSearchCV により得られた最適解を使用していますが、特徴量スケーリングの改良などにより位置推定の精度をもう少し上げられるかも知れません。ニューラルネットワーク(MLPClassifier)も試してはいるのですが、まだ良い結果を得られていません。今後はMLPClassifierを含むその他のエスティメータも試用していく予定です。

 また、エスティメータ以前に、取得したデータを見るとRSSIの振れ幅が大きい端末があり、この振れ幅が位置推定に悪影響を及ぼしていると思われます。この振れ幅を抑えるハードウェア的なアプローチの検討の方がより重要かもしれません。


Varista について

 Webで上でプログラミング無しで利用できる機械学習ツールに Varista があります。以前に無償版を試用してみたのですが、上記の同じデータをアップロードできず、しばらく放置していました。年末、ダメ元で Varista に問い合わせたところ、思いがけず迅速・適格な回答を貰い、アップロードができるようになり、位置推定の結果(CSVファイル)を取得できました。そのファイルをプロットしたのが下図です。 

 Varista は決定木ベースのアルゴリズムを使用しており、設定可能なパラメータが多数あります。今回はほぼデフォルトのまま使用しましたが、上述の kNN と遜色ない結果が得られました。 このことから IPS では決定木関連のアリゴリズムも有望と思われます。

Varistaの「エキスパート」画面 ― 多数のパラメータを設定できる

 Varista には API は無いようですが、WebからテストデータをPostすると、即結果を返してくれるようなAPIがあればウレシイ、というユーザもいるのではないでしょうか。


 2021/01/05追記(亀)


(亀)

IPS関連のBlog記事

土屋企画のIPS製品について/IPS product of TPC

2020-11-11

東京ドームのような広い場所で少ない受信機によりビーコンのおおよその位置を推定する

  IPS(Indoor Positioning System、屋内測位システム ― 屋内で人・モノの位置を把握するシステム)には、三点測位、フィンガプリント、AoA/AoD、GMM、機械学習等々、様々な方式があり、測位の精度を競い合っています。ネットを検索すると関連の記事や論文が多数見つかります。

 ただ、すべてのシステムの要求仕様が、誤差1m未満の精度を求めているわけではなく、位置は大雑把にわかれば良い、その代わり(ビーコン信号の)受信機を減らしたい、というモノもあります。
 例えば、老人ケアセンターであれば、入居者の存在確認(施設から黙って抜け出していないか)が最重要で、位置については大体の位置を把握できれば十分ということもあります。
 また、大規模な工場、資材置場、倉庫などで、フォークリフトや運搬機などの大きな機材にビーコンを取り付けてその所在地を把握するようなシステムでは、誤差1mの精度は要求されないことも多いでしょう。

 今回は、東京ドームかそれ以上に広いエリアにあるビーコンのおおよその位置(エリア)を、できるだけ少ない受信機(Raspberry Pi)で推定する方法について考えて見みます。
 尚、このエリアは障害物がほとんど無い、大規模な工場や倉庫のような場所を想定しています。

受信機の配置を考える

 下図でピンクが受信機(Raspberry Pi)でブルー(B)がビーコン(iBeacon)です。ビーコンは枠内にあり、ビーコンの信号を遮る障害物はほぼ無いもとします。

【グリッド】


 この時、ビーコンの「おおよそ」の位置を把握するためには、受信機をどの位の数、配置すればよいでしょうか? 結論から言うと、それはユーザの求める推定位置の精度、「おおよそ」に依存します。 基本的にエリア内の受信機が多ければ多いほど、推定位置の精度は上昇します。 今回は受信機の数を少なく抑えて、「おおよそ」の位置を把握する(精度は重視しない)というテーマで考えていきます。

グリッドについて

 上図をグリッド(但し、ビーコンは除く)と呼びます。 受信機(ピンク)は正方形の4つの角と中心に置きます。 この正方形の一辺の長さをグリッドサイズと呼びます。広大なエリアをカバーする場合、複数のグリッドを置くことになるので、グリッドサイズが大きければ大きいほど、使用する受信機の数は減少します。

使用ビーコン

 使用するビーコンの信号の最大到達距離は100m以上とします。ちなみに、Aplix社のビーコン信号最大到達距離は100m丸紅情報システムズ社のビーコンは150mとWebサイトに書かれています。

グリッドサイズ50m

 ビーコンが受信機から離れれば離れるほど、受信機はそのビーコンの信号を検知できない(非検知)可能性が高くなります。 すべての受信機がビーコンを検知しない可能性が最も高いのは図の4つのビーコンの位置です(検知困難地点)。ここでビーコンBについて考えます。ビーコンBは受信機A、B、Cから25mずつ離れていますが、障害物が無い場所ではA、B、Cのいずれもがビーコン信号を受信する可能性は高いです。各受信機がビーコンから信号を受信すると、信号の強度(RSSI)からビーコンまでの距離を算出します。 受信機を円の中心とし、算出した距離を半径とする円周上近辺にビーコンが存在すると推定されます。ここでは3つの受信機が信号を受信しているので、3つの円が交わった黄色のエリアにビーコンが存在すると推定されます。


グリッドサイズ150m

 次にグリードサイズ150mのビーコンB(検知困難地点)について考えます。このケースでは受信機からビーコンBまでの距離は75mです。75m離れていると非検知の可能性が高まります。ここでは受信機AがビーコンBを検知できず、受信機BとCが信号を検知したと仮定します。このとき受信機BとCを中心とする円の交差する黄色エリアにビーコンBがあると推定されます。


グリッドサイズ200M

 最後にグリッドサイズ200mのケースです。この場合、受信機A、B、CからビーコンBまでの距離は100mとなります。100mとなると受信機がビーコンの存在を検知しない可能性がさらに高まります。下図では、ビーコンBを検知した受信機がCのみだったと想定しています。この場合、ビーコンはCを中心とする円の円周付近上にあると推定されます。
但し、100mになると元々低いRSSIの精度がさらに低くなるため、円周の外側と内側に大きく逸脱して存在する可能性が高くなります。下図で黄色エリアがドーナツ型なのはそれを表しています。

 

  尚、受信機とビーコン間の距離が100mある場合、どの受信機にも検知されない可能性も十分ある点にもご留意ください。

受信機からビーコンまでの距離について

 RSSIの精度はもともと低いので、それを元に算出される距離の精度も低いです。特に30m以上になると、RSSIが「0」(RSSI測定不能)になったり、値が想定される値とはまったく違ったり、あるいは信号自体が検知されないことが普通にあります。 
 下図はAplix社のビーコン2台と丸紅情報システムズのビーコン3台のRSSIの計測結果です。この時は、Aplix社のビーコンの1台は25m以上になると検知されないことが多く、丸紅はより頻繁に検知されましたが、RSSIは想定される値と大きく異なっています。
 RSSIまたは距離の精度を上げるには、なんらかの補正が必要となります。

※RSSIが継続的に0になる、或いはRSSI補正が不能なほどRSSIの精度が低い状況では、グリッドサイズの短縮を検討しましょう。

BLE 5 対応ビーコンの到達距離

 上述のAplix社と丸紅社のビーコンは BLE4 の規格に準拠していますが、現在は BLE5 の対応のチップも Nordic Semiconductor 等からリリースされています。 BLE5対応ビーコンの信号到達距離は、"理論的は"BLE4対応ビーコンの4倍となります。2020年11月現在、BLE5に準拠した長距離ビーコン(Long range beacon)で技適を取得している製品は市場にありませんが、今後対応製品が発売されると、障害物が少ないところであれば400m超のビーコン探知が可能になるとものと期待されます。

人や障害物が少なからず存在するエリアについて

 繰り返しとなりますが、上記は障害物がないエリアを想定しています。人が多くいたり、壁や棚などの障害物がある場合、適切なグリッドサイズは4m~15m程度になります。また、人が密集する展示場やイベント会場、金属製の背の高い棚が多く置かれている倉庫などでは、IPSによる測位がそもそも困難・不能なケースもあります。


NuckyT



IPS関連のBlog記事

土屋企画のIPS製品について/IPS product of TPC