(57)【特許請求の範囲】
【請求項１】
自装置の第１のポテンシャル変数、第２のポテンシャル変数、及び周波数変数を保存する変数管理手段と、
自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出手段と、
自装置と隣接装置の方向を検出する受信方向検出手段と、
通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、
前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出手段により算出した受信方向及び前記距離検出手段により算出した距離を保存する隣接情報管理手段と、
隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、
隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算手段と、
自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告手段と、
自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定手段と、
を備えており、
前記判定手段は、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
前記第１と第２の所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置の第１のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、
前記極大値と極小値の繰り返し密度は、前記周波数変数により変化することを特徴とする通信装置。
【請求項２】
自装置の第１のポテンシャル変数、第２のポテンシャル変数、及び周波数変数を保存する変数管理手段と、
自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出手段と、
自装置と隣接装置の方向を検出する受信方向検出手段と、
通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、
前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出手段により算出した受信方向及び前記距離検出手段により算出した距離を保存する隣接情報管理手段と、
隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、
隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算手段と、
自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告手段と、
自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定手段と、
を備えており、
前記判定手段は、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
Ａ、Ｂ、ΔＴ及びｄを正の定数とし、
装置ｉの時刻ｔでの第１のポテンシャル変数をｕｘｉｔ、ｕｙｉｔ、第２のポテンシャル変数をｖｘｉｔ、ｖｙｉｔ、及び周波数変数をｑｉｔとし、装置ｉと装置ｎ間の受信方向をθｉ，ｎ、及び距離をΔｄｉ，ｎとすると、
自装置ｎの前記第１の所定の計算式は、
【数１】
0005682919.tif 000010
であり、
自装置ｎの前記第２の所定の計算式は、
【数２】
0005682919.tif 000011
であることを特徴とする通信装置。
【請求項３】
起動した直後、自装置の第１のポテンシャル変数を０以上であり所定の最大値以下の乱数で、自装置の第２のポテンシャル変数を０で初期化する初期制御手段をさらに備えることを特徴とする請求項１又は請求項２に記載の通信装置。
【請求項４】
前記初期制御手段は、自装置のＸ軸方向との方位角を、該方位角と前記受信方向との差が０度、９０度、１８０度、または２７０度に近づくように設定し、
前記受信方向検出手段は、検出した受信方向と方位角との差を受信方向とする
ことを特徴とする請求項１から請求項３のいずれか１項に記載の通信装置。
【請求項５】
前記判定手段は、自装置の第１のポテンシャル変数を更新することによる値の変化を、所定の閾値により大小判定し、変化が小さいことを前記所定の機能の実行を行う条件の１つとすることを特徴とする請求項１から請求項４のいずれか１項に記載の通信装置。
【請求項６】
前記周波数変数を、自装置の内部又は外部の監視対象の値により決定することを特徴とする請求項１から請求項５のいずれか１項に記載の通信装置。
【請求項７】
前記周波数変数を更新するとき、自装置の第１のポテンシャル変数に０以上であり所定の最大値以下の乱数を、自装置の第２のポテンシャル変数に０を設定することを特徴とする請求項１から請求項６のいずれか１項に記載の通信装置。
【請求項８】
それぞれが第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、
自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出ステップと、
自装置と隣接装置の方向を検出する受信方向検出ステップと、
通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、
前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出ステップにより算出した受信方向及び前記距離検出ステップにより算出した距離を保存する隣接情報管理ステップと、
隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、
隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算ステップと、
自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告ステップと、
自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定ステップと、
を有し、
前記判定ステップは、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
前記第１と第２の所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置の第１のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、
前記極大値と極小値の繰り返し密度は、前記周波数変数により変化することを特徴とする方法。
【請求項９】
それぞれが第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、
自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出ステップと、
自装置と隣接装置の方向を検出する受信方向検出ステップと、
通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、
前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出ステップにより算出した受信方向及び前記距離検出ステップにより算出した距離を保存する隣接情報管理ステップと、
隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、
隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算ステップと、
自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告ステップと、
自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定ステップと、
を有し、
前記判定ステップは、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
Ａ、Ｂ、ΔＴ及びｄを正の定数とし、
装置ｉの時刻ｔでの第１のポテンシャル変数をｕｘｉｔ、ｕｙｉｔ、第２のポテンシャル変数をｖｘｉｔ、ｖｙｉｔ、及び周波数変数をｑｉｔとし、装置ｉと装置ｎ間の受信方向をθｉ，ｎ、及び距離をΔｄｉ，ｎとすると、
自装置ｎの前記第１の所定の計算式は、
【数１】
0005682919.tif 000012
であり、
自装置ｎの前記第２の所定の計算式は、
【数２】
0005682919.tif 000013
であることを特徴とする方法。
【請求項１０】
請求項１から請求項７のいずれか１項に記載の通信装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のノード（通信装置）の中から特定の機能を実行するノード（ａｃｔｉｖｅノード）群を中央サーバに依存せずに自律分散的に決定する方法に関するものである。本発明が対象とするネットワークとして、センサーネットワークのようなマルチホップネットワークが挙げられる。また、ネットワークトポロジの条件によってはＰ２Ｐネットワークのようなインターネットでの利用も可能である。
【背景技術】
【０００２】
センサーネットワークにおいて、環境を測定するセンサーデバイス（センサーノードまたは単にノード）は、単一のノードだけで利用されるだけでなく、多数のデバイスを環境中に分散配置して、広い範囲にわたる環境情報を取得するという用途にも利用される。その際、多数のノードが必ずしもすべて同時に稼動するわけではなく、測定地域をカバーする必要十分な個数のノードのみが稼動するように制御する仕組みや、それらのノードが測定した情報を、データ処理を行うサーバに集めるために情報を適切なノードへと転送する仕組みなどが必要となる。
【０００３】
なお、センサーネットワークにおいて、「ノードが特定の機能を実行する」とは、例えばセンシング機能をｏｎにする、ｓｉｎｋノード（情報を収集するノード）になる、などを指す。
【０００４】
センシング機能のｏｎ／ｏｆｆを制御する主な理由として、システム全体の稼働時間を延ばすことが挙げられる。つまり、センサーノードはバッテリー駆動することが多く、寿命が有限であるため、必要最小限の個数のノードだけを稼働させて（センシング機能をｏｎにする）、計測対象となるエリア全体をカバーすることを目的としている。この目的を達成する方法は様々なものが提案されている（非特許文献１〜３）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】O. Younis and S. Fahmy, “HEED: A hybrid, energyefficient, distributed clustering approach for adhoc sensor networks,” IEEE Transactions on Mobile Computing, vol. 3, no. 4, pp.366-379, 2004.
【非特許文献２】W. B. Heinzelman, A. P. Chandrakasan, and H. Balakrishnan, “An application-specific protocol architecture for wireless microsensor networks,” IEEE Transactions on Wireless Communications, vol. 1, no. 4, pp. 660-670, 2002.
【非特許文献３】S. Ghiasi, A. Srivastava, X. Yang, and M. Sarrafzadeh, “Optimal Energy Aware Clustering in Sensor Networks,” Sensors Magazine, MDPI, issue 1, pp 258-269, 2002.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、非特許文献１〜３は全て、「全てのノードの１ホップ内（通信範囲内）に必ず１台（以上）センシング機能がｏｎになっているノードが存在する」ということを実現するものである。逆に言えば、これらは必ず「１ホップ以内」という条件がつく。
【０００７】
また、Ｓｉｎｋノードになる／ならないを制御する提案はほとんどない。つまり、Ｓｉｎｋノードは最初に与えられるものであるということが暗に想定されているからである。
【０００８】
したがって、本発明は、センシング機能のｏｎ／ｏｆｆやＳｉｎｋノードになる／ならないという問題を、ａｃｔｉｖｅノードになる／ならない、という問題として一般化して考え、上述の問題点である「１ホップ以内」の条件を排除し、「全てのノードのｎホップ以内に必ず１台がａｃｔｉｖｅノードになる」ことを自律分散的に実現するアクティブノード決定方法、該方法のための通信装置およびプログラムを提供することを目的とする。
【０００９】
さらに、本発明は、単にａｃｔｉｖｅノードを選ぶだけではなく、周囲のノードが再近接のａｃｔｉｖｅノードまでの経路を知ることも可能にする。つまり、一番近いａｃｔｉｖｅノードに情報をマルチホップで送付するために、各ノードはそれぞれどの隣接ノードに情報を送ればよいかがわかる。
【課題を解決するための手段】
【００１０】
上記目的を実現するため本発明による通信装置は、自装置の第１のポテンシャル変数、第２のポテンシャル変数、及び周波数変数を保存する変数管理手段と、自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出手段と、自装置と隣接装置の方向を検出する受信方向検出手段と、通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出手段により算出した受信方向及び前記距離検出手段により算出した距離を保存する隣接情報管理手段と、隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算手段と、自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告手段と、
自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定手段と、を備えており、
前記判定手段は、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
前記第１と第２の所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置の第１のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、前記極大値と極小値の繰り返し密度は、前記周波数変数により変化することを特徴とする。
また、本発明による通信装置は、自装置の第１のポテンシャル変数、第２のポテンシャル変数、及び周波数変数を保存する変数管理手段と、自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出手段と、自装置と隣接装置の方向を検出する受信方向検出手段と、通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出手段により算出した受信方向及び前記距離検出手段により算出した距離を保存する隣接情報管理手段と、隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算手段と、自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告手段と、自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定手段と、を備えており、
前記判定手段は、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
Ａ、Ｂ、ΔＴ及びｄを正の定数とし、
装置ｉの時刻ｔでの第１のポテンシャル変数をｕｘｉｔ、ｕｙｉｔ、第２のポテンシャル変数をｖｘｉｔ、ｖｙｉｔ、及び周波数変数をｑｉｔとし、装置ｉと装置ｎ間の受信方向をθｉ，ｎ、及び距離をΔｄｉ，ｎとすると、
自装置ｎの前記第１の所定の計算式は、
【数１】
0005682919.tif 000002
であり、
自装置ｎの前記第２の所定の計算式は、
【数２】
0005682919.tif 000003
であることを特徴とする。
【００１１】
また、起動した直後、自装置の第１のポテンシャル変数を０以上であり所定の最大値以下の乱数で、自装置の第２のポテンシャル変数を０で初期化する初期制御手段をさらに備えることも好ましい。
【００１２】
また、前記初期制御手段は、自装置のＸ軸方向との方位角を、該方位角と前記受信方向との差が０度、９０度、１８０度、または２７０度に近づくように設定し、前記受信方向検出手段は、検出した受信方向と方位角との差を受信方向とすることも好ましい。
【００１５】
また、前記判定手段は、自装置の第１のポテンシャル変数を更新することによる値の変化を、所定の閾値により大小判定し、変化が小さいことを前記所定の機能の実行を行う条件の１つとするも好ましい。
【００１６】
また、前記周波数変数を、自装置の内部又は外部の監視対象の値により決定することも好ましい。
【００１７】
また、前記周波数変数を更新するとき、自装置の第１のポテンシャル変数に０以上であり所定の最大値以下の乱数を、自装置の第２のポテンシャル変数に０を設定することも好ましい。
【００１８】
上記目的を実現するため本発明による方法は、それぞれが第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出ステップと、自装置と隣接装置の方向を検出する受信方向検出ステップと、通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出ステップにより算出した受信方向及び前記距離検出ステップにより算出した距離を保存する隣接情報管理ステップと、隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算ステップと、自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告ステップと、自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定ステップと、を有し、
前記判定ステップは、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
前記第１と第２の所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置の第１のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、
前記極大値と極小値の繰り返し密度は、前記周波数変数により変化することを特徴とする。
また、本発明による方法は、それぞれが第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、自装置と通信リンクにより接続している隣接装置との距離を検出する距離検出ステップと、自装置と隣接装置の方向を検出する受信方向検出ステップと、通信リンクにより接続している隣接装置の第１のポテンシャル変数、第２のポテンシャル変数を受信し、前記第１のポテンシャル変数、前記第２のポテンシャル変数、前記受信方向検出ステップにより算出した受信方向及び前記距離検出ステップにより算出した距離を保存する隣接情報管理ステップと、隣接装置からの第１のポテンシャル変数、第２のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数、第２のポテンシャル変数及び周波数変数から、自装置の第１のポテンシャル変数を第１の所定の計算式により更新し、隣接装置からの第１のポテンシャル変数、受信方向及び距離、並びに、自装置の第１のポテンシャル変数から、自装置の第２のポテンシャル変数を第２の所定の計算式により更新するポテンシャル計算ステップと、自装置の第１のポテンシャル変数、及び第２のポテンシャル変数を隣接装置に送信する情報広告ステップと、自装置の第１のポテンシャル変数と、各隣接装置の第１のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する判定ステップと、
を有し、
前記判定ステップは、自装置の第１のポテンシャル変数が、全隣接装置の第１のポテンシャル変数より大きいことを、前記所定の機能の実行を行う条件の１つとする一方、
Ａ、Ｂ、ΔＴ及びｄを正の定数とし、
装置ｉの時刻ｔでの第１のポテンシャル変数をｕｘｉｔ、ｕｙｉｔ、第２のポテンシャル変数をｖｘｉｔ、ｖｙｉｔ、及び周波数変数をｑｉｔとし、装置ｉと装置ｎ間の受信方向をθｉ，ｎ、及び距離をΔｄｉ，ｎとすると、
自装置ｎの前記第１の所定の計算式は、
【数１】
0005682919.tif 000004
であり、
自装置ｎの前記第２の所定の計算式は、
【数２】
0005682919.tif 000005
であることを特徴とする。
【００１９】
本発明のプログラムによれば、上記通信装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００２０】
本発明により、システム全体の状況を把握しているような中央集中的なサーバを必要とすることなく、さらに、各ノードが「グローバルに一意な」識別子を持っている必要はなく（隣接ノードだけを区別できれば良い）、ネットワーク内の各ノードが隣接ノードとのみ通信するだけで、自律分散的にａｃｔｉｖｅなノードをほぼ均一な密度で配置できる。また、ネットワークトポロジの変化に応じて自動的にサーバの位置を変化させることができる（言い方を変えると、トポロジが変化したかしていないかを、各ノードは全く意識する必要はない）。
【００２１】
さらに、本発明は、周波数変数（変数ｑ）に応じてａｃｔｉｖｅノードの密度を制御することができる。また、各ノードは一番近いａｃｔｉｖｅノードに至るための次ホップを容易に知ることができる。
【図面の簡単な説明】
【００２２】
【図１】２次元平面上に配置されたセンサーネットワークを示す。
【図２】ポテンシャルの空間分布の例を示す。
【図３】本発明のノードの内部構成を示す。
【図４】本発明のノードの処理タイミングを示す。
【発明を実施するための形態】
【００２３】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。図１は、２次元平面上に配置されたセンサーネットワークを示す。センサーノードは対象となる領域全体に一様に配置されている。ここで一様とは、領域の各点が必ず１台以上のノードの通信範囲に含まれ、かつ各ノードが平均４台以上の隣接ノードをもつものとする。隣接ノードとは、あるノードから見て、通信リンクにより接続されているノードを意味するものとする。つまり、図１の縦線で塗り潰された四角形に対応するノードは、図１の斜線で塗り潰された四角形に対応するノードの隣接装置である。
【００２４】
本発明では、ポテンシャルという概念を各ノードに導入する。ポテンシャルは物理世界で言う静電ポテンシャルや重力ポテンシャルと類似の概念であり、具体的には各ノードが保持するひとつの変数である。センサーノードは２次元平面に一様に配置されていることから、ネットワーク全体を２次元ユークリッド空間とみなす。各ノードが変数の値（ポテンシャルの値）を状況に応じて変化させることによって、波状の形状のポテンシャルの空間的な分布（ポテンシャルの山や谷）が形成される。そして、山の頂上になっているノードがａｃｔｉｖｅノードになる。また、他のノードはポテンシャルの坂を上る方向（最急の方向）に次ホップを選んでパケットを転送することで、最近接のａｃｔｉｖｅノードにパケットを送付することができる。
【００２５】
本発明ではポテンシャルの空間分布の形状を正弦波をベースにした形状にすることにより、規則正しく山の部分を出現させ、等間隔にａｃｔｉｖｅノードが選ばれるようにする。図２に、本発明で発生させる正弦波をベースにしたポテンシャルの空間分布の例を示す。なお、図２では、ｘ、ｙ方向は２次元ユークリッド空間のｘ、ｙ方向であり、ｚ方向は各点（すなわち各ノード）におけるポテンシャルの値を示している。数式で表すと式１のように表現できる。
【数３】
0005682919.tif 000006
なお、ｕ（ｘ，ｙ）は座標（ｘ，ｙ）のノードのポテンシャルの値であり、Ｃは振幅、ｑは周波数、θｘ、θｙは位相である。なお、θｘ、θｙは０〜２πの乱数である。
【００２６】
本発明は、式１のようなポテンシャルの空間分布を自律分散的に形成するための方法である。
【００２７】
図３は、本発明のノードの内部構成を示す。本ノードは、受信方向検出部１、距離検出部２、変数管理部３、初期化制御部４、隣接情報管理部５、ポテンシャル計算部６、情報広告部７、ａｃｔｉｖｅ判定部８及びパケット受信部９を備えている。
【００２８】
なお、本発明のノードは以下の情報を保持している。
・周波数変数（変数ｑ）：ａｃｔｉｖｅノードの間隔を決めるための値である（式１のｑに対応する）。この値は、システム設計者がノードにプリセットする。または、ノード上で動作している他のアプリケーションプロセス等から値をセットしても良い。
・ポテンシャル変数：４つの要素（変数ｕｘ、ｖｘ、ｕｙ、ｖｙ）からなる配列である（それぞれの変数はスカラ量とする）。本明細書中では、特に一方の要素だけを指し示す場合には変数ｕｘやｖｘなどと呼び、全ての変数を指し示す場合にはポテンシャル変数と呼ぶ。ポテンシャルの空間的な分布とは、具体的にはｕｘ＋ｕｙの値のネットワーク上での分布を指す。
・Ｘ軸方位角変数（変数φ）：自ノードにとってのＸ軸方向（Ｘ軸の正の方向）と自ノードの０度方向との偏角の値である。
・基準距離（変数ｄ）：全ノード共通に適当な小さな正数である。各ノードは事前にこの値を保持している。ノードが備えている距離検出部２の性能に基づいて決めてもよい（例えば電波強度を利用した距離検出なら、電波強度と実距離の関係からｄの値を算出する等）。
・自ノードＩＤ：ＩＰアドレスなど。隣接ノードを一意に識別するためのＩＤである。
・隣接ノードのノードＩＤ：これは、最も近いサーバへアクセスする際に、次ホップのノードを指定するために必要となる。
【００２９】
受信方向検出部１は、パケット送信元ノードの方向を検出する。受信方向検出は既存の方式（アンテナアレーや超音波を用いる方法）を用いる。受信方向検出部１から得られる結果は次のようなものである。各ノードはそれぞれ基準となる方向（０度方向）を持っており、受信方向とはパケット送信元ノードの方向と０度方向のなす角度（０〜２π）である。ただし、各ノードの０度方向が同一の方向を向いている保証はない。仮に、受信方向検出部１が絶対方向を検出可能であれば、例えば真北を０度方向と考えればよい（この場合は全ノードが同じ方向を０度方向と見なすことができる）。
【００３０】
距離検出部２は、パケット送信元ノードとの距離を検出する。距離検出も既存の方式（パケット受信強度やラウンドトリップタイムを用いる方法）を用いる。距離検出部２から得られる結果は次のようなものである。各ノードはある基準距離（全ノードが事前に同じ値を知っている）に対する相対距離の値を、パケット送信元ノードと次ノードの距離として取得する。もちろん相対距離の値と絶対距離が一致するように基準距離を選ぶことも可能であるが、本発明では特に制限しない。
【００３１】
変数管理部３は、ノード自身のポテンシャル変数ｕｘ、ｕｙ、ｖｘ、ｖｙおよび周波数変数ｑを保持する。
【００３２】
初期化制御部４は、周波数変数ｑの変化を監視し、変化を検出した際に自ノードの変数ｕｘ、ｕｙを乱数で、変数ｖｘ、ｖｙを０で初期化する。また、自ノードのＸ軸方向（０度方向からの偏角）を決定する。隣接ノードからの広告の内容（ノードＩＤと受信方向の紐付け）を保持するための方位角初期化テーブルをもつ。
【００３３】
隣接情報管理部５は、隣接ノードから広告されるポテンシャル変数の値、受信方向と距離を、ノードＩＤと紐付けて保持する。
【００３４】
ポテンシャル計算部６は、ノードが持つポテンシャル変数の値を、隣接ノードのポテンシャル変数の値や自身の変数ｑおよびポテンシャル変数の値に応じて時々刻々変化させる（更新する）。
【００３５】
情報広告部７は、自身のポテンシャル変数の値を隣接ノードに広告する。
【００３６】
ａｃｔｉｖｅ判定部８は、隣接ノードの変数ｕｘ＋ｕｙの値同士を比較し、ノードをａｃｔｉｖｅにするかどうかを判断する。（何の機能をａｃｔｉｖｅにするかは本発明の範囲外である）
【００３７】
パケット検出部９は、隣接ノードからパケットを受信する。受信したパケットから変数ｕｘ、ｕｙ、ｖｘ、ｖｙを抽出して、隣接情報管理部５に渡す。また、距離検出および受信方向検出のため、受信したパケットを受信方向検出部１および距離検出部２に渡す。
【００３８】
最初に、本発明のノードの初期化について説明する。ノードが起動した直後、各ノードは、ポテンシャル変数の初期化とＸ軸方位角変数の初期化を行う。
【００３９】
・ポテンシャル変数の初期化
ノードが起動した直後は、初期化制御部４が変数ｕｘ、ｕｙに乱数を、また変数ｖｘ、ｖｙに０をセットする。初期化制御部４が発生する乱数は０以上ＲＡＮＤ＿ＭＡＸ以下までの範囲とする。なお、ＲＡＮＤ＿ＭＡＸは適当な実数定数であり、設計時に設定しておく。
【００４０】
・Ｘ軸方位角変数の初期化
ノードが起動した直後は、それぞれ何らかの方向を０度方向としている。本発明では、０度方向とは異なる方向をＸ軸方向とすることができる。その理由を以下に示す。
【００４１】
受信したパケットの送信元ノード（＝隣接ノード）の方向（受信方向）をθとする。なお前述の通り、θはその受信ノードの０度方向とのなす角である。本発明の方式では、θが４５、１３５、２２５、３１５度からなるべく離れることが望ましい（つまり、０、９０、１８０、２７０度に近いほどよい）。これはネットワークトポロジがきれいな格子状であるほど本方式がうまく動作するためであり、各ノードにとっては０度、９０度などの方向から受信するということがきれいな格子状であることに相当する。各ノードには複数台の隣接ノードが存在するので、そのいずれの受信方向についてもθが４５、１３５、２２５、３１５度からなるべく離れるようにする必要がある。これを満たすために、Ｘ軸方位角変数の初期化時に次のような処理を行う。
（１）ノードは起動直後からＩＮＩＴ＿ＤＵＲＡＴＩＯＮ秒間、適当な時間間隔ごとに広告をｂｒｏａｄｃａｓｔする（広告の内容は情報広告部７でポテンシャル変数を広告するためのものと同じでよい）。この広告の目的は、隣接ノードに対して自身の存在を広告するためのものである。適当な時間間隔とは、ＩＮＩＴ＿ＡＤＶ＿ＩＮＴＥＲＶＡＬの値に対して、ＩＮＩＴ＿ＡＤＶ＿ＩＮＴＥＲＶＡＬ＊０．５秒〜ＩＮＩＴ＿ＡＤＶ＿ＩＮＴＥＲＶＡＬ＊１．５秒までの間の乱数とする。
（２）ノードは起動直後からＩＮＩＴ＿ＤＵＲＡＴＩＯＮ秒間の間、隣接ノードから広告を受け取る。広告受信時には受信方向が得られるため、送信元ノードのＩＤと受信方向の角度の値を紐づけて、方位角初期化テーブルに登録する（同じノードから受け取った場合はテーブルに上書きする）。
（３）ＩＮＩＴ＿ＤＵＲＡＴＩＯＮ秒後に、以下に示すＸ軸方位角決定手順を実施し変数φを確定する。確定した変数φの値を隣接情報管理部５に通知する。
【００４２】
なお、センサーノードがきれいな格子状に配置され、ネットワークトポロジもきれいな格子状になっていて、各ノードの０度方向が必ずいずれかの隣接ノードの受信方向になるようにシステムがセットアップされている場合には、上記の手順を省きφ＝０と設定することも可能である。
【００４３】
・Ｘ軸方位角決定手順
方位角初期化テーブルに登録されている受信各情報がθ１、θ２〜θｎだとする。ノードは、これらの中から一つを選んでそれをＸ軸方位角（変数φ）とする。選択のための擬似コードを以下に示す。なお、ここではθ１、θ２〜θｎの単位はラジアン（０〜２π）であるものとする。
【００４４】
・擬似コード
１：配列ａｒｇｓ［ｎ］の初期化（要素１〜ｎまで）
２：ｆｏｒ（ｉ＝１；ｉ≦ｎ；ｉ＋＋）｛
３：  ａｒｇｓ［ｉ］＝０；
４：  ｆｏｒ（ｊ＝１；ｊ≦ｎ；ｊ＋＋）｛
５：    ｉｆ（ｊ＝＝ｉ）｛ｃｏｎｔｉｎｕｅ；｝／／スキップする。
６：    ａｒｇｓ［ｉ］＝ａｒｇｓ［ｉ］＋ｓｉｎ２（２＊（θｊ−θｉ））；
７：  ｝
８：｝
９：配列ａｒｇｓ［］から最小値を探す（ａｒｇｓ［ｘ］が最小値だとする）。複数候補がある場合は適当に選ぶ。
１０：最小値を取る要素ｘとなるようなθｘをＸ軸方位角（変数φ）とする。
【００４５】
なお、６行目では、（θｊ−θｉ）の値がπ／４＋ｍπ／２（つまり４５＋９０＊ｍ度）に近いものほどａｒｇｓの値が大きくなるようにしている（ｍは整数）。
【００４６】
次に、本発明のノードの処理について説明する。本発明では、時間の概念をステップに離散化して考え、適当なステップごとに何らかの処理を行う。つまり、各ノードは実時間のある単位時間（例えば１０ｍｓ）などを１ステップとして時間を進めていくものとする。本明細書では「ステップ」と「時刻」を同等の意味で用いる。また、１ステップの時間間隔をＩｃとする。なお、ノード間で時刻同期している必要はない。
【００４７】
ある時刻ｔ＝Ｔを基点としてノードの処理の流れを以下に示す。なお、下記の手順（０）は時刻に関係なく行う処理である。
（０）隣接情報管理部５は、隣接ノードが広告したポテンシャル変数の値を受信し、記録していく。ここで、隣接ノードのノードＩＤとそのノードまでの距離と受信方向およびポテンシャル変数の値を紐付けて管理（記録）する。なお、検出した受信方向をθとした場合、記録するのはＸ軸方位角を引いた値（つまりθ−φ）とする。
【００４８】
また、初期化制御部４は、周波数変数ｑの値の変化を監視する。変数ｑの値が変化したとき、初期化制御部４は変数ｕｘ、ｕｙに乱数を、また変数ｖｘ、ｖｙに０をセットする。
【００４９】
（１）［時刻ｔ＝Ｔ］ポテンシャル計算部６は、隣接情報管理部５にあるすべてのノードに関する変数ｖｘ、ｖｙの値および削除マークのついた変数ｕｘ、ｕｙの値を取得する。さらに、変数管理部３から自ノードの変数ｕｘ、ｕｙ、ｖｘ、ｖｙの値と変数ｑの値を取得する。それらの情報を用いて、自ノードの変数ｕｘ、ｕｙの値を更新する（更新の詳細は後述する）。更新したｕｘ、ｕｙの値を変数管理部３に渡す。また、更新前の情報を直前情報としてａｃｔｉｖｅ判定部８に渡す。
（２）［時刻ｔ＝Ｔ］隣接情報管理部５は、管理しているすべてのノードに関する変数ｖｘ、ｖｙの情報だけ削除する。また、削除マークのついた変数ｕｘ、ｕｙの情報を削除する。
（３）［時刻ｔ＝Ｔ］情報広告部７は、時刻ｔ＝Ｔ＋Ｉａ（Ｉａは広告間隔）のとき、自身の変数ｕｘ、ｕｙの値を変数管理部３から取得し周囲へ広告（ｂｒｏａｄｃａｓｔ）する。なお、Ｉａ＝Ｎａ＊２Ｉｃとし、変数ｕｘ、ｕｙの計算Ｎａ回ごとに１回広告を行う。
（４）［時刻ｔ＝Ｔ＋Ｉｓ］ａｃｔｉｖｅ判定部８は、変数管理部３から自ノードの変数ｕｘ、ｕｙの値を、隣接情報管理部５からすべてのノードに関する変数ｕｘ、ｕｙの値を取得し、それを用いてａｃｔｉｖｅになるかどうかを判定する（判定の詳細は後述する）。なお、Ｉｓ＝Ｎｓ＊２Ｉｃとし、変数ｕｘ、ｕｙの計算Ｎｓ回ごとに１回判定を行う。
（５）時刻がＩｃ（つまり１ステップ分）進む。
（６）［時刻ｔ＝Ｔ＋Ｉｃ］ポテンシャル計算部６は、隣接情報管理部５にあるすべてのノードに関する変数ｕｘ、ｕｙの値を取得する。さらに、変数管理部３から自ノードの変数ｕｘ、ｕｙを取得する。これらの値から、自ノードの変数ｖｘ、ｖｙの値を更新する（更新の詳細は後述する）。更新した変数ｖｘ、ｖｙの値は変数管理部３に渡す。
（７）［時刻ｔ＝Ｔ＋Ｉｃ］隣接情報管理部５は、管理しているすべてのノードに関する変数ｕｘ、ｕｙに削除マークをつける。
（８）［時刻ｔ＝Ｔ＋Ｉｃ］情報広告部７は、時刻ｔ＝Ｔ＋Ｉｃ＋Ｉａ（Ｉａは広告間隔）のとき、自身の変数ｖｘ、ｖｙの値を変数管理部３から取得し周囲へ広告（ｂｒｏａｄｃａｓｔ）する。なお、変数ｖｘ、ｖｙの広告は、手順（３）で変数ｕｘ、ｕｙの広告を行った直後のステップのみとする（つまり、必ず変数ｕｘ、ｕｙと変数ｖｘ、ｖｙの広告が連続するステップで起こる）。
（９）時刻がＩｃ（つまり１ステップ分）進む。
（１０）（１）へ戻り処理を繰り返す。
【００５０】
図４にＮａ＝１、Ｎｓ＝２の場合における、上記（１）〜（１０）の処理タイミングを示す。
【００５１】
次に、ポテンシャル変数の計算方法を示す。上述のように、各ノードが持つ変数ｕｘ，ｕｙおよびｖｘ，ｖｙは時々刻々変化する。本発明では、これらの変数の値を以下に示す式２〜式５の差分方程式によって算出する。
【数４】
0005682919.tif 000007
【００５２】
式２、式４は、時刻ｔ＋２Ｉｃにおいて実施される計算、式３、式５は時刻ｔ＋Ｉｃにおいて実施される計算を示している。なお、式２〜式５は、ある時刻ｔにおいて、変数ｕｘ，ｕｙが計算されていたということを前提としている。ｕｘｉｔ、ｕｙｉｔ、ｖｘｉｔ、ｖｙｉｔ、ｑｉｔはそれぞれ、ノードｉの時刻ｔにおける変数ｕｘ，ｕｙ，ｖｘ，ｖｙ，ｑの値を表す。ｕｘｎｔは時刻ｔ−Ｉｃ〜時刻ｔ＋Ｉｃの間にノードｉが隣接ノードから受信した変数ｕｘの値である（ｕｙｎｔも同様）。ｖｘｉｔ＋Ｉｃはノードｉが時刻ｔ＋Ｉｃで算出した自ノードの変数ｖｘの値である（ｖｙｉｔ＋Ｉｃも同様）。ｖｘｎｔは時刻ｔ〜時刻ｔ＋２Ｉｃの間にノードｉが隣接ノードから受信した変数ｖｘの値である（ｖｙｎｔも同様）。Ａ，Ｂは正の定数で、ΔＴは時間を離散化するための小さな値（ΔＴ＝Ｉｃとしてもよい）、ｄは基準距離であり、これらはすべてのノードに共通である（ΔＴおよびΔｄは、偏微分方程式を数値計算するために一般的に行われる離散化に必要な固定の値である）。Δｄｉ，ｎはノードｉからノードｎまでの距離（距離検出部２で取得した距離）を表す。Ａ、Ｂ、Δｄ、ΔＴの値のバランスによって、変数ｕの値のネットワーク内での空間分布（つまりポテンシャルの空間分布）が定常状態になるまでの時間が変わる。θｉ，ｎはノードｉがノードｎからパケットを受信したときの受信方向（単位はラジアンとする）である。
【００５３】
上述の式２〜式５は、２次元ユークリッド空間における以下の連立偏微分方程式（式６）を、時間１階・空間２階の偏微分方程式と、空間２階の微分方程式の連立微分方程式に分割し、それらを時間および空間について離散化した式である。
【数５】
0005682919.tif 000008
【００５４】
なお、ｕｘ（ｘ、ｙ、ｔ）はｕｘｉｔ、ｕｙ（ｘ、ｙ、ｔ）はｕｙｉｔ、ｑはｑｉｔにそれぞれ対応しており、定数Ａ，Ｂは式２〜式５のものと同じである。
【００５５】
次に、手順（４）にて行うａｃｔｉｖｅ判定の処理について述べる。まず、ａｃｔｉｖｅ判定部８は、直前の自ノードの変数ｕｘと変数ｕｙの和の値を記憶しておくものとする。つまり、（１）で時刻Ｔ＋２Ｉｃにおいてｕｘｉｔ＋２Ｉｃおよびｕｙｉｔ＋２Ｉｃを算出したときに、時刻Ｔにおけるｕｘｉｔ＋ｕｙｉｔを直前情報（これを変数ｕ、つまりｕｉｔ＝ｕｘｉｔ＋ｕｙｉｔとする）としてポテンシャル計算部６から取得する。
【００５６】
ａｃｔｉｖｅ判定部８は判定に先立ち、変数ｕｉｔの時間変化率ｇをチェックする。時間変化率ｇは以下に示す式７で求まる。
【数６】
0005682919.tif 000009
得られた時間変化率ｇの絶対値が閾値（Ｇｔｈｒｅｓｈとする）以下である場合にのみ以下の判定を行う。
【００５７】
ａｃｔｉｖｅ判定部８は、変数管理部３から自ノードの変数ｕｘ，ｕｙの値を、隣接情報管理部５からすべてのノードに関する変数ｕｘ，ｕｙの値を取得する。以下では、変数ｕ＝ｕｘ＋ｕｙとする。自ノードの変数ｕの値と、他のノードの変数ｕの値の値との比較を行い、すべての変数ｕの中で自ノードの変数ｕの値が最大であった場合、そのノードはａｃｔｉｖｅになる。最大ではなかった場合は非ａｃｔｉｖｅとなる。ａｃｔｉｖｅ、非ａｃｔｉｖｅの判定情報は、他のアプリケーションプロセスへ通知される（または他のアプリケーションプロセスから読み出される）。そのアプリケーションプロセスはａｃｔｉｖｅ、非ａｃｔｉｖｅの判定に応じて動作を決定する。
【００５８】
時間変化率ｇがＧｔｈｒｅｓｈよりも大きければ、ａｃｔｉｖｅ判定部８は非ａｃｔｉｖｅと判定する。ａｃｔｉｖｅ判定に時間変化率ｇの絶対値に閾値を設けるのは以下の理由による。本発明の手法は、時々刻々とポテンシャルの空間分布を変化させ、ある程度の時間が経過すると定常状態になり空間分布がほとんど変化しなくなる。ポテンシャルの空間分布が定常状態であるかどうかを判別するために時間変化率ｇの絶対値を閾値として用いる。閾値Ｇｔｈｒｅｓｈは理想的には０であるが、現実的には０になることはなく、ある程度の値（例えばＲＡＮＤ＿ＭＡＸ／（２Ｉｃ）＊０．０００１）にしておく必要がある。これが低すぎるとなかなかどのノードもａｃｔｉｖｅにならず、大きすぎると多数のノードで無駄に多くのノードがａｃｔｉｖｅになる可能性がある。
【００５９】
次に、ａｃｔｉｖｅノードへの経路について説明する。本発明では、ａｃｔｉｖｅノードを頂上とする変数ｕ（つまりｕｘ＋ｕｙ）の山状の空間的な分布が生成される（図１）。従ってその周囲のノードは、変数ｕの山の傾きに沿って山を登る方向に移動すれば山の頂上、すなわちａｃｔｉｖｅノードに到達することができる。
【００６０】
従って、もしあるノードが一番近いａｃｔｉｖｅノードにアクセスしたいとき（パケットを送りたいとき）には、そのノードは隣接ノード群の中から変数ｕの値が最大であるようなノードを選び、そのノードにパケットを送付すればよい（送り先が次ホップである）。パケットを受信したノードは同様に次ホップを選んで送付していけば、ａｃｔｉｖｅノードにパケットが到達する。なお、万一複数の隣接ノードの変数ｕの値が最大値となる同一の値を持っていた場合、それらのいずれを次ホップとしても良い。
【００６１】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。従って本発明の範囲は特許請求の範囲およびその均等範囲によってのみ規定されるものである。
【符号の説明】
【００６２】
１  受信方向検出部
２  距離検出部
３  変数管理部
４  初期化制御部
５  隣接情報管理部
６  ポテンシャル計算部
７  情報広告部
８  ａｃｔｉｖｅ判定部
９  パケット受信部
【図１】
0005682919.tif 000014
【図２】
0005682919.tif 000015
【図３】
0005682919.tif 000016
【図４】
0005682919.tif 000017