お知らせ 
 屋内測位システム『TPC_IPS Ver1.0』 を2022/4/1にリリースしました。
こちら よりお申し込みください。こちら をクリックしてください。 
 
  
  
  
 
    小社では屋内測位システム(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 の仕様・予定等は、予告無く変更されることがあります。 
 
  
【IPS構成図】
    
         
注:
  
     上図のように各ビーコンやタグの情報はサーバ機に送られ、サーバ機はその情報に基づき位置情報を算出し、さらにその位置情報はビーコン(タグ)のIDと共にデータベースに蓄積されます。
    
        フロアマップ ― 人・モノの位置をフロアマップ図上に表示 
        ヒートマップ ― 人の滞留情報を表示 
        動線追跡 ― 人・モノの移動を線で表示 
     
 
  
       このうち1と2については FileMaker 単体で作成が可能です。 QuickIPS はこの2つを実装した、ユーザによるカスタマイズが可能なテンプレートです。
 尚、動線追跡(オブジェクトトラッキング)は、QuickIPS と TPC_IPS の次々バージョンで搭載する予定です。動線追跡については、
本Blogの別稿 を参照してください。
    QuickIPS の概要を11分程のビデオにまとめました。
    
    VIDEO 
 
 
 
 理由は他のツールに比べ少ない工数で、グラフィカルなアプリを作成できるからです。IPSユーザアプリケーションのプロトタイプ開発にも適しています。 以下では、QuickIPS の諸機能を詳しくご紹介します。
    
  
     下図は FileMaker の散布図グラフ機能を使用したビーコン位置を表示するフロアマップです。 予め位置情報表示用のマップ(画像ファイル)を用意しておき、FileMakerのレイアウト上に取り込み、そのマップ上に散布図グラフを配置しています。
    
  
    
        
            
                
                     
             
         
        
            複数ビーコンが近接して検知されると、ビーコン名が重なってしまう 
         
     
     この方式はユーザが予め定めた座標(
定点座標 )にSVGスポットアイコン(
)
やビーコン情報オブジェクトを配置しておき、測位されたビーコンの情報をこれらのオブジェクトを使用して表示します。 
    
      散布図方式と異なり、同一座標上の複数ビーコンを表示したり、実座標と異なって表示されているビーコンを赤く表示したり、表示フォントの大きさを変更したり(◀ A  ▶ を使用)と、機能をカスタマイズできます。
    
  
     TPC_IPS の測位機能は、ビーコン座標を定点座標 に丸め て算出することができます。丸め 処理を行う必要があります。
例:
図のように定点座標(× 
    ビーコンA(0.2, 1.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 により定点座標に丸めるオプションを用意しています。
  
     ヒートマップは、人・モノが多く集まる場所を色分けして表示します。ヒートマップも測位座標の丸めを行う必要があります。
    
        
            
                
                     
             
         
        
            青、黄色、赤の順で人・モノの密集度を表示 
         
     
     エラーグラフは静止した状態 のビーコンの実座標と測位座標との誤差を折れ線グラフで表示します。 この機能は測位システムの技術担当者が、測位の精度を調べる際に有用な機能となります。
    
    
    
        
            
                
                     
             
         
        
            横軸がスキャン実行時刻、縦軸に誤差、誤差値が小さい程、測位精度は高い 
         
     
     
     AUTOモードで自動更新
● ボタン実行中、またはMANUALモードで更新ボタン
をクリックした際は、エラーグラフは最新の測位情報により更新されます。 
    
     QuickIPS の基本操作について簡単に説明します。
    
AUTOモード 
    ● ボタンが画面右上に表示されるので、これをクリックするとフロアマップ、ヒートマップ、エラーグラフを最新のデータにより自動的更新します。■をクリックすると、自動更新を停止します。
    
MANUALモード 
     このモードはAUTOモードとは異なり、自動更新されません。最新情報で更新するには、画面右上に表示される
をクリックします。 
    
HISTORYモード 
     このモードでは過去の座標データを基にフロアマップ、ヒートマップ、エラーグラフを表示することができます。
    
     画面上部のヘッダー部の操作方法について説明します。
    
    
        
            サブメニューボタン クリックするとポップアップメニューが表示されるので、以下を選択。
                
                    Scatter map(散布図グラフを使用したフロアマップ)
             
        
            実行モード 
                上述のAUTO、MANUAL、HISTORYから選択。
             
         
        
            Time ScanCode (YYMMDDMMDDSS形式、スキャンを実行した日時)を範囲指定する。 
         
        
            ScanCodeナビゲーション 
            
                [Time]で指定した範囲で、ScanCode 間を移動・選択するためのボタン群
             
         
        
            ピッカーボタン 
            対象となるビーコン及び ScanCode を選択するためのピッカー・フローティングウインドウ(後述)を表示。 
         
        
            エラーサマリーボタン 
            測位誤差の詳細を表示するエラーサマリー・フローティングウインドウ(後述)を表示。 
        
     
     本ウインドウは、フロアマップ、ヒートマップ、エラーグラフで対象とするビーコンや ScanCode を選択するためのウインドウです。本ウインドウは×ボタンで閉じられるまで、常に最前面に表示されます。
    
    
    
    
        
            ビーコンリスト ビーコン一覧、クリックで選択あるいは選択解除。選択中のビーコンはピンクで表示される。
選択されたビーコンは、フロアマップの表示対象となる。Error Graph(測位誤差グラフ) で表示されるビーコン数は6つまで。 
         
        
            ビーコン名書式 
            
                クリックすると、フロアマップに表示されるビーコン名の書式が切り替わる。
             
         
        
            All ボタン 
            
                全ビーコンを選択
             
         
        
            None ボタン 
            
                全てのビーコンの選択を解除
             
         
      
            ScanCodeリスト 
            
                [Time]で指定された範囲内の ScanCode の一覧。クリックして選択すると、その ScanCode を持つ座標データに基づき、フロアマップとヒートマップが表示される。
             
         
     
     エラーサマリーフローティングウインドウは、ピッカーを使用して選択したビーコンの測位誤差のサマリーを表示します。エラーグラフの折れ線は一度に表示できるビーコン数は6つ迄でしたが、このサマリーには選択できるビーコンの数に制限はありません。
    
エラーサマリーフローティングウインドウ 
            
        
            測位エラーサマリー 
            静止した状態にあるビーコンの測位誤差をビーコン毎に表示。ビーコンリストから選択されたビーコンの測位誤差の平均、最大、最小、標準偏差を表示。 
         
        
            エラー種類 
            
                エラーの種類を選択するボタン、各ボタン選択時のエラー算出式は以下の通り。
             
         
     
     2種類のフロアマップ、ヒートマップ、エラーグラフ機能は iPhone/iPad(iOS) でも利用できます。これらの画面はPC用と同じ画面を使用していますので、工数的に有利な開発が可能です。
    
    iPhone 上での QuickIPS
    
        
            
                
                     
             
         
        
            開発時はPC/iOSでの利用を意識する! 
         
     
      
     QuickIPS には座標データを保存する locLogテーブルがあり、このテーブルのデータを抽出・加工して、上述の機能を実現しています。
  
     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 を使用することによってカスタマイズができます。
 下図の要領でカスタマイズを行います。フロアマップの操作はレイアウトモードで行います。 
 まず、フロアマップ画像を用意し、フロアマップレイアウトの背景として貼り付けます(最背面)。
 
 
 オブジェクトを配置する際は、配置用オブジェクトの一覧から、対象となるオブジェクトをマウスで選択し、フロアマップレイアウト上にドラッグすることによって配置することができます。下図の例では、 座標(4, 8) のオブジェクト(X-Y が 4-8で示されている)をマウスでドラッグする様子を赤囲みで示したものです。
 SVG スポットアイコンも同様にドラッグコピーで配置します。
 
  大規模施設のフロアマップを作成する場合は、フロアマップ画像を分割し、レイアウト、タブ、スライドを複数作成して、分割したマップをそれぞれに取り込むようにします。
     QuickIPS は FileMaker テンプレートとして単体リリースする予定です。
    ※ QuickIPS の仕様・予定等は、予告無く変更されることがあります。 
    
     以上
     NuckyT