(57)【特許請求の範囲】
【請求項１】
複数のノードおよび前記複数のノード間のリンクが設定された領域において測位を行う端末装置であって、
前記ノードから発信された無線信号を受信することによって前記ノードの情報を取得する取得手段と、
前記取得手段によって取得された情報に基づいて、前記リンク上に設定された仮想ノードを選定する選定手段と、
前記選定手段によって選定された仮想ノードに基づいて、前記端末装置の位置を特定する特定手段であって、前記端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンクを検索し、検索したリンク上に設定された仮想ノードを選定する特定手段と、
を備える、
端末装置。
【請求項２】
前記複数のノードと前記端末装置との各距離を、前記複数のノードから発信された無線信号の受信レベルに基づいてそれぞれ算出する算出手段、
をさらに備え、
前記選定手段は、前記算出手段の算出結果に基づいて、前記端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンク上に設定された複数の仮想ノードから、前記端末装置が滞在していると推定される仮想ノードを選定する、
請求項１に記載の端末装置。
【請求項３】
前記領域は、所定の建物を含む領域であり、
前記ノードは、前記建物内での通路の接続点を含む位置に対応し、
前記リンクは、前記通路に対応し、
前記仮想ノードは、前記ノードを除く、前記通路上のいずれかの位置に対応する、
請求項１又は２に記載の端末装置。
【請求項４】
複数のノードおよび前記複数のノード間のリンクが設定された領域において測位を行う端末装置に設けられたコンピュータを、
前記ノードから発信された無線信号を受信することによって前記ノードの情報を取得する取得手段と、
前記取得手段によって取得された情報に基づいて、前記リンク上に設定された仮想ノードを選定する選定手段と、
前記選定手段によって選定された仮想ノードに基づいて、前記端末装置の位置を特定する特定手段であって、前記端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンクを検索し、検索したリンク上に設定された仮想ノードを選定する特定手段、
として機能させるための測位プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置および測位プログラムに関する。
【背景技術】
【０００２】
近年、近距離無線通信技術による測位を利用したさまざまなサービスが提案されている（たとえば特許文献１参照）。たとえば商業施設等では、利用者の端末装置が店舗の入り口付近に滞在していることを検知した場合に来店ポイントを配布したり、店舗内の特定のエリアに滞在していることを検知した場合に当該エリアで売られている商品のクーポンを表示したりするといったことが行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１９１３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
測位の手法として、発信器からの無線信号（たとえばビーコン信号）をスマートフォンなどの端末装置で受信し、端末装置の位置を特定するものがある。このような手法を用いる場合、店舗内の各エリアに端末装置が滞在していることを検知できるようにエリアごとに発信器を設置すると、エリアの数と同じ数の発信器を設置する必要がある。この場合、エリアの数が多いと、設置する発信器の数も多くなるので、コストが掛かる。また、エリア変更によって発信器の設置位置を変更しなければならないこともあり、その際の手間も掛かる。
【０００５】
本発明は、上記問題点に鑑みてなされたものであり、測位に必要な発信器の数を低減することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る端末装置は、複数のノードおよび複数のノード間のリンクが設定された領域において測位を行う端末装置であって、ノードから発信された無線信号を受信することによってノードの情報を取得する取得手段と、取得手段によって取得された情報に基づいて、リンク上に設定された仮想ノードを選定する選定手段と、選定手段によって選定された仮想ノードに基づいて、端末装置の位置を特定する特定手段と、を備える。
【０００７】
また、本発明の一態様に係る測位プログラムは、複数のノードおよび複数のノード間のリンクが設定された領域において測位を行う端末装置に設けられたコンピュータを、ノードから発信された無線信号を受信することによってノードの情報を取得する取得手段と、取得手段によって取得された情報に基づいて、リンク上に設定された仮想ノードを選定する選定手段と、選定手段によって選定された仮想ノードに基づいて、端末装置の位置を特定する特定手段、として機能させる。
【０００８】
上記端末装置および測位プログラムでは、領域に複数のノードおよび複数のノード間のリンクが配置されているので、領域内の各位置が、ノードおよびリンクに基づいて特定され得る。ここで、上記構成によれば、ノードから発信された無線信号を受信することによってノードの情報が取得される。この場合、たとえば無線信号を発信する発信器を設置することによってノードが実現される。そして、上記構成によれば、取得されたノードの情報に基づいて、リンク上に設定された仮想ノードが選定され、選定された仮想ノードに基づいて、端末装置の位置が特定される。たとえば、選定された仮想ノードの位置が、端末装置が滞在している位置、つまり所定の領域における端末装置の位置として特定される。ここで、仮想ノードは、リンク上、すなわち複数のノード間に位置している仮想的なノードである。そのため、仮想ノードは発信器を設置することなく実現される。このような仮想ノードを用いれば、その分、発信器によって実現されるノード（実在するノード）を低減することができる。その結果、設置しなければならない発信器の数を低減することができる。
【０００９】
選定手段は、端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンク上に設定された仮想ノードを選定してもよい。端末装置は、滞在していたノードを離れた後、次のノードに滞在するまでの間は、その前に滞在していたノードに対応するリンク上にいると考えられる。このため、上記のように端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンク上に設定された仮想ノードを選定することで、端末装置が滞在している可能性の高い仮想ノードを選定することができる。
【００１０】
端末装置は、複数のノードと端末装置との各距離を、複数のノードから発信された無線信号の受信レベルに基づいてそれぞれ算出する算出手段、をさらに備え、選定手段は、算出手段の算出結果に基づいて、端末装置が滞在していたノードのうち最後に滞在していたノードに対応するリンク上に設定された複数の仮想ノードから、端末装置が滞在していると推定される仮想ノードを選定してもよい。この場合、複数の仮想ノードが設定されていても、たとえば、端末装置から最も距離が近い実ノードへと向かう（分岐している）リンク上の仮想ノードを、端末装置が滞在している可能性の高い仮想ノードとして選定することができる。
【００１１】
領域は、所定の建物を含む領域であり、ノードは、建物内での通路の接続点を含む位置に対応し、リンクは、通路に対応し、仮想ノードは、ノードを除く、通路上のいずれかの位置に対応してもよい。この場合、ノードを実現するための発信器を建物内の通路の接続点に設置すれば、各接続点の間、つまり通路の途中には発信器を設置しなくとも、上述したように仮想ノードに基づいて端末装置の位置を特定することができる。よって、通路の途中にも発信器を設置する場合よりも、発信器の設置数を低減することができる。
【発明の効果】
【００１２】
本発明によれば、測位に必要な発信器の数を低減することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】建物内に配置された発信器と、ノード・リンク構造との関係を説明するための図である。
【図２】仮想ノードを含むノード・リンク構造の設計手法の一例を説明するための図である。
【図３】実施形態に係る端末装置の機能ブロックを示す図である。
【図４】ノードＤＢの一例を示す図である。
【図５】リンクＤＢの一例を示す図である。
【図６】ビーコンＤＢの一例を示す第１の図である。
【図７】機種別補正ＤＢの例を示す第２の図である。
【図８】メッシュＤＢの例を示す図である。
【図９】メッシュとノードとの関係を説明するための図である。
【図１０】端末装置のハードウェア構成の一例を示す図である。
【図１１】測位プログラムの構成の一例を示す図である。
【図１２】端末において実行される処理の一例を示す第１のフローチャートである。
【図１３】端末において実行される処理の一例を示す第２のフローチャートである。
【図１４】端末において実行される処理の一例を示す第３のフローチャートである。
【図１５】端末において実行される処理の一例を示す第４のフローチャートである。
【図１６】端末において実行される処理の一例を示す第５のフローチャートである。
【図１７】端末において実行される処理の一例を示す第６のフローチャートである。
【図１８】総リンク距離の算出の例を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について、図面を参照しながら説明する。なお、図面の説明において同一要素には同一符号を付し、重複する説明は省略する。
【００１５】
実施形態に係る端末装置は、所定の領域において測位を行う。端末装置は、たとえばスマートフォンのような移動体端末装置として実現されてよい。所定の領域は、所定の建物を含む領域であり、そのような領域を、以下、単に建物という場合もある。建物は、屋外型施設であってもよい。建物では、複数の発信器が所定の位置に配置されることによって、複数のノードおよびノード間のリンクが設定される。ノードは、建物における抽象化された位置である。リンクは、各ノードの接続経路を示す。このようなノードおよびリンクを用いた構造（ノード・リンク構造）によって、建物における各位置が抽象的に示される。たとえば、端末装置がいずれのノードに滞在しているかという情報に基づいて、建物における端末装置の位置を特定する（測位を行う）ことができる。また、端末装置がいずれのリンク（経路）に沿って移動したかという情報に基づいて、建物における端末装置の移動経路を特定することもできる。
【００１６】
発信器は、近距離無線信号を発信する。近距離無線信号は、たとえば、発信器から数メートルから数十メートルの範囲内において受信可能なビーコン信号である。ビーコン信号としては、たとえば、ＷｉＦｉ（登録商標）信号およびＢＬＥ（Bluetooth（登録商標）  Low  Energy）信号が用いられてよい。
【００１７】
図１は、建物内に配置された発信器と、ノード・リンク構造との関係を説明するための図である。図１の（ａ）は、建物内に発信器が配置された状態を模式的に示す。図１の（ｂ）は、図１の（ａ）に対応するノード・リンク構造を示す。なお、発信器は、建物外にも配置されてよい。
【００１８】
図１の（ａ）に示される例では、建物１として、スーパーマーケットのような店舗が想定されている。ただし、建物１はこの例に限定されない。建物１では、通路３に面した棚２が配置されている。建物１には、複数の発信器Ｔが配置される。なお、各発信器を区別し得るように、発信器Ｔには、ＴＡ〜ＴＦの異なる符号を付している。発信器Ｔは、通路３の接続点に配置されてもよく、この例では、各通路３の接続点に、発信器ＴＡ〜ＴＦがそれぞれ配置されている。
【００１９】
図１の（ｂ）に示されるように、ノード（実ノード）Ｎは、発信器Ｔに対応する位置を抽象的に示す。なお、上述のノードは、後述の仮想ノードｎと区別し得るように、実ノードＮと称することとする。なお、各実ノードを区別し得るように、実ノードＮには、ＮＡ〜ＮＦの異なる符号を付している。同様に、各発信器を区別し得るように、発信器Ｔには、ＴＡ〜ＴＦの異なる符号を付している。この例では、実ノードＮＡ〜ＮＦが、発信器ＴＡ〜ＴＦに対応する位置を抽象的に示す。実ノードＮは、発信器Ｔを含む所定範囲で定められる位置を抽象化して示す。発信器はたとえば通路３の接続点に配置されているので、実ノードＮは、建物１での通路３の接続点を含む位置に対応し得る。
【００２０】
リンクＬは、実ノードＮＡ〜ＮＦ間に設定される。リンクＬは物理的に遷移可能な実ノードＮＡ〜ＮＦ間を接続する経路である。リンクＬは、実ノードＮＡ〜ＮＦを接続するすべての経路のうち、たとえば端末装置のユーザが移動可能な経路にのみに対応し得る。この場合、リンクＬは、通路３に対応する。なお、図１の（ｂ）に示されるノード・リンク構造は、有向グラフで表されてもよく、その場合、同じ実ノードＮ間に設定されるリンクＬであっても、一方の実ノードＮから他方の実ノードＮに向かう経路と、他方の実ノードＮから一方の実ノードＮに向かう経路とで、リンクＬの性質（たとえば移動コストなど）が異なっていてもよい。
【００２１】
以上のようにして、建物１のフロアマップが、ノード・リンク構造（グラフ構造）として抽象化される。このようなノード・リンク構造を用いることによって、建物１において測位を行うことができる。たとえば、建物１の或る位置において、各発信器Ｔからのビーコン信号の受信レベルを示すＲＳＳＩ（Received  Signal  Strength  Indicator）を取得し、取得したＲＳＳＩと、先に説明した予め計測されたＲＳＳＩとを比較（照合）すれば、その位置が、ノード・リンク構造におけるいずれの実ノードＮに位置しているかが特定される。そして、ノード・リンク構造は、建物１のフロアマップを抽象化したものであるので、ノード・リンク構造における位置が特定されれば、そこから、建物１における位置も特定される。
【００２２】
さらに、本実施形態では、ノード・リンク構造は、仮想ノードｎを含む。図１の（ｂ）に示されるように、仮想ノードｎは、リンクＬ上に設定される仮想的なノードである。なお、各仮想ノードｎを区別し得るように、仮想ノードｎには、ｎａ〜ｎｃの異なる符号を付している。この例では、仮想ノードｎａは、実ノードＮＡおよび実ノードＮＤの間の位置に設定される。仮想ノードｎｂは、実ノードＮＢおよび実ノードＮＥの間位置に設定される。仮想ノードｎｃは、実ノードＮＣおよび実ノードＮＦの間の位置に設定される。
【００２３】
仮想ノードｎは、とくに、発信器Ｔを設置することなく実現される点において、実ノードＮＡ〜ＮＦとは相違する。このような仮想ノードｎのノード・リンク構造における位置を特定することによって、建物１における位置を特定することもできる。
【００２４】
図２は、仮想ノードを含むノード・リンク構造の設計手法の一例を説明するための図である。この例では、建物１に３つの棚２が配置されている。まず、すべてのノードを仮想ノードｎで構成する。このとき、各仮想ノードｎの間隔はできるだけ狭く設定しておく。図２の（ａ）に示される例では、建物１に計１６個の仮想ノードｎが設定される。次に、図２の（ａ）に示される仮想ノードｎのうちのいくつかの仮想ノードｎに対応する位置に、発信器Ｔを配置する。図２の（ｂ）に示される例では、１６個の仮想ノードｎのうちの６個の仮想ノードｎに対応する位置に発信器ＴＡ〜ＴＦが配置される。これにより、図２の（ｃ）に示されるように、実ノードＮと、実ノードＮの間に設定されたリンクＬと、リンクＬ上に設定された仮想ノードｎとからなるノード・リンク構造が得られる。その際、仮想ノードｎは、用途（たとえば測位精度など）に応じて適宜間引きされてもよい。このように、実ノードＮと仮想ノードｎとを組み合わせてノード・リンク構造を設計することで、実ノードＮを実現するために設置する発信器Ｔの数を調整することができる。また、発信器Ｔを設置した後は、発信器Ｔ（つまり実ノードＮ）を追加したり、発信器Ｔの設置場所を変更したりせずとも、仮想ノードｎを調整する（たとえば上述の間引きを解除する）ことで対応が可能である。
【００２５】
図３は、実施形態に係る端末装置の機能ブロックを示す図である。図３に示されるように、端末装置１００は、取得部１１０と、選定部１２０と、特定部１３０と、算出部１４０と、判定部１５０と、制御部１６０と、通信部１７０と、記憶部１８０とを含む。
【００２６】
取得部１１０は、ノードＮから発信された無線信号を受信することによって、ノードＮの情報を取得する部分（取得手段）である。ノードＮから発信された無線信号は、発信器Ｔが発信するビーコン信号であり、ノードＮの情報を含む。ノードＮの情報は、ノードＮを特定するための識別情報（たとえば後述の図４に示されるノードＩＤ）を含む。ノードＮを特定するための識別情報は、ノードＮに対応する発信器Ｔを特定するための情報（たとえば後述の図６に示されるＵＵＩＤ）であってもよい。また、取得部１１０は、端末装置１００におけるビーコン信号のＲＳＳＩも取得する。
【００２７】
図１に示される例では、取得部１１０は、位置情報サービス部１１１、ＷｉＦｉ信号受信部１１２、ＢＬＥ信号受信部１１３およびＧＰＳ信号受信部１１４を含む。位置情報サービス部１１１は、端末装置１００の屋外での測位のための位置情報サービスを行う部分である。たとえば、位置情報サービス部１１１は、ＧＰＳ信号を受信するＧＰＳ信号受信部１１４と協働して、ＧＰＳ信号を用いた測位による位置情報サービスを行う。位置情報サービス部１１１は、基地局からの電波に基づく測位による位置情報サービスを行ってもよい。また、位置情報サービス部１１１は、建物１における端末装置１００の位置に応じて提供される種々のサービス情報を受信する部分でもある。サービス情報は、たとえば、端末装置１００の位置の付近に位置する棚２に陳列されている商品に応じた情報（たとえばクーポンなど）とされる。サービス情報の受信の手法はとくに限定されないが、たとえば近距離無線通信技術を用いて行われてよい。サービス情報には、店舗が屋内のみの施設であるか否かといった情報も含まれてよい。ＷｉＦｉ信号受信部１１２は、ＷｉＦｉ信号を受信する部分である。ビーコン信号がＷｉＦｉ信号である場合には、ＷｉＦｉ信号受信部１１２がビーコン信号を受信することとなる。ＢＬＥ信号受信部１１３は、ＢＬＥ信号を受信する部分である。上述のビーコン信号がＢＬＥ信号である場合には、ＢＬＥ信号受信部１１３がビーコン信号を受信することとなる。
【００２８】
選定部１２０は、端末装置１００が滞在しているノードＮおよび仮想ノードｎを選定する部分（選定手段）である。選定部１２０は、とくに、取得部１１０によって取得された情報に基づいて、リンクＬ上に設定された仮想ノードｎを選定する。端末装置１００がノードＮおよび仮想ノードｎのいずれに滞在しているかは、後述の判定部１５０によって判定される。このため、後述の判定部１５０も、選定手段の一部として機能する。選定部１２０による選定手法のさらなる詳細については後述する。
【００２９】
特定部１３０は、選定部１２０によって選定されたノードＮおよび仮想ノードｎに基づいて、端末装置１００の位置を特定する部分（特定手段）である。特定部１３０は、後述の記憶部１８０に記憶されたノードＤＢ１８１を参照し、選定部１２０によって選定されたノードＮまたは仮想ノードｎに対応するノードＩＤに基づいて、端末装置１００の位置を特定する。特定部１３０による特定手法のさらなる詳細については後述する。
【００３０】
算出部１４０は、実ノードＮと端末装置１００との距離を算出する部分（算出手段）である。とくに、算出部１４０は、選定部１２０によって選定された仮想ノードｎが設定されたリンクＬに対応する実ノードＮと、端末装置１００との距離を算出する。実ノードＮと端末装置１００との距離は、たとえば、実ノードＮから発信されたビーコン信号の端末装置１００におけるＲＳＳＩに基づいて算出されてよい。算出部１４０による算出手法のさらなる詳細については後述する。
【００３１】
判定部１５０は、ノードへの端末装置１００の滞在を判定する部分である。図３に示される例では、判定部１５０は、実ノード滞在判定部１５１および仮想ノード滞在判定部１５２を含む。実ノード滞在判定部１５１は、実ノードＮへの端末装置１００の滞在を判定する部分である。実ノードＮへの端末装置１００の滞在は、実ノードＮから発信されたビーコン信号の端末装置１００におけるＲＳＳＩに基づいて判定される。たとえば、端末装置１００におけるＲＳＳＩが閾値（後述の図６に示される閾値ｔｈ１）よりも大きいビーコン信号に対応する実ノードＮに、端末装置１００が滞在していると判定される。実ノード滞在判定部１５１による判定手法のさらなる詳細については詳述する。仮想ノード滞在判定部１５２は、仮想ノードｎへの端末装置１００の滞在を判定する部分である。仮想ノード滞在判定部１５２による判定手法の詳細については後述する。
【００３２】
制御部１６０は、端末装置１００に含まれる各要素を制御することによって、端末装置１００の全体制御を行う部分である。
【００３３】
通信部１７０は、端末装置１００の外部と通信を行う部分である。通信部１７０によって、たとえば、後述の記憶部１８０に記憶される種々の情報（たとえば後述の測位プログラムなど）が追加して取得され、あるいは更新され得る。なお、通信部１７０によって先に説明したサービス情報が取得されてもよい。
【００３４】
記憶部１８０は、端末装置１００によって実行される処理に必要な種々の情報を記憶する部分である。図３に示される例では、記憶部１８０は、ノードＤＢ（Data  Base）１８１と、リンクＤＢ１８２と、ビーコンＤＢ１８３と、メッシュＤＢ１８４と、図３には図示されない機種別補正ＤＢとを記憶する。また、記憶部１８０は、端末装置１００が測位を行うために必要な処理を端末装置１００に実行させるためのプログラム（測位プログラム）を記憶する。
【００３５】
次に、図４から図８を参照して、記憶部１８０に記憶される各ＤＢの例について説明する。
【００３６】
図４は、ノードＤＢ１８１の一例を示す図である。ノードＤＢ１８１は、ノードを定義するためのテーブルである。ここでのノードは、実ノードＮおよび仮想ノードｎを含む。図４に示される例では、ノードＤＢ１８１は、「ノードＩＤ」と、「カテゴリ」と、「ロケーションＩＤ」と、「フロアＩＤ」と、「店舗ＩＤ」と、「ノードタイプ」と、「マップＩＤ」と、「Ｘ座標」と、「Ｙ座標」とを対応づけて記述する。
【００３７】
「ノードＩＤ」は、ノードを特定するための識別子である。図４に示される例では、ノードＩＤは、数値（「１」など）で表される。
【００３８】
「カテゴリ」は、ノードＩＤに対応するノードが、建物１での位置を示すノード（屋内ノード）であるのか、建物１外の位置を示すノード（屋外ノード）であるのかを特定するための識別子である。図４に示される例では、カテゴリは、数値（「１」など）で表される。たとえば、カテゴリが０の場合にノードが建物１外の位置を示すノードとされ、カテゴリが１の場合にノードが建物１での位置を示すノードであるとされる。
【００３９】
「ロケーションＩＤ」は、建物１の所在地を特定するための識別子であり、ここでは、ノードＩＤに対応するノードが配置された建物１の所在地を特定するための識別子である。図４に示される例では、ロケーションＩＤは、数値（「１」など）で表される。各ロケーションＩＤは、たとえば赤坂、六本木といった所在地にそれぞれ対応し得る。
【００４０】
「フロアＩＤ」は、ノードＩＤに対応するノードＮが配置された建物１におけるフロアを特定するための識別子である。図４に示される例では、フロアＩＤは、数値（「２」など）で表される。
【００４１】
「店舗ＩＤ」は、ノードＩＤに対応するノードＮが配置されている建物１の店舗を特定するための識別子である。なお、図４に示される例では、店舗ＩＤは空欄（「ＮＵＬＬ」）とされている。
【００４２】
「ノードタイプ」は、ノードＩＤに対応するノードが実ノードＮであるのか、仮想ノードｎであるのかを特定するための識別子である。図４に示される例では、ノードタイプは数値（「０」など）で表される。たとえば、ノードタイプが０の場合にノードが実ノードＮであるとされ、ノードタイプが１の場合にノードが仮想ノードｎであるとされる。
【００４３】
「マップＩＤ」は、図１に示されるような、ノードＩＤに対応するノードの位置を特定する際に用いられるマップを特定するための識別子である。各マップは、予め記憶部１８０が記憶していてよい。なお、図４に示される例では、マップＩＤは空欄（「ＮＵＬＬ」）とされている。
【００４４】
「Ｘ座標」および「Ｙ座標」は、は、マップＩＤに対応するマップにおける座標を示す。図４に示される例では、マップ上の座標値が数値（「２５」、「５０」など）で表される。
【００４５】
図５は、リンクＤＢ１８２の一例を示す図である。リンクＤＢ１８２は、リンクを定義するためのテーブルである。図５に示される例では、リンクＤＢ１８２は、「開始ノード」と、「終了ノード」と、「ロケーションＩＤ」と、「リンクタイプ」と、「距離コスト」とを対応づけて記述する。
【００４６】
「開始ノード」は、端末装置１００がリンクに沿って移動する際の開始点となるノードＮを示す。先に説明したように、ノード・リンク構造は有向グラフで表されてよいので、「開始ノード」は、一方のノードＮから他方のノードＮに向かう経路を示すリンクＬにおける、一方のノードを示す。
【００４７】
「終了ノード」は、端末装置１００がリンクに沿って移動する際の終点となるノードＮを示す。すなわち、「終了ノード」は、一方のノードＮから他方のノードＮに向かう経路を示すリンクＬにおける、他方のノードを示す。
【００４８】
「ロケーションＩＤ」は、先に図４を参照して説明したとおりであり、ここでは、リンクによって接続される各ノードが配置された建物１を特定するための識別子である。
【００４９】
「リンクタイプ」は、リンクが、端末装置１００が実際に移動可能な経路に対応するリンクであるか否か（リンクが実際に繋がっているか否か）を特定するための識別子である。図５に示される例では、リンクタイプは、数値（「０」、「１」など）で表される。たとえば、リンクタイプが０の場合にリンクが実際に繋がっているとされ、リンクタイプが１の場合にリンクが実際に繋がっていないとされる。
【００５０】
「距離コスト」は、リンクに対応する経路を移動するのにかかるコストを数値で示す。距離コストは、たとえば、リンクに対応する経路の長さに基づいて定められる。それ以外にも、たとえばリンクに対応する経路の傾斜の程度などが考慮されて距離コストが定められてもよい。図５に示される例では、距離コストは数値「２０」、「１０」など）で表される。
【００５１】
図６は、ビーコンＤＢ１８３の一例を示す図である。このビーコンＤＢ１８３の例は、ビーコン信号を定義するためのデータテーブルである。図６に示される例では、ビーコンＤＢ１８３は、「ＵＵＩＤ」と、「ロケーションＩＤ」と、「ノードＩＤ」と、「閾値ｔｈ１」と、「閾値ｔｈ２」と、「閾値ｔｈ３」とを対応付けて記述する。
【００５２】
「ＵＵＩＤ」（Universally  Unique  Identifier）は、ビーコン信号の発信源である発信器Ｔを特定するための識別子である。図６に示される例では、ＵＵＩＤは、数値およびアルファベットの組み合わせ（「００：００：００：ＡＡ：ＢＢ：ＣＣ」など）で表される。このＵＵＩＤは例示であり、ＵＵＩＤは、たとえば、Proximity  uuid、major番号およびminor番号の組み合わせによって定められてもよい。
【００５３】
「ロケーションＩＤ」は、先に図４を参照して説明したとおりであり、ここでは、ＵＵＩＤに対応する発信器Ｔが配置された建物１を特定するための識別子である。
【００５４】
「ノードＩＤ」は、先に図４を参照して説明したとおりである。
【００５５】
「閾値ｔｈ１」は、端末装置１００における受信するビーコン信号のＲＳＳＩの最大値に対して設定される閾値である。ＲＳＳＩの最大値は、受信された異なる種類の複数のビーコン信号のＲＳＳＩのうち最も大きいＲＳＳＩである。各ビーコン信号のＲＳＳＩは、平均化されたものであってよく、その場合、所定の周期（たとえば３秒）で受信された同じ種類の複数（たとえば５回分）のビーコン信号のＲＳＳＩの平均値であってよい。なお、平均値は発信器Ｔごとに別々に算出される。同じ種類のビーコン信号は、同じ発信器Ｔからのビーコン信号である。平均値は、スライディングウィンドウ方式で求めてもよい。閾値ｔｈ１の単位はたとえばｄＢｍである。なお、ここで説明した発信器Ｔごとに算出したビーコン信号のＲＳＳＩの平均値のうち最も大きいＲＳＳＩを、以後、「ＭａｘＡｖｅ」という場合もある。
【００５６】
「閾値ｔｈ２」は、端末装置１００が受信する異なる種類の複数のビーコン信号のうち、ＲＳＳＩが最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩが２番目に大きいビーコン信号のＲＳＳＩとの差に対して設定される閾値である。閾値ｔｈ２の単位はたとえばｄＢである。なお、ここで説明したＲＳＳＩが最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩが２番目に大きいビーコン信号のＲＳＳＩとの差を、以後、「ＤｉｆｆＭａｘ」という場合もある。
【００５７】
「閾値ｔｈ３は、端末装置１００が受信する異なる種類の複数のビーコン信号のうち、ＲＳＳＩの平均値が最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩの平均値が２番目に大きいビーコン信号のＲＳＳＩとの差に対して設定される閾値である。閾値ｔｈ３の単位はたとえばｄＢである。なお、ここで説明したＲＳＳＩの平均値が最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩの平均値が２番目に大きいビーコン信号のＲＳＳＩとの差を、以後、「ＤｉｆｆＡｖｅ」という場合もある。
【００５８】
図７は、機種別補正ＤＢの例を示す図である。機種別補正ＤＢは、端末装置１００の種類（機種）に応じて、先に説明した閾値ｔｈ１〜ｔｈ３を補正するための補正値を定義するためのテーブルである。図７に示される例では、機種別補正ＤＢは、「機種別コード」と、「補正値１」と、「補正値２」と、「補正値３」とを対応づけて記述する。
【００５９】
「機種別コード」は、端末装置１００の種類を特定するための識別子である。図７に示される例では、機種別コードは数値（「１」など）で表される。
【００６０】
「補正値１」は、対応する機種別コードに適用される閾値ｔｈ１の補正値を示す。たとえば図７に示される補正値１が図６に示される閾値ｔｈ１に加算されることによって、閾値ｔｈ１が補正される。
【００６１】
「補正値２」は、対応する機種別コードに適用される閾値ｔｈ２の補正値を示す。たとえば図７に示される補正値２が図６に示される閾値ｔｈ２に加算されることによって、閾値ｔｈ２が補正される。
【００６２】
「補正値３」は、対応する機種別コードに適用される閾値ｔｈ３の補正値を示す。たとえば図７に示される補正値３の値が図６に示される閾値ｔｈ３に加算されることによって、閾値ｔｈ３が補正される。
【００６３】
図８は、メッシュＤＢ１８４の一例を示す図である。このメッシュＤＢ１８４は、メッシュを定義するためのデータテーブルである。図８に示される例では、メッシュＤＢ１８４は、「メッシュＩＤ」と、「ノードＩＤ」と、「最近傍屋外ノードＩＤ」とを対応づけて記述する。
【００６４】
「メッシュＩＤ」は、メッシュを特定するための識別子である。図８とともに図９を参照して説明すると、メッシュＭＥは、所定間隔の経度緯度で区画されたマップ上の領域に対応する。所定間隔は、たとえばメッシュＭＥのサイズが１ｍ×１ｍとなるような経度緯度の間隔であってよい。メッシュＭＥは実ノードＮよりも細かく設定され、たとえば図９の（ａ）に示されるように、各実ノードＮ（ノードＩＤ＝１〜３）のそれぞれが、複数のメッシュＭＥに対応している。
【００６５】
「ノードＩＤ」については、先に図４を参照して説明したとおりである。図８および図９の（ａ）に示される例では、たとえば、メッシュＩＤ＝２のメッシュＭＥは、ノードＩＤ＝１の実ノードＮに対応する。
【００６６】
「最近傍屋外ノードＩＤ」は、メッシュＭＥが含まれる実ノードＮ以外のノードであって屋外ノードである実ノードＮのうち、メッシュＭＥに最も近い実ノードＮのノードＩＤを示す。たとえば図９の（ｂ）に示される例における、メッシュＭＥ（メッシュＩＤ＝１）およびメッシュＭＥが含まれる実ノードＮ（ノードＩＤ＝３）に対応する最近傍屋外ノードＩＤは、次のようにして定められる。まず、メッシュＭＥ（メッシュＩＤ＝１）の中心の経度緯度を中心とする円を設定する。円のサイズは、たとえば、実ノードＮ（ノードＩＤ＝３）の周囲に位置する各実ノードＮの一部が含まれるサイズとされる。そして、各実ノードＮのうち、設定された円に含まれる面積が最も大きくなる実ノードＮを、最近傍屋外ノードＩＤとして定める。図９の（ｂ）に示される例では、ノードＩＤが２の実ノードＮが最近傍屋外ノードとなるので、最近傍屋外ノードのノードＩＤは２となる。
【００６７】
次に、図１０を参照して、端末装置１００のハードウェア構成について説明する。図１０に示されるように、端末装置１００は、物理的には、１または複数のＣＰＵ（Central  Processing  Unit）２１、ＲＡＭ（Random  Access  Memory）２２およびＲＯＭ（Read  Only  Memory）２３、カメラなどの撮像装置２４、データ送受信デバイスである通信モジュール２６、半導体メモリなどの補助記憶装置２７、操作盤（操作ボタンを含む）やタッチパネルなどのユーザ操作の入力を受け付ける入力装置２８、ディスプレイなどの出力装置２９、ならびにＣＤ−ＲＯＭドライブ装置などの読み取り装置２Ａを備えるコンピュータとして構成され得る。図２における端末装置１００の機能は、たとえば、ＣＤ−ＲＯＭなどの記憶媒体Ｍに記憶された１または複数のプログラムを読み取り装置２Ａにより読み取ってＲＡＭ２２などのハードウェア上に取り込むことにより、ＣＰＵ２１の制御のもとで撮像装置２４、通信モジュール２６、入力装置２８、出力装置２９を動作させるとともに、ＲＡＭ２２および補助記憶装置２７におけるデータの読み出しおよび書き込みを行うことで実現される。
【００６８】
また、図１１には、コンピュータを端末装置１００として機能させるための測位プログラムのモジュールが示される。図１１に示されるように、測位プログラムＰ１００は、取得モジュールＰ１１０、選定モジュールＰ１２０、特定モジュールＰ１３０、算出モジュールＰ１４０および判定モジュールＰ１５０を備えている。各モジュールによって、先に図３を参照して説明した、取得部１１０、選定部１２０、特定部１３０、算出部１４０および判定部１５０の機能が実現される。
【００６９】
測位プログラムは、たとえば記憶媒体に格納されて提供される。記憶媒体は、フレキシブルディスク、ＣＤ−ＲＯＭ、ＵＳＢメモリ、ＤＶＤ、半導体メモリなどであってよい。
【００７０】
次に、図１２〜１７を参照して、端末装置１００の動作（端末装置１００によって実現される測位方法）について説明する。
【００７１】
図１２は、端末装置１００が測位を行う際に実行される処理の全体フローを示す。この処理は、たとえば所定の周期で繰り返し実行される。なお、とくに説明がない場合、各処理は、制御部１６０によって実行され得る。
【００７２】
まず、端末装置１００は、実ノードチェックインを行う（ステップＳ１００）。この処理では、端末装置１００が実ノードＮに滞在しているか否かが判別される。また、端末装置１００が実ノードＮに滞在している場合には、その実ノードＮが選定され、対応するノードＩＤが戻り値として出力される。ステップＳ１００の詳細については、後に図１３および図１４を参照して説明する。
【００７３】
ステップＳ１００の結果に基づき、実ノードにチェックインしたと判断すると（ステップＳ２００：ＹＥＳ）、端末装置１００は、ステップＳ６００に処理を進める。そうでない場合（ステップＳ２００：ＮＯ）、端末装置１００は、ステップＳ３００に処理を進める。
【００７４】
ステップＳ３００において、端末装置１００は、緯度経度変換を行う。この処理は、屋外ノードが存在する（設定されている）場合に実行され、屋外ノードが存在せず屋内ノードのみが存在する（設定されている）場合にはスキップされる。この処理では、たとえば位置情報サービス部がＧＰＳ信号を受信することによって取得した緯度経度が、屋外ノードのノードＩＤに変換される。また、そのノードＩＤが戻り値として出力される。なお、経度緯度が取得されずに、ＮＵＬＬが戻り値と出力される場合もある。ステップＳ３００の詳細については、後に図１５を参照して説明する。
【００７５】
ステップＳ３００の結果を受けて、屋外のノードＩＤが取得されると（ステップＳ４００：ＹＥＳ）、端末装置１００は、ステップＳ６００に処理を進める。そうでない場合（ステップＳ４００：ＮＯ）、端末装置１００は、ステップＳ５００に処理を進める。
【００７６】
ステップＳ５００において、端末装置１００は、仮想ノードチェックインを行う。この処理では、端末装置１００が仮想ノードｎに滞在しているか否かが判別される。また、端末装置１００が仮想ノードｎに滞在している場合には、その仮想ノードｎが選定され、対応するノードＩＤが戻り値として出力される。ステップＳ５００の詳細については、後に図１６および図１７を参照して説明する。ステップＳ５００の処理が完了した後、端末装置１００は、ステップＳ６００に処理を進める。
【００７７】
ステップＳ６００において、端末装置１００は、経路補完処理および異常ノード判定処理を行う。経路補完処理では、端末装置１００が滞在していたノードのうち最後に滞在していたノード（前回ノード）と、端末装置１００が現在滞在していると判定されたノード（今回ノード）との間の経路が特定される。前回ノードと今回ノードとの間の経路は、前回ノードから今回ノードに向かうリンクＬに沿った経路とされる。また、異常ノード判定処理では、端末装置１００が滞在していたノードのうち最後に滞在していたノード（前回ノード）と、端末装置１００が現在滞在していると判定されたノード（今回ノード）との間の移動コストに基づいて、今回ノードが、端末装置１００が現在滞在しているノードとして適さないノード（異常ノード）であるか否かが判定される。たとえば、移動コストが所定値よりも大きい場合に、今回ノードは異常ノードであると判定される。そうでない場合、今回ノードは、端末装置１００が現在滞在しているノードとして適切なノード（正常ノード）であると判定される。正常ノードと判定された場合には、今回ノードのノードＩＤが戻り値として出力される。なお、今回ノードが仮想ノードｎの場合には、経路補完処理が実行されることなく、ノードＩＤが戻り値として出力される。また、今回ノードが異常ノードであると判定された場合には、経路補完処理が実行されず、前回ノードのノードＩＤが戻り値として出力される。
【００７８】
ステップＳ６００の結果を受けて、今回ノードが異常ノードであった場合（ステップＳ７００：ＹＥＳ）、端末装置１００は、ステップＳ９００に処理を進める。そうでない場合（ステップＳ７００：ＮＯ）、端末装置１００は、ステップＳ８００に処理を進める。
【００７９】
ステップＳ８００において、端末装置１００は、正常ノードＩＤを保持する。具体的に、先のステップＳ６００で出力されたノードＩＤが、正常ノードとして保持される。
【００８０】
最後に、端末装置１００は、ノードＩＤに基づいて端末装置の位置を特定する（ステップＳ９００）。具体的に、特定部１３０が、先のステップＳ８００で正常なノードＩＤとして保持されたノードＩＤに対応するノードのノード・リンク構造における位置から、建物１における端末装置１００の位置を特定する。
【００８１】
以上の処理が繰り返し実行されることで、実ノードＮおよび仮想ノードｎを用いた端末装置１００の測位が行われる。
【００８２】
次に、図１２におけるステップＳ１００において実行される処理の詳細について、図１３および図１４を参照して説明する。
【００８３】
図１３に示されるように、まず、端末装置１００は、ビーコン信号を受信する（ステップＳ１０１）。具体的に、取得部１１０が、ノードＮからの（発信器Ｔからの）ビーコン信号を受信することによって、ノードＮの（発信器Ｔの）情報を取得する。種類の異なる複数のビーコン信号が受信される場合には、各情報の一覧（リスト）が取得されてもよい。
【００８４】
次に、端末装置１００は、受信したビーコン信号がビーコンＤＢに含まれているものであるか否かを判断する（ステップＳ１０２）。具体的に、先のステップＳ１０１で取得部１１０によって取得されたノードＮの情報のうちのＵＵＩＤ（ノードＩＤでもよい）が、ビーコンＤＢ１８３（図６）に含まれるか否かが判断される。受信したビーコン信号がビーコンＤＢに含まれている場合（ステップＳ１０２：ＹＥＳ）、端末装置１００は、ステップＳ１０３に処理を進める。そうでない場合（ステップＳ１０２：ＮＯ）、端末装置１００は、ステップＳ１０５に処理を進める。
【００８５】
ステップＳ１０３において、端末装置１００は、各ＵＵＩＤの５サンプルのＲＳＳＩの平均を算出する。具体的に、先のステップＳ１０２でビーコンＤＢ１８３に含まれていると判断された各ＵＵＩＤに対応するビーコン信号の５回の受信におけるＲＳＳＩの平均値が算出される。その後、端末装置１００は、ステップＳ１０４に処理を進める。
【００８６】
ステップＳ１０４において、端末装置１００は、閾値処理を行う。この処理について、図１４を参照して説明する。
【００８７】
図１４に示されるように、まず、端末装置１００は、ＭａｘＡｖｅが閾値ｔｈ１を超えているか否かを判断する（ステップＳ１１１）。ここでのＭａｘＡｖｅは、先のステップＳ１０１で受信された異なる種類の複数のビーコン信号のＲＳＳＩのうち最も大きいＲＳＳＩである。ＭａｘＡｖｅが閾値ｔｈ１を超えている場合（ステップＳ１１１：ＹＥＳ）、端末装置１００は、ステップＳ１１２に処理を進める。そうでない場合（ステップＳ１１１：ＮＯ）、端末装置１００は、ステップＳ１１９に処理を進める。
【００８８】
ステップＳ１１２において、端末装置１００は、要素が２つ以上であるか否かを判断する。具体的に、先のステップＳ１１１でＭａｘＡｖｅが閾値ｔｈ１を超えていると判断されたビーコン信号が２つ以上であるか否かが判断される。要素が２つ以上の場合（ステップＳ１１２：ＹＥＳ）、端末装置１００は、ステップＳ１１４に処理を進める。そうでない場合（ステップＳ１１２：ＮＯ）、端末装置１００は、ステップＳ１１３に処理を進める。
【００８９】
ステップＳ１１３において、端末装置１００は、ビーコンＤＢを参照し、ＵＵＩＤに対応するノードＩＤを取得する。具体的に、ビーコンＤＢ１８３（図６）が参照され、先のステップＳ１１１でＭａｘＡｖｅが閾値ｔｈ１を超えていると判断された１つのビーコン信号のＵＵＩＤに対応するノードＩＤが取得される。ステップＳ１１４の処理が完了した後、端末装置１００は、ステップＳ１１８に処理を進める。
【００９０】
ステップＳ１１４において、端末装置１００は、ＤｉｆｆＭａｘが閾値ｔｈ２以上であるか否かを判断する。ここでのＤｉｆｆＭａｘは、先のステップＳ１１１においてＭａｘＡｖｅが閾値ｔｈ１を超えていると判断された２つ以上のビーコン信号のうち、ＲＳＳＩが最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩが２番目に大きいビーコン信号のＲＳＳＩとの差（ＤｉｆｆＭａｘ）である。ＤｉｆｆＭａｘが閾値ｔｈ２以上の場合（ステップＳ１１４：ＹＥＳ）、端末装置１００は、ステップＳ１１５に処理を進める。そうでない場合（ステップＳ１１４：ＮＯ）、端末装置１００は、ステップＳ１１６に処理を進める。
【００９１】
ステップＳ１１５において、端末装置１００は、ビーコンＤＢを参照し、ＲＳＳＩ（最大値）が最大のＵＵＩＤに対応するノードＩＤを取得する。具体的に、ビーコンＤＢ１８３（図６）が参照され、先のステップＳ１１１においてＭａｘＡｖｅが閾値ｔｈ１を超えていると判断された２つ以上のビーコン信号のうち、ＲＳＳＩが最も大きいビーコン信号のＵＵＩＤに対応するノードＩＤが取得される。ステップＳ１１５の処理が完了した後、端末装置１００は、ステップＳ１１８に処理を進める。
【００９２】
ステップＳ１１６において、端末装置１００は、ＤｉｆｆＡｖｅが閾値ｔｈ３以上であるか否かを判断する。ここでのＤｉｆｆＡｖｅは、先のステップＳ１１１においてＭａｘＡｖｅが閾値ｔｈ１を超えていると判断された２つ以上のビーコン信号のうち、ＲＳＳＩの平均値が最も大きいビーコン信号のＲＳＳＩと、ＲＳＳＩの平均値が２番目に大きいビーコン信号のＲＳＳＩとの差である。ＤｉｆｆＡｖｅが閾値ｔｈ３以上の場合（ステップＳ１１６：ＹＥＳ），端末装置１００は、ステップＳ１１７に処理を進める。そうでない場合（ステップＳ１１６：ＮＯ）、端末装置１００は、ステップＳ１１９に処理を進める。
【００９３】
ステップＳ１１７において、端末装置１００は、ビーコンＤＢを参照し、ＲＳＳＩ（平均値）が最大のＵＵＩＤに対応するノードＩＤを取得する。具体的に、ビーコンＤＢ１８３（図６）が参照され、先のステップＳ１１１においてＭａｘＡｖｅが閾値ｔｈ１を超えていると判断された２つ以上のビーコン信号のうち、ＲＳＳＩの平均値が最も大きいビーコン信号のＵＵＩＤに対応するノードＩＤが取得される。ステップＳ１１７の処理が完了した後、端末装置１００は、ステップＳ１１８に処理を進める。
【００９４】
ステップＳ１１８において、端末装置１００は、ノードＩＤを出力する。具体的に、先のステップＳ１１３，Ｓ１１５またはＳ１１７において取得されたノードＩＤが、閾値処理（図１３のステップＳ１０４）および実ノードチェックインの処理（図１２のステップＳ１００）での戻り値に設定される。
【００９５】
ステップＳ１１９において、端末装置１００は、ＮＵＬＬを出力する。具体的に、ＮＵＬＬが、閾値処理（図１３のステップＳ１０４）および実ノードチェックインの処理（図１２のステップＳ１００）での戻り値に設定される。
【００９６】
再び図１３に戻り、ステップＳ１０５において、端末装置１００は、ＮＵＬＬを出力する。具体的に、ＮＵＬＬが、実ノードチェックインの処理（図１２のステップＳ１００）での戻り値に設定される。
【００９７】
以上のようにして、閾値ｔｈ１〜ｔｈ３を用い、端末装置１００における実ノードＮからのビーコン信号のＲＳＳＩに基づいて、端末装置１００が実ノードＮに滞在しているか否か、また、滞在している場合にはいずれの実ノードＮに滞在しているかが判定される。なお、その際、機種別補正ＤＢ（図７）が参照され、端末装置１００の機種に応じて、閾値ｔｈ１〜ｔｈ３が補正されてもよい。
【００９８】
次に、図１２におけるステップＳ３００において実行される処理の詳細について、図１５を参照して説明する。
【００９９】
図１５に示されるように、まず、端末装置１００は、屋内のみの施設か否かを判断する（ステップＳ３０１）。この判断は、たとえば、位置情報サービス部１１１が受信するサービス情報に基づいて行われる。屋内のみの施設である場合（ステップＳ３０１：ＹＥＳ）、端末装置１００は、ステップＳ３０２に処理を進める。そうでない場合（ステップＳ３０１：ＮＯ）、端末装置１００は、ステップＳ３００（図１２）の処理を完了する。
【０１００】
ステップＳ３０２において、端末装置１００は、５サンプル分の緯度経度の平均値を算出し、代表緯度経度とする。具体的に、位置情報サービス部１１１によるＧＰＳ信号の受信を利用して得られた５回分の測位結果（緯度経度）平均値が算出され、代表緯度経度とされる。なお、ＧＰＳ信号の受信レベルが十分でないなどの理由で緯度経度が算出されなかった場合には、ステップＳ３０３以降の処理がスキップされ、ＮＵＬＬが、緯度経度変化の処理（図１２のステップＳ３００）での戻り値に設定される。
【０１０１】
ステップＳ３０２の処理が完了した後、端末装置１００は、代表緯度経度が対応するメッシュＩＤを算出する（ステップＳ３０３）。たとえば、記憶部１８０がメッシュＩＤ（図８）と緯度経度とを対応づけて記述しており、その情報が参照されることによって、先のステップＳ３０２で算出された代表緯度経度に対応したメッシュＩＤが特定される。
【０１０２】
ステップＳ３０３の処理が完了した後、端末装置１００は、メッシュＤＢを参照し、メッシュＩＤに対応するノードＩＤを返す（ステップＳ３０４）。具体的に、メッシュＤＢ１８４（図８）が参照され、先のステップＳ３０３で算出されたメッシュＩＤに対応するノードＩＤが返される。
【０１０３】
ステップＳ３０４の処理が完了した後、端末装置１００は、ノードＩＤがＮＵＬＬか否かを判断する（ステップＳ３０５）。具体的に、先のステップＳ３０４で返されたノードＩＤがＮＵＬＬであるか否かが判断される。ノードＩＤがＮＵＬＬの場合（ステップＳ３０５：ＹＥＳ）、端末装置１００は、ステップＳ３０６に処理を進める。そうでない場合（ステップＳ３０５：ＮＯ）、端末装置１００は、ステップＳ３０９に処理を進める。
【０１０４】
ステップＳ３０６において、端末装置１００は、前回の正常ノードＩＤを返す。先に説明したように、図１２の処理はたとえば所定の周期で繰り返し実行されるので、先に説明したステップＳ３０４の処理も繰り返し実行され得る。このため、今回のループよりも前のループにおいてステップＳ３０４でＮＵＬＬでないノードＩＤが返されていれば、直近のステップＳ３０４で返されたＮＵＬＬでないノードＩＤが、正常ノードＩＤとなる。
【０１０５】
ステップＳ３０６の処理が完了した後、端末装置１００は、ノードＤＢを参照し、屋内ノードか屋外ノードかを判断する（ステップＳ３０７）。具体的に、ノードＤＢ１８１が参照され、先のステップＳ３０６で返されたノードＩＤに対応するカテゴリに基づいて、当該ノードＩＤが屋内ノードであるか屋外ノードであるかが判断される。屋内ノードの場合、端末装置１００は、ステップＳ３０８に処理を進める。屋外ノードの場合、端末装置１００は、ステップＳ３１０に処理を進める。
【０１０６】
ステップＳ３０８において、端末装置１００は、メッシュＤＢを参照し、前回の正常ノードＩＤの最近傍の屋外のノードＩＤを返す。具体的に、メッシュＤＢ１８４が参照され、先のステップＳ３０６で返されたノードＩＤに対応する最近傍屋外ノードＩＤが、緯度経度変化の処理（図１２のステップＳ３００）での戻り値に設定される。
【０１０７】
ステップＳ３０９において、端末装置１００は、ノードＤＢ１８１を参照し、屋内ノードか屋外ノードかを判定する。この判定の手法は、先に説明したステップＳ３０７と同様であるので、ここでは説明を省略する。屋内ノードの場合、端末装置１００は、ステップＳ３１１に処理を進める。屋外ノードの場合、端末装置１００は、ステップＳ３１０に処理を進める。
【０１０８】
ステップＳ３１０において、端末装置１００は、屋外のノードＩＤを返す。つまり、この屋外ノードＩＤが、緯度経度変化の処理（図１２のステップＳ３００）での戻り値に設定される。
【０１０９】
ステップＳ３１１において、端末装置１００は、メッシュＤＢを参照し、メッシュＩＤに対応する最近傍屋外ノードＩＤを返す。つまり、この最近傍屋外ノードＩＤが、緯度経度変化の処理（図１２のステップＳ３００）での戻り値に設定される。これにより、たとえば、位置情報サービス部１１１によるＧＰＳ信号を用いた測位結果において端末装置１００が屋内に位置しているという誤った結果が出力された場合には、その結果が是正される。
【０１１０】
再び図１２に戻り、ステップＳ３００の処理が完了した後、端末装置１００は、屋外のノードＩＤを取得したか否かを判断する（ステップＳ４００）。具体的に、先のステップＳ３００での戻り値が屋外のノードＩＤであったか否かが判断される。なお、先のステップＳ３００での戻り値が屋外のノードＩＤでない場合は、先に説明したようにステップＳ３０２において緯度経度が算出されずＮＵＬＬが戻り値に設定される場合である。屋外のノードＩＤを取得した場合（ステップＳ４００：ＹＥＳ）端末装置１００は、ステップＳ６００に処理を進める。そうでない場合（ステップＳ４００：ＮＯ）、端末装置１００は、ステップＳ５００に処理を進める。
【０１１１】
次に、図１２のステップＳ５００において実行される処理の詳細について、図１６および図１７を参照して説明する。
【０１１２】
図１６に示されるように、まず、端末装置１００は、経路選定処理を行う（ステップＳ５０１）。たとえば選定部１２０が、前回ノードから到達可能な実ノードＮのうちの最初に到達可能な（つまり最も近い）実ノードＮに至るすべての経路を検索する。換言すれば、前回ノードに対応するすべてのリンクが検索される。
【０１１３】
次に、端末装置１００は、経路が複数か否かを判断する（ステップＳ５０２）。たとえば仮想ノード滞在判定部１５２が、先のステップＳ５０１において検索した経路の数が２以上であるか否かを判断する。経路が複数である場合（ステップＳ５０２：ＹＥＳ）、端末装置１００は、ステップＳ５０６に処理を進める。そうでない場合（ステップＳ５０２：ＮＯ）、端末装置１００は、ステップＳ５０３に処理を進める。
【０１１４】
ステップＳ５０３において、端末装置１００は、隣接ノードが実ノードか否かを判断する。たとえば仮想ノード滞在判定部１５２が、先のステップＳ５０１において選定された１つの経路を介して前回ノードに隣接するノードが、実ノードＮであるか否かを判断する。前回ノードに隣接するとは、前回ノードから、他のノードを経由することなく到達することが可能なノードである。隣接ノードが実ノードの場合（ステップＳ５０３：ＹＥＳ）、端末装置１００は、ステップＳ５０４に処理を進める。そうでない場合（ステップＳ５０３：ＮＯ）、端末装置１００は、ステップＳ５０５に処理を進める。
【０１１５】
ステップＳ５０４において、端末装置１００は、ノードＩＤをＮＵＬＬに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは実ノードＮであり、仮想ノードｎではないと判断する。また、たとえば選定部１２０が、ＮＵＬＬを戻り値として出力する。
【０１１６】
ステップＳ５０５において、端末装置１００は、ノードＩＤを仮想ノードのノードＩＤに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、先のステップＳ５０１において選定された１つの経路を介して前回ノードに隣接する（つまり当該経路に対応するリンクＬ上に設定された）仮想ノードｎであると判断する。また、たとえば選定部１２０が、当該仮想ノードｎのノードＩＤを戻り値として出力する。
【０１１７】
ステップＳ５０６において、端末装置１００は、隣接する仮想ノードがいくつ存在するかを判断する。たとえば仮想ノード滞在判定部１５２が、前回ノードに隣接する仮想ノードｎがいくつ存在するかを判断する。各ノード間に仮想ノードｎが１つ設定されていれば、前回ノードに隣接する仮想ノードｎは、前回ノードに対応するリンクＬ上に設定された仮想ノードｎとなる。隣接する仮想ノードが存在しない（０の）場合、端末装置１００は、ステップＳ５０７に処理を進める。隣接する仮想ノードが１つの場合、端末装置１００は、ステップＳ５０８に処理を進める。隣接する仮想ノードが２つ以上の場合、端末装置１００は、ステップＳ５０９に処理を進める。
【０１１８】
ステップＳ５０７において、端末装置１００は、ノードＩＤをＮＵＬＬに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、仮想ノードｎではないと判断する。また、たとえば選定部１２０がＮＵＬＬを戻り値として出力する。
【０１１９】
ステップＳ５０８において、端末装置１００は、ノードＩＤを仮想ノードのノードＩＤに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、先のステップＳ５０６において判断された１つの仮想ノードｎであると判断する。また、たとえば選定部１２０が、当該仮想ノードｎのノードＩＤを戻り値として出力する。
【０１２０】
ステップＳ５０９において、端末装置１００は、距離比較処理を行う。この処理は、たとえば選定部１２０が、先のステップＳ５０６で判断された２つ以上の仮想ノードｎから、１つの仮想ノードｎを選定するための処理であり、詳細については、後に図１７を参照して説明する。
【０１２１】
ステップＳ５０９の結果を受けて、端末装置１００は、ノードＩＤを仮想ノードのＩＤに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、先のステップＳ５０９の距離比較処理で選定された１つの仮想ノードｎであると判断する。また、たとえば選定部１２０が、当該仮想ノードｎのノードＩＤを戻り値として出力する。
【０１２２】
次に、図１６のステップＳ５０９の処理の詳細について、図１７を参照して説明する。
【０１２３】
図１７に示されるように、まず、端末装置１００は、総リンク距離を算出する。この処理は、算出部１４０によって実行される。総リンク距離は、端末装置１００が最後に滞在していた実ノードＮと、当該実ノードＮから他の実ノードＮを介さずに到達可能な実ノードＮとの間の経路上の距離である。総リンク距離は、ノードＤＢ１８１およびリンクＤＢ１８２（図４および図５）を参照することによって算出される。
【０１２４】
具体的に、算出部１４０による総リンク距離の算出の例について、図１８を参照して説明する。図１８には、実ノードＮ１〜Ｎ４、仮想ノードｎ１〜ｎ３、リンクＬ１〜Ｌ３で構成されるノード・リンク構造が示される。リンクＬ１は、実ノードＮ１と実ノードＮ２との間に設定される。リンクＬ２は、実ノードＮ１と実ノードＮ３との間に設定される。リンクＬ３は、実ノードＮ１と実ノードＮ４と間に設定される。仮想ノードｎ１は、リンクＬ１上に設定される。仮想ノードｎ２は、リンクＬ３上に設定される。仮想ノードｎ３は、図示しないリンク上に設定される。
【０１２５】
たとえば端末装置１００が最後に滞在していた実ノードＮが実ノードＮ１の場合、総リンク距離は次のようにして算出される。すなわち、実ノードＮ１から他の実ノードＮを介さずに到達可能な実ノードＮは、実ノードＮ２〜Ｎ４であるので、総リンク距離は、実ノードＮ２〜Ｎ４の各々と、実ノードＮ１との距離として算出される。このような総リンク距離は、算出部１４０が、たとえば、ノードＤＢ１８１（図４）によって記述された各ノードの位置情報（たとえばＸ座標およびＹ座標の値）を用いて算出することができる。ここでは、実ノードＮ２と実ノードＮ１との総リンク距離が１０として算出され、実ノードＮ４と実ノードＮ１との総リンク距離が１０として算出されるものとする。
【０１２６】
再び図１７に戻り、次に、端末装置１００は、実測距離を算出する（ステップＳ５２２）。この処理は、算出部１４０によって実行される。実測距離は、先のステップＳ５０６において判断された２つ以上の仮想ノードｎが設定されたリンクに対応する実ノードＮのそれぞれと、端末装置１００との距離である。実測距離は、端末装置１００における各実ノードＮからのビーコン信号のＲＳＳＩに基づいて算出され得る。これは、各実ノードＮからの距離と、ＲＳＳＩとが一定の関連性を有するためである。
【０１２７】
たとえば図１８に示される例では、端末装置１００が最後に滞在していた実ノードＮが実ノードＮ１であるので、実ノードＮ１に隣接する仮想ノードｎ１が設定されたリンクＬ１に対応する、実ノードＮ２と端末装置１００との距離が、実測距離とされる。さらに、実ノードＮ１に隣接する仮想ノードｎ２が設定されたリンクＬ３に対応する、実ノードＮ４と端末装置１００との距離も、実測距離とされる。ここでは、実ノードＮ２と端末装置１００との間の距離が５として算出され、実ノードＮ４と端末装置１００との距離が１３として算出されるものとする。
【０１２８】
次に、端末装置１００は、総リンク距離より実測距離が短い経路がいくつあるかを判断する（ステップＳ５２３）。この処理は、たとえば選定部１２０によって実行される。たとえば、上述の図１８の例では、実ノードＮ２と実ノードＮ１との総リンク距離が１０であり、実ノードＮ４と実ノードＮ１と総リンク距離が１０である。これに対し、実ノードＮ２と端末装置１００との実測距離が５であり、実ノードＮ４と端末装置１００との実測距離が１３である。この場合、実ノードＮ２と実ノードＮ１との総リンク距離が１０であるのに対し、実ノードＮ２と端末装置１００との実測距離が５であるので、総リンク距離より実測距離が短い経路が１つ存在することになる。
【０１２９】
総リンク距離より実測距離が短い経路が存在しない場合、端末装置１００は、ステップＳ５２４に処理を進める。総リンク距離より実測距離が短い経路が１つの場合、端末装置１００は、ステップＳ５２５に処理を進める。総リンク距離より実測距離が短い経路が２つ以上の場合、端末装置１００は、ステップＳ５２６に処理を進める。
【０１３０】
ステップＳ５２４において、端末装置１００は、ノードＩＤをＮＵＬＬに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、仮想ノードｎではないと判断する。また、たとえば選定部１２０が、ＮＵＬＬを戻り値として出力する。
【０１３１】
ステップＳ５２５において、端末装置１００は、ノードＩＤを経路上の仮想ノードのノードＩＤに設定する。たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、先のステップＳ５２４において総リンク距離より実測距離が短いと判断された１つの経路上の（つまりこの経路に対応するリンクＬ上の）仮想ノードｎであると判断する。また、たとえば選定部１２０が、当該仮想ノードｎのノードＩＤを戻り値として出力する。
【０１３２】
ステップＳ５２６において、端末装置１００は、総リンク距離と実測距離との差の絶対値が最も大きくなる経路を選定する。この処理は、先のステップＳ５２３で判断された２つ以上の経路から、１つの経路を選定するための処理であり、たとえば選定部１２０によって実行される。上述の図１７の例では、総リンク距離と実測距離との差の絶対値は、実ノードＮ２と実ノードＮ１との総リンク距離および実ノードＮ２と端末装置１００との実測距離については５（すなわち（１０−５）の絶対値）であり、実ノードＮ４と実ノードＮ１との総リンク距離および実ノードＮ４と端末装置１００との実測距離については３（すなわち（１０−１３）の絶対値）であるので、実ノードＮ２に向かう経路（リンクＬ１）が選定される。
【０１３３】
そして、端末装置１００は、ノードＩＤを経路上の仮想ノードのノードＩＤに設定する（ステップＳ５２７）。具体的に、たとえば仮想ノード滞在判定部１５２が、端末装置１００が滞在しているノードは、先のステップＳ５２６において選定された経路上の（つまりこの経路に対応するリンクＬ上の）仮想ノードｎであると判断する。また、たとえば選定部１２０が、当該仮想ノードｎのノードＩＤを戻り値として出力する。なお、図１８に示される例では、仮想ノードｎ１のノードＩＤが戻り値として出力されることとなる。たとえば以上のようにして、複数の実ノードＮと端末装置１００との各距離に基づいて、端末装置１００が滞在している仮想ノードｎが推定される。
【０１３４】
次に、端末装置１００の作用効果について説明する。端末装置１００では、取得部１１０が、実ノードＮ（発信器Ｔ）から発信されたビーコン信号を受信することによって、実ノードＮの情報を取得する（ステップＳ１０１）。また、選定部１２０等が、取得部１１０によって取得された情報に基づいて、リンクＬ上に設定された仮想ノードｎを選定する（ステップＳ５０５，Ｓ５０８，Ｓ５１０，Ｓ５２５，Ｓ５２７）。そして、特定部１３０が、選定部１２０等によって選定された仮想ノードｎに基づいて、端末装置１００の位置を特定する（ステップＳ９００）。ここで、実ノードＮは発信器Ｔを設置することによって実現されるのに対し、仮想ノードｎは発信器Ｔを設置することなく実現される。このような仮想ノードｎを用いることで、その分、実ノードＮの数を低減することができる。その結果、設置しなければならない発信器Ｔの数を低減することができる。したがって、測位に必要な発信器Ｔの数を低減することが可能になる。
【０１３５】
また、選定部１２０等は、端末装置１００が最後に滞在していたノードに対応するリンクＬ上に設定された仮想ノードｎを選定する（ステップＳ５０１〜Ｓ５０４，Ｓ５０６，Ｓ５０８〜Ｓ５１０）。端末装置１００は、滞在していたノード（前回ノード）を離れた後、次の実ノードに滞在するまでの間は、前回ノードに対応するリンクＬ上にいると考えられる。このため、上記のように前回ノードに対応するリンクＬを選定することで、端末装置１００が滞在している可能性の高い仮想ノードｎを選定することができる。
【０１３６】
また、算出部１４０は、複数の実ノードＮと端末装置１００との各距離を、複数の実ノードＮから発信されビーコン信号のＲＳＳＩに基づいてそれぞれ算出する（ステップＳ５２２）。そして、選定部１２０は、算出部１４０の算出結果に基づいて、前回ノードに対応するリンクＬ上に設定された複数の仮想ノードから、端末装置１００が滞在していると推定される仮想ノードｎを選定する（ステップＳ５２３，Ｓ５２５〜Ｓ５２７）。たとえば、端末装置１００から最も距離が近い実ノードＮへと向かう（分岐している）リンク上の仮想ノードｎが、端末装置１００が滞在していると可能性の高い仮想ノードｎとして選定される。これにより、端末装置１００が滞在している可能性の高い仮想ノードｎが選定される。
【０１３７】
たとえば、複数の実ノードＮおよび複数のノードＮ間のリンクＬが配置された所定の領域は、建物１を含む領域とされる。この場合、実ノードＮは、建物１での通路３の接続点を含む位置に対応してもよい。また、仮想ノードｎは、実ノードＮを除くリンクＬ（通路３）上のいずれかの位置に対応してもよい。この場合、実ノードＮを実現するための発信器Ｔを建物１の通路３の接続点に設置すれば、各接続点の間、つまり通路３の途中には発信器Ｔを設置しなくとも、仮想ノードｎに基づいて端末装置１００の位置を特定することができる。よって、通路３の途中にも発信器Ｔを設置する場合よりも、発信器Ｔの設置数を低減することができる。
【０１３８】
以上説明した端末装置１００の各機能は、たとえば、コンピュータにおいて測位プログラムが実行されることによって実現することもできる。
【０１３９】
以上、本発明の一実施形態について説明したが、本発明は、上記実施形態に限定されるものではない。
【０１４０】
たとえば、端末装置１００は、通信部１７０を用いて、サーバ（不図示）と通信してもよい。この場合、たとえば、端末装置１００の選定部１２０、特定部１３０、算出部１４０、判定部１５０の少なくとも一部の機能を、サーバ側で備えるようにしてもよい。これにより、端末装置１００での処理負担を軽減するとともに、端末装置１００の構成を簡素化することができる。この場合、端末装置１００およびサーバによって構成されるシステムが、本発明に係る端末装置に相当する。
【符号の説明】
【０１４１】
１００…端末装置、１１０…取得部（取得手段）、１２０…選定部（選定手段）、１３０…特定部（特定手段）、１４０…算出部（算出手段）、１５０…判定部、１５１…実ノード滞在判定部、１５２…仮想ノード滞在判定部（選定手段）、１６０…制御部、１７０…通信部、１８０…記憶部。
【図１】
0006480297.tif 000002
【図２】
0006480297.tif 000003
【図３】
0006480297.tif 000004
【図４】
0006480297.tif 000005
【図５】
0006480297.tif 000006
【図６】
0006480297.tif 000007
【図７】
0006480297.tif 000008
【図８】
0006480297.tif 000009
【図９】
0006480297.tif 000010
【図１０】
0006480297.tif 000011
【図１１】
0006480297.tif 000012
【図１２】
0006480297.tif 000013
【図１３】
0006480297.tif 000014
【図１４】
0006480297.tif 000015
【図１５】
0006480297.tif 000016
【図１６】
0006480297.tif 000017
【図１７】
0006480297.tif 000018
【図１８】
0006480297.tif 000019