(57)【要約】【課題】センサネットワーク自体に周囲の状況と，利用者が発した要求を勘案して，動的に機能を変更して所望のセンシングデータを取得できるセンサネットワークシステムを提供する。【解決手段】それぞれ少なくとも１つのセンサを有し，設定されるタスクに従い機能が変更可能であって，前記センサで検知されるセンシングデータを前記機能に従い生成する情報処理機能部を有する複数のセンサノードと，利用者が与えるセンサネットワークの動作仕様を記載したシナリオに対応するタスクを生成する手段と，さらに，前記生成されるタスクを前記複数のセンサノードの対応するセンサノードに転送する通信手段を有する。【選択図】図１
2014059732.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ少なくとも１つのセンサと，設定されるタスクに従い機能が変更可能であって，前記センサで検知されるセンシングデータを前記機能に従い生成する情報処理機能部を有する複数のセンサノードと，
利用者が与える動作仕様を記載したシナリオに対応するタスクを生成する手段と，
さらに，前記生成されるタスクを前記複数のセンサノードの対応するセンサノードに転送する通信手段を有する， 
ことを特徴とするセンサネットワークシステム。
【請求項２】
請求項１において，
前記情報処理機能部は，ＣＰＵ，ＦＰＧＡ（Field Programmable Gate Array）を含む論理可変ハードウエア，又はそれらの両方を含んで構成され，前記タスクは，前記ＣＰＵで実行するプログラム又は論理可変ハードウエアで実現する論理回路情報，又はその両方として設定される，
ことを特徴とするセンサネットワークシステム。
【請求項３】
請求項１において，
さらに，少なくとも１つの基地局を有し，
前記基地局から，前記タスクを生成する手段により生成されたタスクを前記複数のセンサノードに無線または有線により転送する，
ことを特徴とするセンサネットワークシステム。
【請求項４】
請求項３において，
前記複数のセンサノードは，それぞれ前記センサで検知されるセンシングデータを前記情報処理機能部の機能によって処理した情報をマルチホップ通信方式により，前記基地局に転送する，
ことを特徴とするセンサネットワークシステム。
【請求項５】
請求項１において，
前記タスクを生成する手段は，
前記複数のセンサノードで実行可能な基本動作を登録したタスク・ライブラリと，
前記利用者が与えるユーザ要求を，前記タスク・ライブラリを参照して，各センサノードで実行させるタスクに分解し，前記センサノードで動作するタスクを生成するシナリオ・コンパイラを有し，
前記通信手段により，前記シナリオ・コンパイラで生成されたタスクを対応するセンサノードにダウンロードさせ，前記センサノードの情報処理機能部を動的に変更する，
ことを特徴とするセンサネットワークシステム。
【請求項６】
請求項１乃至５のいずれか１項において，
さらに，利用者が最初に与えたユーザ要求に基づき，前記センサにより検知され，機能変更された前記情報処理機能部によって処理した情報と，前記利用者の最終目標とに基づき，次の動作仕様を生成するシナリオ生成器を有し，前記生成された動作仕様に基づき前記情報処理機能部の機能変更を行い，前記利用者に対するカスタマイズを行う，
ことを特徴とするセンサネットワークシステム。
【請求項７】
複数のセンサノードを有し，それぞれのセンサノードは少なくとも１つのセンサを有し，且つ前記センサで検知される情報に対する処理を行う情報処理機能部を有し，前記情報処理機能部の機能変更が可能である，複数のセンサネットワークと，
他の既存情報システムと，
前記複数のセンサネットワークと他の既存情報システムとを接続したデマンド・アドレッサブル・ネットワークを有し，
前記デマンド・アドレッサブル・ネットワークは，
利用者が与える情報取得要求を，要素に分解し，単純なパラメータの組み合わせから成るサブ要求に展開する手段と，
前記サブ要求に展開する手段により展開されたサブ要求又はその組み合わせに基づいて，ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムを求める手段と，
前記センサネットワークまたは既存情報システムにより求めたデータをネットワーク内で統合して前記利用者に提供する手段を有する，
ことを特徴とするセンサネットワークシステム。
【請求項８】
請求項７において，
前記サブ要求に展開する手段により展開されたサブ要求又はその組み合わせに基づいて，ネットワーク内に該当する情報を保有するセンサネットワーク又は既存情報システムが存在しない場合，前記利用者が与える情報取得要求に応えるように，前記センサネットワークの動作仕様を生成し，
前記生成されるセンサネットワークの動作仕様に基づき，
前記情報処理機能部の機能変更を行う，
ことを特徴とするセンサネットワークシステム。
【請求項９】
複数のセンサネットワークと，他の既存情報システムと，前記複数のセンサネットワークと他の既存情報システムとを接続したデマンド・アドレッサブル・ネットワークを有するセンサネットワークシステムにおけるデータ取得方法であって，
前記デマンド・アドレッサブル・ネットワークにおいて，
利用者が与える情報取得要求を，要素に分解し，単純なパラメータの組み合わせから成るサブ要求に展開する工程と，
前記展開されたサブ要求又はその組み合わせに基づいて，ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムを求める工程と，
前記センサネットワーク又は既存情報システムにより求めたデータをネットワーク内で統合して前記利用者に提供する工程を有する，
ことを特徴とするセンサネットワークシステムにおけるデータ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，センサネットワークシステム及び当該センサネットワークシステムにおけるデータ取得方法に関する。
【背景技術】
【０００２】
種々の環境情報を取得することができるセンサネットワークシステムが開発されている。かかるセンサネットワークシステムは，それぞれ１つ以上のセンサを備え，無線又は有線通信を用いて当該センサにより取得したセンシングデータを外部に送る機能を有するセンサノードと呼ぶ小型装置を複数個用いる。
【０００３】
それぞれのセンサノードから発せられたセンシングデータは，無線又は有線通信を用いて，基地局と呼ぶセンシングデータを集約するノードに送られる。これにより，環境情報を基地局で取得することができるセンサネットワークシステムが構築される。
【０００４】
この様に，現在のセンサネッワーク技術は，各センサが取得したデータを一方的に利用者（ユーザと同義）側に集約する方式に焦点を当てている。
【０００５】
しかし，大規模なセンサネットワークシステムでは，センシングデータが膨大となり，ユーザが望む環境情報を的確かつ短時間で取得することが困難となる。
【０００６】
それを解決するために，特許文献１，特許文献２に記載の発明が提案されている。
【０００７】
特許文献１に記載の発明は，分散データベース（ＤＢ）と各分散ＤＢが保持しているデータとその分散ＤＢの識別子（ＩＤ）を組にしてテーブル化して管理する管理ＤＢを設ける構成である。
【０００８】
かかる構成において，ユーザは当該管理ＤＢに検索キーを送る。管理ＤＢはユーザから送られた前記検索キーにより管理テーブルを検索する。この検索結果として所望のデータを所有する分散ＤＢのＩＤを知り，該当の分散ＤＢにデータを要求する。そして，分散ＤＢから取得したデータを，当該管理ＤＢ経由でユーザに検索結果として提示する。
【０００９】
一方，特許文献２に記載の発明は，各センサノードや基地局にスクリプトを解釈するスクリプトマネージャを設ける。基地局からユーザが期待する動作を記述したスクリプトをセンサノードに送り，当該スクリプトマネージャがそのスクリプトを解釈することで，センサノードの振る舞いを動的に変更し，所望のセンシングデータまたはそれと関係するイベントを基地局に送信する。
【００１０】
これにより，ユーザは，単なるセンサノードから送出されるセンシングデータを取得するだけでない。すなわち，センサノードのセンシング方法の変更や，取得したセンシングデータの大小によって，ある事象が発生したことを知らせるイベントを発生させ，それを受け取るといったことが可能となる。したがって，大規模センサネットワークにおいても，データ量の抑制やセンサネットワークのカスタマイズが可能となる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１１−１１８９５０号公報
【特許文献２】特開２０１１−１９８３７９号公報
【非特許文献】
【００１２】
【非特許文献１】N. Otsu,“Towards Flexible and Intelligent Vision Systems - From Thresholding to CHLAC-,” MVA2005 IAPR Conference on Machine Vision Applications, 12-1, May 16-18, 2005 Tsukuba Science City, Japan.  http://www.mva-org.jp/Proceedings/CommemorativeDVD/2005/papers/2005430.pdf(2012.7.26 アクセス)
【非特許文献２】Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Schenker (2001). “A scalable content-addressable network”. Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications (New York, NY, USA:ACM Press):161-172. doi:10.1145/383059.383072.
【非特許文献３】T. Hayashi, H. Fukuhara, R. Fuijta, T. Miyazaki, and S. Saito, "A Messaging Network to Realize an SOA-Based System,". In Proceedings of the 7th IEEE international Conference on Computer and information Technology (October 16-19, 2007). CIT. IEEE Computer Society, pp. 1083-1088.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら，上記特許文献１に記載の発明では，検索によって取得するセンシングデータは，センサが取得した単純な数値である。そのために，ユーザが理解できる形式に変換する作業をユーザ端末で行う必要があり，取得したデータが膨大な場合，ユーザ端末のデータ処理負荷が増大する欠点がある。
【００１４】
さらに，取得するデータ種別等に変更が生じた場合，その都度，ユーザ端末のデータ処理プログラムに変更を加えなければならず，ユーザが多い場合は，それらユーザの所有する端末に格納されたプログラムの全てに変更を施さねばならないという膨大な手間がかかるという問題がある。
【００１５】
上記特許文献２の発明では，上位のノードは，予めクライアントに設定されたスクリプトを解釈して，下位のノードに対するスクリプトを抽出する。次いで，抽出されたスクリプトを下位のノードに順次配布して行くという構成である。そのために，利用者は，どのノードの次にどのノードが繋がってノード間の上下関係を形成しているかを知らないとスクリプトを書くことが困難である。
【００１６】
さらに，複雑な動作をスクリプトで定義することは容易ではなく，また，各センサノードにおいてそれを動的に解釈して実行することは効率的ではない。各スクリプトに固有の識別子（ＩＤ） を付与して管理し，複数のスクリプトを同時に投入されても，混乱することなく処理する方法が述べられているが，スクリプトマネージャのメモリ管理法が単一メモリを暗に想定している。
【００１７】
このことから，悪意を持ったユーザが，他人のスクリプトが使用するメモリ領域を侵食し，本来のユーザが意図しない動作をさせたり，取得したデータを横取りすることが比較的容易に出来うるため，特許文献２の提案する各センサノードにスクリプトマネージャを実装する方法では，セキュリティの脆弱性を抱えていることとなる。
【００１８】
したがって，本発明の目的は，上記特許文献１，２に示された発明における問題点を解決するセンサネットワークシステムであって，センサネットワーク自体に周囲の状況と，利用者が発した要求を勘案して，動的に機能を変更して所望のセンシングデータを取得できるセンサネットワークシステムを提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成する本発明に従うセンサネットワークシステムは，第１の態様として，それぞれ少なくとも１つのセンサと，設定されるタスクに従い機能が変更可能であって，前記センサで検知されるセンシングデータを前記機能に従い生成する情報処理機能部を有する複数のセンサノードと，利用者が与えるユーザ要求に基づくシナリオに対応するタスクを生成する手段と，さらに，前記生成されるタスクを前記複数のセンサノードの対応するセンサノードに転送する通信手段を有することを特徴とする。
【００２０】
上記目的を達成する本発明に従うセンサネットワークシステムは，前記第１の態様において，前記情報処理機能部は，ＣＰＵ，ＦＰＧＡ（Field Programmable Gate Array）を含む論理可変ハードウエア，又はそれらの両方を含んで構成され，前記タスクは，前記ＣＰＵで実行するプログラム又は論理可変ハードウエアで実現する論理回路情報，又はその両方として設定されることを特徴とする。
【００２１】
さらに，少なくとも１つの基地局を有し，前記基地局から，前記タスクを生成する手段により生成されたタスクを前記複数のセンサノードに無線により転送することを特徴とする。
【００２２】
更に前記複数のセンサノードは，それぞれセンサにより検知され，前記情報処理機能部の機能によって処理した情報をマルチホップ通信方式により，前記基地局に転送することを特徴とする。
【００２３】
上記目的を達成する本発明に従うセンサネットワークシステムは，前記第１の態様において，前記情報処理機能部の機能変更を行う手段は，前記複数のセンサノードで実行可能な基本動作を登録したタスク・ライブラリと，前記利用者が与える動作仕様を，前記タスク・ライブラリを参照して，各センサノードで実行させるタスクに分解し，前記センサノードで動作するタスクを生成するシナリオ・コンパイラを有し，
前記通信機能部により，前記シナリオ・コンパイラで生成されたタスクを対応するセンサノードにダウンロードさせ，前記センサノードの情報処理機能部を動的に変更することを特徴とする。
【００２４】
上記目的を達成する本発明に従うセンサネットワークシステムは，前記第１の態様において，さらに，利用者が最初に与えた動作仕様に基づき，前記センサにより検知され，機能変更された前記情報処理機能部によって処理した情報と，前記利用者の最終目標とに基づき，次の動作仕様を生成するシナリオ生成器を有し，前記生成された動作仕様に基づき前記情報処理機能部の機能変更を行い，前記利用者に対するカスタマイズを行うことを特徴とする。
【００２５】
上記目的を達成する本発明に従うセンサネットワークシステムは，第２の態様として，複数のセンサノードを有し，それぞれのセンサノードは少なくとも１つのセンサを有し，且つ前記センサで検知される情報に対する情報処理機能部，及びデータの送受信を行う通信機能部を有し，前記情報処理機能部の機能変更が可能である，複数のセンサネットワークと，他の既存情報システムと，前記複数のセンサネットワークと他の既存情報システムとを接続したデマンド・アドレッサブル・ネットワークを有し，前記デマンド・アドレッサブル・ネットワークは，利用者が与える情報取得要求を，要素に分解し，単純なパラメータの組み合わせから成るサブ要求に展開する手段と，前記サブ要求に展開する手段により展開されたサブ要求又はその組み合わせに基づいて，ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムを求める手段と，前記センサネットワークまたは既存情報システムにより求めたデータをネットワーク内で統合して前記ユーザに提供する手段を有することを特徴とする。
【００２６】
上記目的を達成する本発明に従うセンサネットワークシステムは，第２の態様において，前記サブ要求に展開する手段により展開されたサブ要求又はその組み合わせに基づいて，ネットワーク内に該当する情報を保有するセンサネットワークまたは既存情報システムが存在しない場合，前記利用者が与える情報取得要求に応えるように，前記センサネットワークの動作仕様を生成し，前記生成されるセンサネットワークの動作仕様に基づき，前記前記情報処理機能部の機能変更を行うことを特徴とする。
【発明の効果】
【００２７】
本発明によれば，各ユーザ端末で取得したデータの加工表示処理する必要がなくなるため，取得するデータ等に変更があった場合でも各ユーザ端末に何ら変更を加える必要がなくなる。
【００２８】
また，センサネットワーク自体には，ユーザが定義した動作シナリオに従って，各センサノードが実行する独立したプログラムまたは論理可変ハードウエアの論理回路情報（以下，コンフィギュレーションデータ）で構成されるタスクを生成し，当該タスクを各センサネットワークに送り込むことにより、システム動作をカスタマイズできる機能を有する。
【００２９】
本発明は，特許文献２に記載の発明とは異なり，独立して動作するタスク自体を送り込むため，前述したメモリ侵害によるセキュリティの脆弱性を排除出来るだけでなく，センサノードに不揮発性メモリを搭載し，一度送り込んだタスクを当該不揮発性メモリに保存すれば，タスク自体が電源を切っても保持されるため，電源を再投入すれば，タスクを再度外部から送り込むことなく，電源を切る前の動作を即座に再現可能となる。
【００３０】
一方，特許文献２で述べられている，その都度スクリプトを解釈する，いわゆるインタプリタ方式の実施形態では，電源を投入する度に，例え電源を切る前と同じタスクの実行をさせる場合でも，再度外部から，当該スクリプトを送り込まなければならないという問題が残る。
【００３１】
本発明によれば，１つのセンサネットワークシステムを用途に合わせて時間的にシェアし，別用途に使用できる可能性を生む。これは，ユビキタスコンピューティング環境を実現する様々なサービスが，広域に敷設したセンサネットワークシステムを、共通インフラとして利用できることを意味する。
【図面の簡単な説明】
【００３２】
【図１】本発明に従うセンサネットワークシステムの一実施の形態例構成を示す図である。
【図２】センサネットワークの構成要素であるセンサノードの構成例を示す図である。
【図３】シナリオ・コンパイラにより生成された１つのタスクのデータ（具体的にはバイナリまたはキャラクタデータである。）である。
【図４】図３のタスクデータを，センサノードに送るときのタスク転送パケットのパケット構造を表す図である。
【図５】タスクサーバからセンサノードへタスク転送パケットを用いてタスクデータを送信する場合の手順（シーケンス図）を示している。
【図６】タスク転送開始パケットの構造を表す図である。
【図７】タスク転送応答パケットの構造を表す図である。
【図８】実行開始命令パケットの構造を表す図である。
【図９】図１においてシナリオ・コンパイラの入力となるシナリオ記述の例ｗである。
【図１０】近隣センサノード情報を，如何にして各センサノードが収集するかを示す図である。
【図１１】監視カメラを搭載したセンサノード２を用いた場合の本発明における実施形態例を示す図である。
【図１２】図１のセンサネットワークを複数用いて大規模なセンサネットワークを構成する場合の構成図である。
【図１３】XML 形式のデータの統合（マッシュアップ）について図１２を参照して説明する図である。
【図１４】本発明に従うネットワークで構築したアプリケーションの一例を示す図である。
【図１５】更に別の実施の形態例を説明する図であり，図１のセンサネットワークにシナリオ生成器を追加した構成を示す図である。
【発明を実施するための形態】
【００３３】
以下図面に従い，本発明の実施の形態例を説明する。ただし，実施の形態例は，発明の理解のためであり，本発明の保護の範囲は，かかる実施の形態例に限定されるものではない。
【００３４】
図１は，本発明に従うセンサネットワークシステムの一実施の形態例構成を示す図である。
【００３５】
なお，以下の説明において，図示される複数の同様要素のそれぞれを示すときは，参照番号に添え字を付し，同様要素の全体を指すときには，添え字なしで参照番号のみを付して説明する。
【００３６】
図１において，複数の基地局１１〜１p（図では，１１〜１３までを示す）とセンサノード２１〜２q（図では，２１〜１１０までを示す）を有し，それぞれ互いに無線通信により接続してセンサネットワーク１００を構成する。
【００３７】
センサノード２１〜２q同士は，マルチホップ通信方式により各センサノード２で取得したセンシングデータを１つ以上の基地局１へ転送する。
【００３８】
センサノード２から基地局１に届いたセンシングデータは，基地局同士を接続するネットワーク３を介して，最終的にある１つの基地局１３に接続されたユーザ端末４に集約される。ここで，基地局１同士を接続する基地局用ネットワーク３はIEEE802.11b などの標準的な無線ＬＡＮを用いて構築可能である。ルーティングプロトコルとして標準化されているＡＯＤＶ（Ad hoc On-Demand Distance Vector）プロトコルなどの動的ルーティング方式を採用すれば，たとえ幾つかの基地局１が途中で死滅しても，基地局同士の通信は継続的に維持可能となる。
【００３９】
したがって，同じ基地局用ネットワーク３に参加できる無線機能を持つユーザ端末４を投入すれば，その端末４に各基地局１１〜１pが受信したセンシングデータを転送することにより，全てのセンシングデータをユーザ端末４およびローカルデータベース（local DB）５に集約することが可能となる。
【００４０】
一方，センサノード２同士で構成するセンサノード用ネットワーク６は，基地局１と同様に標準的な無線ＬＡＮを用いて構築できるほか，ZigBee 方式など他の標準化された無線方式などを用いても構築できる。
【００４１】
センサノード用ネットワーク６でも，基地局用ネットワーク３と同様に，マルチホップ通信に対応した動的ルーティングプロトコルを用いることにより，各センサノード２から複数の基地局１への経路を動的に確保することができる。
【００４２】
また，複数個の基地局１１〜１pを設置することにより，各基地局１の物理的な位置が既知であれば，それを基準として，位置が未知である各センサノード２の位置推定が可能となる。すなわち，複数の基地局１１〜１pが基地局用ネットワーク３を構成し，互いの情報を自由に交換できることから，あるセンサノード２から各基地局１に至る通信ホップ数をユーザ端末４に集約できる。
【００４３】
ユーザ端末４では，それら情報を総合して，各センサノード２の位置推定行う。具体的な位置推定方法は，３点測量やホップ数に基づく方法など既知の方法が使用できる。また，各基地局１の絶対的な位置を知るには，各基地局１にＧＰＳ受信機を搭載する事により可能である。勿論，基地局１を設置する際に、その位置が既知であれば，その値を直接当該基地局に設定することでも実現できる。
【００４４】
さらに，センサネットワーク１００をインターネットや後述する広域ネットワークに接続するためにゲートウエイ装置(ＧＷ)７を設ける。
【００４５】
図２に上記センサネットワーク１００の構成要素であるセンサノード２の構成例を示す。センサノード２は，無線モジュール２０，論理可変ハードウエア２１，ＣＰＵ２２，ＡＤＣ（アナログデジタルコンバータ）２３，センサ２４，ワーキングメモリ２５，プログラム格納メモリ２６，コンフィギュレーションメモリ２７，及びコンフィギュレーション回路２８を有する。これらの要素は，互いにバス２９を介して情報交換できる。
【００４６】
無線モジュール２０は，センサ２４が取得し，ＡＤＣ２３を通してデジタル化された数値情報を制御手段としてのＣＰＵ２２または論理可変ハードウエア２１を介して外部へ無線パケットとして送出する。また，無線モジュール２０は，外部から届く無線パケットの受信を行う。
【００４７】
ＣＰＵ２２は，当該センサノード２に搭載された他の構成要素を制御し，センサノード２全体の制御を行う。ワーキングメモリ２５は，ＣＰＵ２２で現在動作しているプログラムおよびセンサ２４から取得したデータなどをバッファ格納するメモリであり，ＤＲＡＭなどを用いて実現される。
【００４８】
プログラム格納メモリ２６は，フラッシュメモリなどの書き込み読み出し可能な不揮発メモリで構成し，バンク構造を持つ。図２に示す例では５バンク構成としているが，より多くのバンクを持つ構成にしてもよい。バンク０には，ＣＰＵ２２上で動作するオペレーティングシステム（ＯＳ）や共通アプリケーションプログラムおよび現在使用するバンク番号を格納する「開始バンク格納領域」を持つ。
【００４９】
センサノード２は電源を投入時，またはリセット時に，機械的にバンク０内の内容をワーキングメモリ２５にコピーし，ＣＰＵ２２のプログラムカウンタをワーキングメモリ２５内のそれらをコピーした先頭番地にセットし，ＯＳおよびアプリケーションプログラムを起動する。
【００５０】
その後，ＣＰＵ２２はプログラム格納メモリ２６のメモリバンク０内の「開始バンク格納領域」にアクセスし，現在起動すべきタスクプログラムが格納されているバンク番号を知り，プログラム格納メモリ２６から，当該バンク内に格納されているタスクプログラムをワーキングメモリ２５にコピーする。ついで，当該タスクを実行する。
【００５１】
また，ＣＰＵ２２は，任意時刻にプログラム格納メモリ２６の任意のバンクにアクセスし，その内容をワーキングメモリ２５にコピーし，当該タスクを起動することができる。
【００５２】
コンフィギュレーションメモリ２７もバンク構成をとり，それぞれのバンクには，論理可変ハードウエア２１の論理回路情報すなわちコンフィギュレーションデータが格納されている。図２ではコンフィギュレーションメモリ２７のバンクをバンク１１からバンク１５の５バンク構成としているが，バンク数は用途に合わせて任意に設定してよい。コンフィギュレーションメモリ２７はフラッシュメモリなどの書き込み読み出しが可能な不揮発性メモリで構成される。
【００５３】
コンフィギュレーション回路２８は，内部に「開始バンク番号レジスタ」２８１を持ち，当該レジスタ２８１が指し示すバンク内のコンフィギュレーションデータを用いて，論理可変ハードウエア２１に論理回路を実現（コンフィギュレーション）する。
【００５４】
コンフィギュレーション回路２８の起動は，センサノード２の電源投入時やリセット時だけでなく，ＣＰＵ２２の指示で，任意時刻に行える。
【００５５】
また，ＣＰＵ２２のみで，論理可変ハードウエア２１を全く使用しない場合は，電力消費を抑えるために，論理可変ハードウエア２１への電源供給を停止するとともに，バス２９から論理的に切り離しておくこともできる。コンフィギュレーション回路２８内の「開始バンク番号レジスタ」２８１の内容は，ＣＰＵ２２から任意時刻に書き換えることができる。
【００５６】
図２のセンサノード２の構成を用いれば，プログラム格納メモリ２６には，ＣＰＵ２２で動作するプログラムが保持され，その内容を書きかえることにより，センサノード２の振舞い・機能を変更できる。
【００５７】
また，電源を切っても，そのプログラム内容は，プログラム格納メモリ２６に保持され，再び電源を投入したとき，当該プログラム格納メモリ２６からワーキングメモリ２５に電源を切った時のプログラム類がコピーされ，動作を開始する。これにより機能が電源を切る前の状態に復元される。論理可変ハードウエア２１の機能も，同様に，コンフィギュレーション回路２８を介して，コンフィギュレーションメモリ２７内に格納されている，開始バンク番号格納レジスタ２８１が指し示すコンフィギュレーションデータが論理可変ハードウエア２１にコンフィギュレーションされることにより，自動的に再現される。
【００５８】
ここで，論理可変ハードウエア２１は，ＣＰＵ２２で行う処理の一部を効率的にハードウエア論理で実行するために用いる。例えば，無線パケットのエラー訂正符号・復号処理や，取得した複数のセンシングデータの値を用いてある危険な状況が起こっているかを判断する処理などが含まれる。論理可変ハードウエア２１は，ＦＰＧＡ(Field rogrammable Gate Array)などの論理回路機能を外部から変更できるデバイスを用いて構成する。
【００５９】
また，前述したコンフィギュレーション回路２８を設けることなく，ＣＰＵ２２に可変ハードウエアをコンフィギュレーションするためのプログラムを起動し，それを用いて，コンフィギュレーションメモリ２７内に格納されたコンフィギュレーションデータを論理可変ハードウエア２１にロードすることにより，論理可変ハードウエア２１の論理機能を変更するようにしてもよい。
【００６０】
さらに，各センサノード２は，次のような機能を実装する。
【００６１】
（１）自分のセンサ２４を制御し，いつどのようなセンサ２４を起動するか，あるいは，センサ２４が取得したセンシングデータをいつどこに向かって無線パケットに搭載して送出するかを決定・実行する機能，（２）隣接センサノード２から受信した無線パケットを他のセンサノード２または基地局１に転送するかを決定実行する機能などである。
【００６２】
センサネットワーク１００全体は，上述した動作を自律的に実行するセンサノード２１〜２qと基地局１１〜１pの集合体として構成される。よって，図２のセンサノード２の機能を変更することにより，物理的に同一のセンサネットワーク１００の構成であっても，環境情報の取得方法や取得したセンシングデータのユーザ端末４への転送方法おいて，異なる機能動作を実現できる。
【００６３】
本発明は，かかる機能動作のカスタマイズを積極的に利用者に開放するために，機能カスタマイズ技術を設ける。図１に示すように，各センサノード２の機能を変更する手段としてのタスクサーバ１０をセンサネットワーク１００に接続する。
【００６４】
タスクサーバ１０は，ＰＣなどの汎用計算機からなり，機能カスタマイズ技術として，シナリオ・コンパイラ１１，タスク・ライブラリ１２，シナリオ記述１３を有して，種々のタスクを含むタスク群１４が得られる。
【００６５】
利用者は，ユーザ端末４からセンサネットワーク１００を通して，タスクサーバ１０にアクセスし，センサノード２が果たすべき動作仕様をシナリオ記述１３として，シナリオ・コンパイラ１１に与える。シナリオ・コンパイラ１１は，そのシナリオ記述１３を解釈し，タスク・ライブラリ１２を参照しながら，各センサノード２で実行すべきタスク群１４を生成する。
【００６６】
ここで，タスク・ライブラリ１２とは，各センサノード２で実行可能なタスクの集合体であり，シナリオ・コンパイラ１１は，シナリオ記述１３に沿う形でタスク・ライブラリ１２に登録されたタスクを組み合わせることにより，各センサノード２で実行されるべきタスク群１４を生成する。
【００６７】
タスクの実体は、前述したセンサノード２内のＣＰＵ２２で実行されるプログラムまたは論理可変ハードウエア用のコンフィギュレーションデータである。生成されたタスクは，当該機能カスタマイズ技術が実装されたタスクサーバ１０が無線で接続された基地局，例えば，基地局１１を経由し、当該基地局１１から無線通信を用いて各センサノード２に転送され，各センサノード２のメモリに格納される。その結果，各センサノード２では、新たにメモリ２６内に格納されたプログラムをＣＰＵ２２で実行するか、または、新たにコンフィギュレーションメモリ２７内に格納されたコンフィギュレーションデータを用いて、論理可変ハードウエア２１の論理回路を変更することにより、当該センサノード２の機能が変更され，利用者が規定したシナリオを実現するように動作することが可能となる。
【００６８】
図３は，シナリオ・コンパイラ１１により生成された１つのタスク群１４のデータ（具体的にはバイナリまたはキャラクタデータであり，以降，タスクデータと呼ぶ。）３０であり，後述するｋ個(ｋ>０)のタスク転送パケットでセンサノード２に送信する場合の内訳を示している。
【００６９】
本例では，タスクデータ３０は，ｋ個のタスク転送パケット１〜ｋからなり，それぞれに搭載するデータ量をｎバイト（ｎ はｎ>１５の整数）と仮定する。したがって，タスクデータ全体のサイズがｋｎ+１５バイトである。ただし，最後のｋ番目のパケットのみ１５バイトである。 
【００７０】
図４は，図３のタスクデータ３０を，センサノード２に送るときのタスク転送パケット４０のパケット構造を表している。
【００７１】
通信パケットヘッダ４１は，図１に示したセンサネットワーク１００において，各センサノード２や基地局１間でデータを送受する際に用いる部分であり，例えば，TCP/IP 通信を用いる場合は，IPヘッダおよびTCPヘッダに相当する。通信パケットヘッダ４１以降は，ペイロードすなわちデータである。タスクデータを送る際は，図４に示すように，タスク転送パケットのヘッダ４１とその後に続くタスクデータ４２，すなわちプログラムまたはコンフィギュレーションデータの一部から構成される構造を持つ。
【００７２】
次に，タスク転送パケットのヘッダ４１の各フィールドの内容を説明するが，ヘッダ４１に含まれる複数の種別のフィールドは，添え字を付してそれぞれを区別する。以下の実施の形態例におけるヘッダ構成を説明する際も同様である。
【００７３】
タスク転送パケットのヘッダ４１において，「タスク転送パケット識別子」フィールド４１１は，当該パケットが，タスク転送パケットであることを示すシステム全体で一意に定めた数値である。すなわち，このパケット受信者は，当該「タスク転送パケット識別子」フィールド４１１の領域が，該当の値であれば，本パケットがタスク転送パケットであることを認識する。
【００７４】
「ターゲットセンサノードＩＤ」フィールド４１２は，本パケットの最終届け先センサノードのＩＤである。本パケットは，他のセンサノードや基地局などを経由，すなわちマルチホップして，最終届け先センサノードに届く場合も想定している。そのため，本ターゲットセンサノードＩＤ４１２と自分のＩＤを比較し，同じであれば，受信者は，本タスク転送パケットが自分宛であることを認識する。
【００７５】
「ターゲットメモリ」フィールド４１３には０または１が送信側で書き込まれる。０の場合は，本パケットが図２のプログラム格納メモリ２６に格納されるべきタスクデータを運んでいる事を示す。また，１の場合は，図２のコンフィギュレーションメモリ２７に格納されるべきタスクデータを運んでいる事を示す。
【００７６】
「メモリバンク番号」フィールド４１４は，図２のプログラム格納メモリ２６内のバンク番号またはコンフィギュレーションメモリ２７のメモリバンク番号を示している。前述の「ターゲットメモリ」フィールド４１３の内容と本「メモリバンク番号」フィールド４１４により，当該パケットが運んでいるタスクデータの一部をセンサノード２のどのメモリの何バンク目に格納すべきかが分かる。
【００７７】
ここで，「メモリバンク番号」フィールド４１４は，１以上から始まるという約束にしておき，もしメモリバンク番号が０の場合は，受信したセンサノード２が，未使用の任意のバンクに当該パケット群が運ぶタスクデータを格納出来ることを示す。
【００７８】
受信センサノード２が実際にどのメモリバンクに格納したかは，図７にその構造を示すタスク転送応答パケットにメモリバンク番号を格納し，タスクサーバ１０側に返信することで，タスクサーバ１０は，それを知ることが出来る。
【００７９】
「シーケンス番号」フィールド４１５は，図３のタスクデータの該当する番号，本例では１〜ｋの整数値が入る。「パケット総数」フィールド４１６は，本例ではｋであり，「データサイズ」フィールド４１７は，本例ではｎが入る。ただし，最後のｋ 番目のパケットのみ，本パケット総数はｎではなく１５となる。
【００８０】
図５は，タスクサーバ１０からセンサノード２へタスク転送パケット４０を用いてタスクデータを送信する場合の手順（シーケンス図）を示している。
【００８１】
タスクサーバ１０は，最初に図６に示すタスク転送開始パケット６０をセンサノード２に送る（ステップＳ１）。
【００８２】
図６に示すタスク転送開始パケット６０は，図４のタスク転送パケット４０のヘッダ４１の内，「タスク転送パケット識別子」フィールド４１１を「タスク転送開始パケット識別子」フィールド６１１に変えた以外は，同一のヘッダ構造を持ち，タスクデータ部は存在しない。
【００８３】
「ターゲットセンサノードＩＤ」フィールド６１２は相手センサノードＩＤ，「ターゲットメモリ」フィールド６１３は先に述べた０または１が設定される。「メモリバンク番号」フィールド６１４は，通常１以上を指定する。ここを０とした場合，前述したように，格納するバンク番号は，センサノード２に任せることを意味する。「シーケンス番号」フィールド６１５は０，「パケット総数」フィールド６１６は，図３に例示したタスクデータを送る際はｋ，「データサイズ」フィールド６１７は，ｋｎ＋１５を格納する。
【００８４】
本タスク転送開始パケット６０を受け取ったセンサノード２は，内部状態を確認し，タスクデータの受け入れが可能な場合，図７に示すタスク転送応答パケット７０をタスクサーバ１０に送る（ステップＳ２）。
【００８５】
タスク転送応答パケット７０は，図４のタスク転送パケット４０のヘッダ構造４１の内，「タスク転送パケット識別子」フィールド４１１を「タスク転送応答パケット識別子」フィールド７１１に変えたタスク転送応答パケットのヘッダ部７１を持ち，更にタスクデータ部４２を未受取パケット番号７２に変えた構造を持つ。
【００８６】
なお，タスク転送応答パケット７０は，図６のタスク転送開始パケット６０の応答だけでなく後に説明するように，図４のタスク転送パケット４０に対する応答パケットとしても用いる。
【００８７】
タスク転送開始パケット６０に対する応答では，タスク転送応答パケット７０において，ヘッダの各フィールドは，タスク転送開始パケット６０に搭載されていた情報をそのままコピーする(７１２〜７１６)。ただし，データサイズ（７１７）は０とし，未受取パケット番号領域７２は０バイトであることを明示する。
【００８８】
また，タスク転送開始パケット６０において，「メモリバンク番号」フィールド６１４が０である場合，すなわち，タスクサーバ１０の指示が，「使用するバンクは，センサノード２に任せる」であった場合は，センサノード２は，空きバンクを探し，空きバンクがあった場合はそれを，なかった場合は，いずれか新たなタスクデータでオーバライトされることを認めるバンクを選択する。
【００８９】
そして，選択したバンクの番号をヘッダの「メモリバンク番号領域」フィールド７１４に格納する。その後，タスク転送応答パケット７０をタスクサーバ１０に返す。もし，タスクデータ１０の転送が不可能な場合は，「メモリバンク番号フィールド」７１４を０として返答する。
【００９０】
次に，タスクサーバ１０では，タスク転送応答パケット７０を受け取り，メモリバンク番号７１４が０以外，すなわちタスクデータの受け取り可能であった場合は，図４のタスク転送パケット４０を使用して，センサノード２へタスクデータを転送する（ステップＳ３１〜Ｓ３ｋ）。
【００９１】
センサノード２側では，ｋ個のパケットを受け取るのを待ち，それまでに送られてきたタスク転送パケット４０のシーケンス番号を確認し，シーケンス番号に飛びがあった場合，当該パケットが未受信であることを，図７のタスク転送応答パケット７０を用いてタスクサーバに知らせる（ステップＳ４）。
【００９２】
具体的には，未受信のパケットのシーケンス番号を図７の未受取パケット番号領域７２に格納して送る。１つの未受取パケット番号を２ バイトで表すと，「データサイズ」フィールド７１７には，２ｘバイトを書き込む。ただし，ｘは，未受信パケット数である。
【００９３】
図５のシーケンス図では，シーケンス番号４と７の２つのタスク転送パケットが未受信である例を示している。タスクサーバ１０は，この応答パケットを受け取ると，シーケンス番号４と７のタスク転送パケットを再送する（ステップＳ５１，５２）。その結果，センサノード２が全てのタスク転送パケットを受信する。
【００９４】
ついで，センサノード２は，全て受け取った旨の応答を，図７のタスク転送応答パケット７０を用いてタスクサーバ１０に返す（ステップＳ６）。当該タスク転送応答パケット７０は，具体的には，図７のパケット構造において，「データサイズ」フィールド７１７は０で，未受取パケット番号領域７２は０バイトとなる。
【００９５】
最後に，タスクサーバ１０から後に説明する図８に示す実行開始命令パケット８０をセンサノード２に送る（ステップＳ７）と，新たなタスクの実行がセンサノード２側で開始される。開始後，実行を開始した旨の応答パケットがセンサノード２からタスクサーバ１０に返される（ステップＳ８）。
【００９６】
なお，本実施の形態例では，ｋ個のタスク転送パケット４０の受信を待って，再送処理を行う例を示したが，１つまたは数個のタスク転送パケット４０の受信ごとにセンサノード２側でタイムアウト時間を設け，タイムアウトした場合は，当該タスク転送パケット４０の再送要求を図７のタスク転送応答パケット７０を用いて行うようにすることもできる。
【００９７】
図８は，タスク実行開始命令パケット８０のパケット構造を示す。実行開始命令パケット８０は，１つのパケットで複数のタスクを起動することができる。起動したいタスクの格納されている「ターゲットメモリ」フィールド８１１〜８１s (０はプログラム格納メモリ２６，１はコンフィギュレーションメモリ２７を指す)と，その「メモリバンク番号」フィールド８２１〜８２sをペアで指定する。
【００９８】
各フィールドは１バイトとし，s個(s>０)のタスクの起動を指示する場合はデータサイズフィールド８３に整数値２sを書き込む。なお，センサノード２からのタスク実行開始命令パケット８０の応答は，当該タスク実行開始命令パケット８０をそのまま，タスクサーバ１０に送り返すことにより行う。ただし，起動に失敗したタスクに対応するメモリバンク番号８２は０に書き換えて返答する。
【００９９】
図５のシーケンス図では，タスクサーバ１０から転送したばかりのタスクが格納されているプログラム格納メモリ内のバンク３のタスクの実行を指示する例を示している（ステップＳ７，Ｓ８）。
【０１００】
なお，図２のセンサノード２の構成において，プログラム格納メモリ２６およびコンフィギュレーションメモリ２７に代えて，ハードディスク（ＨＤＤ）を設け，プログラム格納メモリ２６およびコンフィギュレーションメモリ２７のバンクに格納していたタスクをファイルとしてＨＤＤに一意の名前を付与して格納し，そのファイルを必要に応じてアクセスする構成としても，同様の機能を果たすことが出来る。
【０１０１】
この場合，前述したタスクサーバ１０とセンサノード２間でのタスクデータの送受や，センサノード２に格納されたタスクを起動する場合は，図４，図６，図７，図８に示した各パケット構造において，「ターゲットメモリ」フィールド（４１３，６１３，７１３，８１）及び「メモリバンク番号」フィールド（４１４，６１４，７１４，８２）は，ＨＤＤに格納する一意の名前を格納するフィールドに変えたパケット構造をそれぞれ使用する。
【０１０２】
図９は，図１においてシナリオ・コンパイラ１１の入力となるシナリオ記述の例である。図９は，「２ホップ以内に温度を計測しているセンサノード２が存在しない場合，自らの温度センサをＯＮにし，１秒ごとに温度を計測する。そうでなければ，自らの温度センサをＯＮにし，１０秒ごとに温度を計測する。」という意味を表している。
【０１０３】
１行目のneighborCount(2,“temperature”)は，組込関数であり，引数で与えた条件を満たすセンサノード数を返す。第一引数はホップ数，第二引数は，センサの種類を表す。また，図９の２行目に使用されているｏｎ(“temperature", "rate=1s")も組込関数であり，第一引数（この場合は温度）に与えたセンサをＯＮにする。第二引数は，オプションであり，センサに応じたパラメータを記載できる。本例の”rate=1s”は，温度センシングを1s 毎，すなわち毎秒行うことを指示している。
【０１０４】
なお，neighborCount(2,“temperature”)は，条件に合うセンサノード２の数を返す関数１０であるが，本関数は，各センサノード２が，以下に述べる方法により取得した近隣センサノード情報を参照することにより，その値を得る。
【０１０５】
図１０は，近隣センサノード情報を，如何にして各センサノード２が収集するかを示している。ここでは，簡単化のため，近隣センサノードのＩＤを知る場合を例に示す。
【０１０６】
図１０(Ａ)は，各センサノード２の初期状態を示す。図中，例えばn(a)は，センサノードａの隣接，すなわち１ホップ先のセンサノード２の情報を示す隣接ノードリストである。図１０(Ａ)の状態では，各センサノード２の隣接ノードリストは（）即ち，空である。次に，各センサノード２が，自分の隣接ノードリストを隣接センサノードにブロードキャストする。その結果，各センサノード２では，図１０(Ｂ)に示す情報が得られる。
【０１０７】
この各隣接センサノード２から届いた全ての隣接ノードリストを整理すると，図１０(Ｃ)に示すように，各センサノード２では，自分の隣接ノードの情報が取得できる。次に，この隣接ノードリストを，互いに隣接ノードへ再度ブロードキャストするとともに，隣接センサノードから受け取った隣接ノードリストを整理すると，自分から２ホップ先のセンサノードの情報が得られる。
【０１０８】
上記のステップを繰り返し実行することにより，最終的に，図１０に示したネットワークトポロジの情報が各センサノード２で取得できる。ここでは，隣接センサノードのＩＤのみを交換する例を述べたが，ＩＤと共に，各センサノード２が保有するセンサの種別や現在動作しているセンサの情報などを相互交換すれば，各センサノード２において，他の全てのセンサノードの情報を得ることができる。
【０１０９】
このように隣接ノードから取得した情報は，センサノード２中で動作中の各タスクからグローバルに参照出来るメモリ領域に格納し，保管される。上述した隣接センサノード同士の情報交換は，利用者が意識することなく，定期的に各センサノード同士で行われるため，隣接センサノードに関する情報は時々刻々更新される。
【０１１０】
したがって，前述したneighborCount()関数は，当該メモリ領域の情報をアクセスすることにより，即座に条件に合う隣接センサノードの数を知ることが出来る。
【０１１１】
図１１は，監視カメラを搭載したセンサノード２を用いた場合の本発明における実施形態例である。カメラ１を有するセンサノード２１およびカメラ３を有するセンサノード２３は基地局１に直接接続され，カメラ２を有するセンサノード２２はカメラ１を有するセンサノード２１を経由して，情報を基地局１に転送する。
【０１１２】
本実施の形態例において，センシング対象として例えば「赤いシャツを着た人を見つけたら知らせる」というシナリオを実現するタスクを各センサノード２に送ると，センサノードのカメラの撮影範囲に入ったセンシング対象を，画像認識技術を用いて探し，条件に合ったセンシング対象があれば，該当のセンサノード２からそのイベントを基地局１に送ることができる。
【０１１３】
ここで，画像認識は各カメラで行うことも出来るし，各カメラ自身は，画像データを直接基地局１に送り，基地局１に接続されえたゲートウエイ(ＧＷ)７内のプログラムが画像認識を行い，条件に合ったセンシング対象の有無を確認する。その結果をユーザ端末４に返す形態に構築することもできる。
【０１１４】
前者の場合，画像認識プログラムを１つのタスクとして，図１に示したタスク・ライブラリ１２に用意する。すなわち，シナリオ・コンパイラ１１は，前述のシナリオ「赤いシャツを着た人を見つけたら知らせる」を当該タスクのパラメータとして与えるように，各カメラに搭載すべきタスクを生成し，それを対応するセンサノードのカメラに送り込むことで本実施の形態例のシステムを構築する。
【０１１５】
後者，すなわち画像認識をゲートウエイ(ＧＷ)７側で行う場合は，各カメラに対するシナリオは単に「画像を１秒ごとに転送すること」といった内容になる。ゲートウエイ(ＧＷ)７では，予め実現してある画像認識プログラムに当該カメラから送られてきた画像データを入力し，「赤いシャツを着た人」を認識することで，上記システムを実現することとなる。
【０１１６】
なお，画像認識自体は既存技術，例えば，上記した非特許文献１などを用いて実現できる。また，前述したタスクサーバ１０は，ゲートウエイ(ＧＷ)７と共有する構成や，それら全てをユーザ端末４で実現する方法もある。
【０１１７】
図１２は，本発明の図１のセンサネットワーク１００を複数（図では３つのセンサネットワーク１００１〜１００３）用いて大規模なセンサネットワークを構成する場合の構成図である。本構成の中心は，デマンド・アドレッサブル・ネットワーク（demand addressable network: 以下ＤＡＮと略す）である。センサネットワーク１００１〜１００３を，本ＤＡＮに接続する場合は，それぞれ図１のセンサネットワーク１００に接続されるユーザ端末４は不要であり，ある１つの基地局にゲートウエイ装置（ＧＷ）を設ける。
【０１１８】
ＤＡＮは，下記の機能手段を具備する。
【０１１９】
(ａ) デマンド・インタプリタ２００:抽象的なユーザ端末２０１からのユーザ要求を瞬時に解釈し、具体的なサブ要求の組み合わせに展開する。ユーザ要求は，(When, Where, What)からなる要素に分解され，単純なパラメータの組み合わせからなるサブ要求となる。例えば「ここから10km 以内で出火の可能性は？」というユーザ要求は((When, Now), (Where, Here < 10 km), (What, Temperature = Rapid-Up))と展開される。
【０１２０】
また，ユーザ要求「ここから北側5km 以内で2日以内に火災の起こった可能性は？」は，((When, Now > 2 day), (Where, ((Here < 5 km) & North), (What, Temperature = Rapid-Up))となる。かかる展開される要求に含まれるパラメータや予約語の情報は，インタプリタ２００が起動したときに読み込める様にテーブル形式で用意し，そのテーブル内容を変更することにより，随時拡張できる。
【０１２１】
(ｂ) デマンド・アドレッシング：展開されたサブ要求またはその組み合わせから所望のセンシングデータを保有するセンサまたはローカルデータベース（ＤＢ）等のリソースを，集中管理されたディレクトリ等を参照することなく，動的に発見する。
【０１２２】
当該部分は，例えば，Peer-to-Peer（P2P）技術で用いられている分散ハッシュテーブル（DHT, Distributed Hash Table）２０２を用いる技術（上記した非特許文献２）で実現できる。
【０１２３】
(ｃ) データマッシュアップ・ネットワーク: 取得したデータをネットワーク内で統合（マッシュアップ）し、ユーザに提示する。これには，前記した非特許文献３のメッセージング・ネットワーク(ＭＮ)技術を構築基盤として用いることができる。 
【０１２４】
ＭＮとは、XMLルータ２０３とゲートウエイ装置（ＧＷ）を用いてOverlay-network を構築する技術である。ＭＮでは、XMLで記述したメッセージを単位として、Overlay-network 上で、内容（Content）によるデータ転送機能を実現している。
【０１２５】
ＧＷでは、受け取ったローカルデータをXML形式のメッセージに動的に変換する。メッセージは，XML 解釈機能を有するXMLルータ２０３によって目的端末まで転送される。XMLルータ２０３は、必要に応じXML形式のデータの統合（マッシュアップ）を行う。
【０１２６】
図１３は，上記のXML形式のデータの統合（マッシュアップ）について図１２を参照して説明する図である。  
【０１２７】
マッシュアッププログラム１および２はそれぞれXMLルータ２０３１および２０３２で動作している。各マッシュアッププログラムは，どのイベントやデータをマッシュアップするかについて予め決めておく。それは当該マッシュアッププログラムを作成するときでも良いし，動作開始時または動作開始後，外部からどのイベントやデータをマッシュアップするべきかを与える方法でもよい。
【０１２８】
図１３に示す構成例では，マッシュアッププログラム１は，前述のセンサネットワークシステム１００１から得られる温度イベント１と温度イベント２，及び既存情報システム（１）２１０から得られるデータをマッシュアップする。ついで，マッシュアップされた情報１として，ネットワークを介して，XMLルータ２０３２内のマッシュアッププログラム２に送る。
【０１２９】
マッシュアッププログラム２では，マッシュアップされた情報１に加え，センサネットワークシステム１００２及び又は１００３から得られる温度イベント３，図示しない別の既存情報システム（２）から得られるデータ，更に図示しない地図情報提供サイトから得られる地図情報等をマッシュアップする。ついで，マッシュアップされた情報２として，ネットワークを介して，ユーザ端末２０１に送られる。
【０１３０】
マッシュアップされた情報２は，前記既存情報システム２１０が，気象情報データベースサイトであった場合は，ユーザ端末２０１おいて，マッシュアップを行うことなく，受け取ったマッシュアップされた情報２を表示するだけで，所望の結果を得ることができる。
【０１３１】
図１４は，本発明に従う上記ネットワークで構築したアプリケーションの一例である。ユーザがユーザ端末２０１から「福島県内で気温が過去一ヶ月で３１度を超えた場所は？」と要求すると，本要求は，デマンド・インタプリタ２００で((Where, ”福島”), (When, [now, 1 month]), (What, Temperature > 31 degree), (Display, Map))とサブ要求に展開される。そして，対応する温度センサネットワーク１３０，過去の気象観測データを蓄えた気象情報データサイト１３１，及び地図情報サイト１３２に検索要求が渡る。そこで，ヒットした情報は，各ＧＷを通過するときにXMLデータに変換されてXMLルータ２０３に送られる。
【０１３２】
XMLルータ２０３では，それら情報がマッシュアップされ，ユーザ端末２０１に届けられる。これにより，ユーザ端末２０１では，何も情報統合することなく，当該情報を画面表示するだけで，図１４の上部に示すマッシュアップされマップを含む情報２０４が得られる。
【０１３３】
ここで，図１４において，温度センサネットワークを検索したとき，もし，どのセンサネットワークも温度を観測しておらず，当該センサネットワークが，本発明の図１で示したセンサネットワーク１００であった場合，「温度を計測し，３１度以上であれば，知らせること」というシナリオを当該センサネットワーク１００に図１のタスクサーバ１０経由で送り，温度計測を行わせるようにする。その後，当該センサネットワーク１００からセンシングデータを要求したデマンド・アドレッサブル・ネットワーク(ＤＡＮ)に返すようにする。これにより，センサネットワーク１００が担当する観測領域において，ユーザの要求にあった現在の温度情報を得ることができる。
【０１３４】
ここで，上述した「温度を計測し，３１度以上であれば，知らせること」というシナリオは，その都度動的にタスクサーバ１０内で生成することも出来るし，頻繁に用いるシナリオならば，タスクサーバ１０内に用意して，それを呼び出すことでもよい。さらに，同一シナリオを頻繁に使用する場合は，シナリオ・コンパイラ１１を一度だけ起動し，生成されたタスク群そのものをタスクサーバ１０内に保存しておき，それを必要に応じて各センサノード２に送り込むことでもよい。
【０１３５】
または，各センサノード２のプログラム格納メモリ２６（またはコンフィギュレーションメモリ２７）に余裕があれば，それらタスクをセンサノード２に予め入れ込んでおけば，対応するタスクを図８に示したタスク実行開始パケット８０を送るだけで，当該タスクを即座に駆動することも出来る。
【０１３６】
図１５は，更に別の実施の形態例を説明する図である。図１のセンサネットワーク１００にシナリオ生成器１４０を追加した構成である。ユーザが最初に与える初期シナリオから，タスクサーバ１０を用いて各センサノード２にダウンロードされるタスクを生成し，センサネットワーク１００を構成する各センサノード２に基地局１経由でダウンロードし，センサネットワーク１００をカスタマイズする。
【０１３７】
次に，当該センサネットワーク１００から取得したセンシングデータをシナリオ生成器１４０に送り，シナリオ生成器１４０では，ユーザが別途事前に与えておいた最終目標と前記センシングデータを入力として，新たなセンサネットワーク１００の動作シナリオを自動生成する。それを再びタスクサーバ１０に入力する。上記の一連の処理を繰り返すことにより，ユーザが与えた最終目標を達成するように動作させる。
【０１３８】
例えば，ユーザの最終目標が「火災を発見する」であり，初期シナリオを「急激な温度情報を見つける」とした場合，タスクサーバ１０は最初に「温度を計測し，計測した温度が毎秒１度以上上昇した場合はイベントを知らせる」というタスクを生成し，各センサノード２にそのタスクをダウンロードする。
【０１３９】
各センサノード２では，その条件を満たすイベントをセンシングした場合，それをセンシングデータとして，シナリオ生成器１４０に送る。シナリオ生成器１４０では，それを受け「炎を検知する」というシナリオを自動生成し，それをタスクサーバ１０に送る。タスクサーバ１０では，それを受け照度センサを起動し，「その値がＬ以上であれば知らせる」というタスクを生成し，それを各センサノード２にダウンロードする。
【０１４０】
ここで，Ｌとは照度センサの反応強度を表す数値データであり，その値が大きいほど，炎（光）に強く反応したとする。
【０１４１】
あるセンサノード２が当該イベントを感知した場合，それをシナリオ生成器１４０に返す。シナリオ生成器１４０では，先の温度の急激な変化のイベントと今回の照度センサの反応イベントがあったことから，センサネットワークの観測範囲において火災が発生しているとしてその旨を最終結果としてユーザに返す。本実施の形態例構成において，シナリオ生成器１４０は，タスクサーバ１０と物理的に同一のＰＣ内に構成することも，別装置として構成し，互いを通信回線で結ぶ構成でも実現できる。
【０１４２】
ここで，上記した実施の形態例説明では，図１のセンサネットワーク１００は無線通信であることとして説明してきたが，有線通信を用いたセンサネットワークでも勿論かまわない。また，図１において，複数個の基地局１を設けるようにしているが，１つの基地局であっても，あるいは，基地局を用いず，直接センサノード２がユーザ端末４，タスクサーバ１０と通信できるネットワーク構成でも本発明の適用範囲である。有線通信の場合は，図２に示したセンサノード２の構成の内，無線モジュールに代えて，有線モジュールを用いて構成する。
【０１４３】
また，図２で説明したセンサノード２のタスクは，図１で示したタスクサーバ１０から送られるとして説明してきたが，タスクサーバ１０に代えて，センサノード２のＣＰＵ２２に，前述した図５のシーケンス図に従った手順を実行するタスクサーバ側のプログラムを搭載し，当該センサノード２が自身の保持しているタスクを，他のセンサノードに送るようにしても良い。
【０１４４】
上記した本発明の構成を使用すれば， (１)利用者が定義可能な「シナリオ」に従って、各センサノード上で環境やユーザ要求に適応して動作する機能・役割をカスタマイズできるセンサネットワークと、(２)ユーザ要求に従って必要十分な情報をリアルタイムに利用者に提示する機能を実現できる。
【０１４５】
前者（１）に関しては，観測現場の状況に合わせて「シナリオ」を入れ替えることで、ニーズにあったセンサネットワークを迅速に構築できる。
【０１４６】
後者(２)に関しては、能動的にデータを取得し、それをネットワーク内でマッシュアップして利用者に提供する技術に特徴がある。所望のデータを取得するためにネットワーク内のリソースを，集中管理サーバやディレクトリサービスを使用せずに検索するため，大規模ネットワークを容易に構築出来る。
【０１４７】
また、前者(１)のセンサネットワーク技術と連動し、動的にセンサノードの役割を変更し、ユーザ要求を満たすセンシングデータを能動的に取得する一連の動作を自動で行うことに特徴を有する。
【０１４８】
さらに、通常、サーバや端末で実行される複数のシステムから取得した形式の異なるデータのマッシュアップ作業を，ネットワーク内に配置したルータ装置がデータ転送と共に実施する。これにより、端末に負荷をかけることなく大規模データを扱えるだけでなく，新たなデータのマッシュアップの必要が生じた場合でも，ユーザ側のソフトウエアを，改変することなく、ネットワーク側の更新作業のみで対応できる。これは大規模センサネットワークを構築する上で大きな利点となる。加えて、本発明は，前述の２つの機能を融合して実現できる，ユーザ要求に従って能動的にセンシングを行うといったコンセプトは他になく、新たなセンサネットワークの構築法・運用法を提案するものである。
【符号の説明】
【０１４９】
１１〜１p    基地局
２１〜２q  センサノード
３    基地局用ネットワーク
４    ユーザ端末
５    ローカルデータベース
６    センサノード用ネットワーク
７    ゲートウエイ装置
１０  タスクサーバ
１１  シナリオ・コンパイラ
１２  タスク・ライブラリ
１３  シナリオ記述
１４  タスク群
１００  センサネットワーク
【図１】
2014059732.tif 000003
【図２】
2014059732.tif 000004
【図３】
2014059732.tif 000005
【図４】
2014059732.tif 000006
【図５】
2014059732.tif 000007
【図６】
2014059732.tif 000008
【図７】
2014059732.tif 000009
【図８】
2014059732.tif 000010
【図９】
2014059732.tif 000011
【図１０】
2014059732.tif 000012
【図１１】
2014059732.tif 000013
【図１３】
2014059732.tif 000014
【図１４】
2014059732.tif 000015
【図１５】
2014059732.tif 000016
【図１２】
2014059732.tif 000017