(57)【要約】【課題】クラスタ全体の計算リソースを有効活用することが可能なクラスタリング方法、センサノード及びクラスタシステムが提供すること。【解決手段】センサノード２が被検出量を検出する検出ステップと、センサノード２によって被検出量が検出されると、センサノード２は、電源１０１の残存電源量に応じて短くなるように設定された時間が経過するまで待機した後に、センサノード２のＩＤデータ、残存電源量データ及び被検出量の検出データを含むＣＨ宣言・終端通知データＤ２００を作成し、ＣＨ宣言・終端通知データＤ２００を他のセンサノード２に送信するステップとを有する。【選択図】図４
2007043677.tif 000002
【特許請求の範囲】
【請求項１】
複数のセンサノード間においてクラスタを形成するためのクラスタリング方法であって、
前記複数のセンサノードのうち第１のセンサノードが被検出量を検出する検出ステップと、
前記第１のセンサノードによって前記被検出量が検出されると、該第１のセンサノードは、少なくとも該第１のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後に、当該第１のセンサノードのＩＤデータ、前記計算リソース及び前記被検出量の検出データを含むクラスタヘッド宣言データを作成し、この作成したクラスタヘッド宣言データを他のセンサノードに送信するクラスタヘッド宣言送信ステップと、
前記複数のセンサノードのうち第２のセンサノードは、前記クラスタヘッド宣言データを受信すると、該クラスタヘッド宣言データに含まれる前記検出データと、当該第２のセンサノードにより検出された検出データとを比較し、当該二つの検出データ間の相関の程度を判定する判定ステップと、
前記判定ステップの後、前記第２のセンサノードは、前記判定ステップにより前記二つの検出データ間には相関があると判定された場合には、前記クラスタヘッド宣言データを他のセンサノードに送信するクラスタヘッド宣言転送ステップと、
前記第２のセンサノードは、前記判定ステップにより前記二つの検出データ間には相関があると判定された場合には、当該第２のセンサノードをクラスタに追加する旨のクラスタ追加データを、前記クラスタヘッド宣言データが経由したセンサノード数を表すホップ数を含めて作成し、このクラスタ追加データを他のセンサノードに送信するクラスタ追加ステップと、
前記第１のセンサノードは、前記クラスタ追加データを受信すると、この受信したクラスタ追加データに基づいてクラスタを形成するクラスタ形成ステップと
を有する、ことを特徴とするクラスタリング方法。
【請求項２】
前記クラスタヘッド宣言転送ステップでは、前記第２のセンサノードが複数の異なった前記クラスタヘッド宣言データを受信した場合、前記第２のセンサノードは、前記受信した複数のクラスタヘッド宣言データに含まれる各計算リソースを比較し、計算リソースが多い方のクラスタヘッド宣言データを転送し、
クラスタ追加ステップでは、前記第２のセンサノードは、前記クラスタ追加データを送信するまでの時間を前記ホップ数に応じて短くなるように設定し、該クラスタ追加データを送信するまでの間に受信した他のセンサノードからの前記クラスタ追加データの内容に基づいて該クラスタ追加データを更新する
ことを特徴とする請求項１に記載のクラスタリング方法。
【請求項３】
前記クラスタヘッド宣言送信ステップでは、
前記第１のセンサノードは、前記第１のセンサノードによって前記被検出量が検出されると、以前のクラスタヘッドの計算リソースをさらに含む計算リソースに基づいて、待機すべき時間を設定する、
ことを特徴とする請求項１又は２に記載のクラスタリング方法。
【請求項４】
前記計算リソースは、残存電源量、ＣＰＵ処理能力、又は、使用可能メモリサイズである、
ことを特徴とする請求項１〜３の何れか１項に記載のクラスタリング方法。
【請求項５】
被検出量を検出するセンサノードであって、
被検出量を検出する検出手段と、
自己のセンサノードの計算リソースを管理する計算リソース管理手段と、
他のセンサノードとの間でデータの送受信を行う通信手段と、
前記通信手段により受信された他のセンサノードからの検出データと、前記検出手段により検出された検出データとを比較し、当該二つの検出データの相関の程度を判定するセンサ手段と、
前記検出手段により前記被検出量が検出されると、少なくとも自己のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後に、当該センサノードのＩＤデータ、前記計算リソース及び前記被検出量の検出データを含むクラスタヘッド宣言データを作成し、この作成したクラスタヘッド宣言データを、前記通信手段を介して他のセンサノードに送信する第１制御手段と、
前記クラスタヘッド宣言データを前記通信手段を介して受信した場合、当該クラスタヘッド宣言データに含まれる前記検出データと、前記検出手段により検出された検出データとの相関の程度を前記センサ手段に判定させ、当該判定により前記二つの検出データ間には相関があると判定された場合には、当該センサノードをクラスタに追加する旨のクラスタ追加データを、前記クラスタヘッド宣言データが経由したセンサノード数を表すホップ数を含めて作成し、このクラスタ追加データと前記クラスタヘッド宣言データとを前記通信手段を介して他のセンサノードに送信する第２制御手段と
を備える、ことを特徴とするセンサノード。
【請求項６】
前記第１制御手段は、
複数の異なった前記クラスタヘッド宣言データを、前記通信手段を介して受信した場合、各クラスタヘッド宣言データに含まれる前記計算リソースを比較し、計算リソースが多い方のクラスタヘッド宣言データを、前記通信手段を介して他のセンサノードに送信し、
前記第２制御手段は、
前記クラスタ追加データを送信するまでの時間を前記ホップ数に応じて短くなるように設定し、該クラスタ追加データを送信するまでの間に受信した他のセンサノードからの前記クラスタ追加データの内容に基づいて該クラスタ追加データを更新する、ことを特徴とする請求項５に記載のセンサノード。
【請求項７】
請求項５又は６に記載のセンサノードを複数備える、ことを特徴とするクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタリング方法、センサノード及びクラスタシステムに関する。
【背景技術】
【０００２】
下記特許文献１に記載されているように、複数のセンサノードから成り各センサノード間でデータの送受信が行えるネットワークシステムが種々開発されている。このようなセンサノードは、例えば、振動、赤外線、磁気又は音等の被検出量を検出し、相互にデータの送受信が行える機器である。
【特許文献１】特開２００４−３３６７７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載されたネットワークシステムでは、クラスタを構成するセンサノードが被検出量を検出した場合、各センサノードはほぼ同じ処理を行う。このため、各センサノードの電力消費量はほぼ同様となる。従って、クラスタ全体の低寿命化が招来されることとなる。
【０００４】
また、各センサノードの電力消費量のみでなく、ＣＰＵ処理能力や使用可能メモリサイズといった他の計算リソースも考慮した上で、クラスタ全体での計算リソースの無駄な消費を少なくし、計算リソースを有効活用することが待望されていた。
【０００５】
そこで、本発明の目的は、クラスタ全体の計算リソースを有効活用することが可能なクラスタリング方法、センサノード及びクラスタシステムを提供することである。
【課題を解決するための手段】
【０００６】
本発明に係るクラスタリング方法は、複数のセンサノード間においてクラスタを形成するためのクラスタリング方法であって、複数のセンサノードのうち第１のセンサノードが被検出量を検出する検出ステップと、第１のセンサノードによって被検出量が検出されると、該第１のセンサノードは、少なくとも該第１のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後に、当該第１のセンサノードのＩＤデータ、計算リソース及び被検出量の検出データを含むクラスタヘッド宣言データを作成し、この作成したクラスタヘッド宣言データを他のセンサノードに送信するクラスタヘッド宣言送信ステップと、複数のセンサノードのうち第２のセンサノードは、クラスタヘッド宣言データを受信すると、該クラスタヘッド宣言データに含まれる検出データと、当該第２のセンサノードにより検出された検出データとを比較し、当該二つの検出データ間の相関の程度を判定する判定ステップと、判定ステップの後、第２のセンサノードは、判定ステップにより二つの検出データ間には相関があると判定された場合には、クラスタヘッド宣言データを他のセンサノードに送信するクラスタヘッド宣言転送ステップと、第２のセンサノードは、判定ステップにより二つの検出データ間には相関があると判定された場合には、当該第２のセンサノードをクラスタに追加する旨のクラスタ追加データを、クラスタヘッド宣言データが経由したセンサノード数を表すホップ数を含めて作成し、このクラスタ追加データを他のセンサノードに送信するクラスタ追加ステップと、第１のセンサノードは、クラスタ追加データを受信すると、この受信したクラスタ追加データに基づいてクラスタを形成するクラスタ形成ステップとを有する、ことを特徴とする。
【０００７】
本発明に係るクラスタリング方法によれば、第１のセンサノードによって被検出量が検出されると、少なくとも該第１のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後にクラスタヘッド宣言データを作成する。従って、計算リソースが多いセンサノードは、クラスタヘッドとして機能する。このため、クラスタ内のセンサノードの計算リソースの偏りが生じにくくなり、クラスタ全体の寿命が長くなる。更に、互いに相関を有する検出量を検出したセンサノード同士でクラスタが構成される。このため、クラスタを構成する各センサノードにより検出された各検出データは互いに相関を有することとなり、相関のある検出データが収集可能となる。よって、クラスタ内におけるデータのトラフィック量が抑制されるため、例えばセンサノードの消費電力が低減するなど、クラスタ全体の計算リソースを有効活用することが可能となる。
【０００８】
本発明に係るクラスタリング方法では、上記クラスタヘッド宣言転送ステップでは、上記第２のセンサノードが複数の異なった上記クラスタヘッド宣言データを受信した場合、上記第２のセンサノードは、上記受信した複数のクラスタヘッド宣言データに含まれる各計算リソースを比較し、計算リソースが多い方のクラスタヘッド宣言データを転送し、クラスタ追加ステップでは、上記第２のセンサノードは、上記クラスタ追加データを送信するまでの時間を上記ホップ数に応じて短くなるように設定し、このクラスタ追加データを送信するまでの間に受信した他のセンサノードからの上記クラスタ追加データの内容に基づいてこのクラスタ追加データを更新することが望ましい。
【０００９】
本発明に係るクラスタリング方法によれば、一台のセンサノードが、複数のクラスタヘッド宣言データを受信する場合、各クラスタヘッド宣言データに含まれる計算リソースが最も多いクラスタヘッド宣言データを転送する。このため、複数のクラスタヘッド宣言データが複数のセンサノードから送信されても、クラスタ内では一のクラスタヘッドのみが設定可能となる。
【００１０】
また、本発明に係るクラスタリング方法において、クラスタヘッド宣言送信ステップでは、第１のセンサノードは、該第１のセンサノードによって被検出量が検出されると、以前のクラスタヘッドの計算リソースをさらに含む計算リソースに基づいて、待機すべき時間を設定することが望ましい。この場合、第１のセンサノードは、該第１のセンサノードの計算リソースに加え、以前のクラスタヘッドの計算リソースをさらに含む計算リソースに基づいて、待機すべき時間を設定するため、以前のクラスタヘッドの計算リソースと該第１のセンサノードの計算リソースとの相対的な関係（例えば両者の差異）に応じた待機時間を設定可能となり、第１のセンサノードの計算リソースのみを基礎として待機時間を設定する場合に比べ、待機時間が異常に長くなるといった不都合を是正し、より適正な待機時間を設定可能となる。
【００１１】
なお、上記の計算リソースとしては、残存電源量、当該時点で使用可能なＣＰＵ処理能力、又は、当該時点で使用可能なメモリサイズ（使用可能メモリサイズ）を適用することができる。
【００１２】
本発明に係るセンサノードは、被検出量を検出するセンサノードであって、電源と、被検出量を検出する検出手段と、自己のセンサノードの計算リソースを管理する計算リソース管理手段と、他のセンサノードとの間でデータの送受信を行う通信手段と、上記通信手段により受信された他のセンサノードからの検出データと、上記検出手段により検出された検出データとを比較し、この二つの検出データの相関の程度を判定するセンサ手段と、上記検出手段により上記被検出量が検出されると、少なくとも自己のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後に、このセンサノードのＩＤデータ、計算リソース及び上記被検出量の検出データを含むクラスタヘッド宣言データを作成し、この作成したクラスタヘッド宣言データを、上記通信手段を介して他のセンサノードに送信する第１制御手段と、上記クラスタヘッド宣言データを上記通信手段を介して受信した場合、このクラスタヘッド宣言データに含まれる上記検出データと、上記検出手段により検出された検出データとの相関の程度を上記センサ手段に判定させ、この判定により上記二つの検出データ間には相関があると判定された場合には、このセンサノードをクラスタに追加する旨のクラスタ追加データを、上記クラスタヘッド宣言データが経由したセンサノード数を表すホップ数を含めて作成し、このクラスタ追加データと上記クラスタヘッド宣言データとを上記通信手段を介して他のセンサノードに送信する第２制御手段とを備える、ことを特徴とする。
【００１３】
本発明に係るセンサノードによれば、第１制御手段は、上記検出手段により上記被検出量が検出されると、少なくとも自己のセンサノードを含むセンサノードの計算リソースに基づいて設定された時間が経過するまで待機した後にクラスタヘッド宣言データを作成する。従って、計算リソースが多いセンサノードは、クラスタヘッドとして機能することとなる。このため、クラスタ内のセンサノードの計算リソースに偏りが生じにくくなり、クラスタ全体の寿命が長くなる。更に、第２制御手段は、相関を有する検出データのクラスタヘッド宣言データを受信した場合、このクラスタヘッド宣言データを転送すると共に、このクラスタヘッド宣言データに係るクラスタに加わる旨のクラスタ追加データを作成する。これにより、互いに相関を有する検出量を検出したセンサノード同士でクラスタが構成可能となる。このように、クラスタを構成する各センサノードにより検出された各検出データは互いに相関を有することとなり、相関のある検出データが収集可能となる。よって、クラスタ内におけるデータのトラフィック量が抑制されるため、例えばセンサノードの消費電力が低減するなど、クラスタ全体の計算リソースを有効活用することが可能となる。
【００１４】
本発明に係るセンサノードでは、上記第１制御手段は、複数の異なった上記クラスタヘッド宣言データを、上記通信手段を介して受信した場合、各クラスタヘッド宣言データに含まれる上記計算リソースを比較し、計算リソースが多い方のクラスタヘッド宣言データを、上記通信手段を介して他のセンサノードに送信し、上記第２制御手段は、上記クラスタ追加データを送信するまでの時間を上記ホップ数に応じて短くなるように設定し、このクラスタ追加データを送信するまでの間に受信した他のセンサノードからの上記クラスタ追加データの内容に基づいてこのクラスタ追加データを更新することが望ましい。
【００１５】
本発明に係るセンサノードによれば、第１制御手段は、複数のクラスタヘッド宣言データを受信した場合、各クラスタヘッド宣言データに含まれる計算リソースが最も多いクラスタヘッド宣言データを転送する。従って、複数のクラスタヘッド宣言データが複数のセンサノードから送信されても、クラスタ内では一のクラスタヘッドのみが設定可能となる。
【００１６】
本発明に係るクラスタシステムは、上記のセンサノードを複数備える。本発明に係るクラスタシステムによれば、上記のセンサノードから構成されているため、計算リソースが多いセンサノードがクラスタヘッドとして機能する。このため、クラスタ内のセンサノードの計算リソースに偏りが生じにくくなり、クラスタ全体の寿命が長くなる。更に、互いに相関を有する検出量を検出したセンサノード同士でクラスタが構成される。このように、クラスタを構成する各センサノードにより検出された各検出データは互いに相関を有することとなり、相関のある検出データが収集可能となる。よって、クラスタ内におけるデータのトラフィック量が抑制されるため、例えばセンサノードの消費電力が低減するなど、クラスタ全体の計算リソースを有効活用することが可能となる。
【発明の効果】
【００１７】
本発明によれば、クラスタ全体の計算リソースを有効活用することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、本発明に係る好適な各種の実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００１９】
［第１実施形態］
図１を参照して、第１実施形態に係るクラスタシステム１の構成を説明する。クラスタシステム１は、無線によるデータの送受信が可能な互いに離隔した複数のセンサノード２を含んで構成される。クラスタシステム１では振動の発生に応じてクラスタが形成される。このクラスタは、振動が領域Ａ内で生じた場合、複数のセンサノード２のうち、この振動を検出した一又は複数のセンサノード２のみで構成される。センサノード２は、ＣＰＵ、ＲＯＭ及びＲＡＭ（図示略）を有しており、振動検出を行う通信端末である。ＲＯＭ又はＲＡＭに格納されたプログラムがＣＰＵに処理されることによってセンサノード２が統括的に制御される。
【００２０】
図２を参照して、センサノード２の構成を説明する。センサノード２は、電源１０１、クラスタ管理部１０２（第１制御手段及び第２制御手段）、時間管理部１０３、電源管理部１０４（電源管理手段）、センサ部１０５（センサ手段）、通信部１０６（通信手段）、クロック１０７、センサ１０８（検出手段）及びメモリ１０９を備える。
【００２１】
電源１０１は、充電可能な電源であり、センサノード２を駆動させるための電力を供給する。時間管理部１０３は、クロック１０７により生成される計時用のクロック信号に基づく時間管理を行う。時間管理部１０３は、クラスタ管理部１０２に対する起床イベントの出力タイミングをクラスタ管理部１０２からの要求に応じて設定する。時間管理部１０３は、起床イベントの出力タイミングの設定に応じて起床イベントをクラスタ管理部１０２に出力する。時間管理部１０３は、現在時刻を示すデータの取得要求がクラスタ管理部１０２からなされると、クロック１０７により生成されるクロック信号に基づいて現在時刻を算出し、この現在時刻を示すデータをクラスタ管理部１０２に出力する。上記の起床イベントとは、クラスタ管理部１０２に対し待機状態の解除を指示する信号である。待機状態とは、クラスタ管理部１０２が、起床イベントの入力があるまで処理を行わずに待機している状態をいう。クラスタ管理部１０２は、起床イベントが入力されると、待機状態を解除して、待機状態中に行われなかった処理を実行する。
【００２２】
電源管理部１０４は、電源１０１の残存電源量を示す電源データを管理する。電源管理部１０４は、電源データの取得要求がクラスタ管理部１０２からなされると、この電源データをクラスタ管理部１０２に出力する。
【００２３】
センサ部１０５は、センサ１０８により検出される加速度を示す加速度データを管理する。センサ部１０５は、センサ１０８により検出される加速度を示す加速度データを一定周期毎に取得し、この加速度データをメモリ１０９に格納する。センサ部１０５は、センサ１０８からの加速度データが示す加速度（例えば、所定時間間隔内における加速度の積分値）が所定の閾値Ｇを超えたか否か、すなわち振動が生じたか否かを判定し（加速度が閾値Ｇを超えた場合を「振動」と称する）、閾値Ｇを超えた場合には、この閾値Ｇを超えた加速度を表す加速度データ（以下、振動データという）をクラスタ管理部１０２に出力する。
【００２４】
センサ部１０５は、通信部１０６により受信された他のセンサノード２からの検出データと、センサ１０８により検出された検出データとを比較し、これら二つの検出データの相関の程度を判定する。本実施形態では、図３に示すＣＨ宣言・終端通知データＤ２００（クラスタヘッド宣言データ）に含まれる振動データＤ２０６と、この振動データに係る振動が生じた時刻を示す時刻データＤ２０５とがクラスタ管理部１０２から入力されると、この入力された振動データＤ２０６及び時刻データＤ２０５と、メモリ１０９に格納された振動データ及び時刻データとを、例えばパターンマッチング等によって比較する。以下、「ＣＨ」は「クラスタヘッド」を意味し、「ＣＮ」は「クラスタノード」を意味する。
【００２５】
ここで、図３を参照してＣＨ宣言・終端通知データＤ２００のデータ構成について説明する。ＣＨ宣言・終端通知データＤ２００は、送信元ＩＤデータＤ２０１、ＭｓｇＴｙｐｅデータＤ２０２、Ｈｏｐ数（ホップ数）データＤ２０３、ＣＨ候補ＩＤデータＤ２０４、時刻データＤ２０５、ＣＨ候補残存電源量データＤ２０７及び拡張データＤ２０８等のデータによって構成される。
【００２６】
送信元ＩＤデータＤ２０１には、ＣＨ宣言・終端通知データＤ２００を送信するセンサノード２のＩＤデータが記録される。ＭｓｇＴｙｐｅデータＤ２０２には、ＣＨ宣言・終端通知データＤ２００が、ＣＨ宣言データとして用いられる場合には「０」が記録され、終端通知データとして用いられる場合には「２」が記録される。Ｈｏｐ数データＤ２０３には、ＣＨ宣言・終端通知データＤ２００が転送された際に経由したセンサノード２の数（Ｈｏｐ数）が記録される。ＣＨ候補ＩＤデータＤ２０４には、ＣＨ宣言・終端通知データＤ２００を最初に作成したセンサノード２のＩＤデータが記録される。このセンサノード２は、クラスタヘッド（ＣＨ）の候補である。時刻データＤ２０５には、振動が検出された時刻が記録される。振動データＤ２０６には、検出された振動データが記録される。ＣＨ候補残存電源量データＤ２０７には、ＣＨ候補の残存電源量を示す電源データが記録される。
【００２７】
更に、上記のパターンマッチングについて説明する。例えば、ある閾値を一時的に超える振動を検出した際、その時間と方向とが同じかどうかを比較する、というパターンマッチングが考えられる。例えば、机を叩き、机の上にあるセンサノード２がクラスタを形成する場合を考える。机を叩く前は振動がないため、検出された振動の大きさは閾値を超えていない。机を叩くと振動の大きさは閾値を超え、振動が検出される。その際、振動方向と振動の検出タイミングとが同じならば、同じ振動を検出したものとみなす。
【００２８】
また、ある閾値を一定時間継続して超える振動（この場合、移動）を検出した際、この閾値を超えた時間が同じかどうかを比較する、というパターンマッチングが考えられる。例えば、止まっていた人が移動し、その人が所有している物がクラスタを形成する場合を考える。人が止まっている場合は振動を検出できないため、検出された振動の大きさは閾値を超えていない。人が移動すると、振動の大きさは閾値を超え、移動が検出される。その際、移動の検出タイミングが同じなら、同じ移動を検出したものとみなす。
【００２９】
図２に戻って説明する。センサ部１０５は、パターンマッチングの結果、クラスタ管理部１０２から入力された振動データＤ２０６及び時刻データＤ２０５と相関がある振動データがメモリ１０９に格納されているか否か（すなわち、入力された振動データＤ２０６及び時刻データＤ２０５に係る振動が検出されたか否か）を判定し、この判定結果を示すデータをクラスタ管理部１０２に出力する。
【００３０】
通信部１０６は、無線通信により他のセンサノード２との間で各種データの送受信を行う。通信部１０６は、他のセンサノード２から送信されるＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００（クラスタ追加データ）を受信する。通信部１０６は、受信したＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００をクラスタ管理部１０２に出力する。通信部１０６は、クラスタ管理部１０２から入力されたＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００を他のセンサノード２に送信する。
【００３１】
ここで、図３を参照してＣＮ追加データ３００のデータ構成について説明する。送信元ＩＤデータＤ３０１には、ＣＮ追加データ３００を送信するセンサノード２のＩＤデータが記録される。ＭｓｇＴｙｐｅデータＤ３０２には、ＣＮ追加データ３００が、ＣＮ追加を通知するものであることを示す「１」が記録される。ＣＨ候補ＩＤデータＤ３０３には、ＣＨ宣言・終端通知データＤ２００のＣＨ候補ＩＤデータＤ２０４と同様のデータが記録される。Ｈｏｐ数データＤ３０４には、ＣＮ追加データ３００が転送された際に経由したセンサノード２の数が記録される。ＣＮ追加情報データＤ３０５には、クラスタに含まれるセンサノード２のＩＤデータが、転送の度に追記される。すなわち、ＣＮ追加情報データＤ３０５には、ＣＮ追加データ３００が通信部１０６により受信されるまでの過程において、このＣＮ追加データ３００が経由してきたセンサノード２のうち、クラスタに含まれるセンサノード２のＩＤデータが記録されている。
【００３２】
図２に戻って説明する。クラスタ管理部１０２は、図４及び図５の各シーケンスに示す処理を実行する。すなわち、クラスタ管理部１０２は、センサ部１０５から振動データが入力されると、メモリ１０９に格納されているＨｏｐ数データを「０」に設定する。クラスタ管理部１０２は、現在時刻を示すデータの取得要求を時間管理部１０３に行う。クラスタ管理部１０２は、電源１０１の残存電源量を示す電源データの取得要求を電源管理部１０４に行う。クラスタ管理部１０２は、起床イベントの入力タイミングを算出し、この入力タイミングに基づく起床イベント出力指示を時間管理部１０３に要求した後に待機状態に移行する。クラスタ管理部１０２は、待機状態の際に時間管理部１０３から起床イベントが入力されると、待機状態を解除する。
【００３３】
クラスタ管理部１０２は、他のセンサノード２から受信したＣＨ宣言・終端通知データＤ２００に含まれる時刻データＤ２０５及び振動データＤ２０６を取得すると、この振動データＤ２０６及び時刻データＤ２０５をセンサ部１０５に出力し、この振動データＤ２０６及び時刻データＤ２０５と相関がある振動データが、メモリ１０９に格納されているか否かをセンサ部１０５に判定させる。クラスタ管理部１０２は、通信部１０６により受信されたＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００の各データ内容を解析し、この解析結果に応じてＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００のデータ内容を更新する。そして、クラスタ管理部１０２は、更新後の（或いは新規に作成された）ＣＨ宣言・終端通知データＤ２００及びＣＮ追加データＤ３００を通信部１０６に出力する。
【００３４】
次に、図４及び図５を参照して、クラスタシステム１の動作を説明する。まず、図４に示すシーケンスに基づいて説明する。ここでは、説明簡略化のため、クラスタシステム１は、４台のセンサノード２により構成されているものとする。そして、４台の各センサノード２を、センサノード２ａ（第１のセンサノード）、センサノード２ｂ（第２のセンサノード）、センサノード２ｃ及びセンサノード２ｄとして区別する。また、電源１０１の残存電源量は、センサノード２ａ、センサノード２ｂ、センサノード２ｃ及びセンサノード２ｄの順に多いとする。
【００３５】
ステップＳ１では、閾値Ｇを超えた加速度が、センサノード２ｄを除くセンサノード２ａ〜センサノード２ｃの各センサ部１０５により検出される。ステップＳ２では、センサノード２ａ〜センサノード２ｃの各々において次の処理が行われる。センサ部１０５は、ステップＳ１の段階で検出された振動データをクラスタ管理部１０２に出力する。クラスタ管理部１０２は、この振動データがセンサ部１０５から入力されると、現在時刻（振動が検出された時刻）を示す時刻データを時間管理部１０３から取得すると共に、メモリ１０９内のＨｏｐ数を「０」に設定する。
【００３６】
ステップＳ３では、各センサノード２ａ〜センサノード２ｃにおいて次の処理が行われる。クラスタ管理部１０２は、電源１０１の残存電源量を示す電源データの取得要求を電源管理部１０４に行う。クラスタ管理部１０２は、電源管理部１０４から取得した残存電源量を示す電源データに基づいて、起床イベントの入力タイミングを算出する。そして、クラスタ管理部１０２は、この入力タイミングに基づく起床イベント出力指示を時間管理部１０３に要求した後に待機状態に移行する。なお、クラスタ管理部１０２が算出する起床イベントの入力タイミングは、残存電源量に応じて短くなるような（例えば、残存電源量に反比例する）タイミングであるとする。すなわち、残存電源量が多いほど、起床イベントの入力タイミングは早い（待機状態となっている時間が短い）。従って、起床イベントの入力タイミングは、センサノード２ａ、センサノード２ｂ及びセンサノード２ｃの順に早い（待機状態となっている時間が短い）。
【００３７】
ステップＳ４ａでは、センサノード２ａにおいて次の処理が行われる。クラスタ管理部１０２は、時間管理部１０３から起床イベントが入力されると、待機状態を解除する。そして、クラスタ管理部１０２は、ステップＳ２の段階で、時間管理部１０３から取得した時刻データと、電源管理部１０４から取得した電源データと、センサ部１０５から取得した振動データとに基づいてＣＨ宣言としてのＣＨ宣言・終端通知データＤ２００を作成する。クラスタ管理部１０２は、このＣＨ宣言・終端通知データＤ２００を通信部１０６に出力し、通信部１０６は、このＣＨ宣言・終端通知データＤ２００を外部に送信する。
【００３８】
このＣＨ宣言・終端通知データＤ２００に含まれる送信元ＩＤデータＤ２０１にはセンサノード２ａのＩＤデータが記録され、ＭｓｇＴｙｐｅデータＤ２０２には、ＣＨ宣言である旨を示すデータ「０」が記録される。Ｈｏｐ数データＤ２０３には、「０」が記録され、ＣＨ候補ＩＤデータＤ２０４には、ＣＨ候補であるセンサノード２ａのＩＤデータが記録される。時刻データＤ２０５には、ステップＳ１の段階でセンサ部１０５により振動が検出された時刻を表す時刻データが記録され、振動データＤ２０６には、ステップＳ１の段階でセンサ部１０５により検出された振動データが記録される。ＣＨ候補残存電源量データＤ２０７には、ＣＨ候補であるセンサノード２ａの電源の電源データが記録される。
【００３９】
ステップＳ４ａの後、センサノード２ｂにおいて下記ステップＳ５ｂ〜ステップＳ８ｂの処理が行われる。ステップＳ５ｂでは、通信部１０６は、受信したＣＨ宣言・終端通知データＤ２００をクラスタ管理部１０２に出力する。クラスタ管理部１０２は、ＣＨ宣言・終端通知データＤ２００が入力されると、このＣＨ宣言・終端通知データＤ２００に含まれる時刻データＤ２０５及び振動データＤ２０６をセンサ部１０５に出力する。センサ部１０５は、クラスタ管理部１０２から入力された振動データＤ２０６及び時刻データＤ２０５と、メモリ１０９に格納された振動データ及び時刻データとを、例えばパターンマッチングによって比較する。
【００４０】
そして、センサ部１０５は、このパターンマッチングの結果、クラスタ管理部１０２から入力された振動データＤ２０６及び時刻データＤ２０５にマッチする（すなわち、相関がある）振動データがメモリ１０９に格納されているか否か（すなわち、振動データＤ２０６及び時刻データＤ２０５と相関する振動を検出したか否か）を判定し、この判定結果を示すデータをクラスタ管理部１０２に出力する。なお、パターンマッチングの結果、振動データＤ２０６及び時刻データＤ２０５と相関する振動が検出されていない場合、クラスタ管理部１０２は、後述のステップＳ５ｄに説明する終端通知としてのＣＨ宣言・終端通知データＤ２００を通信部１０６を介して送信する。この判定結果は、受信したＣＨ宣言・終端通知データＤ２００に含まれる振動データＤ２０６及び時刻データＤ２０５に係る振動が既に検出されている旨（実際、ステップＳ１の段階で検出済みとなっている）を示すものとなる。
【００４１】
ステップＳ６ｂでは、このＣＨ宣言・終端通知データＤ２００に含まれるＨｏｐ数データＤ２０３の値を「１」だけインクリメントし、このインクリメント後のＨｏｐ数の値（ステップＳ６ｂでは「１」）をメモリ１０９に格納する。ステップＳ７ｂでは、クラスタ管理部１０２は、ＣＨ宣言・終端通知データＤ２００に含まれる送信元ＩＤデータＤ２０１（ステップＳ７ｂの段階では、センサノード２ａのＩＤデータ）と、ＣＨ候補ＩＤデータＤ２０４（ステップＳ７ｂの段階では、センサノード２ａのＩＤデータ）とを、メモリ１０９に格納する。
【００４２】
そして、クラスタ管理部１０２は、センサノード２ｂのＩＤデータと、メモリ１０９に格納したインクリメント後のＨｏｐ数（「１」を示すデータ）とに基づいて、送信元ＩＤデータＤ２０１と、Ｈｏｐ数データＤ２０３とを更新する。クラスタ管理部１０２は、この更新後のＣＨ宣言・終端通知データＤ２００を通信部１０６に出力し、通信部１０６は、この更新後のＣＨ宣言・終端通知データＤ２００を外部に送信する。
【００４３】
ステップＳ８ｂでは、クラスタ管理部１０２は、受信したＣＨ宣言・終端通知データＤ２００に含まれる時刻データＤ２０５及びＨｏｐ数データＤ２０３と、時間管理部１０３から取得した現在時刻とに基づいて、時間管理部１０３からの起床イベントの入力タイミングを算出する。そして、クラスタ管理部１０２は、この入力タイミングに基づく起床イベント出力指示を時間管理部１０３に要求した後に待機状態に移行する。
【００４４】
更に、センサノード２ｃにおいてステップＳ５ｃ〜ステップＳ８ｃの処理が行われる。ここで、ステップＳ５ｃ〜ステップＳ８ｃの各ステップは、上述のステップＳ５ｂ〜ステップＳ８ｂの各ステップと同様である。なお、ステップＳ６ｃにおいて、Ｈｏｐ数データＤ２０３を「１」だけインクリメントした後のＨｏｐ数の値は「２」であり、ステップＳ７ｃにおいて、クラスタ管理部１０２は、センサノード２ｃのＩＤデータと、Ｈｏｐ数データ（「２」を示す）とに基づいて、送信元ＩＤデータＤ２０１とＨｏｐ数データＤ２０３とを更新する。
【００４５】
更に、センサノード２ｄにおいて下記ステップＳ５ｄ及びステップＳ９の処理が行われる。ステップＳ５ｄでは、ステップＳ５ｂ及びステップＳ５ｃ等と同様に、センサ部１０５が、クラスタ管理部１０２から入力された振動データＤ２０６及び時刻データＤ２０５にマッチする（すなわち、相関がある）振動データがメモリ１０９に格納されているか否か（すなわち、振動データＤ２０６及び時刻データＤ２０５と相関する振動を検出したか否か）をパターンマッチングに基づいて判定し、この判定結果を示すデータをクラスタ管理部１０２に出力する。
【００４６】
この判定結果は、受信したＣＨ宣言・終端通知データＤ２００に含まれる振動データＤ２０６及び時刻データＤ２０５と相関する振動が未検出である旨（実際、ステップＳ１の段階においては検出されていない）を示すものとなる。そこで、クラスタ管理部１０２は、ステップＳ９において、終端通知としてのＣＨ宣言・終端通知データＤ２００を作成し、通信部１０６に出力する。ここで、ＣＨ宣言・終端通知データＤ２００に含まれる送信元ＩＤデータＤ２０１には、センサノード２ｄのＩＤデータが記録され、ＭｓｇＴｙｐｅデータＤ２０２には、終端通知である旨を示す「２」が記録され、Ｈｏｐ数データＤ２０３には、最大Ｈｏｐ数（８ビットの場合には「２５５」）が記録される。通信部１０６は、このＣＨ宣言・終端通知データＤ２００を、センサノード２ｃに送信する。
【００４７】
ステップＳ９の後、センサノード２ｃでは、下記ステップＳ１０ｃの処理が行われる。すなわち、ステップＳ９の段階でセンサノード２ｄから送信されたＣＨ宣言・終端通知データＤ２００を通信部１０６が受信すると、通信部１０６は、この受信したＣＨ宣言・終端通知データＤ２００をクラスタ管理部１０２に出力する。クラスタ管理部１０２は、電源管理部１０４からの起床イベントの入力に伴って待機状態が解除されると、通信部１０６から入力されたＣＨ宣言・終端通知データＤ２００に基づいて、ＣＮ追加データＤ３００を作成する。
【００４８】
このＣＮ追加データＤ３００に含まれる送信元ＩＤデータＤ３０１にはセンサノード２ｃのＩＤデータが記録され、ＭｓｇＴｙｐｅデータＤ３０２には、クラスタへの追加を通知するデータ（ＣＮ追加データ）である旨を示す「１」が記録される。ＣＨ候補ＩＤデータＤ３０３には、センサノード２ａのＩＤデータが記録され、Ｈｏｐ数データＤ３０４には、メモリ１０９に格納されたＨｏｐ数（この場合、「２」）が記録される。ＣＮ追加情報データＤ３０５にはヌルデータが記録される。そして、この作成されたＣＮ追加データＤ３００をセンサノード２ｂに送信する。
【００４９】
ステップＳ１０ｃの後、センサノード２ｂでは、下記ステップＳ１０ｂの処理が行われる。すなわち、ステップＳ１０ｃの段階でセンサノード２ｃから送信されたＣＮ追加データＤ３００を通信部１０６が受信すると、通信部１０６は、この受信されたＣＮ追加データＤ３００をクラスタ管理部１０２に出力する。クラスタ管理部１０２は、電源管理部１０４からの起床イベントの入力に応じて待機状態が解除されると、通信部１０６から入力されたＣＮ追加データＤ３００を更新する。
【００５０】
更新後のＣＮ追加データＤ３００に含まれる送信元ＩＤデータＤ３０１にはセンサノード２ｂのＩＤデータが記録され、ＭｓｇＴｙｐｅデータＤ３０２には、ＣＮ追加データである旨を示す「１」が記録され、ＣＨ候補ＩＤデータＤ３０３には、センサノード２ａのＩＤデータが記録され、Ｈｏｐ数データＤ３０４には、更新前のＨｏｐ数から１だけインクリメントした値「２」が記録され、ＣＮ追加情報データＤ３０５にはセンサノード２ｃのＩＤデータが記録される。そして、通信部１０６は、更新後のＣＮ追加データＤ３００をセンサノード２ａに送信する。
【００５１】
ステップＳ１０ｂの後、センサノード２ａでは、下記ステップＳ１１の処理が行われる。すなわち、ステップＳ１０ｂの段階でセンサノード２ｂから送信されたＣＮ追加データＤ３００が、通信部１０６によって受信される。クラスタ管理部１０２は、この受信されたＣＮ追加データＤ３００に基づいて、センサノード２ｂ及びセンサノード２ｃの各ＩＤデータと各Ｈｏｐ数とをメモリ１０９に格納し、クラスタを構成するセンサノード２ｂ及びセンサノード２ｃを管理する。
【００５２】
一方、センサノード２の数が多い場合、一台のセンサノード２が、複数の異なったＣＨ宣言・終端通知データＤ２００を受信する場合が生じ得る。この際、各ＣＨ宣言・終端通知データＤ２００に含まれるＣＨ候補ＩＤデータＤ２０４には、各々異なるＩＤデータが記録されている。以下、図４を参照して、一台のセンサノード２が複数のＣＨ宣言・終端通知データＤ２００を受信する場合のクラスタシステム１の動作について説明する。ここでは、説明簡略化のため、クラスタシステム１を構成する５台のセンサノード２について説明する。そして、５台の各センサノード２を、センサノード２ａ、センサノード２ｂ、センサノード２ｃ、センサノード２ｄ及びセンサノード２ｅとして区別する。電源１０１の残存電源量は、センサノード２ａ、センサノード２ｂ、センサノード２ｃ及びセンサノード２ｄの順に多いとする。センサノード２ｅにおける残存電源量は場合に応じて異なるものとする。
【００５３】
まず、センサノード２ａ〜センサノード２ｅの各々において上記のステップＳ１〜ステップＳ３の処理が行われる。そしてステップＳ３の後、センサノード２ａにおいて上記のステップＳ４ａの処理が行われ、センサノード２ｂにおいて上記のステップＳ５ｂ〜ステップＳ８ｂの処理が行われ、センサノード２ｃにおいて上記のステップＳ５ｃ〜ステップＳ８ｃの処理が行われる。
【００５４】
また、センサノード２ｄは、ステップＳ３の後、下記ステップＳ４ｄの処理を行う。すなわち、クラスタ管理部１０２は、時間管理部１０３から起床イベントが入力されると、待機状態を解除する。そして、クラスタ管理部１０２は、ステップＳ２の段階で、時間管理部１０３から取得した時刻データと、電源管理部１０４から取得した電源データと、センサ部１０５から取得した振動データとに基づいてＣＨ宣言・終端通知データＤ２００を作成する。クラスタ管理部１０２は、このＣＨ宣言・終端通知データＤ２００を通信部１０６に出力し、通信部１０６は、このＣＨ宣言・終端通知データＤ２００を他のセンサノード２に送信する。
【００５５】
このＣＨ宣言・終端通知データＤ２００に含まれる送信元ＩＤデータＤ２０１にはセンサノード２ｄのＩＤデータが記録され、ＭｓｇＴｙｐｅデータＤ２０２には、ＣＨ宣言である旨を示すデータ「０」が記録され、Ｈｏｐ数データＤ２０３には、「０」が記録され、ＣＨ候補ＩＤデータＤ２０４には、センサノード２ｄのＩＤデータが記録され、時刻データＤ２０５には、ステップＳ１の段階でセンサ部１０５により振動が検出された時刻データが記録され、振動データＤ２０６には、ステップＳ１の段階でセンサ部１０５により検出された振動データが記録され、ＣＨ候補残存電源量データＤ２０７には、センサノード２ｄの電源の残存電源量を示す電源データが記録される。
【００５６】
センサノード２ｅは、センサノード２ｃから通信部１０６を介してＣＨ宣言・終端通知データＤ２００を受信すると共に、センサノード２ｄから通信部１０６を介してＣＨ宣言・終端通知データＤ２００を受信する。その後、センサノード２ｅは、ステップＳ５ｅを行う。このステップＳ５ｅの処理内容は、上記のステップＳ５ｂと同様の処理内容である。
【００５７】
ステップＳ５ｅの後、センサノード２ｅは、下記ステップＳ１２の処理を行う。すなわち、センサノード２ｃ及びセンサノード２ｄから送信された二つのＣＨ宣言・終端通知データＤ２００のうち、何れのＣＨ候補残存電源量データＤ２０７に記録された残存電源量が大きいかの判定を行う。ステップＳ１２で行われた判定の結果、センサノード２ｃの残存電源量の方が大きいと判定された場合、センサノード２ｅにおいてステップＳ６ｅ〜ステップＳ８ｅの処理が行われる。
【００５８】
上記ステップＳ６ｅ〜ステップＳ８ｅの各処理内容は、上記のステップＳ６ｂ〜ステップＳ８ｂの各処理内容と同様である。なお、ステップＳ６ｅにおけるＨｏｐ数は「３」である。また、ステップＳ７ｅにおけるＣＨ宣言・終端通知データＤ２００の更新処理により、送信元ＩＤデータＤ２０１には、センサノード２ｅのＩＤデータが記録され、Ｈｏｐ数データＤ２０３には「３」が記録される。
【００５９】
更に、ステップＳ７ｅの後、センサノード２ｄにおいてステップＳ５ｄ〜ステップＳ８ｄの処理が行われる。このステップＳ５ｄ〜ステップＳ８ｄの各処理内容は、上記のステップＳ５ｂ〜ステップＳ８ｂの各処理内容と同様である。なお、ステップＳ６ｄにおけるＨｏｐ数データＤ２０３の更新値は「４」である。また、ステップＳ７ｅにおけるＣＨ宣言・終端通知データＤ２００の更新処理により、送信元ＩＤデータＤ２０１には、センサノード２ｄのＩＤデータが記録され、Ｈｏｐ数データＤ２０３には「４」が記録される。
【００６０】
また、センサノード２ｄでは、通信部１０６を介して受信されたＣＮ追加データＤ３００（あるいは終端宣言としてのＣＨ宣言・終端通知データＤ２００）に応じてステップＳ１０ｄの処理が行われる。このステップＳ１０ｄの処理内容は、上記のステップＳ１０ｂの処理内容と同様である。なお、ステップＳ１０ｄにおいてＣＮ追加データＤ３００は更新（或いは作成）される。この更新（或いは作成）により、送信元ＩＤデータＤ３０１には、センサノード２ｄのＩＤデータが記録され、Ｈｏｐ数データＤ３０４には、メモリ１０９に格納されたＨｏｐ数「４」が記録される。ＣＮ追加情報データＤ３０５には、センサノード２ｄに至るまでの内容が記録される。
【００６１】
更に、ステップＳ１０ｄの後、センサノード２ｅにおいてステップＳ１０ｅの処理が行われ、次いでセンサノード２ｃにおいてステップＳ１０ｃの処理が行われ、次いでセンサノード２ｂにおいてステップＳ１０ｂの処理が行われる。そして、ステップＳ１０ｂの後、センサノード２ａにおいて上記ステップＳ１１が行われる。なお、ステップＳ１０ｅの処理内容は、例えば上記のステップＳ１０ｂの処理内容と同様である。そして、ＣＮ追加データＤ３００に含まれる送信元ＩＤデータＤ３０１には、センサノード２ｅのＩＤデータが記録され、Ｈｏｐ数データＤ３０４には、ステップＳ１０ｄにおけるＣＮ追加データＤ３００に含まれるＨｏｐ数データＤ３０４の値を「１」だけデクリメントした値が記録され、ＣＮ追加情報データＤ３０５には、センサノード２ｄのＩＤデータを含むデータが記録される。
【００６２】
ここで、ステップＳ１２に戻って説明する。ステップＳ１２で行われた判定の結果、センサノード２ｄの残存電源量の方が大きいと判定された場合、センサノード２ｅにおいてステップＳ１３ｅ及びステップＳ１４ｅの処理が行われる。このステップＳ１３ｅ及びステップＳ１４ｅの処理内容は、上記のステップＳ６ｂ及びステップＳ７ｂの各処理内容と同様である。なお、ステップＳ１３ｅにおけるＨｏｐ数は「１」である。また、ステップＳ１４ｅにおけるＣＨ宣言・終端通知データＤ２００の作成処理により、送信元ＩＤデータＤ２０１には、センサノード２ｅのＩＤデータが記録される。Ｈｏｐ数データＤ２０３には、「１」が記録される。ＣＨ候補ＩＤデータＤ２０４には、センサノード２ｄのＩＤデータが記録される。そして、ＣＨ候補残存電源量データＤ２０７には、センサノード２ｄの残存電源量を示す電源データが記録される。
【００６３】
ステップＳ１４ｅの後、センサノード２ｃにおいてステップＳ１３ｃ及び１４ｃの処理が行われる。このステップＳ１３ｃ及びステップＳ１４ｃの処理内容は、上記のステップＳ６ｂ及びステップＳ７ｂの各処理内容と同様である。なお、ステップＳ１３ｃにおけるＨｏｐ数は「２」である。また、ステップＳ１４ｃにおけるＣＨ宣言・終端通知データＤ２００の更新処理により、送信元ＩＤデータＤ２０１には、センサノード２ｃのＩＤデータが記録される。そして、Ｈｏｐ数データＤ２０３には、「２」が記録される。
【００６４】
ステップＳ１４ｃの後、センサノード２ｂにおいてステップＳ１３ｂ及び１４ｂの処理が行われる。このステップＳ１３ｂ及びステップＳ１４ｂの処理内容は、上記のステップＳ６ｂ及びステップＳ７ｂの各処理内容と同様である。なお、ステップＳ１３ｂにおけるＨｏｐ数は「３」である。また、ステップＳ１４ｂにおけるＣＨ宣言・終端通知データＤ２００の更新処理により、送信元ＩＤデータＤ２０１には、センサノード２ｂのＩＤデータが記録される。そして、Ｈｏｐ数データＤ２０３には、「３」が記録される。
【００６５】
ステップＳ１４ｂの後、センサノード２ａにおいてステップＳ１３ａ及び１４ａの処理が行われる。このステップＳ１３ａ及びステップＳ１４ａの処理内容は、上記のステップＳ６ｂ及びステップＳ７ｂの各処理内容と同様である。なお、ステップＳ１３ａにおけるＨｏｐ数は「４」である。また、ステップＳ１４ａにおけるＣＨ宣言・終端通知データＤ２００の更新処理により、送信元ＩＤデータＤ２０１には、センサノード２ａのＩＤデータが記録される。そして、Ｈｏｐ数データＤ２０３には、「４」が記録される。
【００６６】
また、センサノード２ａでは、通信部１０６を介して受信されたＣＮ追加データＤ３００（あるいは終端宣言としてのＣＨ宣言・終端通知データＤ２００）に応じてステップＳ１５ａの処理が行われる。このステップＳ１５ａの処理内容は、上記のステップＳ１０ｄの処理内容と同様である。更に、ステップＳ１５ａの後、センサノード２ｂにおいてステップＳ１５ｂの処理が行われ、次いでセンサノード２ｃにおいてステップＳ１５ｃの処理が行われ、次いでセンサノード２ｅにおいてステップＳ１５ｅの処理が行われる。なお、ステップＳ１５ｂ、ステップＳ１５ｃ及びステップＳ１５ｅの各処理内容は、上記のステップＳ１０ｅ、ステップＳ１０ｃ及びステップＳ１０ｂの各処理内容と同様である。
【００６７】
そして、ステップＳ１５ｅの後、センサノード２ｄにおいて下記ステップＳ１６が行われる。すなわち、ステップＳ１５ｅの段階でセンサノード２ｅから送信されたＣＮ追加データＤ３００を通信部１０６が受信する。クラスタ管理部１０２は、この受信したＣＮ追加データＤ３００に基づいて、センサノード２ａ〜センサノード２ｃ及びセンサノード２ｅの各ＩＤデータとＨｏｐ数とをメモリ１０９に格納し、クラスタを構成するセンサノード２ａ〜センサノード２ｃ及びセンサノード２ｅを管理する。
【００６８】
以上説明したように、第１実施形態に係るクラスタシステム１では、クラスタ構成のタイミングが、振動の検出という現象を起点として行われる。一方、従来より、周期的にクラスタを再構成する技術が知られているが、実施形態に係るクラスタシステム１では、検出された振動内容に応じたクラスタの再構成が行える。このため、クラスタの再構成が、検出内容と無関係に行われるということがなくなる。よって、クラスタの再構成時に要する電力消費が削減できる。
【００６９】
また、ステップＳ１２の処理によって、各センサノード２の残存電源量が多いセンサノード２が優先的にクラスタヘッド宣言データを作成する。一方、従来より、ネットワークトポロジに基づいてクラスタを構成する技術が知られているが、実施形態に係るクラスタシステム１では、残存電源量の多いセンサノード２がクラスタヘッドとなるため、クラスタ内のセンサノード２の消費電力に偏りが生じにくくなる。よって、クラスタ全体の寿命が長くなる。
【００７０】
また、第１実施形態に係るクラスタシステム１では、同一の振動現象を同様に検出した複数のセンサノード２のみがクラスタを構成することとなる。その結果、クラスタを構成する各センサノード２による検出データの相関が向上する。このため、相関の高い検出データが効率的に収集可能となる。このように、検出データが効率良く収集できるため、クラスタシステム１内におけるデータのトラフィック量が低減する。このトラフィック量の低減により、センサノード２の消費電力が抑制される。よって、クラスタ全体の寿命が長くなる。
【００７１】
［第２実施形態］
第２実施形態では、上記第１実施形態において、電源残存量に限定せずＣＰＵ処理能力や使用可能メモリサイズを含んだ広義の計算リソースに基づいて、後述の所定の式を用いて待機時間を計算する実施形態を説明する。
【００７２】
第２実施形態のクラスタシステムは、前述した図１のクラスタシステム１と同様の構成を有している。即ち、クラスタシステム１は、無線によるデータの送受信が可能な互いに離隔した複数のセンサノード２を含んで構成されている。各センサノード２は、物理的に、ＣＰＵ、クロック、メモリ、電源（例えばバッテリ）、無線インタフェース等を備えた構成とされ、あるタイミング（例えば所定の時間周期、又は、センサから取得された値が所定以上変化したタイミングなど）に基づいてクラスタヘッド宣言を送受信する。
【００７３】
図６に示すように、本実施形態のセンサノード２は、第１実施形態のセンサノード２（図２）と同様の構成をしているが、電源残存量、当該時点で使用可能なＣＰＵ処理能力、当該時点で使用可能なメモリサイズ（使用可能メモリサイズ）を含んだ広義の計算リソースの管理を行う計算リソース管理部１１０を備えている。この計算リソース管理部１１０は、クラスタ管理部１０２から計算リソース取得要求が入力され、該計算リソース取得要求に応じて現状の計算リソース（電源残存量、ＣＰＵ処理能力又は使用可能メモリサイズ）をクラスタ管理部１０２へ出力する。
【００７４】
次に、本実施形態のクラスタシステム１における動作について説明する。ここでは、クラスタシステム１内の３つのセンサノード２ａ、２ｂ、２ｃの中からクラスタヘッドを選択する動作を図７に基づいて説明する。特に、待機時間の計算処理については図８に基づいて説明する。
【００７５】
クラスタシステム１において複数のセンサノード２ａ、２ｂ、２ｃがクラスタを形成するに当たっては、まず、ある特定の時間（クラスタ形成タイミング）にクラスタを構築しようとする処理から開始する（図７のＳ１０１）。ここでの「ある特定の時間」とは、クラスタを構築する所定の時間周期（例えば１分）、又は、各センサノード２のセンサ１０８から取得された値が所定以上変化したタイミングなどを指す。
【００７６】
各センサノード２では、クラスタ管理部１０２は、時間管理部１０３やセンサ部１０５からイベントが入力され、計算リソース管理部１１０に現在の計算リソース取得要求を出力する。計算リソース管理部１１０は、クラスタ管理部１０２から計算リソース取得要求が入力され、バッテリー情報、ＣＰＵ情報、メモリ使用状況等から現在の計算リソースを取得し、取得した計算リソースをクラスタ管理部１０２へ出力する。
【００７７】
そして、クラスタ管理部１０２は、計算リソース管理部１１０から計算リソースが入力され、図８の待機時間の計算処理を行う（Ｓ１０２）。ここで、クラスタ管理部１０２は、以下の計算式（１）を用いて待機時間WaitTを計算する（Ｓ１０２Ａ）。
WaitT＝α＊（maxＲ−Ｒｎ）  （１）
ここで、αはWaitT係数であり、例えば、センサノードの密度などによって決められる。例えば、無線で１ホップ以内に通信可能なノードがｘ台存在し、バックオフのスロットタイムがｓｔミリ秒の場合、α＝ｘ＊ｓｔと決められる。また、maxＲは自己のセンサノードにおける最大計算リソース量（計算リソースが最大のときのリソース量）を示し、Ｒｎは当該時点における自己のセンサノードの計算リソース量を示す。
【００７８】
そして、クラスタ管理部１０２は、上記計算で得られた値をWaitTとして決定する（Ｓ１０２Ｇ）。
【００７９】
図７に戻り、各センサノード２のクラスタ管理部１０２は、上記決定したWaitTを待機時間として時間管理部１０３に対し設定し、待機する（Ｓ１０３）。時間管理部１０３は、クラスタ管理部１０２から待機時間が設定され、以後、その待機時間が経過したとき、クラスタ管理部１０２を起床させるためのイベントを生成してクラスタ管理部１０２に通知する。
【００８０】
各センサノード２は、もし待機中に他のノードからクラスタヘッド宣言を受信（Ｓ１０４）していなければ、クラスタヘッドとして動作する。ここでは、センサノード２ａがクラスタヘッドとして動作するものとする。クラスタヘッドのクラスタ管理部１０２は、自身のノードＩＤと自身の計算リソース量を含むクラスタヘッド宣言を作成し、ブロードキャストアドレスを指定して該クラスタヘッド宣言を通信部１０６へ出力する。通信部１０６は、クラスタ管理部１０２からクラスタヘッド宣言が入力され、無線インタフェースを通じてクラスタヘッド宣言をブロードキャストする（Ｓ１０５）。
【００８１】
一方、各センサノード２は、もし待機中に他のノードからクラスタヘッド宣言を受信すれば、Ｓ１０４で肯定判定され、以下のように動作する。ここでは、センサノード２ｂ、２ｃの通信部１０６は、受信したクラスタヘッド宣言をクラスタ管理部１０２に出力する。クラスタ管理部１０２は、通信部１０６からクラスタヘッド宣言が入力され、該クラスタヘッド宣言に含まれるノードＩＤと計算リソース量を取り出し、メモリ１０９に保存する（Ｓ１０６）。
【００８２】
以上のように、各センサノード２は、自己の最大計算リソース量maxＲと当該時点の計算リソース量Ｒｎとの差分に基づいて、待機時間WaitTを決定することができる。
【００８３】
なお、上記実施形態では、センサノード２ａがクラスタヘッドとして動作する例を示したが、センサノード２ｂ、２ｃもクラスタヘッドとして動作する機能を備えており、Ｓ１０４で否定判定されれば、図７において破線で示すようにＳ１０５の処理を実行する。一方、センサノード２ａでもＳ１０４で肯定判定されれば、図７において破線で示すようにＳ１０６の処理を実行する。
【００８４】
［第３実施形態］
第３実施形態では、待機時間の計算処理において、以前のクラスタヘッドの計算リソースをさらに含む計算リソースに基づいて待機時間を計算する実施形態を説明する。この第３実施形態は、上記第２実施形態に対し、図７のＳ１０２における待機時間の計算処理が異なるため、この待機時間の計算処理を詳細に説明する。
【００８５】
第３実施形態では、図９の待機時間の計算処理が各センサノード２により実行される。各センサノード２においてクラスタ管理部１０２は、以下の計算式（１）を用いて待機時間WaitTを計算する（Ｓ１０２Ａ）。
WaitT＝α＊（maxＲ−Ｒｎ）  （１）
ここで、αはWaitT係数であり、例えば、センサノードの密度などによって決められる。例えば、無線で１ホップ以内に通信可能なノードがｘ台存在し、バックオフのスロットタイムがｓｔミリ秒の場合、α＝ｘ＊ｓｔと決められる。また、maxＲは自己のセンサノードにおける最大計算リソース量（計算リソースが最大のときのリソース量）を示し、Ｒｎは当該時点における自己のセンサノードの計算リソース量を示す。
【００８６】
次に、クラスタ管理部１０２は、以前のクラスタヘッドの計算リソース量がメモリ１０９に記憶されているか否かを判定する（Ｓ１０２Ｂ）。ここで、以前のクラスタヘッドの計算リソース量がメモリ１０９に記憶されていなければ、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【００８７】
一方、Ｓ１０２Ｂで以前のクラスタヘッドの計算リソース量がメモリ１０９に記憶されていれば、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られたWaitTの値が、γで示される一定時間（「ハイプライオリティスロット」と呼ぶ）よりも大きいか否かを判定する（Ｓ１０２Ｃ）。なお、γは、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、１回のクラスタ構築時に新たにｙ台加わる場合、バックオフのスロットタイムがｓｔミリ秒とすると、γ＝ｙ＊ｓｔと決められる。
【００８８】
Ｓ１０２ＣでWaitT≦γの場合は、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【００８９】
一方、Ｓ１０２ＣでWaitT＞γの場合、クラスタ管理部１０２は、メモリ１０９に記憶された以前のクラスタヘッドの計算リソース量（Ｒｃｈ）を用いて、以下の計算式（２）に基づき待機時間WaitTを計算する（Ｓ１０２Ｄ）。
WaitT＝α＊（Ｒｃｈ−Ｒｎ）＋γ  （２）
【００９０】
そして、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られたWaitTの値がγよりも小さいか否かを判定する（Ｓ１０２Ｅ）。
【００９１】
Ｓ１０２ＥでWaitT≧γの場合は、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【００９２】
一方、Ｓ１０２ＥでWaitT＜γの場合、クラスタ管理部１０２は、以下の計算式（３）を用いて待機時間WaitTを計算する（Ｓ１０２Ｆ）。
WaitT＝β＊（Ｒｃｈ−Ｒｎ）＋γ  （３）
βはαと同様、WaitT係数であり、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、頻繁に構成メンバが変化する場合、βはαよりも大きな値とし、逆に、構成メンバがあまり変化しない場合、βはαよりも小さい値とする。
【００９３】
そして、クラスタ管理部１０２は、Ｓ１０２Ｆの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【００９４】
以上のようにして、各センサノード２は、以前のクラスタヘッドの計算リソース量（Ｒｃｈ）をさらに含む計算リソース量に基づいて、待機時間WaitTを決定することができる。
【００９５】
［第４実施形態］
第４実施形態では、クラスタヘッドが決定された後、周辺のセンサノード２がそのクラスタに所属するか否かを決定しクラスタヘッドに回答する実施形態を説明する。本実施形態に係るクラスタシステム１の構成は、上記第２実施形態の構成と同じである。ただし、各センサノード２は、あるタイミング（例えば所定の時間周期、又は、センサから取得された値が所定以上変化したタイミングなど）に基づいてクラスタヘッド宣言及びクラスタ参加可否メッセージを送受信する。
【００９６】
図１０には、本実施形態に係るクラスタシステム１において複数のセンサノード２ａ、２ｂ、２ｃ間で、クラスタヘッド２ａが選出された後に、クラスタヘッド宣言を受信したセンサノード２ｂ、２ｃがそのクラスタに所属するか否かを決定し、クラスタ参加可否メッセージを送受信する手順を示す。ここでは、図１０に示すセンサノード２ｂ、２ｃにおけるＳ１０７以降の処理について説明する。
【００９７】
クラスタヘッド２ａが選出された後、クラスタヘッド宣言を受信したセンサノード２ｂ、２ｃは、そのクラスタに所属するか否かを決定する（Ｓ１０７）。ここで、センサノード２ｂ、２ｃのクラスタ管理部１０２は、何らかの判断基準（例えばクラスタヘッド２ａの電源残存量やセンサ１０８からのイベントの類似性など）を基礎として、自己のセンサノードがクラスタに所属するか否かを決定する。
【００９８】
Ｓ１０７でクラスタに所属すると決定した場合、クラスタ管理部１０２は、自身のＩＤを含むクラスタ参加メッセージ（ＪＯＩＮメッセージともいう）を作成し、クラスタヘッド２ａのＩＤを指定して該クラスタ参加メッセージを通信部１０６に出力する。通信部１０６は、クラスタ管理部１０２からクラスタ参加メッセージが入力され、無線インタフェースを通じて、上記指定されたクラスタヘッド２ａへクラスタ参加メッセージを送信する（Ｓ１０８）。
【００９９】
一方、Ｓ１０７でクラスタに所属しないと決定した場合、クラスタ管理部１０２は、受信したクラスタヘッド宣言を破棄し、自身がクラスタヘッドとして動作する。具体的には、図１０のセンサノード２ｃのように、センサノード２ｃのクラスタ管理部１０２は、自身のノードＩＤと自身の電源残存量を含むクラスタヘッド宣言を作成し、ブロードキャストアドレスを指定して通信部１０６に該クラスタヘッド宣言を出力する。通信部１０６は、クラスタ管理部１０２からクラスタヘッド宣言が入力され、無線インタフェースを通じて該クラスタヘッド宣言をブロードキャストする（Ｓ１０５）。
【０１００】
以上のように、クラスタヘッド２ａが選出された後にクラスタヘッド宣言を受信したセンサノード２ｂ、２ｃは、自己のセンサノードがクラスタに所属するか否かを決定し、クラスタに所属すると決定した場合、自身のＩＤを含むクラスタ参加メッセージをクラスタヘッド２ａへ送信し、クラスタに所属しないと決定した場合、自身がクラスタヘッドとして動作するために、クラスタヘッド宣言をブロードキャストする。
【０１０１】
［第５実施形態］
第５実施形態では、計算リソースとしての電源残存量に基づいて、後述の所定の式を用いて待機時間を計算する実施形態を説明する。本実施形態に係るクラスタシステム１の構成は、上記第２実施形態の構成と同じである。ただし、図６の計算リソース管理部１１０は、計算リソースとして電源残存量を管理している。この第５実施形態は、上記第２実施形態に対し、図７のＳ１０２における待機時間の計算処理が異なるため、この待機時間の計算処理を詳細に説明する。
【０１０２】
第５実施形態では、図１１の待機時間の計算処理が各センサノード２により実行される。各センサノード２においてクラスタ管理部１０２は、以下の計算式（４）を用いて待機時間WaitTを計算する（Ｓ１０２Ａ）。
WaitT＝α＊（maxPower−Powerｎ）  （４）
ここで、αはWaitT係数であり、例えば、センサノードの密度などによって決められる。例えば、無線で１ホップ以内に通信可能なノードがｘ台存在し、バックオフのスロットタイムがｓｔミリ秒の場合、α＝ｘ＊ｓｔと決められる。また、maxPowerは自己のセンサノードにおける最大電源残存量（電源残存量が最大のときの値）を示し、Powerｎは当該時点における自己のセンサノードの電源残存量を示す。
【０１０３】
次に、クラスタ管理部１０２は、以前のクラスタヘッドの電源残存量がメモリ１０９に記憶されているか否かを判定する（Ｓ１０２Ｈ）。ここで、以前のクラスタヘッドの電源残存量がメモリ１０９に記憶されていなければ、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１０４】
一方、Ｓ１０２Ｈで以前のクラスタヘッドの電源残存量がメモリ１０９に記憶されていれば、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られたWaitTの値が、γで示される一定時間（ハイプライオリティスロット）よりも大きいか否かを判定する（Ｓ１０２Ｃ）。なお、γは、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、１回のクラスタ構築時に新たにｙ台加わる場合、バックオフのスロットタイムがｓｔミリ秒とすると、γ＝ｙ＊ｓｔと決められる。
【０１０５】
Ｓ１０２ＣでWaitT≦γの場合は、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１０６】
一方、Ｓ１０２ＣでWaitT＞γの場合、クラスタ管理部１０２は、メモリ１０９に記憶された以前のクラスタヘッドの電源残存量（Powerｃｈ）を用いて、以下の計算式（５）に基づき待機時間WaitTを計算する（Ｓ１０２Ｄ）。
WaitT＝α＊（Powerｃｈ−Powerｎ）＋γ  （５）
【０１０７】
そして、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られたWaitTの値がγよりも小さいか否かを判定する（Ｓ１０２Ｅ）。
【０１０８】
Ｓ１０２ＥでWaitT≧γの場合は、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１０９】
一方、Ｓ１０２ＥでWaitT＜γの場合、クラスタ管理部１０２は、以下の計算式（６）を用いて待機時間WaitTを計算する（Ｓ１０２Ｆ）。
WaitT＝β＊（Powerｃｈ−Powerｎ）＋γ  （６）
βはαと同様、WaitT係数であり、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、頻繁に構成メンバが変化する場合、βはαよりも大きな値とし、逆に、構成メンバがあまり変化しない場合、βはαよりも小さい値とする。
【０１１０】
そして、クラスタ管理部１０２は、Ｓ１０２Ｆの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１１１】
以上のようにして、各センサノード２は、以前のクラスタヘッドの電源残存量（Powerｃｈ）をさらに含む電源残存量に基づいて、待機時間WaitTを決定することができる。
【０１１２】
［第６実施形態］
第６実施形態では、計算リソースとしてのＣＰＵ処理能力（即ち、当該時点で使用可能なＣＰＵ処理能力）に基づいて、後述の所定の式を用いて待機時間を計算する実施形態を説明する。本実施形態に係るクラスタシステム１の構成は、上記第２実施形態の構成と同じである。ただし、図６の計算リソース管理部１１０は、計算リソースとしてＣＰＵ処理能力を管理している。この第６実施形態は、上記第２実施形態に対し、図７のＳ１０２における待機時間の計算処理が異なるため、この待機時間の計算処理を詳細に説明する。
【０１１３】
第６実施形態では、図１２の待機時間の計算処理が各センサノード２により実行される。各センサノード２においてクラスタ管理部１０２は、以下の計算式（７）を用いて待機時間WaitTを計算する（Ｓ１０２Ａ）。
WaitT＝α＊（maxＣＰＵ−ＣＰＵｎ）  （７）
ここで、αはWaitT係数であり、例えば、センサノードの密度などによって決められる。例えば、無線で１ホップ以内に通信可能なノードがｘ台存在し、バックオフのスロットタイムがｓｔミリ秒の場合、α＝ｘ＊ｓｔと決められる。また、maxＣＰＵは自己のセンサノードにおける最大ＣＰＵ処理能力（ＣＰＵ処理能力が最大のときの値）を示し、ＣＰＵｎは当該時点における自己のセンサノードのＣＰＵ処理能力を示す。
【０１１４】
次に、クラスタ管理部１０２は、以前のクラスタヘッドのＣＰＵ処理能力がメモリ１０９に記憶されているか否かを判定する（Ｓ１０２Ｉ）。ここで、以前のクラスタヘッドのＣＰＵ処理能力がメモリ１０９に記憶されていなければ、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１１５】
一方、Ｓ１０２Ｉで以前のクラスタヘッドのＣＰＵ処理能力がメモリ１０９に記憶されていれば、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られたWaitTの値が、γで示される一定時間（ハイプライオリティスロット）よりも大きいか否かを判定する（Ｓ１０２Ｃ）。なお、γは、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、１回のクラスタ構築時に新たにｙ台加わる場合、バックオフのスロットタイムがｓｔミリ秒とすると、γ＝ｙ＊ｓｔと決められる。
【０１１６】
Ｓ１０２ＣでWaitT≦γの場合は、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１１７】
一方、Ｓ１０２ＣでWaitT＞γの場合、クラスタ管理部１０２は、メモリ１０９に記憶された以前のクラスタヘッドのＣＰＵ処理能力（ＣＰＵｃｈ）を用いて、以下の計算式（８）に基づき待機時間WaitTを計算する（Ｓ１０２Ｄ）。
WaitT＝α＊（ＣＰＵｃｈ−ＣＰＵｎ）＋γ  （８）
【０１１８】
そして、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られたWaitTの値がγよりも小さいか否かを判定する（Ｓ１０２Ｅ）。
【０１１９】
Ｓ１０２ＥでWaitT≧γの場合は、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１２０】
一方、Ｓ１０２ＥでWaitT＜γの場合、クラスタ管理部１０２は、以下の計算式（９）を用いて待機時間WaitTを計算する（Ｓ１０２Ｆ）。
WaitT＝β＊（ＣＰＵｃｈ−ＣＰＵｎ）＋γ  （９）
βはαと同様、WaitT係数であり、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、頻繁に構成メンバが変化する場合、βはαよりも大きな値とし、逆に、構成メンバがあまり変化しない場合、βはαよりも小さい値とする。
【０１２１】
そして、クラスタ管理部１０２は、Ｓ１０２Ｆの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１２２】
以上のようにして、各センサノード２は、以前のクラスタヘッドのＣＰＵ処理能力（ＣＰＵｃｈ）をさらに含むＣＰＵ処理能力に基づいて、待機時間WaitTを決定することができる。
【０１２３】
［第７実施形態］
第７実施形態では、計算リソースとしての使用可能メモリサイズ（即ち、当該時点で使用可能なメモリサイズ）に基づいて、後述の所定の式を用いて待機時間を計算する実施形態を説明する。本実施形態に係るクラスタシステム１の構成は、上記第２実施形態の構成と同じである。ただし、図６の計算リソース管理部１１０は、計算リソースとして使用可能メモリサイズを管理している。この第７実施形態は、上記第２実施形態に対し、図７のＳ１０２における待機時間の計算処理が異なるため、この待機時間の計算処理を詳細に説明する。
【０１２４】
第７実施形態では、図１３の待機時間の計算処理が各センサノード２により実行される。各センサノード２においてクラスタ管理部１０２は、以下の計算式（１０）を用いて待機時間WaitTを計算する（Ｓ１０２Ａ）。
WaitT＝α＊（maxMemory−Memoryｎ）  （１０）
ここで、αはWaitT係数であり、例えば、センサノードの密度などによって決められる。例えば、無線で１ホップ以内に通信可能なノードがｘ台存在し、バックオフのスロットタイムがｓｔミリ秒の場合、α＝ｘ＊ｓｔと決められる。また、maxMemoryは自己のセンサノードにおける最大使用可能メモリサイズ（使用可能メモリサイズが最大のときの値）を示し、Memoryｎは当該時点における自己のセンサノードの使用可能メモリサイズを示す。
【０１２５】
次に、クラスタ管理部１０２は、以前のクラスタヘッドの使用可能メモリサイズがメモリ１０９に記憶されているか否かを判定する（Ｓ１０２Ｊ）。ここで、以前のクラスタヘッドの使用可能メモリサイズがメモリ１０９に記憶されていなければ、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１２６】
一方、Ｓ１０２Ｊで以前のクラスタヘッドの使用可能メモリサイズがメモリ１０９に記憶されていれば、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られたWaitTの値が、γで示される一定時間（ハイプライオリティスロット）よりも大きいか否かを判定する（Ｓ１０２Ｃ）。なお、γは、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、１回のクラスタ構築時に新たにｙ台加わる場合、バックオフのスロットタイムがｓｔミリ秒とすると、γ＝ｙ＊ｓｔと決められる。
【０１２７】
Ｓ１０２ＣでWaitT≦γの場合は、クラスタ管理部１０２は、Ｓ１０２Ａの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１２８】
一方、Ｓ１０２ＣでWaitT＞γの場合、クラスタ管理部１０２は、メモリ１０９に記憶された以前のクラスタヘッドの使用可能メモリサイズ（Memoryｃｈ）を用いて、以下の計算式（１１）に基づき待機時間WaitTを計算する（Ｓ１０２Ｄ）。
WaitT＝α＊（Memoryｃｈ−Memoryｎ）＋γ  （１１）
【０１２９】
そして、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られたWaitTの値がγよりも小さいか否かを判定する（Ｓ１０２Ｅ）。
【０１３０】
Ｓ１０２ＥでWaitT≧γの場合は、クラスタ管理部１０２は、Ｓ１０２Ｄの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１３１】
一方、Ｓ１０２ＥでWaitT＜γの場合、クラスタ管理部１０２は、以下の計算式（１２）を用いて待機時間WaitTを計算する（Ｓ１０２Ｆ）。
WaitT＝β＊（Memoryｃｈ−Memoryｎ）＋γ  （１２）
βはαと同様、WaitT係数であり、例えば、クラスタの構成メンバがどの程度変化するかによって決められる。例えば、頻繁に構成メンバが変化する場合、βはαよりも大きな値とし、逆に、構成メンバがあまり変化しない場合、βはαよりも小さい値とする。
【０１３２】
そして、クラスタ管理部１０２は、Ｓ１０２Ｆの計算で得られた値をWaitTとして決定し（Ｓ１０２Ｇ）、処理を終了する。
【０１３３】
以上のようにして、各センサノード２は、以前のクラスタヘッドの使用可能メモリサイズ（Memoryｃｈ）をさらに含む使用可能メモリサイズに基づいて、待機時間WaitTを決定することができる。
【０１３４】
なお、本発明は、上記の第１〜第７実施形態に限定されるものではない。例えば、センサノード２は、振動を検出するセンサであるとしたが、これに限らず、例えば、光、磁気又は音等を検出するセンサであってもよい。
【図面の簡単な説明】
【０１３５】
【図１】第１〜第７実施形態に係るクラスタシステムの構成を示すブロック図である。
【図２】第１実施形態に係るセンサノードの構成を示すブロック図である。
【図３】第１実施形態に係るクラスタシステムに用いられるＣＨ宣言・終端通知データ及びＣＮ追加データの各データ内容を示す図である。
【図４】第１実施形態に係るクラスタシステムの動作を説明するためのシーケンスである。
【図５】第１実施形態に係るクラスタシステムの動作を説明するためのシーケンスである。
【図６】第２〜第７実施形態に係るセンサノードの構成を示すブロック図である。
【図７】第２、第３、第５、第６、第７実施形態に係るクラスタシステムの動作を説明するためのシーケンスである。
【図８】第２実施形態に係る待機時間の計算処理のシーケンスである。
【図９】第３実施形態に係る待機時間の計算処理のシーケンスである。
【図１０】第４実施形態に係るクラスタシステムの動作を説明するためのシーケンスである。
【図１１】第５実施形態に係る待機時間の計算処理のシーケンスである。
【図１２】第６実施形態に係る待機時間の計算処理のシーケンスである。
【図１３】第７実施形態に係る待機時間の計算処理のシーケンスである。
【符号の説明】
【０１３６】
１…クラスタシステム、２…センサノード、１０１…電源、１０２…クラスタ管理部、１０３…時間管理部、１０４…電源管理部、１０５…センサ部、１０６…通信部、１０７…クロック、１０８…センサ、１０９…メモリ、１１０…計算リソース管理部。
【図１】
2007043677.tif 000003
【図２】
2007043677.tif 000004
【図３】
2007043677.tif 000005
【図４】
2007043677.tif 000006
【図５】
2007043677.tif 000007
【図６】
2007043677.tif 000008
【図７】
2007043677.tif 000009
【図８】
2007043677.tif 000010
【図９】
2007043677.tif 000011
【図１０】
2007043677.tif 000012
【図１１】
2007043677.tif 000013
【図１２】
2007043677.tif 000014
【図１３】
2007043677.tif 000015