【新規性喪失の例外の表示】特許法第30条第2項適用 戦略的情報通信研究開発推進制度(SCOPE)の平成24年度採択課題として選定され,ウェブサイト http://www.soumu.go.jp/,main_sosiki/joho_tsusin/scope/subject/s_h24.html に掲載された。
【文献】
衣川 昌宏,外4名,「メッセージング・ネットワークを用いたセンサネットワーク構築手法の提案」,情報処理学会研究報告,社団法人 情報処理学会,2008年 6月12日,Vol.2008,No.54,p.51−55
(58)【調査した分野】(Int.Cl.,DB名)
それぞれ少なくとも1つのセンサと,設定されるタスクに従い機能が変更可能であって,前記センサで検知されるセンシングデータを前記機能に従い生成する情報処理機能部を有する複数のセンサノードと,
利用者が与える動作仕様を記載したシナリオに対応するタスクを生成する手段と,
さらに,前記生成されるタスクを前記複数のセンサノードの対応するセンサノードに転送する通信手段を有する,
ことを特徴とするセンサネットワークシステム。
複数のセンサノードを有し,それぞれのセンサノードは少なくとも1つのセンサを有し,且つ前記センサで検知される情報に対する処理を行う情報処理機能部を有し,前記情報処理機能部の機能変更が可能である,複数のセンサネットワークと,
他の既存情報システムと,
前記複数のセンサネットワークと他の既存情報システムとを接続したデマンド・アドレッサブル・ネットワークを有し,
前記デマンド・アドレッサブル・ネットワークは,
利用者が与える情報取得要求を,要素に分解し,単純なパラメータの組み合わせから成るサブ要求に展開する手段と,
前記サブ要求に展開する手段により展開されたサブ要求又はその組み合わせに基づいて,ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムを求める手段と,
前記センサネットワークまたは既存情報システムにより求めたデータをネットワーク内で統合して前記利用者に提供する手段を有する,
ことを特徴とするセンサネットワークシステム。
複数のセンサネットワークと,他の既存情報システムと,前記複数のセンサネットワークと他の既存情報システムとを接続したデマンド・アドレッサブル・ネットワークを有するセンサネットワークシステムにおけるデータ取得方法であって,
前記デマンド・アドレッサブル・ネットワークにおいて,
利用者が与える情報取得要求を,要素に分解し,単純なパラメータの組み合わせから成るサブ要求に展開する工程と,
前記展開されたサブ要求又はその組み合わせに基づいて,ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムを求める工程と,
前記センサネットワーク又は既存情報システムにより求めたデータをネットワーク内で統合して前記利用者に提供する工程を有する,
ことを特徴とするセンサネットワークシステムにおけるデータ取得方法。
【発明を実施するための形態】
【0033】
以下図面に従い,本発明の実施の形態例を説明する。ただし,実施の形態例は,発明の理解のためであり,本発明の保護の範囲は,かかる実施の形態例に限定されるものではない。
【0034】
図1は,本発明に従うセンサネットワークシステムの一実施の形態例構成を示す図である。
【0035】
なお,以下の説明において,図示される複数の同様要素のそれぞれを示すときは,参照番号に添え字を付し,同様要素の全体を指すときには,添え字なしで参照番号のみを付して説明する。
【0036】
図1において,複数の基地局1
1〜1
p(図では,1
1〜1
3までを示す)とセンサノード2
1〜2
q(図では,2
1〜1
10までを示す)を有し,それぞれ互いに無線通信により接続してセンサネットワーク100を構成する。
【0037】
センサノード2
1〜2
q同士は,マルチホップ通信方式により各センサノード2で取得したセンシングデータを1つ以上の基地局1へ転送する。
【0038】
センサノード2から基地局1に届いたセンシングデータは,基地局同士を接続するネットワーク3を介して,最終的にある1つの基地局1
3に接続されたユーザ端末4に集約される。ここで,基地局1同士を接続する基地局用ネットワーク3はIEEE802.11b などの標準的な無線LANを用いて構築可能である。ルーティングプロトコルとして標準化されているAODV(Ad hoc On-Demand Distance Vector)プロトコルなどの動的ルーティング方式を採用すれば,たとえ幾つかの基地局1が途中で死滅しても,基地局同士の通信は継続的に維持可能となる。
【0039】
したがって,同じ基地局用ネットワーク3に参加できる無線機能を持つユーザ端末4を投入すれば,その端末4に各基地局1
1〜1
pが受信したセンシングデータを転送することにより,全てのセンシングデータをユーザ端末4およびローカルデータベース(local DB)5に集約することが可能となる。
【0040】
一方,センサノード2同士で構成するセンサノード用ネットワーク6は,基地局1と同様に標準的な無線LANを用いて構築できるほか,ZigBee 方式など他の標準化された無線方式などを用いても構築できる。
【0041】
センサノード用ネットワーク6でも,基地局用ネットワーク3と同様に,マルチホップ通信に対応した動的ルーティングプロトコルを用いることにより,各センサノード2から複数の基地局1への経路を動的に確保することができる。
【0042】
また,複数個の基地局1
1〜1
pを設置することにより,各基地局1の物理的な位置が既知であれば,それを基準として,位置が未知である各センサノード2の位置推定が可能となる。すなわち,複数の基地局1
1〜1
pが基地局用ネットワーク3を構成し,互いの情報を自由に交換できることから,あるセンサノード2から各基地局1に至る通信ホップ数をユーザ端末4に集約できる。
【0043】
ユーザ端末4では,それら情報を総合して,各センサノード2の位置推定行う。具体的な位置推定方法は,3点測量やホップ数に基づく方法など既知の方法が使用できる。また,各基地局1の絶対的な位置を知るには,各基地局1にGPS受信機を搭載する事により可能である。勿論,基地局1を設置する際に、その位置が既知であれば,その値を直接当該基地局に設定することでも実現できる。
【0044】
さらに,センサネットワーク100をインターネットや後述する広域ネットワークに接続するためにゲートウエイ装置(GW)7を設ける。
【0045】
図2に上記センサネットワーク100の構成要素であるセンサノード2の構成例を示す。センサノード2は,無線モジュール20,論理可変ハードウエア21,CPU22,ADC(アナログデジタルコンバータ)23,センサ24,ワーキングメモリ25,プログラム格納メモリ26,コンフィギュレーションメモリ27,及びコンフィギュレーション回路28を有する。これらの要素は,互いにバス29を介して情報交換できる。
【0046】
無線モジュール20は,センサ24が取得し,ADC23を通してデジタル化された数値情報を制御手段としてのCPU22または論理可変ハードウエア21を介して外部へ無線パケットとして送出する。また,無線モジュール20は,外部から届く無線パケットの受信を行う。
【0047】
CPU22は,当該センサノード2に搭載された他の構成要素を制御し,センサノード2全体の制御を行う。ワーキングメモリ25は,CPU22で現在動作しているプログラムおよびセンサ24から取得したデータなどをバッファ格納するメモリであり,DRAMなどを用いて実現される。
【0048】
プログラム格納メモリ26は,フラッシュメモリなどの書き込み読み出し可能な不揮発メモリで構成し,バンク構造を持つ。
図2に示す例では5バンク構成としているが,より多くのバンクを持つ構成にしてもよい。バンク0には,CPU22上で動作するオペレーティングシステム(OS)や共通アプリケーションプログラムおよび現在使用するバンク番号を格納する「開始バンク格納領域」を持つ。
【0049】
センサノード2は電源を投入時,またはリセット時に,機械的にバンク0内の内容をワーキングメモリ25にコピーし,CPU22のプログラムカウンタをワーキングメモリ25内のそれらをコピーした先頭番地にセットし,OSおよびアプリケーションプログラムを起動する。
【0050】
その後,CPU22はプログラム格納メモリ26のメモリバンク0内の「開始バンク格納領域」にアクセスし,現在起動すべきタスクプログラムが格納されているバンク番号を知り,プログラム格納メモリ26から,当該バンク内に格納されているタスクプログラムをワーキングメモリ25にコピーする。ついで,当該タスクを実行する。
【0051】
また,CPU22は,任意時刻にプログラム格納メモリ26の任意のバンクにアクセスし,その内容をワーキングメモリ25にコピーし,当該タスクを起動することができる。
【0052】
コンフィギュレーションメモリ27もバンク構成をとり,それぞれのバンクには,論理可変ハードウエア21の論理回路情報すなわちコンフィギュレーションデータが格納されている。
図2ではコンフィギュレーションメモリ27のバンクをバンク11からバンク15の5バンク構成としているが,バンク数は用途に合わせて任意に設定してよい。コンフィギュレーションメモリ27はフラッシュメモリなどの書き込み読み出しが可能な不揮発性メモリで構成される。
【0053】
コンフィギュレーション回路28は,内部に「開始バンク番号レジスタ」281を持ち,当該レジスタ281が指し示すバンク内のコンフィギュレーションデータを用いて,論理可変ハードウエア21に論理回路を実現(コンフィギュレーション)する。
【0054】
コンフィギュレーション回路28の起動は,センサノード2の電源投入時やリセット時だけでなく,CPU22の指示で,任意時刻に行える。
【0055】
また,CPU22のみで,論理可変ハードウエア21を全く使用しない場合は,電力消費を抑えるために,論理可変ハードウエア21への電源供給を停止するとともに,バス29から論理的に切り離しておくこともできる。コンフィギュレーション回路28内の「開始バンク番号レジスタ」281の内容は,CPU22から任意時刻に書き換えることができる。
【0056】
図2のセンサノード2の構成を用いれば,プログラム格納メモリ26には,CPU22で動作するプログラムが保持され,その内容を書きかえることにより,センサノード2の振舞い・機能を変更できる。
【0057】
また,電源を切っても,そのプログラム内容は,プログラム格納メモリ26に保持され,再び電源を投入したとき,当該プログラム格納メモリ26からワーキングメモリ25に電源を切った時のプログラム類がコピーされ,動作を開始する。これにより機能が電源を切る前の状態に復元される。論理可変ハードウエア21の機能も,同様に,コンフィギュレーション回路28を介して,コンフィギュレーションメモリ27内に格納されている,開始バンク番号格納レジスタ281が指し示すコンフィギュレーションデータが論理可変ハードウエア21にコンフィギュレーションされることにより,自動的に再現される。
【0058】
ここで,論理可変ハードウエア21は,CPU22で行う処理の一部を効率的にハードウエア論理で実行するために用いる。例えば,無線パケットのエラー訂正符号・復号処理や,取得した複数のセンシングデータの値を用いてある危険な状況が起こっているかを判断する処理などが含まれる。論理可変ハードウエア21は,FPGA(Field rogrammable Gate Array)などの論理回路機能を外部から変更できるデバイスを用いて構成する。
【0059】
また,前述したコンフィギュレーション回路28を設けることなく,CPU22に可変ハードウエアをコンフィギュレーションするためのプログラムを起動し,それを用いて,コンフィギュレーションメモリ27内に格納されたコンフィギュレーションデータを論理可変ハードウエア21にロードすることにより,論理可変ハードウエア21の論理機能を変更するようにしてもよい。
【0060】
さらに,各センサノード2は,次のような機能を実装する。
【0061】
(1)自分のセンサ24を制御し,いつどのようなセンサ24を起動するか,あるいは,センサ24が取得したセンシングデータをいつどこに向かって無線パケットに搭載して送出するかを決定・実行する機能,(2)隣接センサノード2から受信した無線パケットを他のセンサノード2または基地局1に転送するかを決定実行する機能などである。
【0062】
センサネットワーク100全体は,上述した動作を自律的に実行するセンサノード2
1〜2
qと基地局1
1〜1
pの集合体として構成される。よって,
図2のセンサノード2の機能を変更することにより,物理的に同一のセンサネットワーク100の構成であっても,環境情報の取得方法や取得したセンシングデータのユーザ端末4への転送方法おいて,異なる機能動作を実現できる。
【0063】
本発明は,かかる機能動作のカスタマイズを積極的に利用者に開放するために,機能カスタマイズ技術を設ける。
図1に示すように,各センサノード2の機能を変更する手段としてのタスクサーバ10をセンサネットワーク100に接続する。
【0064】
タスクサーバ10は,PCなどの汎用計算機からなり,機能カスタマイズ技術として,シナリオ・コンパイラ11,タスク・ライブラリ12,シナリオ記述13を有して,種々のタスクを含むタスク群14が得られる。
【0065】
利用者は,ユーザ端末4からセンサネットワーク100を通して,タスクサーバ10にアクセスし,センサノード2が果たすべき動作仕様をシナリオ記述13として,シナリオ・コンパイラ11に与える。シナリオ・コンパイラ11は,そのシナリオ記述13を解釈し,タスク・ライブラリ12を参照しながら,各センサノード2で実行すべきタスク群14を生成する。
【0066】
ここで,タスク・ライブラリ12とは,各センサノード2で実行可能なタスクの集合体であり,シナリオ・コンパイラ11は,シナリオ記述13に沿う形でタスク・ライブラリ12に登録されたタスクを組み合わせることにより,各センサノード2で実行されるべきタスク群14を生成する。
【0067】
タスクの実体は、前述したセンサノード2内のCPU22で実行されるプログラムまたは論理可変ハードウエア用のコンフィギュレーションデータである。生成されたタスクは,当該機能カスタマイズ技術が実装されたタスクサーバ10が無線で接続された基地局,例えば,基地局1
1を経由し、当該基地局1
1から無線通信を用いて各センサノード2に転送され,各センサノード2のメモリに格納される。その結果,各センサノード2では、新たにメモリ26内に格納されたプログラムをCPU22で実行するか、または、新たにコンフィギュレーションメモリ27内に格納されたコンフィギュレーションデータを用いて、論理可変ハードウエア21の論理回路を変更することにより、当該センサノード2の機能が変更され,利用者が規定したシナリオを実現するように動作することが可能となる。
【0068】
図3は,シナリオ・コンパイラ11により生成された1つのタスク群14のデータ(具体的にはバイナリまたはキャラクタデータであり,以降,タスクデータと呼ぶ。)30であり,後述するk個(k>0)のタスク転送パケットでセンサノード2に送信する場合の内訳を示している。
【0069】
本例では,タスクデータ30は,k個のタスク転送パケット1〜kからなり,それぞれに搭載するデータ量をnバイト(n はn>15の整数)と仮定する。したがって,タスクデータ全体のサイズがkn+15バイトである。ただし,最後のk番目のパケットのみ15バイトである。
【0070】
図4は,
図3のタスクデータ30を,センサノード2に送るときのタスク転送パケット40のパケット構造を表している。
【0071】
通信パケットヘッダ41は,
図1に示したセンサネットワーク100において,各センサノード2や基地局1間でデータを送受する際に用いる部分であり,例えば,TCP/IP 通信を用いる場合は,IPヘッダおよびTCPヘッダに相当する。通信パケットヘッダ41以降は,ペイロードすなわちデータである。タスクデータを送る際は,
図4に示すように,タスク転送パケットのヘッダ41とその後に続くタスクデータ42,すなわちプログラムまたはコンフィギュレーションデータの一部から構成される構造を持つ。
【0072】
次に,タスク転送パケットのヘッダ41の各フィールドの内容を説明するが,ヘッダ41に含まれる複数の種別のフィールドは,添え字を付してそれぞれを区別する。以下の実施の形態例におけるヘッダ構成を説明する際も同様である。
【0073】
タスク転送パケットのヘッダ41において,「タスク転送パケット識別子」フィールド41
1は,当該パケットが,タスク転送パケットであることを示すシステム全体で一意に定めた数値である。すなわち,このパケット受信者は,当該「タスク転送パケット識別子」フィールド41
1の領域が,該当の値であれば,本パケットがタスク転送パケットであることを認識する。
【0074】
「ターゲットセンサノードID」フィールド41
2は,本パケットの最終届け先センサノードのIDである。本パケットは,他のセンサノードや基地局などを経由,すなわちマルチホップして,最終届け先センサノードに届く場合も想定している。そのため,本ターゲットセンサノードID41
2と自分のIDを比較し,同じであれば,受信者は,本タスク転送パケットが自分宛であることを認識する。
【0075】
「ターゲットメモリ」フィールド41
3には0または1が送信側で書き込まれる。0の場合は,本パケットが
図2のプログラム格納メモリ26に格納されるべきタスクデータを運んでいる事を示す。また,1の場合は,
図2のコンフィギュレーションメモリ27に格納されるべきタスクデータを運んでいる事を示す。
【0076】
「メモリバンク番号」フィールド41
4は,
図2のプログラム格納メモリ26内のバンク番号またはコンフィギュレーションメモリ27のメモリバンク番号を示している。前述の「ターゲットメモリ」フィールド41
3の内容と本「メモリバンク番号」フィールド41
4により,当該パケットが運んでいるタスクデータの一部をセンサノード2のどのメモリの何バンク目に格納すべきかが分かる。
【0077】
ここで,「メモリバンク番号」フィールド41
4は,1以上から始まるという約束にしておき,もしメモリバンク番号が0の場合は,受信したセンサノード2が,未使用の任意のバンクに当該パケット群が運ぶタスクデータを格納出来ることを示す。
【0078】
受信センサノード2が実際にどのメモリバンクに格納したかは,
図7にその構造を示すタスク転送応答パケットにメモリバンク番号を格納し,タスクサーバ10側に返信することで,タスクサーバ10は,それを知ることが出来る。
【0079】
「シーケンス番号」フィールド41
5は,
図3のタスクデータの該当する番号,本例では1〜kの整数値が入る。「パケット総数」フィールド41
6は,本例ではkであり,「データサイズ」フィールド41
7は,本例ではnが入る。ただし,最後のk 番目のパケットのみ,本パケット総数はnではなく15となる。
【0080】
図5は,タスクサーバ10からセンサノード2へタスク転送パケット40を用いてタスクデータを送信する場合の手順(シーケンス図)を示している。
【0081】
タスクサーバ10は,最初に
図6に示すタスク転送開始パケット60をセンサノード2に送る(ステップS1)。
【0082】
図6に示すタスク転送開始パケット60は,
図4のタスク転送パケット40のヘッダ41の内,「タスク転送パケット識別子」フィールド41
1を「タスク転送開始パケット識別子」フィールド61
1に変えた以外は,同一のヘッダ構造を持ち,タスクデータ部は存在しない。
【0083】
「ターゲットセンサノードID」フィールド61
2は相手センサノードID,「ターゲットメモリ」フィールド61
3は先に述べた0または1が設定される。「メモリバンク番号」フィールド61
4は,通常1以上を指定する。ここを0とした場合,前述したように,格納するバンク番号は,センサノード2に任せることを意味する。「シーケンス番号」フィールド61
5は0,「パケット総数」フィールド61
6は,
図3に例示したタスクデータを送る際はk,「データサイズ」フィールド61
7は,kn+15を格納する。
【0084】
本タスク転送開始パケット60を受け取ったセンサノード2は,内部状態を確認し,タスクデータの受け入れが可能な場合,
図7に示すタスク転送応答パケット70をタスクサーバ10に送る(ステップS2)。
【0085】
タスク転送応答パケット70は,
図4のタスク転送パケット40のヘッダ構造41の内,「タスク転送パケット識別子」フィールド41
1を「タスク転送応答パケット識別子」フィールド71
1に変えたタスク転送応答パケットのヘッダ部71を持ち,更にタスクデータ部42を未受取パケット番号72に変えた構造を持つ。
【0086】
なお,タスク転送応答パケット70は,
図6のタスク転送開始パケット60の応答だけでなく後に説明するように,
図4のタスク転送パケット40に対する応答パケットとしても用いる。
【0087】
タスク転送開始パケット60に対する応答では,タスク転送応答パケット70において,ヘッダの各フィールドは,タスク転送開始パケット60に搭載されていた情報をそのままコピーする(71
2〜71
6)。ただし,データサイズ(71
7)は0とし,未受取パケット番号領域72は0バイトであることを明示する。
【0088】
また,タスク転送開始パケット60において,「メモリバンク番号」フィールド61
4が0である場合,すなわち,タスクサーバ10の指示が,「使用するバンクは,センサノード2に任せる」であった場合は,センサノード2は,空きバンクを探し,空きバンクがあった場合はそれを,なかった場合は,いずれか新たなタスクデータでオーバライトされることを認めるバンクを選択する。
【0089】
そして,選択したバンクの番号をヘッダの「メモリバンク番号領域」フィールド71
4に格納する。その後,タスク転送応答パケット70をタスクサーバ10に返す。もし,タスクデータ10の転送が不可能な場合は,「メモリバンク番号フィールド」71
4を0として返答する。
【0090】
次に,タスクサーバ10では,タスク転送応答パケット70を受け取り,メモリバンク番号71
4が0以外,すなわちタスクデータの受け取り可能であった場合は,
図4のタスク転送パケット40を使用して,センサノード2へタスクデータを転送する(ステップS3
1〜S3
k)。
【0091】
センサノード2側では,k個のパケットを受け取るのを待ち,それまでに送られてきたタスク転送パケット40のシーケンス番号を確認し,シーケンス番号に飛びがあった場合,当該パケットが未受信であることを,
図7のタスク転送応答パケット70を用いてタスクサーバに知らせる(ステップS4)。
【0092】
具体的には,未受信のパケットのシーケンス番号を
図7の未受取パケット番号領域72に格納して送る。1つの未受取パケット番号を2 バイトで表すと,「データサイズ」フィールド71
7には,2xバイトを書き込む。ただし,xは,未受信パケット数である。
【0093】
図5のシーケンス図では,シーケンス番号4と7の2つのタスク転送パケットが未受信である例を示している。タスクサーバ10は,この応答パケットを受け取ると,シーケンス番号4と7のタスク転送パケットを再送する(ステップS5
1,5
2)。その結果,センサノード2が全てのタスク転送パケットを受信する。
【0094】
ついで,センサノード2は,全て受け取った旨の応答を,
図7のタスク転送応答パケット70を用いてタスクサーバ10に返す(ステップS6)。当該タスク転送応答パケット70は,具体的には,
図7のパケット構造において,「データサイズ」フィールド71
7は0で,未受取パケット番号領域72は0バイトとなる。
【0095】
最後に,タスクサーバ10から後に説明する
図8に示す実行開始命令パケット80をセンサノード2に送る(ステップS7)と,新たなタスクの実行がセンサノード2側で開始される。開始後,実行を開始した旨の応答パケットがセンサノード2からタスクサーバ10に返される(ステップS8)。
【0096】
なお,本実施の形態例では,k個のタスク転送パケット40の受信を待って,再送処理を行う例を示したが,1つまたは数個のタスク転送パケット40の受信ごとにセンサノード2側でタイムアウト時間を設け,タイムアウトした場合は,当該タスク転送パケット40の再送要求を
図7のタスク転送応答パケット70を用いて行うようにすることもできる。
【0097】
図8は,タスク実行開始命令パケット80のパケット構造を示す。実行開始命令パケット80は,1つのパケットで複数のタスクを起動することができる。起動したいタスクの格納されている「ターゲットメモリ」フィールド81
1〜81
s (0はプログラム格納メモリ26,1はコンフィギュレーションメモリ27を指す)と,その「メモリバンク番号」フィールド82
1〜82
sをペアで指定する。
【0098】
各フィールドは1バイトとし,s個(s>0)のタスクの起動を指示する場合はデータサイズフィールド83に整数値2sを書き込む。なお,センサノード2からのタスク実行開始命令パケット80の応答は,当該タスク実行開始命令パケット80をそのまま,タスクサーバ10に送り返すことにより行う。ただし,起動に失敗したタスクに対応するメモリバンク番号82は0に書き換えて返答する。
【0099】
図5のシーケンス図では,タスクサーバ10から転送したばかりのタスクが格納されているプログラム格納メモリ内のバンク3のタスクの実行を指示する例を示している(ステップS7,S8)。
【0100】
なお,
図2のセンサノード2の構成において,プログラム格納メモリ26およびコンフィギュレーションメモリ27に代えて,ハードディスク(HDD)を設け,プログラム格納メモリ26およびコンフィギュレーションメモリ27のバンクに格納していたタスクをファイルとしてHDDに一意の名前を付与して格納し,そのファイルを必要に応じてアクセスする構成としても,同様の機能を果たすことが出来る。
【0101】
この場合,前述したタスクサーバ10とセンサノード2間でのタスクデータの送受や,センサノード2に格納されたタスクを起動する場合は,
図4,
図6,
図7,
図8に示した各パケット構造において,「ターゲットメモリ」フィールド(41
3,61
3,71
3,81)及び「メモリバンク番号」フィールド(41
4,61
4,71
4,82)は,HDDに格納する一意の名前を格納するフィールドに変えたパケット構造をそれぞれ使用する。
【0102】
図9は,
図1においてシナリオ・コンパイラ11の入力となるシナリオ記述の例である。
図9は,「2ホップ以内に温度を計測しているセンサノード2が存在しない場合,自らの温度センサをONにし,1秒ごとに温度を計測する。そうでなければ,自らの温度センサをONにし,10秒ごとに温度を計測する。」という意味を表している。
【0103】
1行目のneighborCount(2,“temperature”)は,組込関数であり,引数で与えた条件を満たすセンサノード数を返す。第一引数はホップ数,第二引数は,センサの種類を表す。また,
図9の2行目に使用されているon(“temperature", "rate=1s")も組込関数であり,第一引数(この場合は温度)に与えたセンサをONにする。第二引数は,オプションであり,センサに応じたパラメータを記載できる。本例の”rate=1s”は,温度センシングを1s 毎,すなわち毎秒行うことを指示している。
【0104】
なお,neighborCount(2,“temperature”)は,条件に合うセンサノード2の数を返す関数10であるが,本関数は,各センサノード2が,以下に述べる方法により取得した近隣センサノード情報を参照することにより,その値を得る。
【0105】
図10は,近隣センサノード情報を,如何にして各センサノード2が収集するかを示している。ここでは,簡単化のため,近隣センサノードのIDを知る場合を例に示す。
【0106】
図10(A)は,各センサノード2の初期状態を示す。図中,例えばn(a)は,センサノードaの隣接,すなわち1ホップ先のセンサノード2の情報を示す隣接ノードリストである。
図10(A)の状態では,各センサノード2の隣接ノードリストは()即ち,空である。次に,各センサノード2が,自分の隣接ノードリストを隣接センサノードにブロードキャストする。その結果,各センサノード2では,
図10(B)に示す情報が得られる。
【0107】
この各隣接センサノード2から届いた全ての隣接ノードリストを整理すると,
図10(C)に示すように,各センサノード2では,自分の隣接ノードの情報が取得できる。次に,この隣接ノードリストを,互いに隣接ノードへ再度ブロードキャストするとともに,隣接センサノードから受け取った隣接ノードリストを整理すると,自分から2ホップ先のセンサノードの情報が得られる。
【0108】
上記のステップを繰り返し実行することにより,最終的に,
図10に示したネットワークトポロジの情報が各センサノード2で取得できる。ここでは,隣接センサノードのIDのみを交換する例を述べたが,IDと共に,各センサノード2が保有するセンサの種別や現在動作しているセンサの情報などを相互交換すれば,各センサノード2において,他の全てのセンサノードの情報を得ることができる。
【0109】
このように隣接ノードから取得した情報は,センサノード2中で動作中の各タスクからグローバルに参照出来るメモリ領域に格納し,保管される。上述した隣接センサノード同士の情報交換は,利用者が意識することなく,定期的に各センサノード同士で行われるため,隣接センサノードに関する情報は時々刻々更新される。
【0110】
したがって,前述したneighborCount()関数は,当該メモリ領域の情報をアクセスすることにより,即座に条件に合う隣接センサノードの数を知ることが出来る。
【0111】
図11は,監視カメラを搭載したセンサノード2を用いた場合の本発明における実施形態例である。カメラ1を有するセンサノード2
1およびカメラ3を有するセンサノード2
3は基地局1に直接接続され,カメラ2を有するセンサノード2
2はカメラ1を有するセンサノード2
1を経由して,情報を基地局1に転送する。
【0112】
本実施の形態例において,センシング対象として例えば「赤いシャツを着た人を見つけたら知らせる」というシナリオを実現するタスクを各センサノード2に送ると,センサノードのカメラの撮影範囲に入ったセンシング対象を,画像認識技術を用いて探し,条件に合ったセンシング対象があれば,該当のセンサノード2からそのイベントを基地局1に送ることができる。
【0113】
ここで,画像認識は各カメラで行うことも出来るし,各カメラ自身は,画像データを直接基地局1に送り,基地局1に接続されえたゲートウエイ(GW)7内のプログラムが画像認識を行い,条件に合ったセンシング対象の有無を確認する。その結果をユーザ端末4に返す形態に構築することもできる。
【0114】
前者の場合,画像認識プログラムを1つのタスクとして,
図1に示したタスク・ライブラリ12に用意する。すなわち,シナリオ・コンパイラ11は,前述のシナリオ「赤いシャツを着た人を見つけたら知らせる」を当該タスクのパラメータとして与えるように,各カメラに搭載すべきタスクを生成し,それを対応するセンサノードのカメラに送り込むことで本実施の形態例のシステムを構築する。
【0115】
後者,すなわち画像認識をゲートウエイ(GW)7側で行う場合は,各カメラに対するシナリオは単に「画像を1秒ごとに転送すること」といった内容になる。ゲートウエイ(GW)7では,予め実現してある画像認識プログラムに当該カメラから送られてきた画像データを入力し,「赤いシャツを着た人」を認識することで,上記システムを実現することとなる。
【0116】
なお,画像認識自体は既存技術,例えば,上記した非特許文献1などを用いて実現できる。また,前述したタスクサーバ10は,ゲートウエイ(GW)7と共有する構成や,それら全てをユーザ端末4で実現する方法もある。
【0117】
図12は,本発明の
図1のセンサネットワーク100を複数(図では3つのセンサネットワーク100
1〜100
3)用いて大規模なセンサネットワークを構成する場合の構成図である。本構成の中心は,デマンド・アドレッサブル・ネットワーク(demand addressable network: 以下DANと略す)である。センサネットワーク100
1〜100
3を,本DANに接続する場合は,それぞれ
図1のセンサネットワーク100に接続されるユーザ端末4は不要であり,ある1つの基地局にゲートウエイ装置(GW)を設ける。
【0118】
DANは,下記の機能手段を具備する。
【0119】
(a) デマンド・インタプリタ200:抽象的なユーザ端末201からのユーザ要求を瞬時に解釈し、具体的なサブ要求の組み合わせに展開する。ユーザ要求は,(When, Where, What)からなる要素に分解され,単純なパラメータの組み合わせからなるサブ要求となる。例えば「ここから10km 以内で出火の可能性は?」というユーザ要求は((When, Now), (Where, Here < 10 km), (What, Temperature = Rapid-Up))と展開される。
【0120】
また,ユーザ要求「ここから北側5km 以内で2日以内に火災の起こった可能性は?」は,((When, Now > 2 day), (Where, ((Here < 5 km) & North), (What, Temperature = Rapid-Up))となる。かかる展開される要求に含まれるパラメータや予約語の情報は,インタプリタ200が起動したときに読み込める様にテーブル形式で用意し,そのテーブル内容を変更することにより,随時拡張できる。
【0121】
(b) デマンド・アドレッシング:展開されたサブ要求またはその組み合わせから所望のセンシングデータを保有するセンサまたはローカルデータベース(DB)等のリソースを,集中管理されたディレクトリ等を参照することなく,動的に発見する。
【0122】
当該部分は,例えば,Peer-to-Peer(P2P)技術で用いられている分散ハッシュテーブル(DHT, Distributed Hash Table)202を用いる技術(上記した非特許文献2)で実現できる。
【0123】
(c) データマッシュアップ・ネットワーク: 取得したデータをネットワーク内で統合(マッシュアップ)し、ユーザに提示する。これには,前記した非特許文献3のメッセージング・ネットワーク(MN)技術を構築基盤として用いることができる。
【0124】
MNとは、XMLルータ203とゲートウエイ装置(GW)を用いてOverlay-network を構築する技術である。MNでは、XMLで記述したメッセージを単位として、Overlay-network 上で、内容(Content)によるデータ転送機能を実現している。
【0125】
GWでは、受け取ったローカルデータをXML形式のメッセージに動的に変換する。メッセージは,XML 解釈機能を有するXMLルータ203によって目的端末まで転送される。XMLルータ203は、必要に応じXML形式のデータの統合(マッシュアップ)を行う。
【0126】
図13は,上記のXML形式のデータの統合(マッシュアップ)について
図12を参照して説明する図である。
【0127】
マッシュアッププログラム1および2はそれぞれXMLルータ203
1および203
2で動作している。各マッシュアッププログラムは,どのイベントやデータをマッシュアップするかについて予め決めておく。それは当該マッシュアッププログラムを作成するときでも良いし,動作開始時または動作開始後,外部からどのイベントやデータをマッシュアップするべきかを与える方法でもよい。
【0128】
図13に示す構成例では,マッシュアッププログラム1は,前述のセンサネットワークシステム100
1から得られる温度イベント1と温度イベント2,及び既存情報システム(1)210から得られるデータをマッシュアップする。ついで,マッシュアップされた情報1として,ネットワークを介して,XMLルータ203
2内のマッシュアッププログラム2に送る。
【0129】
マッシュアッププログラム2では,マッシュアップされた情報1に加え,センサネットワークシステム100
2及び又は100
3から得られる温度イベント3,図示しない別の既存情報システム(2)から得られるデータ,更に図示しない地図情報提供サイトから得られる地図情報等をマッシュアップする。ついで,マッシュアップされた情報2として,ネットワークを介して,ユーザ端末201に送られる。
【0130】
マッシュアップされた情報2は,前記既存情報システム210が,気象情報データベースサイトであった場合は,ユーザ端末201おいて,マッシュアップを行うことなく,受け取ったマッシュアップされた情報2を表示するだけで,所望の結果を得ることができる。
【0131】
図14は,本発明に従う上記ネットワークで構築したアプリケーションの一例である。ユーザがユーザ端末201から「福島県内で気温が過去一ヶ月で31度を超えた場所は?」と要求すると,本要求は,デマンド・インタプリタ200で((Where, ”福島”), (When, [now, 1 month]), (What, Temperature > 31 degree), (Display, Map))とサブ要求に展開される。そして,対応する温度センサネットワーク130,過去の気象観測データを蓄えた気象情報データサイト131,及び地図情報サイト132に検索要求が渡る。そこで,ヒットした情報は,各GWを通過するときにXMLデータに変換されてXMLルータ203に送られる。
【0132】
XMLルータ203では,それら情報がマッシュアップされ,ユーザ端末201に届けられる。これにより,ユーザ端末201では,何も情報統合することなく,当該情報を画面表示するだけで,
図14の上部に示すマッシュアップされマップを含む情報204が得られる。
【0133】
ここで,
図14において,温度センサネットワークを検索したとき,もし,どのセンサネットワークも温度を観測しておらず,当該センサネットワークが,本発明の
図1で示したセンサネットワーク100であった場合,「温度を計測し,31度以上であれば,知らせること」というシナリオを当該センサネットワーク100に
図1のタスクサーバ10経由で送り,温度計測を行わせるようにする。その後,当該センサネットワーク100からセンシングデータを要求したデマンド・アドレッサブル・ネットワーク(DAN)に返すようにする。これにより,センサネットワーク100が担当する観測領域において,ユーザの要求にあった現在の温度情報を得ることができる。
【0134】
ここで,上述した「温度を計測し,31度以上であれば,知らせること」というシナリオは,その都度動的にタスクサーバ10内で生成することも出来るし,頻繁に用いるシナリオならば,タスクサーバ10内に用意して,それを呼び出すことでもよい。さらに,同一シナリオを頻繁に使用する場合は,シナリオ・コンパイラ11を一度だけ起動し,生成されたタスク群そのものをタスクサーバ10内に保存しておき,それを必要に応じて各センサノード2に送り込むことでもよい。
【0135】
または,各センサノード2のプログラム格納メモリ26(またはコンフィギュレーションメモリ27)に余裕があれば,それらタスクをセンサノード2に予め入れ込んでおけば,対応するタスクを
図8に示したタスク実行開始パケット80を送るだけで,当該タスクを即座に駆動することも出来る。
【0136】
図15は,更に別の実施の形態例を説明する図である。
図1のセンサネットワーク100にシナリオ生成器140を追加した構成である。ユーザが最初に与える初期シナリオから,タスクサーバ10を用いて各センサノード2にダウンロードされるタスクを生成し,センサネットワーク100を構成する各センサノード2に基地局1経由でダウンロードし,センサネットワーク100をカスタマイズする。
【0137】
次に,当該センサネットワーク100から取得したセンシングデータをシナリオ生成器140に送り,シナリオ生成器140では,ユーザが別途事前に与えておいた最終目標と前記センシングデータを入力として,新たなセンサネットワーク100の動作シナリオを自動生成する。それを再びタスクサーバ10に入力する。上記の一連の処理を繰り返すことにより,ユーザが与えた最終目標を達成するように動作させる。
【0138】
例えば,ユーザの最終目標が「火災を発見する」であり,初期シナリオを「急激な温度情報を見つける」とした場合,タスクサーバ10は最初に「温度を計測し,計測した温度が毎秒1度以上上昇した場合はイベントを知らせる」というタスクを生成し,各センサノード2にそのタスクをダウンロードする。
【0139】
各センサノード2では,その条件を満たすイベントをセンシングした場合,それをセンシングデータとして,シナリオ生成器140に送る。シナリオ生成器140では,それを受け「炎を検知する」というシナリオを自動生成し,それをタスクサーバ10に送る。タスクサーバ10では,それを受け照度センサを起動し,「その値がL以上であれば知らせる」というタスクを生成し,それを各センサノード2にダウンロードする。
【0140】
ここで,Lとは照度センサの反応強度を表す数値データであり,その値が大きいほど,炎(光)に強く反応したとする。
【0141】
あるセンサノード2が当該イベントを感知した場合,それをシナリオ生成器140に返す。シナリオ生成器140では,先の温度の急激な変化のイベントと今回の照度センサの反応イベントがあったことから,センサネットワークの観測範囲において火災が発生しているとしてその旨を最終結果としてユーザに返す。本実施の形態例構成において,シナリオ生成器140は,タスクサーバ10と物理的に同一のPC内に構成することも,別装置として構成し,互いを通信回線で結ぶ構成でも実現できる。
【0142】
ここで,上記した実施の形態例説明では,
図1のセンサネットワーク100は無線通信であることとして説明してきたが,有線通信を用いたセンサネットワークでも勿論かまわない。また,
図1において,複数個の基地局1を設けるようにしているが,1つの基地局であっても,あるいは,基地局を用いず,直接センサノード2がユーザ端末4,タスクサーバ10と通信できるネットワーク構成でも本発明の適用範囲である。有線通信の場合は,
図2に示したセンサノード2の構成の内,無線モジュールに代えて,有線モジュールを用いて構成する。
【0143】
また,
図2で説明したセンサノード2のタスクは,
図1で示したタスクサーバ10から送られるとして説明してきたが,タスクサーバ10に代えて,センサノード2のCPU22に,前述した
図5のシーケンス図に従った手順を実行するタスクサーバ側のプログラムを搭載し,当該センサノード2が自身の保持しているタスクを,他のセンサノードに送るようにしても良い。
【0144】
上記した本発明の構成を使用すれば, (1)利用者が定義可能な「シナリオ」に従って、各センサノード上で環境やユーザ要求に適応して動作する機能・役割をカスタマイズできるセンサネットワークと、(2)ユーザ要求に従って必要十分な情報をリアルタイムに利用者に提示する機能を実現できる。
【0145】
前者(1)に関しては,観測現場の状況に合わせて「シナリオ」を入れ替えることで、ニーズにあったセンサネットワークを迅速に構築できる。
【0146】
後者(2)に関しては、能動的にデータを取得し、それをネットワーク内でマッシュアップして利用者に提供する技術に特徴がある。所望のデータを取得するためにネットワーク内のリソースを,集中管理サーバやディレクトリサービスを使用せずに検索するため,大規模ネットワークを容易に構築出来る。
【0147】
また、前者(1)のセンサネットワーク技術と連動し、動的にセンサノードの役割を変更し、ユーザ要求を満たすセンシングデータを能動的に取得する一連の動作を自動で行うことに特徴を有する。
【0148】
さらに、通常、サーバや端末で実行される複数のシステムから取得した形式の異なるデータのマッシュアップ作業を,ネットワーク内に配置したルータ装置がデータ転送と共に実施する。これにより、端末に負荷をかけることなく大規模データを扱えるだけでなく,新たなデータのマッシュアップの必要が生じた場合でも,ユーザ側のソフトウエアを,改変することなく、ネットワーク側の更新作業のみで対応できる。これは大規模センサネットワークを構築する上で大きな利点となる。加えて、本発明は,前述の2つの機能を融合して実現できる,ユーザ要求に従って能動的にセンシングを行うといったコンセプトは他になく、新たなセンサネットワークの構築法・運用法を提案するものである。