以下に添付図面を参照して、本発明にかかる通信ノード、システム、通信方法、および通信プログラムの実施の形態を詳細に説明する。
図1は、通信ノードによる一動作例を示す説明図である。複数の通信ノード101は所定領域に配置される。所定領域は、たとえば、コンクリート、土、水、空気などの物質で満たされた領域である。各通信ノード101はハーベスタとバッテリとを搭載し、ハーベスタによって得られた電力をバッテリに充電する。たとえば、通信ノード101−1は、複数の通信ノード101へ、応答可能か否かの確認信号s1を送信する。ここでは、通信ノード101−1は、一定の強度により確認信号を送信する。そのため、一定の強度により定まる距離よりも遠くにある通信ノード101には確認信号s1が到達しない。たとえば、通信ノード101−2〜101−6は通信ノード101−1からの確認信号s1が到達可能な位置にある。
通信ノード101−1は、複数の通信ノード101のうちの応答可能な第1通信ノード101からの、送信された確認信号s1に対する応答信号s2を受信する。ここで、第1通信ノード101は、通信ノード101−2と通信ノード101−3と通信ノード101−5と、である。故障中の通信ノード101やバッテリの残量が不十分である通信ノード101は、確認信号s1に対する応答が行えないため、応答信号s2を送信しない。バッテリの残量が不十分とは、例えば、後述する依頼信号s3の受信と、依頼信号s3が依頼するデータ処理の実行と、に要する電力量を満たさないことを示す。
つぎに、通信ノード101−1は、受信した応答信号s2の受信強度に基づいて、自通信ノード101からデータ処理の実行を依頼する第2通信ノード101を第1通信ノード101から選択する。ここで、受信強度とは、受信した信号の強度を示す。受信強度は、たとえば、RSSI(Received Signal Strength Indicator)であり、受信電力[dBm]である。受信強度は、たとえば、アンテナから得ることができる。たとえば、応答信号s2の送信強度が同一であると、受信強度の損失が大きい通信ノード101ほど、自通信ノード101との距離が遠く、受信強度の損失が小さい通信ノード101ほど、自通信ノード101との距離が近い。そのため、受信強度の損失が小さい通信ノード101にデータ処理を依頼する際の送信強度を小さくすることができる。そこで、たとえば、通信ノード101−1は、受信強度の損失が最も小さい通信ノード101を選択する。ここでは、通信ノード101−1は第2通信ノード101として通信ノード101−5を選択する。
通信ノード101−1は、選択した第2通信ノード101からの応答信号s2の受信強度に基づいて、第2通信ノード101への送信強度を算出する。ここで、送信強度とは、送信する信号の強度を示す。具体的には、通信ノード101−1は、応答信号s2の受信強度を与えると、通信ノード101−1から応答信号s2の送信元へ依頼信号s3が到達可能な送信強度が得られる関数に基づいて算出する。依頼信号s3は、データ処理の実行を依頼する信号である。また、たとえば、関数は、応答信号s2の受信強度を与えると、通信ノード101−1から応答信号s2の送信元へ依頼信号s3が到達可能な送信強度の中で、最小な送信強度が得られる。関数は、予め通信ノード101内の記憶装置に記憶される。関数は、後述する第1関数から第4関数の合成関数である。
また、通信ノード101−1は、応答信号s2の受信強度と、通信ノード101−1から応答信号s2の送信元へ依頼信号s3が到達可能な送信強度と、が対応付けられたテーブルに、応答信号s2の受信強度を与える。これにより、通信ノード101−1は、第2通信ノード101への送信強度を算出してもよい。また、例えば、テーブルは、通信ノード101−1から応答信号s2の送信元へ依頼信号s3が到達可能な送信強度の中で、最小な送信強度が得られるように作成される。例えば、テーブルは、予め通信ノード101内の記憶装置に記憶される。つぎに、通信ノード101−1は、依頼信号s3を算出した送信強度に基づいて第2通信ノード101へ送信する。
これにより、より近いと推定される通信ノードへ少ない電力で依頼信号を送信することができる。したがって、適切な通信相手にデータ処理を実行させることができ、無線送信による消費電力を低減することができる。
図2は、システム例を示す説明図である。システム200は、たとえば、センサーネットワークSNETと、通信装置201と、PCと、などを有するセンサーネットワークシステムである。
センサーネットワークSNETは複数の通信ノード101を有する。複数の通信ノード101は、無線通信端末であって、上述したような所定領域内に配置される。通信ノード101は、所定領域内に数百個〜数万個配置されることとする。通信ノード101は広範囲に設置されるため、すべての通信ノード101が通信装置201と直接データの送受信を行うことができない。そこで、システム200では、センシング結果に対応するデータ処理の処理結果は、他の通信ノード101を経由してマルチホッピング通信によって通信装置201に到達することとする。
また、本実施の形態では、データ処理が複数の部分処理に分割して並列処理可能なデータ処理とする。そのため、本実施の形態では、センシングイベントに応じたデータ処理を複数の通信ノード101に分散して並列処理させ、データ処理の処理結果を複数の通信ノード101の間でのマルチホップ通信により通信装置201まで転送する。通信装置201は、複数の通信ノード101の少なくともいずれかのデータ処理の処理結果を集約する。サーバ202や利用者端末203は、たとえば、通信装置201から集約結果の受け付け、通信装置201への指示などを行う。
図3は、通信ノードのハードウェア構成例を示す説明図である。通信ノード101は、複数のハーベスタ301−1〜301−nと、PMU(Power Management Unit)302と、バッテリ303と、複数のセンサー304−1〜304−mと、MCU(Micro Control Unit)305と、RAM(Random Access Memory)306と、ROM(Read Only Memory)307と、不揮発メモリ308と、受信装置310と、送信装置311と、を有する。
各センサー304は、設置箇所における所定の変位量を検出する。センサー304は、たとえば、設置箇所の圧力を検出する圧電素子や、温度を検出する素子、光を検出する光電素子などを用いることができる。
受信装置310と送信装置311は、アンテナと無線通信回路(RF(Radio Frequency))と、を有する。受信装置310は、アンテナにより無線電波を受信して受信信号として出力する受信部である。送信装置311は、送信信号を無線電波としてアンテナを介して送信する送信部である。送信装置311は、たとえば、送信強度をMCU305によって調整可能とする。
MCU305は、センサー304が検出したセンシング結果に応じたデータ処理の実行を周辺の通信ノード101へ依頼する。RAM306は、MCU305における処理の一時データを格納する。たとえば、RAM306には、stateが格納される。stateは、データ処理の依頼状態を管理する情報である。stateが「0」の場合、いずれの通信ノード101からもデータ処理の実行や処理結果の転送が依頼されていない状態であることを示す。stateが「1」の場合、後述する処理依頼時隣接ノード確認信号に対する応答信号を送信したことを示す。stateが「2」の場合、後述する処理引き継ぎ依頼信号または並列展開処理依頼信号によってデータ処理の実行または処理結果の転送を依頼されたことを示す。
ROM307は、MCU305が実行する処理プログラムや後述する第1関数から第4関数などを格納する。第1関数と第2関数の合成関数は、たとえば、受信強度に基づいて通信ノード101間の距離を算出可能な関数であり、第3関数と第4関数の合成関数は、通信ノード101間の距離に基づいて送信強度を算出可能な関数である。
不揮発メモリ308は、書き込み可能なメモリであって、電力供給が途絶えたときなどにおいても書き込まれた所定のデータを保持する。たとえば、書き込み可能な不揮発メモリ308は、フラッシュメモリが挙げられる。不揮発メモリ308には、たとえば、並列展開可能ノードを示す情報と、処理引き継ぎ元ノードを示す情報と、データ処理のプログラムと、通信プログラムと、などが記憶される。
ハーベスタ301は、通信ノード101の設置箇所における外部環境、たとえば、光、振動、温度、無線電波(受信電波)などのエネルギー変化に基づき発電を行う。ハーベスタ301は、複数設けられていてもよい。ハーベスタ301は、センサー304によって検出された変位量に応じて発電を行ってもよい。バッテリ303は、ハーベスタ301により発電された電力を蓄える蓄電部である。すなわち、通信ノード101は、二次電池や外部電源などが不要であり、各構成要素の動作のための電力を自通信ノード101の内部で生成する。
PMU302は、バッテリ303によって蓄えられた電力を、通信ノード101の各部に駆動電源として供給する制御を行う。また、PMU302は、受信装置310による信号の受信イベント、各センサー304によるセンシングイベント、タイマによる起動イベントなどのイベントの発生を検出する。そして、PMU302は、各種イベントの発生を検出すると、MCU305の起動を制御する。たとえば、PMU302は、バッテリ303の残量がMCU305の起動に要する電力量よりも少なければ、MCU305を起動させず、バッテリ303の残量がMCU305の起動に要する電力量よりも多ければ、MCU305を起動させる。
図4は、通信装置のハードウェア構成例を示す説明図である。通信装置201は、通信ノード101と異なり、外部電源に基づき動作する。通信装置201は、通信ノード101のMCU305よりも高性能なCPU(Central Processing Unit)401と、大容量のROM402、RAM403、および不揮発メモリ404と、インターフェースとなるI/O(Input/Output)回路405と、を有する。通信装置201は、CPU401と、ROM402と、RAM403と、不揮発メモリ404と、I/O回路405と、を接続するバス409を有する。
ここで、CPU401は、通信装置201の全体の制御を司る。CPU401は、ROM402、RAM403、不揮発メモリ404などの記憶装置に記憶されているプログラムなどの各種プログラムを実行することにより、記憶装置内のデータを読み出したり、実行結果となるデータを記憶装置に書き込んだりする。
また、I/O回路405には、無線通信回路(RF)406およびアンテナ407と、ネットワークI/F408と、が接続されている。これにより、通信装置201は、無線通信回路406およびアンテナ407を介して、通信ノード101と無線通信することができる。さらに、通信装置201は、ネットワークI/F408を介して、TCP/IPのプロトコル処理などにより、インターネットなどのネットワークNETを介してサーバ202や利用者端末203などの外部装置と通信を行うことができる。また、図示していないが、通信装置201はディスプレイやキーボード、またはタッチパネル式のディスプレイなどの入力装置や出力装置を有していてもよい。
(通信ノード101の配置前)
まず、通信ノード101の仕様およびプログラムの仕様から、通信ノード101の配置数や通信距離の設定が行われる。具体的には、通信装置201または利用者端末203などによって行われるが、ここでは、通信装置201によって行うこととする。つぎに、通信ノード101の配置数および通信距離の算出に用いられるパラメータと配置領域の面積例をそれぞれ図5と図6に示す。
図5は、パラメータ例を示す図表である。図6は、配置領域の面積例を示す説明図である。Cはバッテリ容量であり、Vは電圧であり、Rは単位データ量あたりの受信に要する消費電力量である。Tは単位データ量を1m四方までに配置された通信ノードが受信可能な強度による送信に要する消費電力量である。Eは、単位処理量あたりのデータ処理に要する消費電力量である。daは、データ量であり、diは、通信距離である。iは単位処理量であり、Iは全体の処理量である。Sは通信ノード101の配置領域の面積であり、図6に示す。Densityは、マルチホップ通信などを行うための1平方mあたりの通信ノード101の個数(「配置密度」と称する。)[個/m2]である。
通信ノード101が同一サイズのデータを受信する場合の最大受信可能数を以下式(1)に示す。
1通信ノード101当たりが処理可能な処理量を以下式(2)に示す。
データ処理の実行に要する通信ノード101数を以下式(3)に示す。
データ処理の各部分処理について通信ノード101間で行われるホップ数を以下式(4)に示す。
配置密度Densityは、以下式(5)に示す。式(5)中配置密度Densityを省略して配置密度Dと記載する。
どの程度の間隔で通信ノード101を配置させるかを定める距離diは、以下式(6)に示す。
式(1)〜(6)の算出結果に基づいて複数の通信ノード101が配置される。
(運用前)
図7は、運用前に通信ノードに設定される通信距離の例を示す説明図である。通信装置201は、通信距離の設定信号をシステム200内の通信ノード101に対して送信する。設定信号については、マルチホップ通信によって通信ノード101間で伝搬されてもよいし、通信装置201によって全体に送信されてもよい。設定信号には、通信距離に基づく送信強度が含まれる。
各通信ノード101は、設定信号を受信する。そして、各通信ノード101は、MCU305を起動する。各通信ノード101は、MCU305によって設定信号に含まれる送信強度をRAM306や不揮発メモリ308などの記憶装置に記憶する。さらに、各通信ノード101は、MCU305によって、送信装置311に設定信号に含まれる送信強度により信号を送信する。各通信ノード101は、隣接ノード確認信号、隣接ノード確認信号に対する応答信号、処理依頼時隣接ノード確認信号、および処理依頼時隣接ノード確認信号に対する応答信号、を、設定信号に含まれる送信強度によって送信する。また、通信ノード101は、並列展開処理依頼信号、および処理引き継ぎ依頼信号を送信する際に、受信した応答信号の受信強度によって送信する。
図8は、パケットのフォーマット例を示す説明図である。本実施の形態では、各通信ノード101が送信する信号は、隣接ノード確認信号s1と、隣接ノード確認信号s1への応答信号s2と、並列展開処理依頼信号s3と、がある。さらに、各通信ノード101が送信する信号は、処理依頼時隣接ノード確認信号s4と、処理依頼時隣接ノード確認信号s4への応答信号s5と、処理引き継ぎ依頼信号s6と、がある。各信号のパケットのフォーマットを説明する。
隣接ノード確認信号s1は、自通信ノード101と直接無線通信可能な複数の通信ノード101の中で、応答可能か否かを確認するための信号である。具体的には、隣接ノード確認信号s1は、Signal IDと、Sender Node IDと、Reservedと、を有する。隣接ノード確認信号s1のSignal IDは「0」とする。隣接ノード確認信号s1のSender Node IDは、隣接ノード確認信号s1の送信元を示す識別情報である。各通信ノード101の識別情報は、運用前に各通信ノード101に予め付与されていることとする。各通信ノード101の識別情報としては、たとえば、製造時のシリアル番号などを用いてもよい。隣接ノード確認信号s1のReservedは、予備の領域である。また、各通信ノード101は送信先を指定せずに隣接ノード確認信号s1を送信するため、隣接ノード確認信号s1には、送信先を示す識別情報がない。
隣接ノード確認信号s1に対する応答信号s2は、応答可能である場合に送信される信号である。隣接ノード確認信号s1に対する応答信号s2は、Signal IDと、Sender Node IDと、Receiver Node IDと、Reservedと、を有する。隣接ノード確認信号s1に対する応答信号s2のSignal IDは、「1」とする。応答信号s2のSender Node IDは応答信号s2の送信元を示す識別情報である。応答信号s2のReceiver Node IDは応答信号s2の送信先である隣接ノード確認信号s1の送信元を示す識別情報である。応答信号s2のReservedは、予備の領域である。
並列展開処理依頼信号s3は、データ処理を所定数の部分処理に分割可能な並列処理を他の通信ノード101へ依頼するための信号である。所定数については、予め並列度としてデータ処理についてのプログラムの設計者によって定められていることとする。並列展開処理依頼信号s3は、Signal IDと、Sender Node IDと、Receiver Node IDと、Necessary number of hoppingと、Raw dataと、を有する。並列展開処理依頼信号s3のSignal IDは、「2」とする。並列展開処理依頼信号s3のSender Node IDは、並列展開処理依頼信号s3の送信元の識別情報である。並列展開処理依頼信号s3のReceiver Node IDは、部分処理の依頼先の識別情報である。
並列展開処理依頼信号s3のNecessary number of hoppingは、部分処理の実行を完了させるために要する通信ノード数である。Necessary number of hoppingは、所要ホップ数とも呼ぶ。所要ホップ数は各部分処理についてデータ処理の設計時に予め決定済みである。ここでは、各通信ノード101は、並列展開処理依頼信号s3のパケットを生成時に、部分処理を含むデータ処理のプログラムから所要ホップ数を特定してもよい。または、各部分処理についての所要ホップ数を予めROM307や不揮発メモリ308などの記憶装置に格納しておき、各通信ノードは、並列展開処理依頼信号s3のパケットを生成時に、記憶装置から部分処理の所要ホップ数を取得してもよい。並列展開処理依頼信号s3のRaw dataは、部分処理の実行に関する情報であり、たとえば、センシングイベントによって得られたセンシングデータを有し、さらに部分処理についてのプログラムデータそのものを有していてもよい。
処理依頼時隣接ノード確認信号s4は、並列展開可能ノードへ部分処理を依頼可能か否か確認する信号である。処理依頼時隣接ノード確認信号s4は、Signal IDと、Sender Node IDと、Receiver Node IDと、Reservedと、を有する。処理依頼時隣接ノード確認信号s4のSignal IDは「3」とする。処理依頼時隣接ノード確認信号s4のSender Node IDは、処理依頼時隣接ノード確認信号s4の送信元の識別情報である。処理依頼時隣接ノード確認信号s4のReceiver Node IDは、処理依頼時隣接ノード確認信号s4の送信先の識別情報であり、並列展開可能ノードの識別情報である。処理依頼時隣接ノード確認信号s4のReservedは、予備の領域である。
処理依頼時隣接ノード確認信号s4に対する応答信号s5は、応答可能である場合に送信される信号である。処理依頼時隣接ノード確認信号s4に対する応答信号s5は、Signal IDと、Sender Node IDと、Receiver Node IDと、Reservedと、を有する。応答信号s5のSignal IDは「4」とする。応答信号s5のSender Node IDは、応答信号s5の送信元の識別情報である。応答信号s5のReceiver Node IDは、応答信号s5の送信先の識別情報であり、処理依頼時隣接ノード確認信号s4の送信元の識別情報である。応答信号s5のReservedは、予備の領域である。
処理引き継ぎ依頼信号s6は、部分処理の引き継ぎを依頼する信号である。処理引き継ぎ依頼信号s6は、Signal IDと、Sender Node IDと、Receiver Node IDと、Necessary number of hoppingと、Hopping Counterと、Raw dataと、を有する。処理引き継ぎ依頼信号s6のSignal IDは「5」とする。処理引き継ぎ依頼信号s6のSender Node IDは、処理引き継ぎ依頼信号s6の送信元の識別情報であり、部分処理の処理引き継ぎ依頼元ノードの識別情報である。処理引き継ぎ依頼信号s6のReceiver Node IDは、処理引き継ぎ依頼信号s6の送信先の識別情報であり、部分処理の依頼先の識別情報である。
処理引き継ぎ依頼信号s6のNecessary number of hoppingは、部分処理の実行を完了させるために要する通信ノード数である。処理引き継ぎ依頼信号s6のHopping Counter(ホッピングカウンター)は、部分処理の実行を完了させるために要する通信ノード数のうち、部分処理を実行した通信ノード数がカウントされたカウント値である。たとえば、Necessary number of hoppingの数と、Hopping Counterの数と、が一致している場合、処理引き継ぎ依頼信号s6は、Raw dataを通信装置201への転送を依頼する信号である。処理引き継ぎ依頼信号s6のRaw dataは、部分処理の実行に関する情報であり、たとえば、センシングイベントに応じたセンシングデータを有し、さらに部分処理についてのプログラムデータそのものを有していてもよい。さらに、処理引き継ぎ依頼信号s6のRaw dataは、実行完了済みの部分処理の処理結果も含まれる。
(運用中の通信ノード101の機能的構成例)
図9は、運用中の通信ノードの機能的構成例を示すブロック図である。通信ノード101は、制御部900と、第1受信部901と、第2受信部902と、第1送信部903と、第2送信部904と、信号種別判断部905と、並列展開ノード設定部906と、を有する。通信ノード101は、ノードステート制御部911と、バッテリ判断部912と、ホップカウンター判断部913と、実行部914と、ホップカウンター制御部915と、タイマ制御部916と、パケット生成部917と、を有する。
第1受信部901と、第2受信部902と、は、受信装置310によって実現される。第1送信部903と、第2送信部904と、は、送信装置311によって実現される。信号種別判断部905からパケット生成部917の処理は、たとえば、MCU305がアクセス可能な不揮発メモリ308などの記憶装置に記憶された通信プログラムにコーディングされる。そして、MCU305が不揮発メモリ308に記憶された通信プログラムを読み出して、通信プログラムにコーディングされている処理を実行する。これにより、信号種別判断部905からパケット生成部917の処理が実現される。また、バッテリ判断部912については、MCU305が起動されていない場合、PMU302によって実現される。また、信号種別判断部905からパケット生成部917までの処理結果は、RAM306や不揮発メモリ308などの記憶装置に記憶される。
信号種別判断部905は、受信装置310が受信した信号の種別を判断する。上述したように、各信号に含まれるSignal IDに基づいて、信号種別判断部905は、信号がいずれの種類の信号であるかを判断可能である。また、パケット生成部917は、送信装置311によって送信する信号のパケットを生成する。各信号のパケットは上述した通りである。以降信号種別判断部905と、パケット生成部917と、についての説明は省略する。
タイマ制御部916は、自通信ノード101が有するタイマによって一定期間ごとに隣接ノード確認信号s1を送信させる制御を行う。第1送信部903は、タイマ制御部916の制御によって自通信ノード101と直接無線通信可能な複数の通信ノード101へ隣接ノード確認信号s1を送信する。ここで、隣接ノード確認信号s1の送信のための送信強度は、一定の強度であり、たとえば、運用前に設定信号によって設定された送信強度である。
第1受信部901は、隣接ノード確認信号s1を受信した複数の通信ノード101から、第1送信部903によって送信された隣接ノード確認信号s1に対する応答信号s2を受信する。また、第1受信部901は、隣接ノード確認信号s1を受信した複数の通信ノード101のうちの応答可能な第1通信ノード101からの、第1送信部903によって送信された隣接ノード確認信号s1に対する応答信号s2を受信してもよい。たとえば、受信しても応答可能でない通信ノード101としては、バッテリの残量が不十分である通信ノード101は、隣接ノード確認信号s1を受信しても、隣接ノード確認信号s1に対する応答が行えないため、応答信号s2を送信しない。また、たとえば、故障している通信ノード101は、隣接ノード確認信号s1を受信できない可能性が高いため、応答信号s2を送信できない。そのため、隣接ノード確認信号s1に対する応答信号s2がない周辺の通信ノード101は故障しているとみなすことができる。
並列展開ノード設定部906は、第1受信部901によって受信された応答信号s2の送信元である通信ノード101を並列展開可能ノードに設定する。具体的には、並列展開ノード設定部906は、第1受信部901によって受信された応答信号s2の送信元である通信ノード101の識別情報と、応答信号s2の受信強度と、を関連付けてRAM306、不揮発メモリ308などの記憶装置に記憶させる。不揮発メモリ308に記憶される並列展開可能ノードを示す情報が、応答信号s2の送信元である通信ノード101の識別情報と、応答信号s2の受信強度と、が関連付けられた情報である。また、応答信号s2の受信強度に代わって、後述する距離算出部907によって算出された距離を応答信号s2の送信元である通信ノード101の識別情報に関連付けてもよい。
また、第2受信部902は、複数の通信ノード101のいずれかから、隣接ノード確認信号s1を受信する。バッテリ判断部912は、バッテリ303の電力残量が閾値以上であるか否かを判断する。閾値は、たとえば、データ処理に含まれる部分処理の実行に要する電力量と、並列展開処理依頼信号s3の受信に要する電力量と、処理引き継ぎ依頼信号s6の送信に要する電力量と、の合計値に基づく値である。閾値については、たとえば、不揮発メモリ308などの記憶装置に予め記憶される。これにより、バッテリ303の電力残量が、データ処理に含まれる部分処理の実行に要する電力量と、並列展開処理依頼信号s3の受信に要する電力量と、処理引き継ぎ依頼信号s6の送信に要する電力量と、の合計値に対して十分あるか否かが判断される。
バッテリ判断部912によって電力量が閾値以上であると判断された場合、パケット生成部917は、隣接ノード確認信号s1に対する応答信号s2を生成する。そして、第2送信部904は、パケット生成部917によって生成された隣接ノード確認信号s1に対する応答信号s2を隣接ノード確認信号s1の送信元へ送信する。ここで、応答信号s2の送信のための送信強度は、一定の強度であり、たとえば、運用前に設定された強度である。バッテリ判断部912によって電力量が閾値未満であると判断された場合、第2送信部904は、隣接ノード確認信号s1に対する応答信号s2を送信しない。
図10は、隣接ノード確認信号の送信例を示す説明図である。たとえば、通信ノード101−1は、設定された送信強度によって通信ノード101−1から一定距離d以内にある通信ノード101へ隣接ノード確認信号s1を送信する。通信ノード101−1から一定距離d以内にある通信ノード101は、通信ノード101−2〜101−10である。
図11は、隣接ノード確認信号に対する応答信号の送信例を示す説明図である。図11の例では、通信ノード101−7,101−10は、故障中またはバッテリ303の電力が閾値を満たさないため、隣接ノード確認信号s1に対する応答信号s2を送信しない。また、図11の例では、通信ノード101−2〜101−6,101−8,101−9は、隣接ノード確認信号s1に対する応答信号s2を隣接ノード確認信号s1の送信元である通信ノード101−1へ送信する。
制御部900は、第1受信部901によって受信された応答信号s2の受信強度に基づき応答信号s2の送信元である複数の通信ノード101から選択した、データ処理を依頼する依頼先通信ノードへの送信強度を設定する。より具体的に、制御部900は、距離算出部907と、選択部908と、決定部909と、強度算出部910と、を有する。
距離算出部907は、第1受信部901によって受信された応答信号s2の受信強度に基づいて、自通信ノード101と、応答信号s2の送信元と、の距離を算出する。受信強度については、受信装置310および送信装置311が有するアンテナから得られる。具体的には、距離算出部907は、応答信号s2の受信強度と、応答信号s2の送信強度[dBm]と、送信アンテナ絶対利得[dBi]と、受信アンテナ絶対利得[dBi]と、に基づいて、応答信号s2の受信強度の損失を算出する。距離算出部907は、受信強度を与えると受信強度の損失が得られる第1関数に、受信された応答信号s2の受信強度を与えることにより、応答信号s2の受信強度の損失を算出する。第1関数は、応答信号s2の送信強度と、送信アンテナ絶対利得と、受信アンテナ絶対利得と、の合計値から、与えられた応答信号s2の受信強度を引き算することにより、応答信号s2の受信強度の損失を得る。送信アンテナ絶対利得と、受信アンテナ絶対利得とは、受信装置310および送信装置311が有するアンテナに基づく値であり、固定値であり、予め不揮発メモリ308などの記憶装置に記憶する。そして、距離算出部907は、損失を与えると通信ノード101間の距離を算出可能な以下式(7)に基づく第2関数に、算出した応答信号s2の受信強度の損失を与えることにより、通信ノード101間の距離を算出する。式(7)内のLは損失であり、dは距離[m]であり、λは波長[m]である。波長λは、固定値であり、予め不揮発メモリ308などの記憶装置に記憶する。たとえば、距離算出部907は、応答信号s2の送信元の識別情報と、算出された距離と、を関連付けてRAM306や不揮発メモリ308などの記憶装置に記憶する。
図12は、通信ノード間の距離の算出を行う関数例を示す説明図である。グラフ1200は、通信ノード101間の距離の算出を行う関数に受信強度の損失を与えてプロットした例である。グラフ1200は、各応答信号の受信強度の損失が大きいほど、通信ノード101間の距離が遠くなり、各応答信号の受信強度の損失が小さいほど、通信ノード101間の距離が近くなることを示す。
つぎに、センサー304によってセンシングイベントが発生する。そして、選択部908は、距離算出部907によって算出された自通信ノード101と並列展開可能ノードとの距離に基づいて、センシングイベントに応じたデータ処理の実行を依頼する依頼先を並列展開可能ノードから選択する。
また、センシングイベントに応じたデータ処理が所定数の部分処理に分割して並列処理可能なデータ処理である場合、選択部908は、受信された応答信号s2の受信強度に基づいて、第1通信ノード101から所定数以下の第2通信ノード101を選択する。所定数については、予め並列度としてデータ処理についてのプログラムの設計者によって定められていることとする。所定数は、たとえば、ROM307や不揮発メモリ308などの記憶装置に予め記憶される。具体的には、選択部908は、第2通信ノード101を選択する際に、第1通信ノード101の数が所定数より多い場合、第1受信部901によって受信された応答信号s2の受信強度に基づいて、所定数の第1通信ノード101を選択する。また、選択部908は、第2通信ノード101を選択する際に、第1通信ノード101の数が所定数以下の場合、第1通信ノード101のすべてを選択する。
そして、決定部909は、受信された応答信号s2の受信強度と、所定数の部分処理の各々の処理量に応じた情報と、に基づいて、選択部908によって選択された依頼先の各々に所定数のデータ処理のいずれを依頼するかを決定する。
図13は、各部分処理と部分処理の処理量に応じた情報とを示す説明図である。たとえば、データ処理は、部分処理Aと、部分処理Bと、部分処理Cと、部分処理Dと、の4つに分割して並列処理可能である。部分処理Aの処理長は4である。ここで、処理長は、上述した所要ホップ数であり、部分処理の実行を完了させるために部分処理の実行を行う通信ノード101数である。部分処理Bの処理長は4であり、部分処理Cの処理長は6であり、部分処理Dの処理長は1である。
図14は、選択および決定例1を示す説明図である。たとえば、並列展開可能ノードの数が7であり、並列度が4であるため、選択部908は、算出された距離が近い順に、並列展開可能ノードを4つ選択する。これにより、データ処理をより多く分散させることができる。
そして、決定部909は、距離が近い順に、処理長が大きい部分処理を割り当てることを決定する。たとえば、部分処理Cを通信ノード101−5へ割り当て、部分処理Aを通信ノード101−8に割り当て、部分処理Bを通信ノード101−3に割り当て、部分処理Dを通信ノード101−2に割り当てる。
第2送信部904は、選択部908によって選択された第2通信ノード101の各々へ、第2通信ノード101について決定部909によって決定されたデータ処理を依頼する依頼信号を送信する。
図15は、選択および決定例2を示す説明図である。たとえば、図15に示すように、並列展開可能ノードの数が2であり、並列度が4である場合、選択部908は、2つの通信ノード101を選択する。決定部909は、距離が近い順に、合計の処理長が大きくなるように部分処理を割り当てることを決定する。たとえば、決定部909は、通信ノード101−5に部分処理Aと部分処理Bとを割り当て、通信ノード101−2に部分処理Cと部分処理Dとを割り当てることを決定する。
強度算出部910は、選択部908によって選択された第2通信ノード101からの応答信号s2の受信強度に基づいて、第2通信ノード101と自通信ノード101との間で通信可能な送信強度を算出する。ここでは、強度算出部910は、選択部908によって選択された第2通信ノード101と自通信ノード101との算出された距離に基づいて、第2通信ノード101と自通信ノード101との間で通信可能な送信強度を算出する。具体的には、強度算出部910は、選択部908によって選択された第2通信ノード101と自通信ノード101との算出された距離に基づいて、第2通信ノード101と自通信ノード101との間で通信可能な送信強度の中で、最小の送信強度を算出する。より具体的には、強度算出部910は、距離を与えると送信強度の損失が得られる後述する式(8)に基づく第3関数に、距離を与えることにより、送信強度の損失を算出する。そして、強度算出部910は、送信強度の損失が与えられると送信強度が得られる第4関数に、算出された送信強度の損失を与えることにより、送信強度を得る。第4関数は、与えられた送信強度の損失と、受信可能な最小の受信強度と、の合計値から、送信アンテナ絶対利得と、受信アンテナ絶対利得と、の合計値を引き算することにより、送信強度を得る。式(8)内のLは損失であり、dは距離[m]であり、λは波長[m]である。波長λは、固定値であり、予め不揮発メモリ308などの記憶装置に記憶する。
図16は、送信強度の算出例を示す説明図である。グラフ1600は、送信強度の損失の算出を行う関数に通信ノード101間の距離を与えてプロットした例である。グラフ1600は、通信ノード101間の距離が遠いほど、送信強度の損失が大きくなり、通信ノード101間の距離が近いほど、送信強度の損失が小さくなることを示す。
第2送信部904は、データ処理の実行を依頼する依頼信号を強度算出部910によって算出された送信強度によって第2通信ノード101へ送信する。
第2受信部902は、データ処理の実行を依頼する並列展開処理依頼信号s3を周辺の通信ノード101のうちの第3通信ノード101から受信する。ノードステート制御部911は、受信された並列展開処理依頼信号s3が示すデータ処理の実行の依頼先が自通信ノード101である場合、通信ノード101のstateを「2」に設定する。そして、実行部914は、並列展開処理依頼信号s3によって依頼されたデータ処理の一部を実行する。つぎに、ホップカウンター制御部915は、並列展開処理依頼信号s3によって依頼されたデータ処理についてのホップカウンターの値を1インクリメントする。
そして、第1送信部903は、第1通信ノード101へ処理依頼時隣接ノード確認信号s4を送信する。具体的には、第1送信部903は、記憶装置に記憶された並列展開可能ノードへ処理依頼時隣接ノード確認信号s4を送信する。第1受信部901は、処理依頼時隣接ノード確認信号s4に対する応答信号s5を並列展開可能ノードのうちのいずれかから受信する。
距離算出部907は、応答信号s5の受信強度に基づいて、応答信号s5の送信元と、自通信ノード101と、の距離を算出する。そして、選択部908は、算出された距離が最も短い応答信号s5の送信元を処理引き継ぎ依頼信号s6の依頼先として選択する。
第2送信部904は、ホップカウンター制御部915によってカウントアップされたホップカウンターの値と実行部914による実行結果とを含む処理引き継ぎ依頼信号s6を選択部908によって選択された通信ノード101へ送信する。これにより、第2送信部904は、実行部914によって実行された一部の処理以外のデータ処理の実行と、実行部914によって実行された一部の処理の通信装置201への転送と、を依頼する処理引き継ぎ依頼信号s6を送信することとなる。
そして、ノードステート制御部911は、処理引き継ぎ依頼信号s6が送信された後に、通信ノード101のstateを「0」に設定する。
図17および図18は、処理引き継ぎ依頼例を示す説明図である。通信ノード101−5は、通信ノード101−1からの並列展開処理依頼信号s3を受信する。そして、通信ノード101−5は、並列展開処理依頼信号s3によって依頼されたデータ処理の一部を実行する。通信ノード101−5は、並列展開可能ノードへ処理依頼時隣接ノード確認信号s4を送信する。通信ノード101−5の並列展開可能ノードは、通信ノード101−3,101−4,101−6,101−11,101−12である。
そして、たとえば、通信ノード101−5は、通信ノード101−5の並列展開可能ノードのすべてから処理依頼時隣接ノード確認信号s4に対する応答信号s5を受信することとする。通信ノード101−5は、応答信号s5の受信強度に基づいて各並列展開可能ノードと自通信ノード101との距離を算出する。そして、通信ノード101−5は、最も距離が短い通信ノード101−6を処理引き継ぎ依頼信号s6の送信先として選択する。通信ノード101−5は、通信ノード101−6へ処理引き継ぎ依頼信号s6を送信する。
また、第2受信部902は、周辺の通信ノード101のうちの第3通信ノード101から処理引き継ぎ依頼信号s6を受信する。そして、処理引き継ぎ依頼信号s6に含まれるデータ処理の依頼先が自通信ノード101である場合、ホップカウンター判断部913は、処理引き継ぎ依頼信号s6に含まれるホップカウンターの値が所要ホップ数以上であるか否かを判断する。
実行部914は、ホップカウンター判断部913によってホップカウンターの値が所要ホップ数未満であると判断された場合、処理引き継ぎ依頼信号s6によって依頼されたデータ処理を実行する。そして、ホップカウンター制御部915は、ホップカウンターの値を1インクリメントする。その後、上述したように、通信ノード101は、処理依頼時隣接ノード確認信号s4に対する応答信号s5によって並列展開可能ノードから最も近い距離にある通信ノード101を選択し、選択した通信ノード101へ処理引き継ぎ依頼信号s6を送信する。
ホップカウンター判断部913によってホップカウンターの値が所要ホップ数以上であると判断された場合、実行部914は、データ処理を実行しない。そして、通信ノード101は、処理依頼時隣接ノード確認信号s4によって並列展開可能ノードから最も近い距離にある通信ノード101を選択し、選択した通信ノード101へ処理引き継ぎ依頼信号s6を送信する。
また、第2受信部902は、処理依頼時隣接ノード確認信号s4を受信する。そして、バッテリ判断部912は、第2受信部902によって処理依頼時隣接ノード確認信号s4を受信すると、バッテリ303の残量が起動閾値以上であるか否かを判断する。起動閾値は、起動に要する電力量である。起動閾値以上であると判断された場合、そして、ノードステート制御部911は、処理依頼時隣接ノード確認信号s4の送信元の識別情報を処理引き継ぎ元ノードとして、RAM306、ディスクなどの記憶装置に記憶する。ノードステート制御部911は、stateを「1」に設定する。さらに、第2送信部904は、処理依頼時隣接ノード確認信号s4に対する応答信号s5を処理依頼時隣接ノード確認信号s4の送信元に送信する。
図19は、処理引き継ぎ依頼信号の転送例を示す説明図である。通信ノード101−1で発生したセンシングイベントに応じたデータ処理は通信ノード101−1から通信装置201までの間の通信ノード101に実行される。そして、当該データ処理の処理結果は通信ノード101−1から通信装置201までの間の通信ノード101にマルチホッピング通信によって転送される。図19では、各通信ノード101が送信する信号のパケットp1〜p6を示す。
たとえば、並列展開処理依頼信号s3のパケットp1の「Necessary number of hopping」の値が2である。そのため、通信ノード101−1から送信される並列展開処理依頼信号s3を受信する通信ノード101−5と、通信ノード101−5から送信される処理引き継ぎ依頼信号s6を受信する通信ノード101−6と、は、データ処理を実行する。その後、通信ノード101−6から送信される処理引き継ぎ依頼信号s6のパケットp3の「Hopping Counter」の値と「Necessary number of hopping」の値とが一致する。そのため、通信ノード101−13と通信ノード101−14と通信ノード101−15は、処理引き継ぎ依頼信号s6をデータ処理の処理結果の転送信号として処理引き継ぎ依頼信号s6を通信装置201まで転送する。
(通信ノード101による通信処理手順例)
図20〜図26は、通信ノードによる通信処理手順例を示すフローチャートである。ここでは、MCU305によるステップについてはMCU305によって実行されることを省略する。通信ノード101は、PMU302によって、イベントの発生を検出したか否かを判断する(ステップS2001)。イベントの発生を検出していない場合(ステップS2001:No)、通信ノード101は、PMU302によって、ステップS2001へ戻る。
タイマによる起動イベントが発生した場合(ステップS2001:タイマ起動)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2002)。通信ノード101は、MCU305によって、バッテリ303の残量>起動閾値か否かを判断する(ステップS2003)。バッテリ303の残量>起動閾値でない場合(ステップS2003:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。バッテリ303の残量>起動閾値である場合(ステップS2003:Yes)、通信ノード101は、MCU305と送信装置311によって、隣接ノード確認信号s1を送信する(ステップS2004)。そして、通信ノード101は、受信装置310によって、隣接ノード確認信号s1を送信してから一定時間内に応答信号s2を受信したか否かを判断する(ステップS2005)。
一定時間内である場合(ステップS2005:一定時間内)、通信ノード101は、受信装置310によって、ステップS2005へ戻る。一方、一定時間経過した場合(ステップS2005:一定時間経過)、通信ノード101は、MCU305によって、応答信号s2の送信元の各々について、応答信号s2の受信強度に基づいて、自通信ノード101との距離を算出する(ステップS2006)。通信ノード101は、MCU305によって、応答信号s2の送信元を並列展開可能ノードとし、算出した距離を関連付けて出力する(ステップS2007)。そして、通信ノード101は、MCU305によって、Sleep状態に遷移し(ステップS2012)、一連の処理を終了する。
また、隣接ノード確認信号s1が受信された場合(ステップS2001:隣接ノード確認信号の受信)、通信ノード101は、PMU302によって、MCU305が起動済みか否かを判断する(ステップS2008)。起動済みの場合(ステップS2008:Yes)、通信ノード101は、MCU305によって、ステップS2011へ移行する。一方、起動済みでない場合(ステップS2008:No)、PMU302によって、バッテリ303の残量>閾値であるか否かを判断する(ステップS2009)。
バッテリ303の残量>閾値である場合(ステップS2009:Yes)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2010)。そして、通信ノード101は、MCU305と送信装置311によって、隣接ノード確認信号s1に対する応答信号s2を送信し(ステップS2011)、ステップS2012へ移行する。一方、ステップS2009において、バッテリ303の残量>閾値でない場合(ステップS2009:No)、通信ノード101は、PMU302によって、ステップS2012へ移行する。
センシングイベントが発生した場合(ステップS2001:センシング)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2101)。通信ノード101は、MCU305によって、バッテリ303の残量>起動閾値であるか否かを判断する(ステップS2102)。バッテリ303の残量>起動閾値でない場合(ステップS2102:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。バッテリ303の残量>起動閾値である場合(ステップS2102:Yes)、通信ノード101は、MCU305によって、並列展開可能ノード数≧最大並列度であるか否かを判断する(ステップS2103)。
並列展開可能ノード数≧最大並列度である場合(ステップS2103:Yes)、通信ノード101は、MCU305によって、並列展開可能ノードから、距離の近い順に最大並列度の並列展開可能ノードを依頼先として選択する(ステップS2104)。
通信ノード101は、MCU305によって、各部分処理の所要ホップ数を特定する(ステップS2105)。そして、通信ノード101は、MCU305によって、選択した並列展開可能ノードに対する、距離と部分処理の所要ホップ数に基づいて、部分処理の割り当てを決定する(ステップS2106)。そして、通信ノード101は、MCU305によって、選択した並列展開可能ノードについての距離に基づいて、送信強度を算出する(ステップS2107)。つぎに、通信ノード101は、MCU305と送信装置311によって、算出した送信強度によって並列展開処理依頼を送信し(ステップS2108)、ステップS2012へ移行する。
並列展開可能ノード数≧最大並列度でない場合(ステップS2103:No)、通信ノード101は、MCU305によって、すべての並列展開可能ノードを依頼先として選択する(ステップS2201)。つぎに、通信ノード101は、MCU305によって、「割り当て処理単位=並列度/並列展開可能ノード数」とする(ステップS2202)。そして、通信ノード101は、MCU305によって、各部分処理の所要ホップ数を特定する(ステップS2203)。つづけて、通信ノード101は、MCU305によって、選択した並列展開可能ノードに対する、距離と部分処理の所要ホップ数に基づいて、部分処理の割り当てを決定する(ステップS2204)。
そして、通信ノード101は、MCU305によって、「並列度/並列展開可能ノード数」の余り=0であるか否かを判断する(ステップS2205)。「並列度/並列展開可能ノード数」の余り=0でない場合(ステップS2205:No)、通信ノード101は、MCU305によって、距離が近い通信ノード101順に残余の部分処理の割り当てを決定し(ステップS2206)、ステップS2107へ移行する。残余の部分処理は、依頼先が決定していない部分処理である。「並列度/並列展開可能ノード数」の余り=0である場合(ステップS2205:Yes)、通信ノード101は、MCU305によって、ステップS2107へ移行する。
また、並列展開処理依頼信号s3を受信した場合(ステップS2001:並列展開処理依頼信号の受信)、通信ノード101は、PMU302によって、MCU305を起動済みか否かを判断する(ステップS2301)。起動済みである場合(ステップS2301:Yes)、通信ノード101は、PMU302によって、ステップS2304へ移行する。
起動済みでない場合(ステップS2301:No)、通信ノード101は、PMU302によって、バッテリ303の残量>起動閾値であるか否かを判断する(ステップS2302)。バッテリ303の残量>起動閾値でない場合(ステップS2302:No)、通信ノード101は、PMU302によって、ステップS2012へ移行する。バッテリ303の残量>起動閾値である場合(ステップS2302:Yes)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2303)。そして、通信ノード101は、MCU305によって、依頼先が自通信ノード101か否かを判断する(ステップS2304)。ここでの依頼先の識別情報は、並列展開処理依頼信号s3に含まれる「Receiver Node ID」である。依頼先の識別情報が自通信ノード101を示さない場合(ステップS2304:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。
依頼先の識別情報が自通信ノード101を示す場合(ステップS2304:Yes)、通信ノード101は、MCU305によって、state=2とする(ステップS2305)。そして、通信ノード101は、MCU305によって、ホップカウンターの値≦所要ホップ数であるか否かを判断する(ステップS2306)。ホップカウンターの値≦所要ホップ数でない場合(ステップS2306:No)、通信ノード101は、MCU305によって、ステップS2308へ移行する。
ホップカウンターの値≦所要ホップ数である場合(ステップS2306:Yes)、通信ノード101は、MCU305によって、依頼されたデータ処理の実行を行う(ステップS2307)。その後、通信ノード101は、MCU305によって、ホップカウンターの値をインクリメントする(ステップS2308)。
つぎに、通信ノード101は、MCU305によって、処理依頼時隣接ノード確認信号s4を並列展開可能ノードへ送信する(ステップS2401)。通信ノード101は、MCU305と受信装置310によって、処理依頼時隣接ノード確認信号s4を送信してから一定時間内に応答信号s5を受信したか否かを判断する(ステップS2402)。一定時間内の場合(ステップS2402:一定時間内)、通信ノード101は、MCU305と受信装置310によって、ステップS2402へ戻る。一定時間経過した場合(ステップS2402:一定時間経過)、通信ノード101は、MCU305によって、各応答信号s5の受信強度に基づき、各応答信号s5の送信元と自通信ノード101との距離を算出する(ステップS2403)。
通信ノード101は、MCU305によって、最短距離である送信元を依頼先の通信ノード101として選択する(ステップS2404)。そして、通信ノード101は、MCU305によって、選択した通信ノード101の距離に基づき送信強度を算出する(ステップS2405)。通信ノード101は、MCU305と送信装置311によって、算出した送信強度によって処理引き継ぎ依頼信号s6を選択した通信ノード101へ送信する(ステップS2406)。そして、通信ノード101は、MCU305によって、state=0とし(ステップS2407)、ステップS2012へ移行する。
また、処理引き継ぎ依頼信号s6を受信した場合(ステップS2001:処理引き継ぎ依頼信号の受信)、通信ノード101は、PMU302によって、MCU305を起動済みか否かを判断する(ステップS2501)。起動済みである場合(ステップS2501:Yes)、通信ノード101は、MCU305によって、ステップS2504へ移行する。
起動済みでない場合(ステップS2501:No)、通信ノード101は、PMU302によって、バッテリ303の残量>起動閾値であるか否かを判断する(ステップS2502)。バッテリ303の残量>起動閾値でない場合(ステップS2502:No)、通信ノード101は、PMU302によって、ステップS2012へ移行する。バッテリ303の残量>起動閾値である場合(ステップS2502:Yes)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2503)。そして、通信ノード101は、MCU305によって、依頼先が自通信ノード101であるか否かを判断する(ステップS2504)。
依頼先が自通信ノード101である場合(ステップS2504:Yes)、通信ノード101は、MCU305によって、ステップS2305へ移行する。依頼先が自通信ノード101でない場合(ステップS2504:No)、通信ノード101は、MCU305によって、stateが「1」であるか否かを判断する(ステップS2505)。
stateが「1」でない場合(ステップS2505:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。stateが「1」である場合(ステップS2505:Yes)、通信ノード101は、MCU305によって、依頼元が記憶した処理引き継ぎ元ノードと同一か否かを判断する(ステップS2506)。依頼元が記憶した処理引き継ぎ元ノードと同一である場合(ステップS2506:Yes)、通信ノード101は、MCU305によって、state=0とし(ステップS2507)、ステップS2012へ移行する。依頼元が記憶した処理引き継ぎ元ノードと同一でない場合(ステップS2506:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。
処理依頼隣接ノード確認信号s4を受信した場合(ステップS2001:処理依頼隣接ノード確認信号の受信)、通信ノード101は、PMU302によって、MCU305を起動済みか否かを判断する(ステップS2601)。起動済みである場合(ステップS2601:Yes)、通信ノード101は、PMU302によって、ステップS2604へ移行する。
起動済みでない場合(ステップS2601:No)、通信ノード101は、PMU302によって、バッテリ303の残量>起動閾値であるか否かを判断する(ステップS2602)。バッテリ303の残量>起動閾値でない場合(ステップS2602:No)、通信ノード101は、PMU302によって、ステップS2012へ移行する。一方、バッテリ303の残量>起動閾値である場合(ステップS2602:Yes)、通信ノード101は、PMU302によって、MCU305を起動する(ステップS2603)。そして、通信ノード101は、MCU305によって、隣接ノードが自通信ノード101か否かを判断する(ステップS2604)。ここでの隣接ノードは、処理依頼隣接ノード確認信号s4に含まれる「Receiver Node ID」が示す通信ノード101である。隣接ノードが自通信ノード101でない場合(ステップS2604:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。
隣接ノードが自通信ノード101である場合(ステップS2604:Yes)、通信ノード101は、MCU305によって、stateが「0」であるか否かを判断する(ステップS2605)。stateが「0」でない場合(ステップS2605:No)、通信ノード101は、MCU305によって、ステップS2012へ移行する。stateが「0」である場合(ステップS2605:Yes)、通信ノード101は、MCU305によって、stateを「1」に設定する(ステップS2606)。通信ノード101は、MCU305によって、処理依頼時隣接ノード確認信号s4の送信元を処理引き継ぎ元ノードとして記憶する(ステップS2607)。そして、通信ノード101は、MCU305と送信装置311によって、処理依頼時隣接ノード確認信号s4に対する応答信号s5を送信元へ送信し(ステップS2608)、ステップS2012へ移行する。
以上説明したように、本実施の形態にかかる通信ノードが、応答可能か否かの確認信号に対する応答信号の受信強度に基づいて、データ処理の依頼信号の送信先および送信強度を決定する。これにより、より近いと推定される通信ノードへ少ない電力で依頼信号を送信することができる。したがって、適切な通信相手にデータ処理を実行させることができ、無線送信による消費電力を低減することができる。
また、本実施の形態にかかる通信ノードは、応答信号の受信強度に基づいて応答信号の送信元と自通信ノードとの距離を算出し、当該送信元から距離が近い順にデータ処理を依頼する通信ノードを決定する。これにより、距離がより近い通信ノードへ少ない電力で依頼信号を送信することができ、無線送信による消費電力を低減させることができる。
また、本実施の形態にかかる通信ノードは、応答信号の受信強度に基づいて、依頼先の通信ノードと自通信ノードとの間で通信可能な送信強度の中で、最小の送信強度を算出する。これにより、最小限の電力で依頼信号を送信することができ、無線送信による消費電力を低減させることができる。
また、データ処理は、所定数の部分処理に分割して並列処理可能なデータ処理である場合、本実施の形態にかかる通信ノードは、応答信号の受信強度に基づいて、応答信号の送信元から所定数以下の通信ノードを部分処理の依頼先として選択する。これにより、並列処理可能なデータ処理を複数の通信ノードに分散させることができる。
また、本実施の形態にかかる通信ノードは、依頼先の通信ノードを選択する際に、応答信号の送信元の通信ノード数が所定数より多い場合、応答信号の受信強度に基づいて、応答信号の送信元から所定数の通信ノードをデータ処理の依頼先として選択する。また、通信ノードは、依頼先の通信ノードを選択する際に、応答信号の送信元の通信ノード数が所定数以下の場合、応答信号の送信元をすべてデータ処理の依頼先として選択する。これにより、データ処理をより多く分散させることができ、データ処理の実行とデータ処理の処理結果の転送とを依頼する依頼信号の送受信に要する電力量を低減させることができる。
また、本実施の形態にかかる通信ノードは、応答信号の受信強度と、所定数の部分処理の各々の処理量に応じた情報と、に基づいて、データ処理の依頼先として選択した通信ノードの各々に所定数のデータ処理のいずれを依頼するかを決定する。通信ノードは、応答信号の受信強度が大きい順に所定数の部分処理のうちの依頼される部分処理の処理量が最も多くなるように、データ処理の依頼先として選択した通信ノードの各々に所定数のデータ処理のいずれを依頼するかを決定する。
また、本実施の形態にかかる通信ノードは、依頼されたデータ処理の実行が終了した場合、処理結果を集約する通信装置へ処理結果の転送を依頼する依頼信号を送信する。これにより、処理結果を通信装置まで転送させることができる。
また、本実施の形態にかかる通信ノードは、依頼されたデータ処理の一部の実行が終了した場合、処理結果を集約する通信装置へ処理結果の転送と、データ処理の残余の処理の実行と、を依頼する依頼信号を送信する。これにより、最小限の電力で処理の引き継ぎを依頼する依頼信号を送信することができ、無線送信による消費電力を低減させることができる。
また、本実施の形態にかかる通信ノードが、受信強度を与えると送信強度が得られる関数に、応答可能か否かの確認信号に対する応答信号の受信強度を与えることにより、データ処理の依頼信号の送信先への送信強度を得られる。
また、本実施の形態にかかる通信ノードが、応答可能か否かの確認信号に対する応答信号の受信強度に基づいてデータ処理の依頼信号の送信先を選択し、選択した送信先への送信強度を制御する。これにより、適切な通信相手にデータ処理を実行させることができる。
また、本実施の形態にかかる通信ノードは、確認信号を受信しても、バッテリの残量が少ない場合、確認信号に対する応答信号を送信しない。これにより、バッテリ切れによってデータ処理の実行が中断することを防ぎ、データ処理の処理結果をより早く通信装置へ転送させることができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数の通信ノードへ、応答可能か否かの確認信号を送信する第1送信部と、
前記複数の通信ノードのうちの応答可能な第1通信ノードからの、前記第1送信部が送信した前記確認信号に対する応答信号を受信する受信部と、
前記受信部が受信した前記応答信号の受信強度に基づいて、自通信ノードからデータ処理の実行を依頼する第2通信ノードを前記第1通信ノードから選択する選択部と、
前記選択部が選択した前記第2通信ノードからの前記応答信号の受信強度に基づいて、前記第2通信ノードへの送信強度を算出する強度算出部と、
前記データ処理の実行を依頼する依頼信号を前記強度算出部が算出した前記送信強度に基づいて前記第2通信ノードへ送信する第2送信部と、
を有することを特徴とする通信ノード。
(付記2)前記第1通信ノードの各々について、前記受信部によって受信された前記応答信号の受信強度に基づいて、前記第1通信ノードと自通信ノードとの距離を算出する距離算出部を有し、
前記選択部は、前記距離算出部が算出した距離に基づいて、自通信ノードからデータ処理の実行を依頼する第2通信ノードを前記第1通信ノードから選択し、
前記強度算出部は、前記第2通信ノードについて前記距離算出部が算出した距離に基づいて、前記第2通信ノードへの送信強度を算出することを特徴とする付記1に記載の通信ノード。
(付記3)前記強度算出部は、前記第2通信ノードと自通信ノードとの間で直接通信可能な送信強度の中で、最小の送信強度を算出することを特徴とする付記1または2に記載の通信ノード。
(付記4)前記データ処理は、自通信ノードのイベントに応じたデータ処理であって、所定数の部分処理に分割して並列処理可能なデータ処理であり、
前記選択部は、前記受信部が受信した前記応答信号の受信強度に基づいて、前記第1通信ノードから前記所定数以下の第2通信ノードを選択し、
前記第2送信部は、前記選択部が選択した前記第2通信ノードの各々に前記所定数の部分処理のうちの異なる部分処理を依頼する依頼信号を送信することを特徴とする付記1〜3のいずれか一つに記載の通信ノード。
(付記5)前記選択部は、前記第2通信ノードを選択する際に、前記第1通信ノードの数が前記所定数より多い場合、前記受信部によって受信された前記応答信号の受信強度に基づいて、前記所定数の第1通信ノードを選択し、前記第1通信ノードの数が前記所定数以下の場合、前記第1通信ノードのすべてを選択することを特徴とする付記4に記載の通信ノード。
(付記6)前記受信部が受信した前記応答信号の受信強度と、前記所定数の部分処理の各々の処理量に応じた情報と、に基づいて、前記選択部が選択した前記第2通信ノードの各々に前記所定数のデータ処理のいずれを依頼するかを決定する決定部を有し、
前記第2送信部は、前記第2通信ノードの各々へ、前記第2通信ノードについて前記決定部が決定したデータ処理を依頼する依頼信号を送信することを特徴とする付記4または5に記載の通信ノード。
(付記7)前記決定部は、前記応答信号の受信強度が大きい順に前記所定数の部分処理のうちの依頼される部分処理の前記処理量が最も多くなるように、前記第2通信ノードの各々に前記所定数のデータ処理のいずれを依頼するかを決定することを特徴とする付記6に記載の通信ノード。
(付記8)データ処理の実行を依頼する依頼信号を前記複数の通信ノードのうちの第3通信ノードから受信する第2受信部と、
前記第2受信部が受信した前記依頼信号によって依頼されたデータ処理を実行する実行部と、
を有し、
前記第2送信部は、前記実行部が実行した前記データ処理の処理結果を集約する通信装置への前記処理結果の転送を依頼する依頼信号を前記選択部が選択した前記第2通信ノードへ送信することを特徴とする付記1〜3のいずれか一つに記載の通信ノード。
(付記9)データ処理の実行を依頼する依頼信号を前記複数の通信ノードのうちの第3通信ノードから受信する第2受信部と、
前記依頼信号によって依頼されたデータ処理うちの一部の処理を実行する実行部と、
を有し、
前記第2送信部は、前記データ処理の処理結果を集約する通信装置への前記実行部が実行した前記一部の処理の処理結果の転送と、前記データ処理のうちの前記一部の処理以外の処理の実行と、を依頼する依頼信号を、前記選択部が選択した前記第2通信ノードへ送信することを特徴とする付記1〜3のいずれか一つに記載の通信ノード。
(付記10)自発電した電力を蓄電する蓄電部と、
前記複数の通信ノードのうちの第3通信ノードから、自通信ノードが応答可能か否かの第2確認信号を受信する第2受信部と、
前記第2受信部が前記第2確認信号を受信すると、前記蓄電部に蓄電された電力量が閾値以上か否かを判断する判断部と、
を有し、
前記第2送信部は、前記電力量が前記閾値以上であると前記判断部が判断した場合、前記第2確認信号に対する応答信号を前記第3通信ノードへ送信し、前記電力量が前記閾値未満であると前記判断部が判断した場合、前記第2確認信号に対する応答信号を前記第3通信ノードへ送信しないことを特徴とする付記1〜3のいずれか一つに記載の通信ノード。
(付記11)前記強度算出部は、
前記選択部が選択した前記第2通信ノードからの前記応答信号の受信強度を、前記応答信号の受信強度を与えると自通信ノードから前記第2通信ノードへ前記依頼信号が到達可能な送信強度が得られる関数に与えることにより、前記第2通信ノードへの送信強度を算出することを特徴とする付記1〜10のいずれか一つに記載の通信ノード。
(付記12)複数の通信ノードと、
前記複数の通信ノードからデータ処理の処理結果を集約する通信装置と、
を有するシステムであって、
前記複数の通信ノードのうちの第1通信ノードが、
複数の第2通信ノードへ、応答可能か否かの確認信号を送信し、
前記複数の第2通信ノードのうちの応答可能な第3通信ノードからの、送信した前記確認信号に対する応答信号を受信し、
受信した前記応答信号の受信強度に基づいて、前記第1通信ノードからデータ処理の実行を依頼する第4通信ノードを前記第3通信ノードから選択し、
選択した前記第4通信ノードからの前記応答信号の受信強度に基づいて、前記第4通信ノードへの送信強度を算出し、
前記データ処理の実行を依頼する依頼信号を算出した前記送信強度に基づいて前記第4通信ノードへ送信することを特徴とするシステム。
(付記13)通信ノードが、
複数の通信ノードへ、応答可能か否かの確認信号を送信し、
前記複数の通信ノードのうちの応答可能な第1通信ノードからの、送信した前記確認信号に対する応答信号を受信し、
受信した前記応答信号の受信強度に基づいて、自通信ノードからデータ処理の実行を依頼する第2通信ノードを前記第1通信ノードから選択し、
選択した前記第2通信ノードからの前記応答信号の受信強度に基づいて、前記第2通信ノードへの送信強度を算出し、
前記データ処理の実行を依頼する依頼信号を算出した前記送信強度に基づいて前記第2通信ノードへ送信する、
処理を実行することを特徴とする通信方法。
(付記14)通信ノードは、
複数の通信ノードへ、応答可能か否かの確認信号を送信し、
前記複数の通信ノードのうちの応答可能な第1通信ノードからの、送信した前記確認信号に対する応答信号を受信し、
受信した前記応答信号の受信強度に基づいて、自通信ノードからデータ処理の実行を依頼する第2通信ノードを前記第1通信ノードから選択し、
選択した前記第2通信ノードからの前記応答信号の受信強度に基づいて、前記第2通信ノードへの送信強度を算出し、
前記データ処理の実行を依頼する依頼信号を算出した前記送信強度に基づいて前記第2通信ノードへ送信する、
処理を実行させることを特徴とする通信プログラム。
(付記15)応答可能か否かを示す確認信号を送信する第1送信部と、
前記確認信号を受信した複数の通信ノードから、応答可能であることを示す応答信号を受信する受信部と、
前記受信部が受信した前記応答信号の受信強度に基づき前記複数の通信ノードから選択した、データ処理を依頼する依頼先通信ノードへの送信強度を設定する制御部と、
設定した前記送信強度に基づき、前記依頼先通信ノードへデータ処理を依頼する依頼信号を送信する第2送信部と、
を有することを特徴とする通信ノード。