お知らせ
屋内測位システム『TPC_IPS Ver1.0』を2022/4/1にリリースしました。
同製品に関する質問またはデモを希望されるお客様はこちらよりお申し込みください。
同製品のカタログのダウンロードはこちらをクリックしてください。
尚、外部のIPS/RTLSと連携して動作するIPSアプリケーション・テンプレート『QuickIPS』及び 『TPC_IPS Web API』 も順次リリースを予定しています。
小社では屋内測位システム(TPC_IPS)の開発を行っています。 IPSとは一言で言い表すと屋内用GPSであり、屋内に存在する人やモノの位置を把握するシステムです。屋内や地下では、GPS等の衛星技術では位置測位が不能であったり、十分な測位精度を出せなかったりするため、屋内で位置測位をおこなうシステムがIPS(Indoor Positioning System)であり、IoT(Internet of Things)技術の1つでもあります。
図は倉庫におけるIPSのイメージで、ビーコンやタグと呼ばれる発信機を人やモノに取り付け、ビーコンが発する信号(
) を受信端末 で読み取り(
)、この信号情報をコンピュータで解析することにより各ビーコンの位置を測位します。この測位情報はネットワークを介して社内あるいは社外のユーザが照会することができます。 下図のように多くのモノを管理するIPSは、
Asset Tracking システム(資産管理システム)と呼ばれることもあります。
【IPS/Asset Tracking システムのイメージ】
下図はIPSのシステム構成例です。この例では、IPSが
位置測位と
ユーザアプリケーションの2つのシステムに分かれています。位置測位は文字通り、各ビーコンの座標を算出します。 小社製品・TPC_IPS では2021年5月現在、BLE4のビーコンを使用して測位を行っていますが、 最近では AirTag で採用された
UWB が注目されています。今後は単なる忘れ物タグにとどまらない IPS/Asset Tracking用のUWB製品が市場に現れるものと期待されます。
注:
UWB IPS製品には
Ubisense や
Zebra といったものが以前からありますが非常に高価なため、導入は一部の大企業等に留まっていました。AirTag や SmartTag の出現は、低価格UWB IPS の普及に貢献するかもしれません。
TPC_IPSの位置測位については過去に記事(末尾のリンク参照)にしていますので、本稿では FileMaker を使用したユーザアプリケーション・テンプレート ― QuickIPS― の概要をご紹介します。
注:
QuickIPS は TPC_IPS にバンドルされますが、単体として2022年春にリリース予定です。
※ QuickIPS の仕様・予定等は、予告無く変更されることがあります。
【IPS構成図】
注:
上図の構成例ではビーコン/タグを物品に取り付け、センサーを経由してサーバで位置測位を行いますが、これはAsset Tracking (資産管理)等で見られる方式です。一方、携帯電話端末等にアプリケーションをインストールし、ビーコン/タグを屋内の特定の場所に固定、端末のアプリで端末ユーザの測位計算を行う方式もあります。こちらはよりGPS的なIPSとなります。
上図のように各ビーコンやタグの情報はサーバ機に送られ、サーバ機はその情報に基づき位置情報を算出し、さらにその位置情報はビーコン(タグ)のIDと共にデータベースに蓄積されます。
ユーザアプリケーションはデータベースの位置情報データにアクセスし、ユーザの要求仕様に基づきデータを加工してPCやスマホ上に表示します。代表的なユーザアプリケーションとして、以下の3つが挙げられます。
- フロアマップ ― 人・モノの位置をフロアマップ図上に表示
- ヒートマップ ― 人の滞留情報を表示
- 動線追跡 ― 人・モノの移動を線で表示
このうち1と2については FileMaker 単体で作成が可能です。 QuickIPS はこの2つを実装した、ユーザによるカスタマイズが可能なテンプレートです。
尚、動線追跡(オブジェクトトラッキング)は、QuickIPS と TPC_IPS の次々バージョンで搭載する予定です。動線追跡については、
本Blogの別稿を参照してください。
QuickIPS デモビデオ
QuickIPS の概要を11分程のビデオにまとめました。
理由は他のツールに比べ少ない工数で、グラフィカルなアプリを作成できるからです。IPSユーザアプリケーションのプロトタイプ開発にも適しています。 以下では、QuickIPS の諸機能を詳しくご紹介します。
下図は FileMaker の散布図グラフ機能を使用したビーコン位置を表示するフロアマップです。 予め位置情報表示用のマップ(画像ファイル)を用意しておき、FileMakerのレイアウト上に取り込み、そのマップ上に散布図グラフを配置しています。
この方法はメリットは、後述する座標データを丸める必要が無いこと、作成が簡単なことですが、ビーコンが近接して検知されるとビーコン名が重なったり、細かいビーコン情報を表示できない点が難点です。
|
複数ビーコンが近接して検知されると、ビーコン名が重なってしまう |
この方式はユーザが予め定めた座標(
定点座標)にSVGスポットアイコン(
)
やビーコン情報オブジェクトを配置しておき、測位されたビーコンの情報をこれらのオブジェクトを使用して表示します。
散布図方式と異なり、同一座標上の複数ビーコンを表示したり、実座標と異なって表示されているビーコンを赤く表示したり、表示フォントの大きさを変更したり(◀ A ▶ を使用)と、機能をカスタマイズできます。
TPC_IPS の測位機能は、ビーコン座標を定点座標に丸めて算出することができます。
しかし外部システムと QuickIPS を併用する場合は、外部システムでこの丸め処理を行う必要があります。
例:
図のように定点座標(×)を定めたとします。この時、外部システムが以下のようにビーコンを検知したとします。括弧内はx,y座標です。
ビーコンA(0.2, 1.1)
ビーコンB(3.2, 3.6)
ビーコンC(1.5, 2.1)
この時、各測位座標から最も近い定点座標(×)を各ビーコンの座標と決定します(丸め処理)。ビーコンA(0.2, 1.1)は定点座標(1, 1)に丸め、B(3.2, 3.6)に(3, 3)に、C(1.5, 2.1)は定点座標(2, 2)に丸めます。
注:
最も近い定点座標(最近傍点)を求めるにはプログラムを自作する手もありますが、
K-nearest neighbor(k = 1)のライブラリがあれば、これを使用すると楽ちんと思います。FileMakerで knn なカスタム関数を作成し、外部データベースからデータを取り込む際にこの関数を当てて丸め処理を行うことも可能かもしれませんが、かなり大変と思います。
Brian Dunning氏のカスタム関数公開サイトにはknnなカスタム関数は見当たりませんでした。
ちなみに TPC_IPS の測位アルゴリズム・TCOTは三点測位的な座標算出を行うため、元の測位座標は定点座標とはほぼ100%一致しません。このため TCOT実行時に、scikit-learn の KNeighbors により定点座標に丸めるオプションを用意しています。
ヒートマップは、人・モノが多く集まる場所を色分けして表示します。ヒートマップも測位座標の丸めを行う必要があります。
|
青、黄色、赤の順で人・モノの密集度を表示 |
エラーグラフは静止した状態のビーコンの実座標と測位座標との誤差を折れ線グラフで表示します。 この機能は測位システムの技術担当者が、測位の精度を調べる際に有用な機能となります。
|
横軸がスキャン実行時刻、縦軸に誤差、誤差値が小さい程、測位精度は高い |
グラフに表示するビーコンをピッカー(後述)で選択すると、[Time]で指定した時間の範囲内で測位誤差が縦軸に表示されます。
IPS導入テスト時には、運用に耐えうる測位精度が得られるかチェックを行いますが、本機能はその際に有用です。 また、屋内環境の変化によっても測位精度は変化するため、適時この機能を使用し、測位精度をチェックするようにします。
注:
AUTOモードで自動更新
●ボタン実行中、またはMANUALモードで更新ボタン
をクリックした際は、エラーグラフは最新の測位情報により更新されます。
QuickIPS の基本操作について簡単に説明します。
QuickIPS には AUTO、MANUAL、HISTORY の3つのモードがあります。各モードは、下図の"実行モード"をクリックしてプルダウンメニューから選択します。
AUTOモード
●ボタンが画面右上に表示されるので、これをクリックするとフロアマップ、ヒートマップ、エラーグラフを最新のデータにより自動的更新します。■をクリックすると、自動更新を停止します。
MANUALモード
このモードはAUTOモードとは異なり、自動更新されません。最新情報で更新するには、画面右上に表示される
をクリックします。
HISTORYモード
このモードでは過去の座標データを基にフロアマップ、ヒートマップ、エラーグラフを表示することができます。
画面上部のヘッダー部の操作方法について説明します。
サブメニューボタン |
クリックするとポップアップメニューが表示されるので、以下を選択。
Scatter map(散布図グラフを使用したフロアマップ)
Floor map(オブジェクトを使用したフロアマップ)
Heatmap(ヒートマップ) Error graph(距離誤差グラフ)
|
実行モード |
上述のAUTO、MANUAL、HISTORYから選択。
|
Time |
ScanCode (YYMMDDMMDDSS形式、スキャンを実行した日時)を範囲指定する。
注: ScanCode はTPC_IPS を使用する際は自動的生成される。
|
ScanCodeナビゲーション |
[Time]で指定した範囲で、ScanCode 間を移動・選択するためのボタン群 |<:最初へ移動 >: 次へ移動 <: 前へ移動 >|:最後へ移動
|
ピッカーボタン |
対象となるビーコン及び ScanCode を選択するためのピッカー・フローティングウインドウ(後述)を表示。 |
エラーサマリーボタン |
測位誤差の詳細を表示するエラーサマリー・フローティングウインドウ(後述)を表示。 |
本ウインドウは、フロアマップ、ヒートマップ、エラーグラフで対象とするビーコンや ScanCode を選択するためのウインドウです。本ウインドウは×ボタンで閉じられるまで、常に最前面に表示されます。
ビーコンリスト | ビーコン一覧、クリックで選択あるいは選択解除。選択中のビーコンはピンクで表示される。
選択されたビーコンは、フロアマップの表示対象となる。Error Graph(測位誤差グラフ) で表示されるビーコン数は6つまで。 |
ビーコン名書式 |
クリックすると、フロアマップに表示されるビーコン名の書式が切り替わる。
Name: ビーコン名のみ表示
M-M/Name: Major-Minor及びビーコン名を表示
|
All ボタン |
全ビーコンを選択
|
None ボタン |
全てのビーコンの選択を解除
|
ScanCodeリスト |
[Time]で指定された範囲内の ScanCode の一覧。クリックして選択すると、その ScanCode を持つ座標データに基づき、フロアマップとヒートマップが表示される。
|
エラーサマリーフローティングウインドウは、ピッカーを使用して選択したビーコンの測位誤差のサマリーを表示します。エラーグラフの折れ線は一度に表示できるビーコン数は6つ迄でしたが、このサマリーには選択できるビーコンの数に制限はありません。
本ウインドウは×ボタンで閉じられるまで、常に最前面に表示されます。
|
エラーサマリーフローティングウインドウ
|
測位エラーサマリー |
静止した状態にあるビーコンの測位誤差をビーコン毎に表示。ビーコンリストから選択されたビーコンの測位誤差の平均、最大、最小、標準偏差を表示。 最終行には選択された全ビーコンの集計値が表示される。集計対象は[Time]で指定された期間。 ※ 取得データがない項目には missing が表示される。
|
エラー種類 |
エラーの種類を選択するボタン、各ボタン選択時のエラー算出式は以下の通り。
Distance: Sqrt((ax - ex)^2 + (ay - ey)^2)
Coordinates: Abs(ax - ex) + Abs(ay - ey)
注: ・ax, ay: 実座標 x, y ・ex, ey: 測位座標x, y
|
2種類のフロアマップ、ヒートマップ、エラーグラフ機能は iPhone/iPad(iOS) でも利用できます。これらの画面はPC用と同じ画面を使用していますので、工数的に有利な開発が可能です。
iPhone 上での QuickIPS
|
開発時はPC/iOSでの利用を意識する! |
QuickIPS には座標データを保存する locLogテーブルがあり、このテーブルのデータを抽出・加工して、上述の機能を実現しています。
外部システムのデータベースに locLog に対応するテーブルまたはビューがあれば、それから locLogにデータを取り込み、QuickIPS の諸機能を使用することが可能となります。
TPC_IPS 以外の外部データベースを使用して QuickIPS を利用する際は、QuickIPS の locLogテーブルに準じて作成します。
フィールド名 |
データ型 |
入力 |
備考 |
uuid |
テキスト |
必須 |
ビーコンの uuid |
major |
数値 |
必須 |
ビーコンに割り当てられた major |
minor |
数値 |
必須 |
ビーコンに割り当てられた minor |
beaconName |
テキスト |
|
ビーコン名、検索する場合は入力必須 |
x |
数値 |
必須 |
測位されたビーコンのx座標 |
y |
数値 |
必須 |
測位されたビーコンのy座標 |
actual_x |
数値 |
|
ビーコンの実際のx座標[注1] |
actual_y |
数値 |
|
ビーコンの実際のy座標[注1] |
scanCode |
数値 |
必須 |
スキャン実行タイムスタンプを示す12桁の数値(YYMMDDHHMMSS)[注2] |
timestamp |
タイムスタンプ |
|
レコードが作成された日時 |
注:
- actual_x と actual_y は測位精度テスト時に使用する実際のビーコンの座標です。これらの値と測位された座標の値を使用し、測位誤差が算出されます。
- QuickIPS を使用する場合、スキャン毎に生成される scanCode が必要となります。外部システムで scanCode を生成する際は、各センサーが同一のタイミングでスキャンを実行するようにし、スキャン毎に同一の値(YYMMDDHHMMSS)を scanCode に設定してください。例えば、2022/1/1 0:0:0秒にビーコン/タグ信号をスキャンした場合、センサー/受信機のクロックに関わらず、サーバ等で「220101000000」が各レコードの scanCode に入力されるようにします。
上表に基づく外部データベースのテーブルデータを QuickIPS の locLog テーブルに取り込むには、以下を行います。
- QuickIPS を実行するコンピュータ上で、外部データベースのODBC ドライバにより、所定の DSN を登録
- 取り込むテーブル名と loclogテーブルに対応する外部テーブルのフィールド名を指定
- 外部データ取込画面で取込を実行
前述のオブジェクトを使用したフロアマップは、FileMaker を使用することによってカスタマイズができます。
下図の要領でカスタマイズを行います。フロアマップの操作はレイアウトモードで行います。
まず、フロアマップ画像を用意し、フロアマップレイアウトの背景として貼り付けます(最背面)。
つぎに、SVGスポットアイコン、およびビーコン情報オブジェクト(図のピンクの部分、実際は透明)は、それぞれ座標属性を持っているので、座標属性に合わせて配置を行います。 例えば(4, 8)のオブジェクトは、(4,8)のフロアマップ座標上に配置するようにします。
オブジェクトを配置する際は、配置用オブジェクトの一覧から、対象となるオブジェクトをマウスで選択し、フロアマップレイアウト上にドラッグすることによって配置することができます。下図の例では、 座標(4, 8) のオブジェクト(X-Y が 4-8で示されている)をマウスでドラッグする様子を赤囲みで示したものです。
SVG スポットアイコンも同様にドラッグコピーで配置します。
大規模施設のフロアマップを作成する場合は、フロアマップ画像を分割し、レイアウト、タブ、スライドを複数作成して、分割したマップをそれぞれに取り込むようにします。
QuickIPS は FileMaker テンプレートとして単体リリースする予定です。
※ QuickIPS の仕様・予定等は、予告無く変更されることがあります。
以上
NuckyT
IPS関連のBlog記事