[English page]
お知らせ
屋内測位システム『TPC_IPS Ver1.0』 を2022/4/1にリリースしました。
同製品に関する質問またはデモを希望されるお客様はこちら よりお申し込みください。
尚、外部のIPS/RTLSと連携して動作するIPSアプリケーション・テンプレート『QuickIPS』及び 『TPC_IPS Web API』 も順次リリースを予定しています。
前稿 では 碁盤目状(正方形型)に配置した Raspberry Pi (以下、端末、と言うことがあります)により iBeacon(以下、ビーコン、と言うことがあります)の信号強度(RSSI)を測定し、「二円指向三点測位」という方法でビーコンの位置を算出しました。
本稿では前稿の「二円指向三点測位」を拡張し、正方形型に限定されず端末を自由に配置できるようにし、費用対効果(費用対測定精度)を上げ、またシステム導入施設・場所の状況に合わせた端末配置を行えるようにします。
前稿の二円指向三点測位(以下、旧版、と呼びます)では端末を正方形型に配置し(図1のA~I)、ビーコン(図1のB)のRSSIを測定して端末とビーコン間の距離(=半径)を算出しました。通常の三点測位では3円が重なっていないとエラーとなりますが、本測位モデルでは C1 と C2 (図では E と F)で x 座標を、C1 と C3(図では E と B) で y 座標を算出することにより、ビーコン(B)の位置と推定しました。
図1:二円指向三点測位(旧版)のイメージ
Image of 2 circles-oriented trilateration (old ver)
なお、旧版の二円指向三点測位については前稿を参照してください。
旧版の問題の一つは、端末が常に正方形型に配置されて、位置測定に関わる各端末が水平、及び垂直に存在することを前提にしていた点です。このことは保守及びコスト面の問題につながります。
そこで今回は端末を柔軟に配置できるように二円指向三点測位を拡張(この拡張版を以後、TCOT と呼ぶことがあります)してみました。
TCOT について説明します。図2は図1の各正方形の中心部に一つずつ端末を追加したものです。13個ある端末(A~M)のうち、ビーコン(B)を最も近距離に感知した端末は、より近距離に感知した順に E(円C1)、K(円C2)、B(円C3)だったとします。
このとき、C1とC2に着目します(二円指向)。センタ無の正方形型配置のときは、C1 と C2 から x 軸(横軸)のみを算出しましたが、今回は 円C1 と 円C2 が垂直に位置しないため、この時点で x 軸を決定してしまうのは抵抗があります。そこで、円C1と円C2の交わった青いエリアをビーコン位置の候補とします。
次に円C3とその半径により、青いエリア内からビーコンの位置を特定します。円C3が青いエリアまで届いていないため、青いエリア内で円C3に最も近い・ の地点をビーコンの位置と決定します。
C1とC2で候補エリアを、C3がそのエリア中から最終座標を決定する、というのがTCOTのおおまかなイメージです。
図2: 二円指向三点測位拡張版 (TCOT)
端末の配置型をグリッド、或いはグリッドタイプと呼びます。
図3:グリッドタイプ
Grid type
「正方形+センタ型」は端末の増加を抑えつつ、測位の精度向上を目的とします。例えば、16mの「正方形型」で測位精度が出ない場合、8mグリッドに変更するのは費用的且つメンテ的にも大変なので、各正方形の中心に端末を追加することによって、測位精度向上を図ります。
「正三角形型」がグリッドはシステム導入場所の形状に合わせて使用します。
TCOT は「正方形+センタ型」や「正三角形型」に対応しますが、1つのグリッドタイプに限定されず、端末を自由に配置できるように設計されています。
尚、本稿では、正三角形型は取り扱いません。
TCOT の計測結果を記す前に、今回行ったテストのシステム構成概要を記しておきます。
製品名
説明
iBeacon
Aplix社製 MyBeacon® Pro MB004Ac-DR2 、50台(補正用固定ビーコンを含む)
Raspberry Pi Zero W/WH(受信機)
小型コンピュータ、iBeacon が発する信号の受信端末として13台を使用。node.js 参照
SQLite 3
データベース、node.js 参照
Python 3/sym.py
開発プラットフォーム、Raspberry Pi がデータベースに記録した情報をもとに、二円指向三点測位(TCOT)を実行するプログラムを開発。
node.js
開発プラットフォーム、iBeacon からの信号受信、加工、データベースへの書き込みを行うプログラムを開発。本プログラムは Raspberry Pi 上に常駐し、PC等のクライアントのリクエストに応じて上記処理を実行する。
plotly と連動して Raspberry Pi、ビーコンの位置情報をプロットするプログラムを開発。本プログラムはサーバ上に常駐し、PC等のWebクライアントのリクエスト応じて上記処理を実行する。
plotly.js
node.js 参照
Fabric
PC等クライアントから複数の(本テストでは13台の) Raspberry Pi に対して一斉にコマンドを実行するツール。
写真1:計測テストの現場
今回は上述のグリッドタイプで「正方形型」と「正方形+センタ型」を対象にして、グリッド幅をそれぞれ 4m、8m、16m、32m* に設定してテスト測定を実施しました。
「正方形型」については二円指向三点測位の旧版を、「正方形+センタ型」については二円指向三点測位の TCOT を適用しています。
旧版では 41個のビーコンを、TCOT では 37個のビーコンを計測対象としています。旧版と TCOT で個数が異なっている理由は、TCOT では4個を補正用ビーコン(固定ビーコン)として追加使用しているためです。
下の2つの図がその結果で、ビーコンの実際の座標と計測された座標の
誤差 に関する値を数値及びグラフで表しています。
個々のビーコンの実際の位置座標と、計測された座標の誤差(Distance error)は下記の式で算出しています。
Distance error = |actual_x - estimated_x| + |actual_y - estimated_y|
actual_x, actual y がビーコンの実際の座標、estimated_x, estimated_y がシステムにより算出された座標です。この値が0であれば、実際の座標と計測された座標が一致していることを示します。個々のビーコンの誤差を求め、その平均値
(Error Ave) 、最大値
(Error Max) 、エラー率を表示しています。尚、最小値は旧版、TCOT 共に おおよそ 0 となったので、省略しています。
エラー率
(Error rate) は下記の式で求めています。
Error rate = Error Ave / (Grid distance *2)
この数値は、誤差の平均値をグリッド距離(水平+垂直)で割って誤差率を算出しています。この数値が小さいほど、グリッド距離に比してビーコン位置が良り正しく算出されていることになります。
図4: 旧版/9端末/正方形型で実行時の誤差
Distance errors when using old ver, 9 terminals, square grid + cnter
* 32mグリッドは16mグリッドのデータを転用し、B, D, E, F, H の端末を除外して4つの端末のデータのみを使用して座標を算出しています。
上図は二円指向三点測位の
旧版 を使用していることに留意してください。
誤差率はグリッド幅が広くなるに従い低くなります(改善する)が、32mグリッドでは高くなります(つまり悪化します)。これは今回のテスト環境では、ビーコン信号と端末間の距離が30m位になると、もともと精度が低いRSSIがさら劣化することを示唆しています。
図4: TCOT/13端末/正方形型+センタ で実行時の誤差
* 32mグリッドは16mグリッドのデータを転用し、B, D, F, H, J, K, L, M の端末を除外して5つの端末のデータのみを使用して座標を算出しています。
上図は二円指向三点測位の拡張版 TCOT を使用していることに留意してください。
正方形型と旧版による測位よりも、正方形 + センタ型と TCOT(ver01) による測位の方が計測精度が向上しています。
下図は旧版と TCOT(図では ver01) を比較したグラフです。
赤線は改善率を示しています。旧版に比し TCOT(ver01) が 15%~30%超改善していることがわかります。
上記のTCOTにより取得・生成されたビーコンの位置情報データをプロットしたファイルを、以下に公開しました。 TCOTは旧来の三点測位とは異なり、3円が交わらなくても位置座標を算出しますが、このプロット図ではTCOTが結果が可視化されています。
上記の個別プロットとは異なり、本プロット図にはすべてのビーコンの実際の位置とTCOTにより算出された推定位置が表示されます。
TCOTには個別プロットと全ビーコン一括プロットの機能があります。
凡例:●→● の矢印の出元の● は実際のビーコンの位置、矢印先の● は推定位置、● は補正用固定ビーコン
上記のテストを自動化するため、TPC IPS の屋内測位システムのプロトタイプを開発しています。TPC IPS は大きく分けて FetchB と TCOT という2つのモジュールで構成されます。
FetchB は アプリケーションサーバ上に配置され、Raspberry Pi(受信機、RP)にビーコンのスキャンを行なわせ、RPが取得したUUIDやRSSI等のデータをデータベースに記録します。
FetchB は1回の実行で多数の RP に対してコマンドを実行することができます。
VIDEO
TCOT は FetchB によりデータベースに記録されたビーコン情報を抽出し、上述の二円指向三点測位に基づく座標計算を行い、各ビーコンの座標を出力あるいはプロットします。 以下の動画では TPC IPS の TCOTモジュールについて解説しております。
VIDEO
以上
(土屋)
IPS関連のBlog記事
土屋企画のIPS製品について/IPS product of TPC