以下,本実施の形態について,図を用いて説明する。
図1は,本実施の形態による位置認識を行うシステムの構成例を示す図である。
図1に示すシステムにおいて,端末10は,相対的な位置関係を認識する対象のコンピュータである。無線ルータ20は,端末10間の通信を実現する無線LANのアクセスポイントとなる機器である。本実施の形態では,各端末10は,無線ルータ20を介して,互いに通信を行う。なお,端末10間の通信として,例えばBluetooth(登録商標)など,他の通信技術を用いてもよい。
図2は,本実施の形態による端末の外観の例を示す図である。
本実施の形態の例では,端末10は,図2に示すようなスマートフォンやタブレット端末などのスマート端末であるものとする。端末10は,図2に示すように,本体前面にディスプレイ11を備える。端末10には,上下方向があり,通常時には,図2の矢印に示す方向が上方向となるように,ディスプレイ11への画面表示が行われる。なお,本実施の形態による位置認識の技術によって,相対的な位置関係を認識する対象の端末10が,必ずしもスマート端末である必要はない。例えば,端末10が,ノートPC(Personal Computer )などであってもよい。
図3は,本実施の形態による端末の構成例を示す図である。
図3(A)に示すように,端末10は,加速度センサ12,振動子(バイブレータ)13,カメラ14,地磁気センサ15等の機器を内蔵している。これらの機器は,市販される多くのスマート端末に標準で内蔵されている機器である。
端末10は,位置認識部100を備える。位置認識部100は,端末10間の相対的な位置関係を認識する。位置認識部100は,例えば,独立したソフトウェアプログラムで実現されてもよいし,何らかのアプリケーションの一機能として実現されていてもよい。位置認識処理部100は,通信制御部110,位置認識対象特定部120,位置分析部130,並び方向特定部140,画面方向統一部150,アドレス情報記憶部160,配置マップ情報記憶部170を備える。
通信制御部110は,他の端末10との通信を制御する。位置認識対象特定部120は,相対的な位置関係を認識する対象の端末10を特定する。
位置分析部130は,テーブルや床などの振動を伝播する場所に置かれた複数の端末10の並び順を特定する。例えば,振動を伝播する場所がテーブルである場合に,位置認識部130は,テーブルに置かれたある端末10により発生された振動が,テーブルを伝播して,同じテーブルに置かれた別の端末10に到達するまでの時間を取得する。位置認識部130は,複数の端末10間についての振動が伝播した時間から,テーブルに置かれた複数の端末10の相対的な位置関係を示す並び順を特定する。
並び方向特定部140は,位置分析部130により特定された複数の端末10の並び順が,どの方向に並んだ並び順であるかを特定する。位置分析部130による処理では,並べられた複数の端末の隣接関係を示す並び順が特定されるだけで,その並び順が,どの方向に並んだ並び順を示しているかまでは特定されない。位置分析部130により特定された並び順は,例えば,端末10の前面に対して,右方向に並んだ並び順を示している可能性も,左方向に並んだ並び順を示している可能性も,上方向に並んだ並び順を示している可能性も,下方向に並んだ並び順を示している可能性もある。並び方向特定部140は,並び順の方向を含む,複数の端末10の一意の並びパターンを特定する。本実施の形態による並び方向特定部140は,並び順が特定された複数の端末10のうちのいずれか2つ以上の端末10から,それぞれの端末10で撮影された画像を取得し,取得された2つ以上の画像の重なり部分の位置関係から,複数の端末10の並び順の方向を特定する。
画面方向統一部150は,並べられた複数の端末10の表示画面が同じ方向を向くように統一する。例えば図2の例に示すように,スマート端末などの端末10は,上下方向,左右方向でそれぞれ対称的な形状をしている場合が多く,複数の端末10を並べるときに,一部の端末10を逆向きに置いてしまう可能性がある。このとき,逆向きに置かれた端末10の表示画面が他の端末10と逆の方向を向いてしまう。画面方向統一部150は,並べられた複数の表示画面の方向を統一する制御を行う。例えば,本実施の形態による画面方向統一部150は,テーブルなどの場所に並べられた複数の端末10のうち,特定の端末10の表示画面の方向を取得し,同じ場所に置かれた各端末10に対して,表示画面の方向を特定の端末の表示画面の方向に合わせる指示を送信する。
アドレス情報記憶部160は,アドレス情報を記憶する記憶部である。アドレス情報は,相対的な位置関係を認識する対象となる各端末10の通信アドレスなどのデータが記録された情報である。
配置マップ情報記憶部170は,配置マップ情報を記憶する記憶部である。配置マップ情報は,相対的な位置関係を認識する対象となる複数の端末10の並び順などのデータが記録された情報である。
図3(B)は,位置分析部130のより具体的な構成例を示す。図3(B)に示すように,位置分析部130は,通知入出力部131,振動子制御部132,振動検出部133,時間差算出部134,時間差取得部135,並び順特定部136,配置マップ記録部137,配置マップ入出力部138を備える。
通知入出力部131は,複数の端末10の相対的な位置関係を認識する処理において,他の端末10に通知を送る処理や,他の端末10から通知を受ける処理を行う。
振動子制御部132は,振動子13を制御して動作させることにより,自端末10を振動させる。
振動検出部133は,加速度センサ12により得られる振動波形から,特定の状況で得られる振動を検出する。振動検出部133により検出される振動は,例えば,自端末10がテーブルなどに置かれたときに発生する振動や,他の端末10により発生された振動がテーブルなどを伝播して自端末10に到達した振動などである。
時間差算出部134は,他の端末10により振動が発生した時刻と,その振動を自端末10が検出した時刻との時間差を算出する。
時間差取得部135は,テーブルなどの振動を伝播する場所に置かれたある端末10により振動が発生してから,その振動が同じ場所に置かれた別の端末10で検出されるまでの時間を取得する。例えば,時間差取得部135は,ある端末10で振動が発生してから別の端末10で振動が検出されるまでの時間として,時間差算出部134により算出された時間差を取得する。また,例えば,時間差取得部135は,ある端末10で振動が発生してから別の端末10で振動が検出されるまでの時間として,他の端末10からの通知に含まれる時間差を取得する。
並び順特定部136は,複数の端末間について時間差取得部135により取得された時間から,テーブルなどの振動が伝播する場所に置かれた複数の端末10の並び順を特定する。
配置マップ記録部137は,時間差取得部135により取得された時間のデータや,並び順特定部136により特定された並び順のデータなどを,配置マップ情報記憶部170の配置マップ情報に記録する。また,配置マップ記録部137は,他の端末10から受けた配置マップ情報で,配置マップ情報記憶部170の配置マップ情報を更新する。
配置マップ入出力部138は,複数の端末10の相対的な位置関係を認識する処理において,配置マップ情報記憶部170の配置マップ情報を他の端末10に送る処理や,他の端末10から配置マップ情報を受ける処理を行う。
図4は,本実施の形態によるアドレスデータの例を示す図である。
図4に示すアドレスデータ165は,アドレス情報記憶部160に記憶されるアドレス情報の一例を示す。図4に示すアドレスデータ165は,端末ID,通信アドレス等の情報を持つ。端末IDは,相対的な位置関係を認識する対象となる端末10を一意に識別する識別情報である。通信アドレスは,通信相手の端末10を特定するアドレス情報である。例えば,無線LANを用いた通信を行う場合には,通信アドレスはIP(Internet Protocol )アドレスとなり,Bluetoothを用いた通信を行う場合には,通信アドレスはデバイスIDとなる。本実施の形態による例では,無線LANを用いた通信が行われるので,通信アドレスはIPアドレスとなっている。
図5は,本実施の形態による配置マップデータの例を示す図である。
図5に示す配置マップデータ175は,配置マップ情報記憶部170に記憶される配置マップ情報の一例を示す。図5に示す配置マップデータ175は,端末ID,端末状況,時間差#1,時間差#2,並び順,画面方位等の情報を持つ。端末IDは,アドレスデータ165の端末IDに対応する。
端末状況は,該当端末10について,すでに位置関係を認識する処理が実行済みであるかなどの状況を示す。なお,以下では,端末10の位置関係を認識する処理を測位とも呼ぶ。端末状況において,“0”は,該当端末10が基準端末であることを示す。本実施の形態による位置認識の例では,基準端末となった端末10を中心に,他の端末10の位置関係を特定していく。なお,基準端末となった端末10は,測位済みの端末10として扱われる。端末状況において,“1”は,該当端末10が最端端末であることを示す。最端端末は,その時点で測位済みである端末10のうち,並び順が最端となっている端末10である。端末10が一列に並んでいる場合には,その両端の端末10が最端となるが,本実施の形態の例では,両端の端末10のうち,後述する並び順が+側の端末10のみを最端端末とする。端末状況において,“2”は,該当端末10が測位済みであることを示す。なお,図5の配置マップデータ175には例がないが,端末状況において,“−1”は,該当端末10が未測位の端末10または測位中の端末10であることを示す。
時間差#1は,該当端末10により発生された振動が,基準端末となった端末10により検出されるまでの時間を示す。時間差#2は,該当端末10により発生された振動が,該当端末10の測位の時点で最端端末となっている端末10により検出されるまでの時間を示す。
並び順は,該当端末の相対位置を示す。並び順において,“0”は,基準端末となった端末10の並び順を示す。並び順の+と−は,基準端末となった端末10に対して,互いに逆側に並んでいることを示している。+側と−側のそれぞれにおいて,並び順の値が0に近い端末10ほど,相対的に基準端末となった端末10に近い位置にある。
画面方位は,該当端末10のディスプレイ11の上方向が向く方位を示す。ここでは,画面方位は,北方向を方位0度とした場合の左回りの角度を示すものとする。
図6は,本実施の形態による端末を実現するコンピュータのハードウェア構成例を示す図である。
図3に示す本実施の形態の端末10を実現するコンピュータ1は,例えば,CPU(Central Processing Unit )2,主記憶となるメモリ3,記憶装置4,通信装置5,媒体読取・書込装置6,入力装置7,出力装置8等を備える。記憶装置4は,例えばHDD(Hard Disk Drive )等の外部記憶装置や,補助記憶装置などである。通信装置5は,例えば無線LAN等の通信を行うデバイスなどである。媒体読取・書込装置6は,例えばCD−R(Compact Disc Recordable )ドライブやDVD−R(Digital Versatile Disc Recordable )ドライブなどである。入力装置7は,例えばキーボード・マウス等の入力機器などである。出力装置8は,例えばディスプレイ等の表示装置などである。
図3に示す端末10および端末10が備える各機能部は,コンピュータ1が備えるCPU2,メモリ3等のハードウェアと,ソフトウェアプログラムとによって実現することが可能である。コンピュータ1が実行可能なプログラムは,記憶装置4に記憶され,その実行時にメモリ3に読み出され,CPU2により実行される。
コンピュータ1は,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。また,コンピュータ1は,サーバコンピュータからプログラムが転送されるごとに,逐次,受け取ったプログラムに従った処理を実行することもできる。さらに,このプログラムは,コンピュータ1で読み取り可能な記録媒体に記録しておくことができる。
以下,本実施の形態による端末10の位置認識の技術について,より具体的な例を用いて説明する。
〔実施例1〕
本実施例1では,振動を伝播するテーブルに測位対象の端末10が置かれたことにより発生される振動が,すでにテーブルに置かれた他の端末10で検出されるまでの時間を求め,測位対象の端末10と他の端末10との相対位置関係を特定する。なお,本実施例1では,ユーザは,テーブル上で横一直線に並ぶように,無作為の順で複数の端末10を置くものとする。
ユーザは,位置関係を認識する対象となるすべての端末10について,位置認識部100を実現するプログラムを含むアプリケーションを起動する。以下では,位置関係を認識する対象を,位置認識対象とも呼ぶ。その後,ユーザは,位置認識対象となる端末10のうちの任意の1台を操作し,その端末10に,すべての位置認識対象の端末10を特定する処理を実行させる。例えば,ユーザが操作する端末10は,UPnP(Universal Plug and Play )のプロトコルに従って,位置認識対象の端末10の特定を行う。
ユーザが操作する端末10において,位置認識対象特定部120は,位置認識対象の端末10の検索信号を発信する。検索信号には,共通のサービスを行うアプリケーションを識別するサービス識別子が含まれている。位置認識対象の各端末10で起動されたアプリケーションは,共通のサービス識別子を保持しており,そのサービス識別子を含む検索信号を受けた位置認識対象の端末10は,検索信号を発信した端末10に応答を返す。
ユーザが操作する端末10の位置認識対象特定部120は,応答を返した端末10を位置認識対象の端末10と判断し,その端末10のIPアドレスをアドレスデータ165に記録する。すべての位置認識対象の端末10について応答を受け付けた後,ユーザが操作する端末10は,完成したアドレスデータ165を位置認識対象の各端末10に送信する。位置認識対象の全端末10で,同じアドレスデータを共有することになる。これにより,位置認識対象の各端末10間での通信が可能な状態となる。
次に,ユーザは,位置認識対象の端末10から,基準端末となる端末10を決定する。ユーザ操作によって基準端末を指定してもよいが,ここでは,位置認識対象の端末10を並べるテーブルに最初に置かれた端末10が,自動で基準端末となるものとする。
図7は,本実施例1による基準端末決定の例を説明する図である。
ユーザは,基準端末にする端末10aを,振動を伝播するテーブル30に置く(図7の(1))。このとき,端末10aがテーブル30に置かれたことにより,振動が発生する(図7の(2))。テーブル30に置かれた端末10aの位置分析部130は,加速度センサ12により得られる振動波形から,自端末10aが置かれたことにより発生された振動を検出する(図7の(3))。
最初に置かれた端末10aは,自端末10aにより発生された振動を検出した時点で,まだ基準端末が決まっていないことを確認し,自端末10aが基準端末であると判断する。ここでは,最初に置かれた端末10aは,配置マップデータ175に自端末10aが基準端末となった旨を記録する。基準端末となった端末10aは,配置マップデータ175を送信することで,他の端末10に自身が基準端末となった旨を通知する。
図8は,本実施例1による2台目の端末が置かれた例を説明する図である。
図8において,端末10aは,すでにテーブル30に置かれている基準端末である。端末10bは,2番目にテーブル30に置かれる端末10である。
ユーザは,端末10bを,振動を伝播するテーブル30に置く(図8の(1))。このとき,端末10bがテーブル30に置かれたことにより,振動が発生する(図8の(2))。テーブル30に置かれた端末10bの位置分析部130は,加速度センサ12により得られる振動波形から,自端末10bが置かれたことにより発生された振動を検出する(図8の(3))。端末10bは,置きイベント通知を基準端末である端末10aに送信する(図8の(4))。置きイベント通知は,自端末10bがテーブル30に置かれたことを他の端末10に伝える通知である。端末10aの位置分析部130は,端末10bからの置きイベント通知を受信した時刻を取得する。置きイベント通知は,ほぼ0時間で端末10aに通知される。すなわち,置きイベント通知の受信時刻は,ほぼ端末10bにより振動が発生した時刻となる。
端末10bにより発生された振動は,テーブル30を伝播する(図8の(5))。振動が伝播する速度は,振動を伝播する場所の材質などによって異なるが,数mm/μs程度である。端末10bにより発生された振動は,置きイベント通知の送受信と比べて十分に長い時間をかけて,端末10aに到達する。端末10aの位置分析部130は,加速度センサ12により得られる振動波形から,テーブル30を伝わってきた,端末10bが置かれたことにより発生された振動を検出する(図8の(6))。端末10aは,端末10bにより発生された振動を検出した時刻を取得する。
端末10aの位置分析部130は,置きイベント通知を受信した時刻と振動を検出した時刻との時間差を算出する。算出された時間差は,端末10bから端末10aまで振動が伝播する時間である。端末10bから端末10aまで振動が伝播する時間は,端末10bと端末10aとの間の距離に比例する。端末10aの位置分析部130は,自身が基準端末であるので,配置マップデータ175における端末10bのレコードに,時間差#1を記録する。
図9は,本実施例1による端末がテーブルに置かれたことにより発生した振動が検出される際の波形のイメージを示す図である。
端末10がテーブル30に置かれたことにより発生した振動が検出される際には,図9に示すように,加速度センサ12により,瞬間的に大きな振幅がある振動波形が得られるものと考えられる。例えば,端末10の位置分析部130は,図9に示すように,加速度センサ12により得られる加速度振幅が,あらかじめ設定されたフィルタ振幅を超えた場合に,目的とする振動が検出されたものと判断する。フィルタ振幅としては,目的とする振動の検出に適切と考えられる値が,あらかじめ設定されているものとする。このとき,端末10の位置分析部130は,例えば,最初にフィルタ振幅を超えた波のピークが検出された時刻を,振動を検出した時刻として取得する。
なお,目的とする振動の検出判断や,取得する検出時刻については,任意の設計が可能である。例えば,一連の加速度振幅の形状特徴で目的とする振動の検出を判断する,加速度振幅が最大の波が得られた時刻を振動を検出した時刻として取得するなどの設計も可能である。
図10および図11は,本実施例1による3台目の端末が置かれた例を説明する図である。
図10,図11において,端末10aは,最初にテーブル30に置かれた基準端末である。端末10bは,2番目にテーブル30に置かれた端末10である。端末10cは,3番目にテーブル30に置かれる端末10である。
図10(A)は,テーブル30に2台の端末10が並べられた状態において,並べられた2台の端末10の並び順を示す。本実施例1では,図10(A)に示すように,基準端末である端末10aに,並び順“0”が設定される。また,本実施例1では,図10(A)に示すように,2番目に認識された端末10bに,+側の並び順が設定される。ここでは,端末10bに,並び順“+1”が設定されている。このような状況で,3台目の端末10cがテーブル30に置かれるものとする。
図10(B)は,3台目の端末10cが置かれる可能性がある相対位置を示す。図10(B)に示すように,3台目の端末10cが置かれる位置は,図10(B)の(1)〜(3)に示す3つの位置のいずれかとなる。図10(B)の(1)は,端末10aから見て端末10bと反対側の位置である。図10(B)の(2)は,端末10aから見て端末10bと同じ側で,端末10aと端末10bとの間の位置である。図10(B)の(3)は,端末10aから見て,端末10bと同じ側で,端末10bより遠い位置である。
端末10cが置かれた際には,図8で説明した手順と同様の手順で,端末10cから端末10aまで振動が伝播した時間と,端末10cから端末10bまで振動が伝播した時間とが得られる。なお,端末10が2台しか置かれていない状態では,端末10bが最端端末である。端末10cから端末10aまで振動が伝播した時間が,端末10cについての時間差#1となり,端末10cから端末10bまで振動が伝播した時間が,端末10cについての時間差#2となる。基準端末である端末10aの位置分析部130は,それらの時間差#1,#2を取得し,配置マップデータ175における端末10cのレコードに記録する。基準端末である端末10aの位置分析部130は,端末10cについての時間差#1,#2と,最端端末である端末10bについての時間差#1から,端末10cが置かれた位置を求める。
以下の説明では,端末10bから端末10aまで振動が伝播した時間をΔTba,端末10cから端末10aまで振動が伝播した時間をΔTca,端末10cから端末10bまで振動が伝播した時間をΔTcbとする。すなわち,ΔTbaが端末10bについての時間差#1であり,ΔTcaが端末10cについての時間差#1であり,ΔTcbが,端末10cについての時間差#2である。
図11(A)は,ΔTcaやΔTcbよりもΔTbaが長い場合の端末10cの位置を示す。図11(A)に示すように,ΔTca<ΔTbaかつΔTcb<ΔTbaである場合,測位対象の端末10cは,端末10aと端末10bとの間の位置にある。このとき,端末10cの並び順は,+側の並び順となる。ΔTca<ΔTbaであるので,端末10間で振動が伝播する時間と端末10間の距離との比例関係から,端末10cには,端末10bより基準端末に近い並び順が設定される。本実施例1では,基準端末である端末10aの位置分析部130は,図11(A)に示すように,端末10cの並び順として“+1”を設定し,端末10bの並び順を“+2”に変更する。その後の最端端末は,端末10bのままである。
図11(B)は,ΔTbaやΔTcbよりもΔTcaが長い場合の端末10cの位置を示す。図11(B)に示すように,ΔTba<ΔTcaかつΔTcb<ΔTcaである場合,測位対象の端末10cは,端末10aから見て,端末10bと同じ側で,端末10bより遠い位置にある。このとき,端末10cの並び順は,+側の並び順となる。ΔTba<ΔTcaであるので,端末10間で振動が伝播する時間と端末10間の距離との比例関係から,端末10cには,端末10bより基準端末から遠い並び順が設定される。本実施例1では,基準端末である端末10aの位置分析部130は,図11(B)に示すように,端末10cの並び順として“+2”を設定する。その後の最端端末は,端末10cに変更となる。
図11(C)は,ΔTbaやΔTcaよりもΔTcbが長い場合の端末10cの位置を示す。図11(C)に示すように,ΔTba<ΔTcbかつΔTca<ΔTcbである場合,測位対象の端末10cは,端末10aから見て端末10bと反対側の位置にある。このとき,端末10cの並び順は,−側の並び順となる。本実施例1では,基準端末である端末10aの位置分析部130は,図11(C)に示すように,端末10cの並び順として“−1”を設定する。その後の最端端末は,端末10bのままである。
4台目以降にテーブル30に置かれる端末10についても,図10,図11を用いて説明した3台目に置かれた端末10cの場合と同様の手順で,他の端末10に対する相対的な位置関係を求めることができる。各端末10について,それぞれ基準端末である端末10aから見て+側,−側のいずれ側にあるのかさえ分かれば,各端末10についての基準端末に振動が伝播する時間を示す時間差#1の値から,各端末10がどれだけ基準端末の近くにあるかを計れるので,すべての端末10の並び順を特定できる。
このように,各端末10間についての振動が伝播した時間を用いて,複数の端末10の並び順を特定することができる。なお,本実施例1では,基準端末である端末10aの位置分析部130が他の端末10に配置マップデータ175を送ることで,特定された端末10の並び順が,すべての位置認識対象の端末10で共有される。
なお,4台目以降の端末10の測位において,基準端末以外で測位対象の端末10による振動の検出を行う端末10は,必ずしも最端端末である必要はない。例えば,最端であるかに関係なく常に2番目に置かれた端末10で振動の検出を行うようにしてもよいし,3台以上の端末10で振動の検出を行うようにしてもよい。
すべての位置認識対象の端末10がテーブル30に置かれた時点で,テーブル30に並べられたすべての位置認識対象の端末10の並び順が特定された状態となる。ただし,上述したように,この段階では,並べられた複数の端末の隣接関係を示す並び順が特定されるだけであり,その並び順が,どの方向に並んだ並び順を示しているかまでは特定されない。例えば,本実施例1では,複数の端末10をテーブル30上に横一直線に並べることが前提となっているので,位置分析部130により求められた並び順は,左右方向の鏡像2パターン,すなわち左から右方向への端末10の並びを表すパターンまたは右から左方向への端末10の並びを表すパターンのいずれかである。
図12および図13は,本実施例1による端末の並び順の方向を特定する例を説明する図である。
図12は,すべての位置認識対象の端末10がテーブル30に並べられた状態を示す。図12において,端末10xと端末10yは,テーブル30に並べられた端末10で,両端に置かれた端末10である。端末10xは,位置分析部130による処理の段階で並び順の値が最小となった端末10であり,端末10yは,位置分析部130による処理の段階で並び順の値が最大となった端末10である。なお,本実施例1では,並び順の値が最小である端末10xが,基準端末となる端末10aである可能性がある。
端末10xと,端末10yは,それぞれ内蔵されたカメラ14で撮影を行い画像を取得する。ここでは,端末10xのカメラ14で得られた画像を画像Xとし,端末10yのカメラ14で得られた画像を画像Yとする。端末10xと,端末10yは,撮像した画像を基準端末である端末10aに送る。
基準端末である端末10aの並び方向特定部140は,画像X,画像Yを受けると,それらの2つの画像で重なり合う部分,すなわち2つの画像で同じ風景が写っている部分を特定する。複数の画像からそれらの画像に写った同じ物体を抽出する技術としては,様々な周知技術が存在する。例えば,基準端末である端末10aの並び方向特定部140は,画像X,画像Yからそれぞれエッジなどの特徴点を複数抽出し,2つの画像間で抽出された特徴点のマッチングを行い,2つの画像の重なり部分を特定する。なお,端末10x,端末10yが互いに上下方向逆向きに置かれる可能性がある場合には,画像の重なり部分の特定において,例えば,一方の画像を180度回転して処理を行うなどすればよい。端末10aの並び方向特定部140は,2つの画像の重なり部分の位置関係から,テーブル30に置かれた端末10の並び順の方向を特定する。
図13(A)は,画像Xの右側と画像Yの左側とに,双方の画像の重なり部分があった場合の例を示す。図13(A)において,ハッチング部分が,画像Xと画像Yとの重なり部分,すなわち2つの画像に同じ風景が写った部分である。この場合,テーブル30上に横一列に並べられた端末10の並び順は,図13(B)に示すように,端末10xが左端となり,端末10yが右端となる並び順である。
図13(C)は,画像Yの右側と画像Xの左側とに,双方の画像の重なり部分があった場合の例を示す。図13(C)において,ハッチング部分が,画像Xと画像Yとの重なり部分,すなわち2つの画像に同じ風景が写った部分である。この場合,テーブル30上に横一列に並べられた端末10の並び順は,図13(D)に示すように,端末10yが左端となり,端末10xが右端となる並び順である。
本実施例1において,基準端末である端末10aの並び方向特定部140は,並び順の方向の特定結果に応じて,配置マップデータ175における並び順の項目のデータを更新する。例えば,端末10aの並び方向特定部140は,特定された端末10の並び順の方向が図13(B)に示す通りであれば,配置マップデータ175における並び順の項目のデータの更新を行わない。また,例えば,端末10aの並び方向特定部140は,特定された端末10の並び順の方向が図13(D)に示す通りであれば,配置マップデータ175における各レコードの並び順の+,−の符号を逆転する更新を行う。このように配置マップデータ175の更新を行うと,更新後の配置マップデータ175の並び順は,値が大きくなるに従ってより右側に端末10が置かれていることを示す並び順となる。
このように,端末10に内蔵されたカメラで撮影された画像を利用して,端末10の並び順の方向を特定することができる。なお,端末10の並び順の方向を特定する処理において,カメラ14による撮影で画像を取得する端末10は,並び順で両端となった端末10以外の端末であってもよい。また,カメラ14により画像を取得する端末10が,3台以上であってもよい。また,端末10の並び順の方向が横方向に限らなければ,画像の左右部分だけではなく上下部分でも重なりが発生する可能性があり,この場合,上下方向,斜め方向を含む,任意の端末10の並び順の方向を特定することが可能である。
図14は,本実施例1による並べられた端末の表示画面の方向を統一する例を説明する図である。
上述したように,スマート端末などの端末10は,上下方向,左右方向でそれぞれ対称的な形状をしている場合が多く,複数の端末10を並べるときに,一部の端末10を逆向きに置いてしまう可能性がある。このとき,逆向きに置かれた端末10の表示画面が他の端末10と逆の方向を向いてしまう。
図14(A)は,4台の端末10a〜dが並べられた状況において,端末10bのみが上下方向逆向きに置かれている場合の例を示す。図14(A)に示すように,端末10bのみが上下方向逆向きに置かれているため,表示画面の方向も端末10bだけが逆方向となっている。なお,本実施例1では,各端末10の表示画面の方向は,図2に示すディスプレイ11の上方向であるものとする。
例えば,基準端末である端末10aの画面方向統一部150は,地磁気センサ15により方位の情報を取得し,自端末10aのディスプレイ11の上方向が向く方位を特定する。特定されたディスプレイ11の上方向が向く方位が,端末10aの表示画面の方向となる。以下では,ディスプレイ11の上方向が向く方位を画面方位とも呼ぶ。端末10aの画面方向統一部150は,他の端末10に,画面方向調整指示通知を送る。画面方向調整指示通知は,各端末10の表示画面の方向を特定の端末の表示画面の方向に合わせる指示の通知である。画面方向調整指示通知には,自端末10aの表示画面の方向として,自端末10aの画面方位が含まれる。
各端末10b〜dの画面方向統一部150は,基準端末である端末10aから画面方向調整指示通知を受けると,地磁気センサ15により方位の情報を取得し,自端末10の画面方位を特定する。各端末10b〜dの画面方向統一部150は,基準端末である端末10aの画面方位と自端末10の画面方位とを比較し,自端末10の表示画面の方向が,基準端末である端末10aの表示画面の方向と逆であるかを判定する。各端末10b〜dの画面方向統一部150は,自端末10の表示画面の方向が基準端末である端末10aの表示画面の方向と逆であると判定される場合に,自端末10の表示画面の方向を180度回転する調整を行う。
図14(A)に示す例では,端末10bのみが,基準端末である端末10aと表示画面の方向が逆である。端末10bの画面方向統一部150は,自端末10bの表示画面の方向を180度回転する調整を行う。これにより,図14(B)に示すように,並べられたすべての端末10a〜dの表示画面の方向が自動的に統一される。
なお,統一する表示画面の方向については,必ずしも基準端末に合わせる必要はなく,ユーザが選択した端末10に合わせるなど,任意の設計が可能である。
以下,図15〜図21のフローチャートを用いて,本実施例1の位置認識部100による処理の流れを説明する。
図15は,本実施例1の位置認識部による位置認識処理フローチャートである。
端末10の位置認識部100において,位置認識対象特定部120は,位置認識対象端末特定処理を実行する(ステップS10)。位置認識対象端末特定処理は,相対的な位置関係を認識する対象の端末10を特定する処理である。位置認識対象端末特定処理の詳細については,後述する。
位置分析部130は,相対位置関係分析処理を実行する(ステップS11)。相対位置関係分析処理は,並べられた複数の端末10の相対的な位置関係を分析し,その並び順を特定する処理である。相対位置関係分析処理の詳細については,後述する。
並び方向特定部140は,並び方向特定処理を実行する(ステップS12)。並び方向特定処理は,ステップS11の相対位置関係分析処理で特定された,複数の端末10の並び順の方向を特定する処理である。並び方向特定処理の詳細については,後述する。
画面方向統一部150は,画面方向統一処理を行う(ステップS13)。画面方向統一処理は,並べられた複数の端末10の表示画面の方向を統一する処理である。画面方向統一処理の詳細については,後述する。
図16は,本実施例1の位置認識対象特定部による位置認識対象端末特定処理フローチャートである。
図16を用いて,位置認識対象の端末10を特定するためにユーザが操作する端末10による位置認識対象端末特定処理の流れを説明する。ここでは,UPnPのプロトコルに基づいて位置認識対象の端末10を特定する処理の例を想定している。
ユーザが操作する端末10の位置認識部100における位置認識対象特定部120は,サービス識別子を含む,位置認識対象の端末10の検索信号を発信する(ステップS20)。検索信号を受けた他の端末10は,自身が検索信号に含まれるサービス識別子を保持している場合に,検索信号を発信した端末に応答を返す。これらの処理は,例えばUPnPのM−Searchによって行われる。
ユーザが操作する端末10の位置認識対象特定部120は,タイムアウトであるかを判定する(ステップS21)。タイムアウトでなければ(ステップS21のNO),位置認識対象特定部120は,他の端末10からの応答を受信したかを判定する(ステップS22)。他の端末10からの応答を受信していなければ(ステップS22のNO),位置認識対象特定部120は,ステップS21の処理に戻る。
他の端末10からの応答を受信したら(ステップS22のYES),位置認識対象特定部120は,受信した応答から,応答した端末10のIPアドレスを取得する(ステップS23)。位置認識対象特定部120は,取得したIPアドレスをアドレスデータ165に記録する(ステップS24)。位置認識対象特定部120は,応答した端末10との通信路を確保する(ステップS25)。位置認識対象特定部120は,ステップS21の処理に戻り,さらに別の端末10からの応答を待つ。
ステップS21において,タイムアウトであれば(ステップS21のYES),位置認識対象特定部120は,すべての位置認識対象の端末10に対して,アドレスデータ165を送信する(ステップS26)。位置認識対象の端末10は,アドレスデータ165にIPアドレスが記録されている端末10である。これにより,すべての位置認識対象の端末10で,アドレスデータ165を共有した状態となる。
図17は,本実施例1の位置分析部による相対位置関係分析処理フローチャートである。
端末10の位置分析部130において,振動検出部133は,自端末10がテーブル30に置かれた際に発生する振動の検出を開始する(ステップS30)。配置マップ入出力部138は,他の端末10から配置マップデータ175を受信したかを判定する(ステップS31)。また,振動検出部133は,自端末10がテーブル30に置かれた際に発生する振動を検出したかを判定する(ステップS32)。
振動検出部133が自端末10がテーブル30に置かれた際に発生する振動を検出した場合(ステップS32のYES),位置分析部130は,自端末10が基準端末であると判断する。このとき,配置マップ記録部137は,配置マップデータ175の端末状況に,自端末10が基準端末である旨を設定する(ステップS33)。配置マップ入出力部138は,他のすべての端末10に,配置マップデータ175を送信する(ステップS34)。基準端末となった端末10は,配置マップデータ175を送ることで,自端末10が基準端末である旨を他の端末10に通知する。位置分析部130は,基準端末処理(1)を実行する(ステップS35)。基準端末処理(1)は,本実施例1において,基準端末となった端末10による相対位置関係分析処理である。基準端末処理(1)の詳細については,後述する。
配置マップ入出力部138が他の端末10から配置マップデータ175を受信した場合(ステップS31のYES),位置分析部130は,自端末10が基準端末以外の端末10であると判断する。このとき,配置マップ記録部137は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新する(ステップS36)。位置分析部130は,基準端末外端末処理(1)を実行する(ステップS37)。基準端末外端末処理(1)は,本実施例1において,基準端末以外の端末10による相対位置関係分析処理である。基準端末外端末処理(1)の詳細については,後述する。
図18は,本実施例1の基準端末である端末の位置分析部による基準端末処理(1)フローチャートである。
基準端末である端末10の位置分析部130において,振動検出部133は,他の端末10がテーブル30に置かれた際に発生する振動の検出を開始する(ステップS40)。通知入出力部131は,他の端末10から置きイベント通知を受信したかを判定する(ステップS41)。
通知入出力部131が置きイベント通知を受信した場合(ステップS41のYES),時間差算出部134は,自端末10の時計機能により,置きイベント通知の受信時刻を取得する(ステップS42)。このとき,置きイベント通知を送ってきた端末10が,測位対象の端末10となる。
振動検出部133は,他の端末10がテーブル30に置かれた際に発生する振動を検出したかを判定する(ステップS43)。振動検出部133が他の端末10がテーブル30に置かれた際に発生する振動を検出した場合(ステップS43のYES),時間差算出部134は,自端末10の時計機能により,振動の検出時刻を取得する(ステップS44)。時間差算出部134は,置きイベント通知の受信時刻と振動の検出時刻との時間差を算出する(ステップS45)。時間差取得部135は,ここで算出された時間差を,時間差#1として取得する。配置マップ記録部137は,時間差#1を,配置マップデータ175における測位対象の端末10のレコードに記録する(ステップS46)。
通知入出力部131は,他の端末10から時間差通知を受信したかを判定する(ステップS47)。通知入出力部131から時間差通知を受信した場合(ステップS47のYES),時間差取得部135は,受信した時間差通知から時間差#2を抽出し,配置マップ記録部137は,抽出した時間差#2を,配置マップデータ175における測位対象の端末10のレコードに記録する(ステップS48)。
時間差取得部135は,必要な時間差がすべて得られたかを判定する(ステップS49)。位置分析部130は,必要な時間差がすべて得られるまでステップS43〜S49の処理を繰り返す(ステップS49のNO)。必要な時間差は,測位対象の端末10が2番目に置かれる端末10である場合,時間差#1のみであり,測位対象の端末10が3番目以降に置かれる端末10である場合,時間差#1と時間差#2である。
必要な時間差がすべて得られた場合(ステップS49のYES),並び順特定部136は,測位対象の端末10を含む,テーブル30に置かれている複数の端末10の並び順を特定する(ステップS50)。ステップS50の処理は,例えば,図10および図11を用いて説明した処理である。配置マップ記録部137は,特定された並び順を,配置マップデータ175に記録する(ステップS51)。このとき,配置マップ記録部137は,測位対象の端末10の端末状況を測位済みに更新し,最端端末が変わる場合には,該当する端末10の端末状況を更新する。配置マップ入出力部138は,測位済みであるすべての端末10に,配置マップデータ175を送信する(ステップS52)。これにより,測位済みの全端末10で,その時点で最新の位置認識結果が共有される。
位置分析部130は,すべての位置認識対象の端末10について,測位が終了したかを判定する(ステップS53)。すべての位置認識対象の端末10について,まだ測位が終了していなければ(ステップS53のNO),位置分析部130は,ステップS40の処理に戻って,次の測位対象の端末10の処理に移る。すべての位置認識対象の端末10について測位が終了していれば(ステップS53のYES),位置分析部130は,処理を終了する。
図19は,本実施例1の基準端末以外の端末の位置分析部による基準端末外端末処理(1)フローチャートである。
基準端末以外の端末10の位置分析部130において,振動検出部133は,自端末10がテーブル30に置かれた際に発生する振動を検出したかを判定する(ステップS60)。振動検出部133が自端末10がテーブル30に置かれた際に発生する振動を検出した場合(ステップS60のYES),通知入出力部131は,置きイベント通知をブロードキャストで送信する(ステップS61)。
配置マップ入出力部138は,基準端末からその時点で最新の配置マップデータ175を受信したかを判定する(ステップS62)。配置マップ入出力部138が配置マップデータ175を受信した場合(ステップS62のYES),配置マップ記録部137は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新する(ステップS63)。
位置分析部130は,すべての位置認識対象の端末10について,測位が終了したかを判定する(ステップS64)。すべての位置認識対象の端末10について測位が終了していれば(ステップS64のYES),位置分析部130は,処理を終了する。
すべての位置認識対象の端末10について,まだ測位が終了していなければ(ステップS64のNO),位置分析部130は,自端末10が最端端末であるかを判定する(ステップS65)。自端末10が最端端末でなければ(ステップS65のNO),配置マップ入出力部138は,ステップS62の処理に戻って,次の配置マップデータ175の受信を待つ。
自端末10が最端端末であれば(ステップS65のYES),振動検出部133は,他の端末10がテーブル30に置かれた際に発生する振動の検出を開始する(ステップS66)。通知入出力部131は,他の端末10から置きイベント通知を受信したかを判定する(ステップS67)。
通知入出力部131が置きイベント通知を受信した場合(ステップS67のYES),時間差算出部134は,自端末10の時計機能により,置きイベント通知の受信時刻を取得する(ステップS68)。
振動検出部133は,他の端末10がテーブル30に置かれた際に発生する振動を検出したかを判定する(ステップS69)。振動検出部133が他の端末10がテーブル30に置かれた際に発生する振動を検出した場合(ステップS69のYES),時間差算出部134は,自端末10の時計機能により,振動の検出時刻を取得する(ステップS70)。時間差算出部134は,置きイベント通知の受信時刻と振動の検出時刻との時間差を算出する(ステップS71)。時間差取得部135は,ここで算出された時間差を,時間差#2として取得する。通知入出力部131は,基準端末に対して,時間差#2を含む時間差通知を送信する(ステップS72)。配置マップ入出力部138は,ステップS62の処理に戻って,次の配置マップデータ175の受信を待つ。
図20は,本実施例1の並び方向特定部による並び方向特定処理フローチャートである。
端末10の位置認識部100において,並び方向特定部140は,自端末10が基準端末であるかを判定する(ステップS80)。自端末10が基準端末であるか否かは,配置マップデータ175で確認できる。
自端末10が基準端末であれば(ステップS80のYES),並び方向特定部140は,並び順が両端の端末10に対して,画像の撮影を要求する撮影開始イベント通知を送信する(ステップS81)。
並び方向特定部140は,両端の端末10からそれぞれ画像を受信したかを判定する(ステップS82)。なお,基準端末である自端末10が両端の端末10の一方である場合には,自端末10が内蔵するカメラ14による撮影を行い,画像を取得する。両端の端末10からそれぞれ画像を受信した場合(ステップS82のYES),並び方向特定部140は,それぞれの画像について,エッジなどの特徴点を抽出する(ステップS83)。並び方向特定部140は,両画像間で抽出された特徴点のマッチングを行い,両画像の重なり部分を抽出する(ステップS84)。
並び方向特定部140は,両端の端末10のうち,並び順の値が最大である端末10から得られた画像における重なり部分が,該画像の左側の部分であるかを判定する(ステップS85)。並び順の値が最大の端末10から得られた画像の重なり部分が左側でなければ(ステップS85のNO),すなわち右側であれば,並び方向特定部140は,配置マップデータ175の並び順を逆順に更新する(ステップS86)。並び方向特定部140は,すべての他の端末10に,最新の配置マップデータ175を送信し(ステップS87),処理を終了する。
ステップS80において,自端末10が基準端末でなければ(ステップS80のNO),並び方向特定部140は,自端末10が両端の端末10のいずれかであるかを判定する(ステップS88)。自端末10が両端の端末10のいずれでもなければ(ステップS88のNO),並び方向特定部140は,ステップS92の処理に進む。
自端末10が両端の端末10のいずれかであれば(ステップS88のYES),並び方向特定部140は,撮影開始イベント通知を受信したかを判定する(ステップS89)。撮影開始イベント通知を受信した場合(ステップS89のYES),並び方向特定部140は,自端末10に内蔵されたカメラ14から,撮影された画像を取得する(ステップS90)。並び方向特定部140は,基準端末に対して,取得された画像を送信する(ステップS91)。
並び方向特定部140は,基準端末から最新の配置マップデータ175を受信したかを判定する(ステップS92)。配置マップデータ175を受信した場合(ステップS92のYES),並び方向特定部140は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新し(ステップS93),処理を終了する。
図21は,本実施例1の画面方向統一部による画面方向統一処理フローチャートである。
端末10の位置認識部100において,画面方向統一部150は,自端末10が基準端末であるかを判定する(ステップS100)。自端末10が基準端末であるか否かは,配置マップデータ175で確認できる。
自端末10が基準端末であれば(ステップS100のYES),画面方向統一部150は,自端末10が内蔵する地磁気センサ15の値から,自端末10の画面方位θを取得する(ステップS101)。画面方向統一部150は,すべての他の端末10に,自端末10の画面方位θを含む画面方向調整指示通知を送信する(ステップS102)。
画面方向統一部150は,他の端末10から,該端末10の画面方位θ’を含む調整結果通知を受信したかを判定する(ステップS103)。他の端末10から調整結果通知を受信した場合(ステップS103のYES),画面方向統一部150は,受信した調整結果通知に含まれる画面方位θ’を,配置マップデータ175の該当端末10のレコードに記録する(ステップS104)。
画面方向統一部150は,すべての他の端末10から調整結果通知を受信済みであるかを判定する(ステップS105)。まだすべての他の端末10から調整結果通知を受信済みでなければ(ステップS105のNO),画面方向統一部150は,ステップS103の処理に戻って,次の調整結果通知の受信を待つ。すべての他の端末10から調整結果通知を受信済みであれば(ステップS105のYES),画面方向統一部150は,すべての他の端末10に,最新の配置マップデータ175を送信し(ステップS106),処理を終了する。
ステップS100において,自端末10が基準端末でなければ(ステップS100のNO),画面方向統一部150は,基準端末から,基準端末の画面方位θを含む画面方向調整指示通知を受信したかを判定する(ステップS107)。画面方向調整指示通知を受信した場合(ステップS107のYES),画面方向統一部150は,自端末の画面方位θ’を取得する(ステップS108)。
画面方向統一部150は,θ’とθとの角度差が90度より大きいかを判定する(ステップS109)。θ’とθとの角度差が90度より大きければ(ステップS109のYES),画面方向統一部150は,自端末10の画面表示を180度回転する(ステップS110)。画面方向統一部150は,基準端末に対して,自端末10の画面方位θ’を含む調整結果通知を送信する(ステップS111)。
画面方向統一部150は,基準端末から最新の配置マップデータ175を受信したかを判定する(ステップS112)。配置マップデータ175を受信した場合(ステップS112のYES),画面方向統一部150は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新し(ステップS113),処理を終了する。
〔実施例2〕
本実施例2では,振動を伝播するテーブルに置かれている測位対象の端末10が備える振動子13により発生される振動が,同じテーブルに置かれた他の端末10で検出されるまでの時間を求め,測位対象の端末10と他の端末10との相対位置関係を特定する。
本実施例2は,前述の実施例1と測位の手順や処理が異なるだけで,それ以外の手順や処理については前述の実施例1と同様である。以下では,本実施例2について,前述の実施例1と異なる部分についてのみ,説明を行う。
図22は,本実施例2による測位を説明する図である。
図22(A)に示すように,本実施例2では,位置認識対象の端末10がテーブル30に並べられた状態で,測位が開始される。このとき,ユーザは,並べられたテーブル30に端末10から,基準端末となる端末10を選択する。
図22(B)は,本実施例2による,測位対象の端末10bにより発生された振動が基準端末である端末10aに伝播するまでの時間を求める例を示す。基準端末である端末10aは,測位対象の端末10bに対して,測位開始イベント通知を送信する(図22(B)の(1))。測位開始イベント通知は,基準端末が,測位対象の端末10や,測位対象の端末10に対して測位の開始を指示する通知である。端末10aの位置分析部130は,端末10bに対して測位開始イベント通知を送信した時刻を取得する。
測位開始イベント通知を受信した測位対象の端末10bは,自端末10bが内蔵する振動子13を動作することにより(図22(B)の(2)),振動を発生させる(図22(B)の(3))。測位開始イベント通知は,ほぼ0時間で端末10bに通知される。すなわち,測位開始イベント通知の送信時刻は,ほぼ端末10bにより振動が発生した時刻となる。
端末10bにより発生された振動は,テーブル30を伝播する(図22(B)の(4))。端末10aの位置分析部130は,加速度センサ12により得られる振動波形から,テーブル30を伝わってきた,端末10bが振動子13を動作することにより発生された振動を検出する(図22(B)の(5))。端末10aは,端末10bにより発生された振動を検出した時刻を取得する。
端末10aの位置分析部130は,測位開始イベント通知を送信した時刻と振動を検出した時刻との時間差を算出する。算出された時間差は,端末10bから端末10aまで振動が伝播する時間である。端末10bから端末10aまで振動が伝播する時間は,端末10bと端末10aとの間の距離に比例する。端末10aの位置分析部130は,自身が基準端末であるので,配置マップデータ175における端末10bのレコードに,時間差#1を記録する。
図23は,本実施例2による端末が振動子を動作したことにより発生した振動が検出される際の波形のイメージを示す図である。
端末10が振動子13を動作したことにより発生した振動が検出される際には,図23に示すように,加速度センサ12により,一定の振幅が連続する振動波形が得られるものと考えられる。例えば,端末10の位置分析部130は,図23に示すように,加速度センサ12により得られる加速度振幅が,あらかじめ設定されたフィルタ振幅を超えた場合に,目的とする振動が検出されたものと判断する。フィルタ振幅としては,目的とする振動の検出に適切と考えられる値が,あらかじめ設定されているものとする。このとき,端末10の位置分析部130は,例えば,最初にフィルタ振幅を超えた波のピークが検出された時刻を,振動を検出した時刻として取得する。
なお,目的とする振動の検出判断や,取得する検出時刻については,任意の設計が可能である。例えば,一連の加速度振幅の形状特徴で目的とする振動の検出を判断する,加速度振幅が最大の波が得られた時刻を振動を検出した時刻として取得するなどの設計も可能である。
図24は,本実施例2の位置分析部による相対位置関係分析処理フローチャートである。
端末10の位置分析部130は,ユーザに対して,自端末10を基準端末にするかの問合せを行う(ステップS120)。端末10の位置分析部130は,ユーザから,自端末10を基準端末にする指定を受けたかを判定する(ステップS121)。また,配置マップ入出力部138は,他の端末10から配置マップデータ175を受信したかを判定する(ステップS125)。
ユーザから自端末10を基準端末にする指定を受けた場合(ステップS121のYES),位置分析部130は,自端末10が基準端末であると判断する。このとき,配置マップ記録部137は,配置マップデータ175の端末状況に,自端末10が基準端末である旨を設定する(ステップS122)。配置マップ入出力部138は,他のすべての端末10に,配置マップデータ175を送信する(ステップS123)。基準端末となった端末10は,配置マップデータ175を送ることで,自端末10が基準端末である旨を他の端末10に通知する。位置分析部130は,基準端末処理(2)を実行する(ステップS124)。基準端末処理(2)は,本実施例2において,基準端末となった端末10による相対位置関係分析処理である。基準端末処理(2)の詳細については,後述する。
配置マップ入出力部138が他の端末10から配置マップデータ175を受信した場合(ステップS125のYES),位置分析部130は,自端末10が基準端末以外の端末10であると判断する。このとき,配置マップ記録部137は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新する(ステップS126)。位置分析部130は,基準端末外端末処理(2)を実行する(ステップS127)。基準端末外端末処理(2)は,本実施例2において,基準端末以外の端末10による相対位置関係分析処理である。基準端末外端末処理(2)の詳細については,後述する。
図25は,本実施例2の基準端末である端末の位置分析部による基準端末処理(2)フローチャートである。
基準端末である端末10の位置分析部130は,未測位の端末10から,測位対象の端末10を1つ選択する(ステップS130)。通知入出力部131は,測位対象の端末10と最端端末とに,測位開始イベント通知を送信する(ステップS131)。時間差算出部134は,自端末10の時計機能により,測位開始イベント通知の送信時刻を取得する(ステップS132)。振動検出部133は,他の端末10が振動子13を動作した際に発生する振動の検出を開始する(ステップS133)。
振動検出部133は,他の端末10が振動子13を動作した際に発生する振動を検出したかを判定する(ステップS134)。振動検出部133が他の端末10が振動子13を動作した際に発生する振動を検出した場合(ステップS134のYES),時間差算出部134は,自端末10の時計機能により,振動の検出時刻を取得する(ステップS135)。時間差算出部134は,測位開始イベント通知の送信時刻と振動の検出時刻との時間差を算出する(ステップS136)。時間差取得部135は,ここで算出された時間差を,時間差#1として取得する。配置マップ記録部137は,時間差#1を,配置マップデータ175における測位対象の端末10のレコードに記録する(ステップS137)。
通知入出力部131は,他の端末10から時間差通知を受信したかを判定する(ステップS138)。通知入出力部131から時間差通知を受信した場合(ステップS138のYES),時間差取得部135は,受信した時間差通知から時間差#2を抽出し,配置マップ記録部137は,抽出した時間差#2を,配置マップデータ175における測位対象の端末10のレコードに記録する(ステップS139)。
時間差取得部135は,必要な時間差がすべて得られたかを判定する(ステップS140)。位置分析部130は,必要な時間差がすべて得られるまでステップS134〜S140の処理を繰り返す(ステップS140のNO)。必要な時間差は,現在の測位対象の端末10が最初の測位対象の端末10である場合,時間差#1のみであり,現在の測位対象の端末10が2番目以降の測位対象の端末10である場合,時間差#1と時間差#2である。
必要な時間差がすべて得られた場合(ステップS140のYES),並び順特定部136は,測位対象の端末10を含む,測位済みの端末10の並び順を特定する(ステップS141)。ステップS141の処理は,例えば,図10および図11を用いて説明した処理である。配置マップ記録部137は,特定された並び順を,配置マップデータ175に記録する(ステップS142)。このとき,配置マップ記録部137は,測位対象の端末10の端末状況を測位済みに更新し,最端端末が変わる場合には,該当する端末10の端末状況を更新する。配置マップ入出力部138は,測位済みであるすべての端末10に,配置マップデータ175を送信する(ステップS143)。これにより,測位済みの全端末10で,その時点で最新の位置認識結果が共有される。
位置分析部130は,すべての位置認識対象の端末10について,測位が終了したかを判定する(ステップS144)。すべての位置認識対象の端末10について,まだ測位が終了していなければ(ステップS144のNO),位置分析部130は,ステップS130の処理に戻って,次の測位対象の端末10の処理に移る。すべての位置認識対象の端末10について測位が終了していれば(ステップS144のYES),位置分析部130は,処理を終了する。
図26は,本実施例2の基準端末以外の端末の位置分析部による基準端末外端末処理(2)フローチャートである。
基準端末以外の端末10の位置分析部130において,通知入出力部131は,基準端末から測位開始イベント通知を受信したかを判定する(ステップS150)。測位開始イベント通知を受信した場合(ステップS150のYES),振動子制御部132は,自端末10が内蔵する振動子13を振動させる(ステップS151)。
配置マップ入出力部138は,基準端末からその時点で最新の配置マップデータ175を受信したかを判定する(ステップS152)。配置マップ入出力部138が配置マップデータ175を受信した場合(ステップS152のYES),配置マップ記録部137は,受信した配置マップデータ175で,配置マップ情報記憶部170に記憶された配置マップデータ175を更新する(ステップS153)。
位置分析部130は,すべての位置認識対象の端末10について,測位が終了したかを判定する(ステップS154)。すべての位置認識対象の端末10について測位が終了していれば(ステップS154のYES),位置分析部130は,処理を終了する。
すべての位置認識対象の端末10について,まだ測位が終了していなければ(ステップS154のNO),位置分析部130は,自端末10が最端端末であるかを判定する(ステップS155)。自端末10が最端端末でなければ(ステップS155のNO),配置マップ入出力部138は,ステップS152の処理に戻って,次の配置マップデータ175の受信を待つ。
自端末10が最端端末であれば(ステップS155のYES),通知入出力部131は,基準端末から測位開始イベント通知を受信したかを判定する(ステップS156)。測位開始イベント通知を受信した場合(ステップS156のYES),時間差算出部134は,自端末10の時計機能により,測位開始イベント通知の受信時刻を取得する(ステップS157)。
振動検出部133は,他の端末10が振動子13を動作した際に発生する振動の検出を開始する(ステップS158)。振動検出部133は,他の端末10が振動子13を動作した際に発生する振動を検出したかを判定する(ステップS159)。振動検出部133が他の端末10が振動子13を動作した際に発生する振動を検出した場合(ステップS159のYES),時間差算出部134は,自端末10の時計機能により,振動の検出時刻を取得する(ステップS160)。時間差算出部134は,測位開始イベント通知の受信時刻と振動の検出時刻との時間差を算出する(ステップS161)。時間差取得部135は,ここで算出された時間差を,時間差#2として取得する。通知入出力部131は,基準端末に対して,時間差#2を含む時間差通知を送信する(ステップS162)。配置マップ入出力部138は,ステップS152の処理に戻って,次の配置マップデータ175の受信を待つ。
以上,本実施の形態について説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。
例えば,本実施の形態では,基準端末となった端末10によって,複数の端末10の並び順の特定,並び順の方向の特定,表示画面の方向の統一などの処理が行われているが,それらの機能を例えば外部のサーバが行うようにしてもよい。
図27は,外部のサーバを含む場合の本実施の形態による位置認識を行うシステムの構成例を示す図である。
図27に示すシステムにおいて,各端末10は,無線ルータ20を介してサーバ40との通信が可能である。サーバ40には,図3に示す位置認識部100の機能の一部が備えられている。
例えば,サーバ40は,各端末10から,時間差#1,時間差#2などの各端末10間で振動が伝播した時間の情報を取得し,各端末10の並び順を特定する処理を行う。また,例えば,サーバ40は,複数の端末10から,それぞれの端末10が内蔵するカメラ14で撮像された画像を取得し,各端末10の並び順の方向を特定する処理を行う。また,例えば,サーバ40は,各端末10に対して,表示画面の方向の統一を指示する処理を行う。
このように,外部のサーバ40などで,本実施の形態による位置認識の処理の一部を行うことにより,端末10の負担を軽減することができる。