問 センサ・ネットワークの構成要素をあらためてご説明ください。

宮本氏 大きく分けると,センサ・ノードを含むセンサ・ネットワーク部分と,センサ・データの処理を行うゲートウェイ・クライアント部分に分けられます。利用形態によりますが,センサ・ノードのソフトウエア開発環境も必要になります。

 まずセンサ・ノードに関してですが,使用する周波数帯や出力といった無線部分の仕様,耐環境性能,使用できるセンサ,取付方法や電源の種類といったものがハードウエアの部分で決まります。

 ソフトウエアで重要なのが無線ネットワーク・プロトコルです。これによってネットワーク形態が決まり,おおよその電池寿命もそれに応じて決まります。センサ・データを集めるゲートウェイに対して直接にしかデータを送れないスター型なのか,マルチホップ伝送・中継が可能な形態なのか,さらに中継可能であっても全ノードが中継可能なメッシュ型と一部の中継可能なノードを中心に形成されたスター型のクラスタが組み合わせられたハイブリッド・スター型があります。ハイブリッド・スター型にもクラスタをまたいで中継先を切り替えられるものとそうでないものもあります。中継可能なノードは他のノードからの受信動作を行わないといけないため,中継を行わず送信動作のみのノードに比べると電池寿命はかなり短くなります。多くのセンサ・ネットワークでは中継可能なノードは電池寿命が極端に短いため電池駆動はできないものとしています。

 次にセンサ・ネットワークで集められたデータをどのように扱うかが,ゲートウェイ・クライアント部分で決まります。汎用のセンサ・データ表示クライアント・ソフトまで用意されているものもありますし,基本的にアプリケーションに特化したものを新たに用意する場合や既存のシステムにデータ形式を変換して組み込んでしまう場合があります。

 また,独自のセンサを使う場合や,センサ・ノード内にアプリケーション固有の処理を入れたい場合にはセンサ・ノードのソフトウエアを開発する必要があります。この場合にはセンサ・ノードのソフトウエア開発環境を利用します。どのような言語・環境で開発できるのか,OSは何か,無線ネットワーク・プロトコルを利用するAPIはどうなっているか,ということが開発効率を向上させるために重要になってきます。

 センサ・ノードに既存の機器を接続して無線モデムのように利用する形態の場合は,センサ・ノードのソフトウエア開発は不要ですが,何らかのインタフェースで無線モデムとして動作するセンサ・ノードとデータをやりとりすることが必要となります。RS232Cのような1対1の通信形態の無線化であれば,UART(universal asynchronous receiver transmitter)などを通じて渡されたデータをそのまま無線送信するような「透過」モードで利用することも可能ですが,RS485を使ったマスタ・スレイブ通信のように1対Nの通信形態であれば無線ネットワーク内での送信先を無線モデムに伝えなければいけません。

問 システム開発のポイントは何でしょうか。またソフトウエア開発者がソースコードを作成するときに注意すべきことを挙げてください。

宮本氏 メモリ容量と処理速度といったハードウエア資源に制限のあるセンサ・ノード上でのプログラミングでは,データをどこに保持して,それをどのタイミングで読み書きするのか,という全体のバランスをとることに注意する必要があります。

 例えば無線通信で受信したデータを中継して他のノードに送信しないといけない場合に,受信バッファは限られていますからいっぱいになる前に読み出して送信処理を行う必要があります。しかし一方で自身のセンサからデータを読み出す処理も行っているので,バランスよく両方を処理しなければデータロスが発生し,ネットワーク全体としてのスループットが落ちてしまいます。

 プログラミングのレベルで気をつけることももちろんですが,最初にシステムをデザインするときに,どのくらいのデータレートやノード数までできるのかを見積もっておくことも重要です。

 またセンサ・ノード上の負荷を軽減するために複雑な処理はサーバ側でさせるといったことも有効です。ただし,システムのアーキテクチャとしてどういう形式のデータをどの層が扱うか,というポリシーも決めておかなければ拡張性に問題が生じます。



【お知らせ】セミナー「進化するセンサ・システム開発環境の使いこなし方
Microsoft社のWindows7やCrossbow Technology社のセンサ・ネットワーク環境を利用したシステム構築法を解説。ソースコードも公開。2009年9月14日(月)開催。