(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-01
(45)【発行日】2023-03-09
(54)【発明の名称】通信方法およびネットワークシステム
(51)【国際特許分類】
H04L 25/49 20060101AFI20230302BHJP
H04L 27/02 20060101ALI20230302BHJP
【FI】
H04L25/49 J
H04L27/02 Z
(21)【出願番号】P 2018134365
(22)【出願日】2018-07-17
【審査請求日】2021-07-07
(73)【特許権者】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(73)【特許権者】
【識別番号】000125370
【氏名又は名称】学校法人東京理科大学
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ペパー フェルディナンド
(72)【発明者】
【氏名】ライプニッツ ケンジ
(72)【発明者】
【氏名】下川 哲也
(72)【発明者】
【氏名】長谷川 幹雄
(72)【発明者】
【氏名】黒田 佳織
【審査官】谷岡 佳彦
(56)【参考文献】
【文献】米国特許出願公開第2003/0108133(US,A1)
【文献】韓国公開特許第10-2014-0000824(KR,A)
【文献】米国特許出願公開第2016/0191084(US,A1)
【文献】特開2008-193701(JP,A)
【文献】米国特許出願公開第2010/0002749(US,A1)
【文献】特表2010-510726(JP,A)
【文献】国際公開第2013/129277(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 25/49
H04L 27/02
(57)【特許請求の範囲】
【請求項1】
複数のノード間でパルス列を含む信号によりデータを伝送する通信方法であって、
第1のノードにおいて、符号化すべき入力値を示す、予め定められたメッセージ時間長のメッセージを生成するステップと、
前記第1のノードにおいて、生成したメッセージに対応するパルス列を含む信号を送信するステップとを備え、
前記パルス列を含む信号は、前記メッセージの開始
を規定する
第1のパルスと、前記入力値から第1の関数に従って算出される第1の時間間隔
を前記第1のパルスとの間で規定する第2のパルスと、前記入力値から第2の関数に従って算出される第2の時間間隔を
前記第2のパルスとの間で規定する
第3のパルスと
、前記メッセージの終了を規定する第4のパルスとを含む、通信方法。
【請求項2】
第2のノードにおいて、受信されるパルス列を含む信号から、パルス間により規定される時間間隔が、前記第1の時間間隔、前記第2の時間間隔、および前記メッセージ時間長と一致する4つのパルスの組を抽出することで、メッセージを復元するステップをさらに備える、請求項1に記載の通信方法。
【請求項3】
前記第1の関数および前記第2の関数は、入力値について単調増加関数または単調減少関数である、請求項1または2に記載の通信方法。
【請求項4】
前記第1の時間間隔および前記第2の時間間隔は、いずれも前記入力値を示す同一の値として設定される、請求項1~3のいずれか1項に記載の通信方法。
【請求項5】
前記第1のノードにおいて、同一の入力値を示すメッセージを複数回送信するステップをさらに備え、
前記メッセージを複数回送信するステップは、先行のメッセージの送信から次のメッセージの送信までの時間間隔をランダムに決定するステップを含む、請求項1~4のいずれか1項に記載の通信方法。
【請求項6】
複数のノード間でパルス列を含む信号によりデータを伝送するネットワークシステムであって、
符号化すべき入力値を示す、予め定められたメッセージ時間長のメッセージを生成する第1のノードと、
前記第1のノードから送信されたメッセージを復号する第2のノードとを備え、
前記第1のノードは、生成したメッセージに対応するパルス列を含む信号を送信し、
前記パルス列を含む信号は、前記メッセージの開始
を規定する
第1のパルスと、前記入力値から第1の関数に従って算出される第1の時間間隔
を前記第1のパルスとの間で規定する第2のパルスと、前記入力値から第2の関数に従って算出される第2の時間間隔を
前記第2のパルスとの間で規定する
第3のパルスと
、前記メッセージの終了を規定する第4のパルスとを含む、ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、複数のノード間でパルス列を含む信号によりデータを伝送する通信方式およびネットワークシステムに関する。
【背景技術】
【0002】
パルスを含む信号を使用して情報を送信するためのさまざまな符号化方式が知られている。例えば、オンオフキーイング(OOK:on-off keying)は、バイナリーで「0」および「1」を符号化する方式であり、例えば、バイナリー「1」をパルス有りとして符号化し、バイナリー「1」をサイレンス(パルス無し)として符号化する。
【0003】
また、パルス位置変調(PPM:pulse-position modulation)は、信号中のパルス位置によって値を符号化する方式である。より具体的には、パルスの基準位置あるいは基準位相からのシフト量が各符号の値を示す。
【0004】
さらに、差動パルス位置変調(DPPM:differential pulse-position modulation)は、2つの連続するパルス間の時間差によって値を符号化する方式である。差動パルス位置変調は、CtS(Communication through Silence)とも称され、パルスの存在しない期間の長さが符号の値を示すことになる(例えば、非特許文献1など参照)。
【先行技術文献】
【非特許文献】
【0005】
【文献】Yujie Zhu and Raghupathy Sivakumar, "Challenges: communication through silence in wireless sensor networks", MobiCom '05 Proceedings of the 11th annual international conference on Mobile computing and networking, Pages 140-147
【発明の概要】
【発明が解決しようとする課題】
【0006】
非特許文献1には、DPPMで符号化された複数のメッセージをオーバーラップされた間隔または同一の間隔で多重化できる可能性を開示するものの、どのように実装するのかについては開示されていない。さらに、このように多重化されたメッセージを復号するための仕組みについても言及されていない。
【0007】
本技術は、パルス列を含む信号を用いた効率的な符号化および復号が可能な通信方式およびネットワークシステムを提供することを目的としている。
【課題を解決するための手段】
【0008】
本発明のある局面に従えば、複数のノード間でパルス列を含む信号によりデータを伝送する通信方法が提供される。通信方法は、第1のノードにおいて、符号化すべき入力値を示す、予め定められたメッセージ時間長のメッセージを生成するステップと、第1のノードにおいて、生成したメッセージに対応するパルス列を含む信号を送信するステップとを含む。パルス列を含む信号は、メッセージの開始および終了をそれぞれ規定する2つのパルスと、入力値から第1の関数に従って算出される第1の時間間隔および入力値から第2の関数に従って算出される第2の時間間隔をメッセージ内においてそれぞれ規定するさらに2つのパルスとを含む。
【0009】
通信方法は、第2のノードにおいて、受信されるパルス列を含む信号から、パルス間により規定される時間間隔が、第1の時間間隔、第2の時間間隔、およびメッセージ時間長と一致する4つのパルスの組を抽出することで、メッセージを復元するステップをさらに含むようにしてもよい。
【0010】
第1の関数および第2の関数は、入力値について単調増加関数または単調減少関数であってもよい。
【0011】
第1の時間間隔および第2の時間間隔は、いずれも入力値を示す同一の値として設定されてもよい。
【0012】
通信方法は、第1のノードにおいて、同一の入力値を示すメッセージを複数回送信するステップをさらに含んでいてもよい。メッセージを複数回送信するステップは、先行のメッセージの送信から次のメッセージの送信までの時間間隔をランダムに決定するステップを含むようにしてもよい。
【0013】
本発明の別の局面に従えば、複数のノード間でパルス列を含む信号によりデータを伝送するネットワークシステムが提供される。ネットワークシステムは、符号化すべき入力値を示す、予め定められたメッセージ時間長のメッセージを生成する第1のノードと、第1のノードから送信されたメッセージを復号する第2のノードとを含む。第1のノードは、生成したメッセージに対応するパルス列を含む信号を送信する。パルス列を含む信号は、メッセージの開始および終了をそれぞれ規定する2つのパルスと、入力値から第1の関数に従って算出される第1の時間間隔および入力値から第2の関数に従って算出される第2の時間間隔をメッセージ内においてそれぞれ規定するさらに2つのパルスとを含む。
【発明の効果】
【0014】
本発明によれば、パルス列を含む信号を用いた効率的な符号化および復号が可能な通信方式およびネットワークシステムを実現できる。
【図面の簡単な説明】
【0015】
【
図1】本実施の形態に従う通信方法を採用するネットワークシステムの一例を示す模式図である。
【
図2】本実施の形態に従う通信方法において用いられるメッセージのコード形式の概要を説明するための図である。
【
図3】本実施の形態に従う通信方法において用いられる時間間隔を決定するための関数の一例を説明するための図である。
【
図4】
図2に示されるメッセージのコード形式を簡略化した構成例を説明するための図である。
【
図5】本実施の形態に従う通信方法で利用されるメッセージのコード形式に従って複数のノードがそれぞれメッセージを送信した場合の処理例を説明するための図である。
【
図6】本実施の形態に従う通信方法で利用されるメッセージのコード形式に従って複数のノードがそれぞれメッセージを送信した場合の処理例を説明するための図である。
【
図7】本実施の形態に従う通信方法においてメッセージの復号に利用されるスパイクオートマトンを説明するための図である。
【
図8】本実施の形態に従うネットワークシステムに含まれるノードの構成例を示す模式図である。
【
図9】本実施の形態に従う通信方法における符号化処理の手順を示すフローチャートである。
【
図10】
図8に示す復号部のより詳細な構成例を示す模式図である。
【
図11】本実施の形態に従う通信方法における復号処理の手順を示すフローチャートである。
【
図12】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=0)。
【
図13】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
1)。
【
図14】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
2)。
【
図15】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
3)。
【
図16】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
4)。
【
図17】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
4)。
【
図18】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
5)。
【
図19】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
5)。
【
図20】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
6)。
【
図21】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
6)。
【
図22】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
7)。
【
図23】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
7)。
【
図24】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
8)。
【
図25】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t=t
8)。
【
図26】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t>t
8)。
【
図27】本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである(時刻t>t
8)。
【
図28】本実施の形態に従う通信方法におけるメッセージ時間長Cを256等分した例を示す模式図である。
【
図29】本実施の形態に従う通信方法における誤って復号される処理例を説明するための図である。
【
図30】本実施の形態に従う通信方法におけるランダムスリープを説明するための図である。
【
図31】本実施の形態に従う通信方法を採用するネットワークシステムの別の一例を示す模式図である。
【発明を実施するための形態】
【0016】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0017】
[A.ネットワークシステム]
まず、本実施の形態に従う通信方法を採用するネットワークシステムの概要について説明する。本実施の形態に従う通信方法においては、複数のノード間でパルス列を含む信号によりデータを伝送する。
【0018】
図1は、本実施の形態に従う通信方法を採用するネットワークシステム1の一例を示す模式図である。
図1を参照して、ネットワークシステム1は、複数のノード2を有しており、各ノード2は、送信すべきデータを符号化して生成されるメッセージを他のノード2へ送信するとともに、他のノード2から受信したメッセージからデータを復号する。
【0019】
本実施の形態において、「メッセージ」の各々は、1つの値を符号化して得られる単位データを意味する。各メッセージが保持する値の範囲は、各メッセージの時間的長さ、および、時間的長さに対する時間的分解能に応じて任意に決定される。以下の説明では、便宜上、メッセージ内に含まれる時間間隔は連続時間であるとする。
【0020】
典型的には、各ノード2は、メッセージの送信およびメッセージの受信のいずれかのモードと、スリープ(止)のモードとを交互に繰返す。より具体的には、メッセージの送信または受信(いずれか一方がランダムに決定される)、スリープ(スリープ期間はランダムに決定される)、メッセージの送信または受信(いずれか一方がランダムに決定される)、スリープ(スリープ期間はランダムに決定される)、・・・といった順序でモードを切り替える。このようなモード切り替えを作用することで、メッセージの送信期間の開始タイミングは、ランダムに変化することになるので、各ノード2は、他のノード2からのメッセージを正しく受信できる。このとき、メッセージの送信期間およびメッセージの受信期間は、それぞれ予め定められた一定長さとすることができる。
【0021】
なお、各ノード2には、受信回路および送信回路を独立して実装してもよい。この場合には、各ノード2は、メッセージの送信および受信を同時に実行できる。
【0022】
図1には、典型例として、無線信号を用いてメッセージを遣り取りするネットワークシステム1の構成例を示すが、有線信号を用いてメッセージを遣り取りするようにしてもよい。
【0023】
[B.概要]
次に、本実施の形態に従う通信方法の概要について説明する。
【0024】
(b1:メッセージのコード形式)
図2は、本実施の形態に従う通信方法において用いられるメッセージのコード形式の概要を説明するための図である。
図2を参照して、本実施の形態に従う通信方法においては、予め定められた固定値であるメッセージ時間長C内に3つの時間間隔f(x),g(x),C-f(x)-g(x)を規定することで、値xを符号化する。これらの3つの時間間隔は、4つの連続するパルスP
1,P
2,P
3,P
4により規定される。
【0025】
一例として、パルスP1およびP4は、メッセージ時間長Cの両端に配置される。パルスP1とパルスP2との間の時間間隔がf(x)に相当し、パルスP2とパルスP3との間の時間間隔がg(x)に相当し、パルスP3とパルスP4との間の時間間隔がC-f(x)-g(x)に相当する。
【0026】
従来の差動パルス位置変調(DPPM)あるいはCtSとは異なり、複数の時間間隔を用いて1つの値を符号化するため、冗長性を有することになる。より具体的には、従来の差動パルス位置変調(DPPM)あるいはCtSでは、2つのパルスを用いて1つの値を符号化することになるのに対して、本実施の形態に従う通信方法においては、その2倍の4つのパルス(すなわち、2つパルスを追加)を用いることで、従来の方式では実現できない誤り訂正機能を提供できる。
【0027】
なお、f(x),g(x),C-f(x)-g(x)の順序は、
図2に示す順序に限定されるものではない。例えば、C-f(x)-g(x),f(x),g(x)の順に配置してもよいし、f(x),C-f(x)-g(x),g(x)の順に配置してもよい。
【0028】
図2に示すように、送信元のノードは、符号化すべき入力値を示す、予め定められたメッセージ時間長Cのメッセージを生成するとともに、生成したメッセージに対応するパルス列を含む信号を送信する。
【0029】
図3は、本実施の形態に従う通信方法において用いられる時間間隔を決定するための関数の一例を説明するための図である。
【0030】
図3(A)に示すように、時間間隔f(x)および時間間隔g(x)を定義する関数は、符号化される入力値である値xについて単調増加関数または単調減少関数とすることで、時間間隔f(x)および時間間隔g(x)の長さと値xとをユニークに対応付けることができる。
【0031】
図2に示すパルスP
1およびパルスP
2を受信することで、パルスP
1とパルスP
2との間の時間間隔は観測可能である((1)観測値)。(1)観測値を用いて、時間間隔f(x)の逆関数から値xを推定できる((2)推定入力値)。さらに、(2)推定入力値を用いて、時間間隔g(x)から次に観測されるべき時間間隔を推定できる((3)予測値)。(3)予測値は、パルスP
2に引き続くパルスP
3を受信すべきタイミングを規定することになる。すなわち、パルスP
2の受信後にパルスP
3を受信した場合に、パルスP
1とパルスP
2との間の時間間隔が(3)予測値と一致すれば、パルスP
1,P
2,P
3の系列は、推定されたメッセージのコード形式に適合することを示す。
【0032】
最終的に、パルスP3の受信後にパルスP4を受信した場合に、パルスP1とパルスP4との間の時間間隔がメッセージ時間長Cと一致すれば、パルスP1,P2,P3,P4の系列は、他のノード2から送信されたメッセージを示すものであると確定できる。
【0033】
本実施の形態に従う通信方法においては、先頭のパルスから最終のパルスまでの時間長さが固定のメッセージ時間長Cを維持することが重要である。なお、あるネットワークに属するノード間で利用されるメッセージ時間長と、別のネットワークに属するノード間で利用されるメッセージ時間長とを異なるようにしてもよい。メッセージ時間長を異ならせることによって、同一ネットワークに属するノード2からのメッセージのみを選択的に受信できる。
【0034】
図2および
図3(A)に示すように、本実施の形態に従う通信方法において用いられるパルス列を含む信号は、メッセージの開始および終了をそれぞれ規定する2つのパルス(パルスP
1およびP
4)と、入力値から第1の関数に従って算出される時間間隔f(x)および入力値から第2の関数に従って算出される時間間隔g(x)をメッセージ内においてそれぞれ規定するさらに2つのパルス(パルスP
2およびP
3)とを含む。
【0035】
このようなパルス列を含む信号が重畳された場合には、異なるノード2からのパルス列が混在して現れることになるが、これらの混在したパルス列から正しくメッセージを復元する。具体的には、受信側のノード2は、受信されるパルス列を含む信号から、パルス間により規定される時間間隔が、f(x),g(x),C-f(x)-g(x)(なお、配置順序は任意)と一致する4つのパルスの組を抽出することで、メッセージを復元する。
【0036】
図3(B)には、最も単純化された形式として、時間間隔f(x)=時間間隔g(x)=x(符号化すべき入力値である値xと同一、あるいは、符号化すべき入力値である値xを所定範囲に規格化した値)を採用した例を示す。すなわち、
図3(B)に示される形式においては、時間間隔f(x)(第1の時間間隔)および時間間隔g(x)(第2の時間間隔)は、いずれも入力値である値xを示す同一の値として設定される。
【0037】
このような単純化された形式を採用することで、
図3(A)に示すような、観測される時間間隔f(x)から次に観測されるべき時間間隔g(x)の予測値を算出する処理を単純化できる。
【0038】
図4は、
図2に示されるメッセージのコード形式を簡略化した構成例を説明するための図である。
図4に示すコード形式においては、
図3(B)に示すように2つの時間間隔を入力値と一致させることで、メッセージ時間長C内の3つの時間間隔は、x,x,C-2xとなる。以下、本実施の形態に従う通信方法で採用されるメッセージのコード形式を「x/x/C-2xコード」と称することもある。上述したように、メッセージ内における3つの時間間隔の配置順序は任意に決定できる。
【0039】
図4に示すようなx/x/C-2xコードを採用することで、任意の4つ以上のパルス列を受信したノード2においては、固定のメッセージ時間長Cを規定する2つのパルスが現れるか否か、および、当該2つのパルスにより規定されるメッセージ時間長C内に同一の時間間隔xが繰返されているか否かに基づいて、送信されたメッセージを検出できる。このようなメッセージの検出に2つの条件を適用することにより、誤り訂正機能を提供できる。
【0040】
すなわち、別のノード2から同時に別のメッセージが送信された場合であっても、当該別のメッセージの影響を極力受けることなく、それぞれのメッセージを再構成できる。
【0041】
特に、時間間隔xを連続時間であるとすると、ある検出されたメッセージ時間長Cにおいて、1番目のパルスから2番目のパルスまでの期間に相当する1番目の時間間隔xと、2番目のパルスから3番目のパルスまでの期間に相当する2番目の時間間隔xとが、異なる送信元からのパルスによって実現される可能性はほぼゼロであり、このことは、送信元の独立性を実現できることを意味する。以下、より詳細に説明する。
【0042】
図5および
図6は、本実施の形態に従う通信方法で利用されるメッセージのコード形式に従って複数のノード2がそれぞれメッセージを送信した場合の処理例を説明するための図である。
【0043】
図5(A)を参照して、例えば、値xを符号化したメッセージ301(x/x/C-2x)と、値yを符号化したメッセージ302(y/y/C-2y)とについて考える。これらの2つのメッセージがほぼ同時に異なるノード2からそれぞれ送信される場合を想定する。
図5に示す例では、メッセージ301とメッセージ302との送信開始タイミングは遅延時間dだけずれているとする。すなわち、メッセージ301とメッセージ302との間には送信期間の重なり(あるいは、衝突)が生じる。
【0044】
図5(B)には、メッセージ1およびメッセージ2の両方を受信可能なノード2で受信される信号波形を示す。受信パルス列303は、メッセージ301およびメッセージ302の信号波形を重ねたものとなる。
【0045】
各ノード2においては、受信パルス列303に埋もれているメッセージを抽出する必要がある。
【0046】
図6を参照して、復号結果304および復号結果305は、受信パルス列303から抽出されるメッセージ候補の一例である。
【0047】
復号結果304について見ると、1番目の時間間隔はy+dであり、2番目の時間間隔は2x-y-dであり、3番目の時間間隔はC-2xである。x/x/C-2xコードの形式を満足させるためには、1番目の時間間隔(y+d)と2番目の時間間隔(2x-y-d)とが一致する必要がある。すなわち、y=x-dの関係が満足されなければならない。
【0048】
復号結果305について見ると、2番目の時間間隔はx-dであり、2番目の時間間隔は2y-y+dであり、3番目の時間間隔はC-2yである。x/x/C-2xコードの形式を満足させるためには、1番目の時間間隔(x-d)と2番目の時間間隔(2y-y+d)とが一致する必要がある。すなわち、y=x-dの関係が満足されなければならない。
【0049】
復号結果304および復号結果305のいずれについても、x/x/C-2xコードの形式を満足させるためには、共通の条件としてy=x-dの成立が必要であることが分かる。すなわち、復号結果304および復号結果305は、実質的な相違はなく、その他の復号結果についても同様である。
【0050】
この条件を復号結果304に適用すると、1番目の時間間隔はxであり、2番目の時間間隔はxであり、3番目の時間間隔はC-2xとなる。これは、メッセージ301と一致する。
【0051】
また、この条件を復号結果305に適用すると、1番目の時間間隔はyであり、2番目の時間間隔はyであり、3番目の時間間隔はC-2yとなる。これは、メッセージ302と一致する。
【0052】
すなわち、y=x-dが成立することは、送信されたメッセージ301およびメッセージ302を正しく復号できることと等価である。
【0053】
このように、本実施の形態に従うx/x/C-2xコードを採用することで、十分に高い確度でメッセージを復号できることが分かる。なお、本実施の形態に従うx/x/C-2xコードにおいて符号される値は、連続時間であってもよいし、離散時間であってもよい。
【0054】
(b2:スパイクオートマトン)
次に、本実施の形態に従う通信方法においてメッセージの復号に利用される実装例について説明する。
【0055】
本実施の形態においては、メッセージを復号するためのアルゴリズムを記述するオートマトンモデル(以下、「スパイクオートマトン」あるいは「SA」とも称す。)を導入する。以下の説明においては、パルスと実質的に同義の「スパイク」という用語も用いる。
【0056】
スパイクオートマトンは、固定時間(メッセージ時間長C)のパターンに生じるスパイク列(スパイクのシーケンス)を認識する。
図7は、本実施の形態に従う通信方法においてメッセージの復号に利用されるスパイクオートマトン32を説明するための図である。
【0057】
図7を参照して、スパイクオートマトン32は、x/x/C-2xコードのメッセージに対応して、4つのステートST1,ST2,ST3,ST4を有している。スパイクオートマトン32においては、遷移条件が成立するたびに、紙面左側から紙面右側へ順次遷移することになり、逆方向への遷移は存在しない。
【0058】
4つのステートST1,ST2,ST3,ST4に対してそれぞれスパイクタイムst1,st2,st3,st4が関連付けられている。スパイクタイムは、ステート遷移するための条件である。あるステートSTから次のステートST’へ遷移するための条件は、次のステートST’に関連付けられているスパイクタイムにおいて、スパイクが検出(すなわち、パルスイベントが発生)することである。
【0059】
スパイクオートマトン32の最終ステート(
図7に示す例では、ステートST4)は、アクセプタンスステートに相当する。あるスパイクオートマトン32においてアクセプタンスステートまで到達することは、メッセージを正しく復号できたことを意味する。アクセプタンスステートまで到達したスパイクオートマトン32について、対応するメッセージが確定されることになる。
【0060】
本実施の形態に従うx/x/C-2xコードを採用した場合には、最初の時間間隔(時間間隔f(x);値x)を取得する必要があるので、2つのスパイク(パルスイベント)が発生した時点で、スパイクオートマトン32を生成するとともに、各ステートに関連付けられるスパイクタイムを決定できる。このとき、スパイクオートマトン32の現在ステートは、2番目のステート(ステートST2)となる。
【0061】
例えば、メッセージ時間長C=10.0とした場合に、1番目のスパイク(パルスイベント)が時刻t=1.5で発生し、2番目のスパイク(パルスイベント)が時刻t=3.5で発生したとすると、スパイクオートマトン32の各ステートに関連付けられるスパイクタイムはst1=1.5,st2=3.5,st3=5.5,st4=11.5のように決定できる。
【0062】
スパイクオートマトン32は2番目のステート(ステートST2)にセットされるので、その後、時刻t=5.5でスパイク(パルスイベント)が発生すると、次のステート(ステートST3)へ遷移し、さらに、時刻t=11.5でスパイク(パルスイベント)が発生すると、アクセプタンスステート(ステートST4)へ遷移する。アクセプタンスステートまで到達した場合には、メッセージを正しく復号できたことになる。
【0063】
一方、次のステートに関連付けられているスパイクタイムまでにスパイク(パルスイベント)が発生しなければ、そのスパイクオートマトン32は次のステートへ遷移する可能性がなくなる。そのため、次のステートへ遷移する可能性がなくなったスパイクオートマトン32については、適宜破棄されるようにしてもよい。
【0064】
以上のように、本実施の形態に従う通信方法においては、一例として、スパイクオートマトン32を用いた復号処理を採用してもよい。スパイクオートマトン32の具体的な適用手順については、後述する。
【0065】
[C.ノードの構成例]
次に、ネットワークシステム1を構成するノード2の構成例について説明する。
図8は、本実施の形態に従うネットワークシステム1に含まれるノード2の構成例を示す模式図である。
【0066】
図8を参照して、ノード2は、内部または外部に配置されたアプリケーション4から与えられる送信すべきデータ(以下、「送信データ」とも称す。)を他のノード2へ送信するとともに、他のノード2からの受信したデータ(以下、「受信データ」とも称す。)をアプリケーション4へ出力する。ノード2は、本実施の形態に従う通信方法を実現するための構成として、送受信コントローラ20と、符号化部21と、送信回路22と、アンテナ23と、受信回路24と、復号部25とを含む。
【0067】
送受信コントローラ20は、アプリケーション4からの送信データの受取り、および、アプリケーション4への受信データの出力を制御する。送受信コントローラ20は、送信データに対する冗長符号の追加や、受信データに対する誤り訂正などの処理を行なってもよい。
【0068】
符号化部21は、送受信コントローラ20からの送信データを、後述するような符号化規則に従って、1または複数のメッセージを生成する。
【0069】
送信回路22は、符号化部21により生成されたメッセージを示す無線信号を生成する。送信回路22により生成された無線信号は、アンテナ23から送出される。
【0070】
受信回路24は、アンテナ23を介して無線信号を受信し、無線信号が示す振幅の時間的変化を復号部25へ出力する。
【0071】
復号部25は、受信回路24からの振幅の時間的変化に基づいて、他のノード2から受信したメッセージを抽出および復元する。復号部25は、復元したメッセージが示す値を送受信コントローラ20へ出力する。送受信コントローラ20は、復号部25からのメッセージが示す値を受信データとしてまとめてアプリケーション4へ出力する。
【0072】
[D.符号化処理]
次に、本実施の形態に従う通信方法における符号化処理について説明する。
【0073】
図9は、本実施の形態に従う通信方法における符号化処理の手順を示すフローチャートである。
図9に示す各ステップは、
図8に示すノード2の符号化部21によって実行される。
【0074】
図9を参照して、送信元のノード2は、新たな送信データが入力されたか否かを判断する(ステップS100)。新たな送信データが入力されていなければ(ステップS100においてNO)、ステップS100の処理が繰返される。
【0075】
新たな送信データが入力されると(ステップS100においてYES)、送信元のノード2は、入力された新たな送信データを1つのメッセージに含めることができる値からなる入力値列を生成する(ステップS102)。
【0076】
送信元のノード2は、ステップS102において生成した入力値列の先頭の値を選択し(ステップS104)、選択した値からメッセージに含めるべき時間間隔を算出する(ステップS106)。送信元のノード2は、ステップS106において算出した時間間隔に基づいてメッセージを生成する(ステップS108)。すなわち、送信元のノード2は、符号化すべき入力値を示す、予め定められたメッセージ時間長Cのメッセージを生成する。そして、送信元のノード2は、当該生成したメッセージを規定するパルス列を含む信号を他のノード2へ送信する(ステップS110)。すなわち、送信元のノード2は、生成したメッセージに対応するパルス列を含む信号を送信する。
【0077】
送信元のノード2は、ステップS102において生成した入力値列のすべてを処理したか否かを判断する(ステップS112)。生成した入力値列のうち未処理のものがあれば(ステップS112においてNO)、送信元のノード2は、入力値列の次の値を選択し(ステップS114)、ステップS106以下の処理を繰返す。
【0078】
これに対して、生成した入力値列のすべてが処理済であれば(ステップS112においてYES)、符号化処理は終了する。
【0079】
[E.復号処理]
次に、本実施の形態に従う通信方法における復号処理について説明する。復号処理においては、スパイクオートマトン32が用いられる。
【0080】
各ノード2は、異なる時間に受信された2つのパルスイベントからなるすべての組について、スパイクオートマトン32を生成する。この生成されるスパイクオートマトン32においては、1番目のスパイクタイムst
1および2番目のスパイクタイムst
2の条件が満たされているとみなす。すなわち、2番目のステート(
図7に示すステートST2)が初期状態となる。
【0081】
x/x/C-2xコードの形式に基づいて、スパイクタイムst1およびst2から、スパイクタイムst3およびst4を推定できる。すなわち、3番目のスパイクタイムst3=st2+(st2-st1)=2st2-st1となり、4番目のスパイクタイムst4=st1+Cとなる。
【0082】
各ノード2は、生成したスパイクオートマトン32を保持するとともに、各ノード2で発生するパルスイベントに応じて各スパイクオートマトン32のステートを適宜更新する。各ノード2は、各ノード2で発生するパルスイベントについても保持する。すなわち、各ノード2は、パルスイベントの発生毎に、パルスイベントの発生時刻が保持している各スパイクオートマトン32に設定されているスパイクタイムと一致するか否かを判断する。各ノード2は、パルスイベントの発生時刻がスパイクタイムと一致するスパイクオートマトン32について、次のステートへ遷移させる。最終的に、アクセプタンスステートまで到達したスパイクオートマトン32については、正しくメッセージを復号できたと判断して、その復号されたメッセージを出力する。
【0083】
一方、時間の経過に伴って、アクセプタンスステートまで到達できないことが判明したスパイクオートマトン32については、保持しておく必要はなくなる。
【0084】
例えば、2番目のステートにあるスパイクオートマトン32について、スパイクタイムst3が経過してもパルスイベントが発生しない場合には、次のステートへの遷移は生じ得ない。同様に、3番目のステートにあるスパイクオートマトン32について、スパイクタイムst4が経過してもパルスイベントが発生しない場合には、次のステートへの遷移は生じ得ない。したがって、2番目のステートまたは3番目のステートにおいて、次のステートへの遷移条件であるスパイクタイムが経過してもパルスイベントが発生しない場合には、当該スパイクオートマトン32は削除される。
【0085】
なお、将来生じ得るパルスイベントに対する新たなスパイクオートマトン32が生成された後、現在時刻からメッセージ時間長Cの1/2より過去に発生したパルスイベントは不要となる。これは、x/x/C-2xコードの形式においては、新たなパルスイベント50を生成するために用いられる2つのパルスイベントの時間間隔はメッセージ時間長Cの1/2未満となるからである。そのため、現在時刻からメッセージ時間長Cの1/2より過去に発生したパルスイベントは削除される。
【0086】
各ノードは、パルスイベントを登録するためのパルスイベントキュー(PEQ)を有している。時刻tNにおいて新たなパルスイベントが発生すると、当該新たなパルスイベントはパルスイベントキューに登録される。そして、登録からメッセージ時間長Cの1/2が経過するまでの間、パルスイベントに存在することになる。
【0087】
また、各ノードは、スパイクオートマトン32のセットを有しており、各スパイクオートマトン32は将来生じ得るパルスイベントの発生(あるいは不発生)を推定する。時刻tNにおいて新たなパルスイベントが発生すると、各スパイクオートマトン32に設定されるステートに応じたスパイクタイムと時刻tNとが一致するか否かを判断する。このようにして、各スパイクオートマトン32のステートが逐次更新される。そして、いずれかのスパイクオートマトン32のステートがアクセプタンスステートまで到達すると、当該スパイクオートマトン32に対応するメッセージが正しく復号できたと判断される。
【0088】
なお、パルスイベントキューに時刻tSにおいて発生したパルスイベントが登録されている状態において、時刻tNにおいて新たなパルスイベントが発生すると、スパイクオートマトン32のスパイクタイムは、st1=tS,st2=tN,st3=2tN-tS,st4=tS+Cのように算出される。また、当該新たに生成されたスパイクオートマトン32は2番目のステートに設定される。
【0089】
以上のような処理が繰返し実行されることになる。
図10は、
図8に示す復号部25のより詳細な構成例を示す模式図である。
図10を参照して、復号部25は、パルス検出部251と、オートマトン管理部252と、カウンタ253と、メッセージ復元部255と、レジスタ258とを含む。レジスタ258は、パルスイベントキュー(PEQ)254と、オートマトンキュー256とを含む。
【0090】
パルス検出部251は、受信回路24から出力される振幅の時間的変化に基づいて、無線信号中に現れるパルスを検出する。パルス検出部251は、パルスの検出に応答して、パルスイベントを発生する。
【0091】
オートマトン管理部252は、パルス検出部251からのパルスの検出に応答して、パルスイベントキュー254にパルスイベントを登録するとともに、オートマトンキュー256にスパイクオートマトン32を生成、および/または、生成済のスパイクオートマトン32のステートを更新する。また、オートマトン管理部252は、パルスイベントキュー254に登録されたパルスイベントキュー254のうち指定時間が経過したものを削除するとともに、オートマトンキュー256に生成されたスパイクオートマトン32のうち指定時間が経過したものを削除する。
【0092】
カウンタ253は、一種のタイマとして機能し、予め定められた周期毎に内部カウンタをカウントアップする。オートマトン管理部252は、カウンタ253によりカウントアップされる内部カウンタを参照して、スパイクオートマトン32のステートを更新すべき条件が満たされるか否かを判断する。
【0093】
メッセージ復元部255は、オートマトンキュー256に生成されたスパイクオートマトン32のうち、オートマトン管理部252によりアクセプタンスステートまで到達したものについて、メッセージの再構成に成功したと判断して、そのメッセージが示す値を出力する。
【0094】
図11は、本実施の形態に従う通信方法における復号処理の手順を示すフローチャートである。
図11に示す各ステップは、
図8および
図10に示すノード2の復号部25によって実行される。
【0095】
図11を参照して、受信側のノード2は、新たなパルスを受信したか否かを判断する(ステップS200)。新たなパルスを受信してなければ(ステップS200においてNO)、ステップS200の処理が繰返される。
【0096】
新たなパルスを受信すると(ステップS200においてYES)、受信側のノード2は、現在時刻からメッセージ時間長Cの1/2より過去に登録されたパルスイベントが存在するか否かを判断する(ステップS202)。現在時刻からメッセージ時間長Cの1/2より過去に登録されたパルスイベントが存在していれば(ステップS202においてYES)、受信側のノード2は、現在時刻からメッセージ時間長Cの1/2より過去に登録されたパルスイベントをパルスイベントキューから削除する(ステップS204)。
【0097】
一方、現在時刻からメッセージ時間長Cの1/2より過去に登録されたパルスイベントが存在していなければ(ステップS202においてNO)、ステップS204の処理はスキップされる。
【0098】
続いて、受信側のノード2は、オートマトンキュー256にスパイクオートマトン32が登録されているか否かを判断する(ステップS206)。オートマトンキュー256に何らのスパイクオートマトン32も登録されていなければ(ステップS206においてNO)、処理はステップS230へ進む。
【0099】
オートマトンキュー256にスパイクオートマトン32が登録されていれば(ステップS206においてYES)、受信側のノード2は、オートマトンキュー256に登録されているスパイクオートマトン32を特定するためのインデックスiを、1番目のオートマトンキュー256を示す値にセットする(ステップS208)。以下、インデックスiで特定されるスパイクオートマトン32を「SAi」と記す。
【0100】
受信側のノード2は、現在時刻のパルスイベントによるSAiのステート繊維を試み(ステップS210)、SAiのステート遷移が成功したか否かを判断する(ステップS212)。SAiのステート遷移が成功すれば(ステップS212においてYES)、受信側のノード2は、SAiがアクセプタンスステートまで到達したか否かを判断する(ステップS214)。
【0101】
SAiがアクセプタンスステートまで到達すれば(ステップS214においてYES)、受信側のノード2は、SAiに対応するメッセージを再構成する(ステップS216)。SAiがアクセプタンスステートまで到達していなければ(ステップS214においてNO)、ステップS216の処理はスキップされる。
【0102】
SAiのステート遷移が失敗であれば(ステップS212においてNO)、受信側のノード2は、SAiのステートに基づいて算出される、次に発生すべきパルスイベントの時刻が現在時刻より未来であるか否かを判断する(ステップS218)。
【0103】
次に発生すべきパルスイベントの時刻が現在時刻より過去であれば(ステップS218においてNO)、受信側のノード2は、SAiをオートマトンキューから削除する(ステップS220)。次に発生すべきパルスイベントの時刻が現在時刻より未来であれば(ステップS218においてYES)、ステップS220の処理はスキップされる。
【0104】
続いて、受信側のノード2は、現在のインデックスiがオートマトンキュー256に登録されているスパイクオートマトン32の最後を示す値であるか否かを判断する(ステップS222)。現在のインデックスiがオートマトンキュー256に登録されているスパイクオートマトン32の最後を示す値でなければ(ステップS222においてNO)、受信側のノード2は、インデックスiを1だけインクリメントする(ステップS224)。そして、ステップS210以下の処理が繰返される。
【0105】
一方、現在のインデックスiがオートマトンキュー256に登録されているスパイクオートマトン32の最後を示す値であれば(ステップS222においてYES)、処理はステップS230へ進む。
【0106】
ステップS230において、受信側のノード2は、パルスイベントキューに以前に登録されたパルスイベントが存在するか否かを判断する(ステップS230)。パルスイベントキューに以前に登録されたパルスイベントが存在していれば(ステップS230においてYES)、受信側のノード2は、現在時刻のパルスイベントと以前に登録されたパルスイベントとのすべての組合せを抽出する(ステップS232)。
【0107】
受信側のノード2は、ステップS232において抽出したパルスイベントの組合せの各々に対応付けて、スパイクオートマトン32を生成する(ステップS234)。なお、生成時におけるスパイクオートマトン32は2番目のステート(ステートST2)に設定される。また、受信側のノード2は、各スパイクオートマトン32の生成に用いられたパルスイベントの時刻に基づいて、各スパイクオートマトン32の予想されるスパイクタイムを算出する(ステップS236)。
【0108】
一方、パルスイベントキューに以前に登録されたパルスイベントが存在していなければ(ステップS230においてNO)、ステップS232~S236の処理はスキップされる。
【0109】
続いて、受信側のノード2は、現在時刻に受信した新たなパルスに対応するパルスイベントをパルスイベントキューに登録する(ステップS238)。典型的には、パルスイベントを特定するための識別子およびパルスイベントが発生した時刻がパルスイベントキューに登録される。
【0110】
最終的に、受信側のノード2は、再構成したすべてのメッセージを出力する(ステップS240)。
【0111】
そして、ステップS200以下の処理が繰返される。
[F.メッセージの復号処理例]
次に、本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例について説明する。
【0112】
図12~
図27は、本実施の形態に従う通信方法に従って複数のメッセージを復号する処理の一例を説明するためのタイムチャートである。以下の説明においては、メッセージ時間長Cに対して、値xに相当する時間を割り当てた第1のメッセージと、値yに相当する時間を割り当てた第2のメッセージとが時間的に重なって送信される例を示す。具体的には、
図12に示すように、値xに相当する時間が割り当てられたメッセージ301と、値yに相当する時間が割り当てられたメッセージ302とを想定する。
【0113】
メッセージ301については、パルスがx/x/C-2xの間隔で発生することが復号の条件となり、メッセージ302については、パルスがy/y/C-2yの間隔で発生することが復号の条件となる。
【0114】
一例として、メッセージ301に含まれるパルスは、時刻t1,t3,t4,t7の各々において発生し、メッセージ302に含まれるパルスは、時刻t2,t5,t6,t8の各々において発生するものとする。
【0115】
(f1:初期状態)
図12は、初期状態(時刻t=0)におけるパルスイベントキュー(PEQ)254の状態を示す。初期状態においては、復号処理が開始したばかりであるので、パルスイベントキュー254には何らのパルスイベントも記録されていない。パルスイベントキュー254には、パルスイベント毎にスパイクオートマトンが生成されることになる。
【0116】
(f2:時刻t=t
1)
図13は、時刻t=t
1における状態を示す。時刻t
1において最初のパルスイベント311が発生する。パルスイベント311は、パルスイベントキュー254に登録されるものの、時刻t
1においては先行のパルスイベントが存在しないので、スパイクオートマトンは生成されない。すなわち、スパイクオートマトンの生成は、メッセージ時間長Cの1/2の間に2つのパルスイベントが発生することが条件となる。
【0117】
(f3:時刻t=t
2)
図14は、時刻t=t
2における状態を示す。時刻t
2において2番目のパルスイベント312が発生する。パルスイベント312は、パルスイベントキュー254に登録されるとともに、時刻t
1および時刻t
2でそれぞれ発生したパルスイベント311および312に基づいて、スパイクオートマトン321が生成される。
【0118】
図14において、スパイクオートマトン321に示す三角マークは、メッセージとして再構成するための条件となるパルスイベントが発生すべき時刻(以下、「スパイクタイム」とも称す。)を示す。すなわち、スパイクオートマトンに関連付けられて描かれる4つの三角マークに対応するすべての時刻において、パルスイベントが発生すれば、対応するメッセージを再構成できる。スパイクオートマトン321を示す4つの三角マークのうち、白抜きの三角マークは現在のステートを示す。以下の図面においても同様である。
【0119】
(f4:時刻t=t
3)
図15は、時刻t=t
3における状態を示す。時刻t
3において3番目のパルスイベント313が発生する。パルスイベント313は、パルスイベントキュー254に登録される。そして、パルスイベント311および313(時刻t
1および時刻t
3でそれぞれ発生)に基づいて、スパイクオートマトン322が生成されるとともに、パルスイベント312および313(時刻t
2および時刻t
3でそれぞれ発生)に基づいて、スパイクオートマトン323が生成される。
【0120】
一方、スパイクオートマトン321については、スパイクタイム3213がパルスイベント313と一致しないので、次のステートへ遷移するための条件が満たされないことになる。そのため、スパイクオートマトン321の現在のステートが維持される。
【0121】
(f5:時刻t=t
4)
図16および
図17は、時刻t=t
4における状態を示す。時刻t
4において4番目のパルスイベント314が発生する。パルスイベント314は、パルスイベントキュー254に登録される。
【0122】
図16を参照して、スパイクオートマトン321については、スパイクタイム3213がパルスイベント314と一致しない。さらに、スパイクオートマトン321のスパイクタイム3213と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン321はオートマトンキュー256から削除される。
【0123】
同様に、スパイクオートマトン323についても、スパイクタイム3233がパルスイベント314と一致しない。さらに、スパイクオートマトン323のスパイクタイム3233と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン323についてもオートマトンキュー256から削除される。
【0124】
一方、スパイクオートマトン322については、スパイクタイム3223がパルスイベント313と一致するので、次のステートへ遷移するための条件が満たされることになる。そのため、スパイクオートマトン322は次のステートへ遷移する。
【0125】
図17を参照して、スパイクオートマトン321およびスパイクオートマトン323の削除、ならびに、スパイクオートマトン322のステート遷移に加えて、新たなスパイクオートマトンが生成される。
【0126】
図17に示す例では、パルスイベント311および314(時刻t
1および時刻t
4でそれぞれ発生)に基づいて、スパイクオートマトン324が生成される。同様に、パルスイベント312および314(時刻t
2および時刻t
4でそれぞれ発生)に基づいて、スパイクオートマトン325が生成される。同様に、パルスイベント313および314(時刻t
3および時刻t
4でそれぞれ発生)に基づいて、スパイクオートマトン326が生成される。
【0127】
(f6:時刻t=t
5)
図18および
図19は、時刻t=t
5における状態を示す。時刻t
5において5番目のパルスイベント315が発生する。パルスイベント315は、パルスイベントキュー254に登録される。
【0128】
図18を参照して、スパイクオートマトン322のスパイクタイム3224、スパイクオートマトン324のスパイクタイム3243、スパイクオートマトン325のスパイクタイム3253、および、スパイクオートマトン326のスパイクタイム3263は、いずれもパルスイベント315と一致しない。但し、いずれのスパイクタイムも将来発生し得るパルスイベントと一致する可能性が残されているので、スパイクオートマトンは削除されない。
【0129】
ここで、時刻t1は時刻t5を基準としてメッセージ時間長Cの1/2を超えて過去になるので、パルスイベント311がスパイクオートマトンの生成の判断には必要ないことが確定する。そのため、時刻t1において発生したパルスイベント311はパルスイベントキュー254から削除される。
【0130】
図19を参照して、パルスイベント311の削除に加えて、新たなスパイクオートマトンが生成される。
【0131】
図19に示す例では、パルスイベント312および315(時刻t
2および時刻t
5でそれぞれ発生)に基づいて、スパイクオートマトン327が生成される。同様に、パルスイベント313および315(時刻t
3および時刻t
5でそれぞれ発生)に基づいて、スパイクオートマトン328が生成される。同様に、パルスイベント314および315(時刻t
4および時刻t
5でそれぞれ発生)に基づいて、スパイクオートマトン329が生成される。
【0132】
(f7:時刻t=t
6)
図20および
図21は、時刻t=t
6における状態を示す。時刻t
6において6番目のパルスイベント316が発生する。パルスイベント316は、パルスイベントキュー254に登録される。
【0133】
図20を参照して、スパイクオートマトン322のスパイクタイム3224、スパイクオートマトン324のスパイクタイム3243、スパイクオートマトン325のスパイクタイム3253、スパイクオートマトン326のスパイクタイム3263、スパイクオートマトン328のスパイクタイム3283、および、スパイクオートマトン329のスパイクタイム3293は、いずれもパルスイベント316と一致しない。
【0134】
ここで、スパイクオートマトン325のスパイクタイム3253と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン325についてはオートマトンキュー256から削除される。同様に、スパイクオートマトン326のスパイクタイム3263と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン326についてもオートマトンキュー256から削除される。同様に、スパイクオートマトン328のスパイクタイム3283と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン328についてもオートマトンキュー256から削除される。同様に、スパイクオートマトン329のスパイクタイム3293と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン329についてもオートマトンキュー256から削除される。
【0135】
一方、スパイクオートマトン322およびスパイクオートマトン324については、スパイクタイムが将来発生し得るパルスイベントと一致する可能性が残されているので削除されない。
【0136】
スパイクオートマトン327については、スパイクタイム3273がパルスイベント316と一致するので、次のステートへ遷移するための条件が満たされることになる。そのため、スパイクオートマトン327は次のステートへ遷移する。
【0137】
また、時刻t3は時刻t6を基準としてメッセージ時間長Cの1/2を超えて過去になるので、パルスイベント313がスパイクオートマトンの生成の判断には必要ないことが確定する。そのため、時刻t3において発生したパルスイベント313はパルスイベントキュー254から削除される。
【0138】
図21を参照して、上述したような、スパイクオートマトンの削除、スパイクオートマトンのステートの更新、パルスイベントの削除に加えて、新たなスパイクオートマトンが生成される。
【0139】
図21に示す例では、パルスイベント314および316(時刻t
4および時刻t
6でそれぞれ発生)に基づいて、スパイクオートマトン330が生成される。同様に、パルスイベント315および316(時刻t
5および時刻t
6でそれぞれ発生)に基づいて、スパイクオートマトン331が生成される。
【0140】
(f8:時刻t=t
7)
図22および
図23は、時刻t=t
7における状態を示す。時刻t
7において7番目のパルスイベント317が発生する。パルスイベント317は、パルスイベントキュー254に登録される。
【0141】
図22を参照して、スパイクオートマトン324のスパイクタイム3243、スパイクオートマトン327のスパイクタイム3274、スパイクオートマトン330のスパイクタイム3303、および、スパイクオートマトン331のスパイクタイム3313は、いずれもパルスイベント317と一致しない。ここで、いずれのスパイクオートマトンについてもスパイクタイムが将来発生し得るパルスイベントと一致する可能性が残されているので削除されない。
【0142】
スパイクオートマトン322については、スパイクタイム3224がパルスイベント317と一致するので、次のステートへ遷移するための条件が満たされることになる。そのため、スパイクオートマトン322は次のステートへ遷移する。すなわち、スパイクオートマトン322は、最終のアクセプタンスステートまで到達したことになり、スパイクオートマトン322に対応するメッセージ301が再構成される。
【0143】
また、時刻t4は時刻t6を基準としてメッセージ時間長Cの1/2を超えて過去になるので、パルスイベント314がスパイクオートマトンの生成の判断には必要ないことが確定する。そのため、時刻t4において発生したパルスイベント314はパルスイベントキュー254から削除される。
【0144】
図23を参照して、上述したような、スパイクオートマトンのステートの更新およびパルスイベントの削除に加えて、新たなスパイクオートマトンが生成される。
【0145】
図23に示す例では、パルスイベント315および317(時刻t
5および時刻t
7でそれぞれ発生)に基づいて、スパイクオートマトン332が生成される。同様に、パルスイベント316および317(時刻t
6および時刻t
7でそれぞれ発生)に基づいて、スパイクオートマトン333が生成される。
【0146】
(f9:時刻t=t
8)
図24および
図25は、時刻t=t
8における状態を示す。時刻t
8において8番目のパルスイベント318が発生する。パルスイベント318は、パルスイベントキュー254に登録される。
【0147】
図24を参照して、スパイクオートマトン330のスパイクタイム3303、スパイクオートマトン331のスパイクタイム3313、スパイクオートマトン332のスパイクタイム3323、および、スパイクオートマトン333のスパイクタイム3333は、いずれもパルスイベント318と一致しない。
【0148】
ここで、スパイクオートマトン333のスパイクタイム3333と一致するパルスイベントが発生する可能性はなくなるので、スパイクオートマトン333についてはオートマトンキュー256から削除される。
【0149】
一方、スパイクオートマトン327、スパイクオートマトン330、スパイクオートマトン331、スパイクオートマトン332、および、スパイクオートマトン333については、スパイクタイムが将来発生し得るパルスイベントと一致する可能性が残されているので削除されない。
【0150】
スパイクオートマトン327については、スパイクタイム3274がパルスイベント318と一致するので、次のステートへ遷移するための条件が満たされることになる。そのため、スパイクオートマトン327は次のステートへ遷移する。すなわち、スパイクオートマトン327は、最終のアクセプタンスステートまで到達したことになり、スパイクオートマトン327に対応するメッセージ302が再構成される。
【0151】
また、時刻t5は時刻t8を基準としてメッセージ時間長Cの1/2を超えて過去になるので、パルスイベント315がスパイクオートマトンの生成の判断には必要ないことが確定する。そのため、時刻t5において発生したパルスイベント315はパルスイベントキュー254から削除される。
【0152】
図25を参照して、上述したような、スパイクオートマトンのステートの更新およびパルスイベントの削除に加えて、新たなスパイクオートマトンが生成される。
【0153】
図25に示す例では、パルスイベント316および318(時刻t
6および時刻t
8でそれぞれ発生)に基づいて、スパイクオートマトン333が生成される。同様に、パルスイベント317および318(時刻t
7および時刻t
8でそれぞれ発生)に基づいて、スパイクオートマトン334が生成される。
【0154】
(f10:時刻t>t
8)
図26および
図27は、時刻t>t
8における状態を示す。
図26および
図27に示す例においては、時刻t
8以降には何らのイベントパルスも発生しないとする。そのため、アクセプタンスステートまで到達したスパイクオートマトン322およびスパイクオートマトン327を除いた残りのスパイクオートマトンについては、いずれのスパイクタイムも満たされないことになる。
【0155】
すなわち、
図26に示される、スパイクオートマトン330、331、332、333、334については、十分な時間が経過すると、オートマトンキュー256から削除されることになる。同様に、パルスイベント316、317、318についても、パルスイベントキュー254から削除されることになる。最終的には、
図27に示されるように、スパイクオートマトン322および327が確定し、それぞれメッセージ301および302として再構成されることになる。
【0156】
[G.連続時間/離散時間]
上述の説明においては、メッセージ内に含まれる時間間隔は連続時間であるとしたが、現実の実装においては、時間間隔は離散時間として設定されることが多い。この場合、メッセージ時間長Cを均等に複数個に分割した離散時間系を採用することになる。
【0157】
図28は、本実施の形態に従う通信方法におけるメッセージ時間長Cを256等分した例を示す模式図である。
図28に示すような256個のタイムスロットに分割した場合において、x/x/C-2xコードの形式を適用すると、xの範囲は0~126となり、127階調の値を符号化できることになる。すなわち、256個のタイムスロットからなるメッセージにおいて4つのパルスを用いて表現できる値の範囲は、「0」~「126」となる。
【0158】
例えば、値「0」を符号化する場合には、「0番目」,「1番目」,「2番目」,「255番目」にそれぞれパルスが存在することになる。また、値「126」を符号化する場合には、「0番目」,「127番目」,「254番目」,「255番目」にそれぞれパルスが存在することになる。なお、値の範囲は適宜正規化できるので、例えば、「0」~「126」の範囲に代えて、「-63」~「63」の範囲とすることもできる。
【0159】
メッセージ時間長Cの分割数は、受信側のノードにおける時間分解能に応じて適宜設定できる。
【0160】
連続時間系においては、統計的に独立した2つのノードから送信されるパルスにより、x/x/C-2xコードの形式が誤って満たされる可能性はほぼゼロとみなすことができるが、
図28に示すような離散時間系において、特に分割数が少ない場合には、誤って復号される可能性が存在する。
【0161】
図29は、本実施の形態に従う通信方法における誤って復号される処理例を説明するための図である。
図29には、メッセージ時間長Cを24等分した場合の例を示す。
【0162】
図29において、メッセージ時間長Cは10個のタイムスロットであり、メッセージ301は値「3」を符号化したものであり、メッセージ302は値「1」を符号化したものである。
【0163】
受信パルス列303は、メッセージ301により生じるパルス列と、メッセージ302により生じるパルス列とを重畳したものに相当するが、
図29に示す例では、衝突区間306において、同一のタイムスロットにそれぞれのメッセージのパルスが存在することになる。
【0164】
復号結果304および復号結果305は、受信パルス列303から抽出されるメッセージ候補の一例である。復号結果305は、メッセージ302の内容と一致しており、正しく復号できているが、復号結果304は、メッセージ301の内容とは一致しておらず、誤って復号されていることが分かる。
【0165】
上述したような不確実性を低減するために、以下のようなランダムスリープを適用してもよい。
【0166】
図30は、本実施の形態に従う通信方法におけるランダムスリープを説明するための図である。
図30に示す処理例においては、メッセージを複数回に亘って送信する。一例として、メッセージ301およびメッセージ302がいずれも3回ずつ送信される。このとき、同一のメッセージが送信される間隔(スリープ時間)はランダムに設定される。
【0167】
このようなスリープ時間がランダムに設定されるため、受信パルス列303においては、メッセージ1とメッセージ2とがほぼ重なって受信される場合と、メッセージ1とメッセージ2との重なりがほとんど存在しない場合とが生じ得る。3回のメッセージ送信によって得られる復号結果304および復号結果305においては、正しいメッセージの復号を実現できる。
【0168】
このように、送信元のノードは、同一の値xを示すメッセージを複数回送信する処理をさらに実行するようにしてもよい。このメッセージを複数回送信する処理においては、先行のメッセージの送信から次のメッセージの送信までの時間間隔をランダムに決定するようにしてもよい。
【0169】
上述したようなランダムの特性を利用することで、上述したようなメッセージを誤って復号してしまう可能性を低減できる。すなわち、複数回のメッセージ送信によって、不確実性は低減される。このような不確実性の低減は、各メッセージを送信した後、同一のメッセージを再送するまでに待機する時間(スリープ時間)をランダムに設定することにより実現される。
【0170】
なお、十分にランダム性が確保されていれば、再送回数はそれほど大きくする必要はなく、メッセージを複数回送信することに伴うオーバヘッドを抑制できる。
【0171】
また、
図30に示すスリープ時間は、他のノードからの信号を受信するための受信期間としてもよい。すなわち、各ノードでは、受信期間と送信期間とが交互に切り替えられるとともに、受信期間の長さをランダムに変更するようにしてもよい。
【0172】
[H.メッセージ時間長に基づくネットワーク識別]
上述したように、本実施の形態に従う通信方法においては、メッセージが示す値に対応する時間間隔と、メッセージ時間長とに基づいて、多重化伝送を実現する。すなわち、メッセージ時間長を異ならせることで、他のメッセージ時間長のノードとは独立したネットワークを構成できる。
【0173】
図31は、本実施の形態に従う通信方法を採用するネットワークシステムの別の一例を示す模式図である。
図31には、ノードA1~A3とノードB1~B3が近接して存在する例を示す。ノードA1~A3は、メッセージ時間長C
Aのメッセージを生成するネットワークAを構成し、ノードB1~B3は、メッセージ時間長C
Bのメッセージを生成するネットワークBを構成する。
【0174】
メッセージ時間長Cを異ならせることで、別のネットワークに属するノードから送信されたメッセージは正しく復元されないので、パルス列を含む信号が同時に送信された場合であっても、自ネットワークに属するノード間でメッセージの遣り取りを実現できる。
【0175】
[I.付記]
本実施の形態は、以下のような技術思想を含む。
【0176】
(1)パルスベースのメッセージ符号化方法であって、各メッセージ内において、パルス間の時間間隔の間に機能的な関係性が規定されている。
【0177】
(2)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=f(x),I23=g(x),I34=C-f(x)-g(x)の関係を満たす。
【0178】
(3)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=f(x),I23=g(x),I34=C-f(x)-g(x)の関係を満たし、f(x),g(x)は、xについて単調増加関数または単調減少関数である。
【0179】
(4)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=x,I23=x,I34=C-2xの関係を満たす。
【0180】
(5)パルスベースのメッセージ符号化方法であって、各メッセージ内において、パルス間の時間間隔の間に機能的な関係性が規定されるとともに、先頭のパルスと最終のパルスとの間は固定値のメッセージ時間長Cである。
【0181】
(6)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=f(x),I23=C-f(x)-g(x),I34=g(x)の関係を満たす。
【0182】
(7)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=f(x),I23=C-f(x)-g(x),I34=g(x)の関係を満たし、f(x),g(x)は、xについて単調増加関数または単調減少関数である。
【0183】
(8)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=x,I23=C-2x,I34=xの関係を満たす。
【0184】
(9)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=C-f(x)-g(x),I23=f(x),I34=g(x)の関係を満たす。
【0185】
(10)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=C-f(x)-g(x),I23=f(x),I34=g(x)の関係を満たし、f(x),g(x)は、xについて単調増加関数または単調減少関数である。
【0186】
(11)パルスベースのメッセージ符号化方法であって、各メッセージは4つの連続するパルスP1,P2,P3,P4により規定される。メッセージとして符号化される値xについて、パルス間の時間間隔I12[P1,P2],I23[P2,P3],I34[P3,P4]は、I12=C-2x,I23=x,I34=xの関係を満たす。
【0187】
(12)パルス間の時間間隔は、連続時間として設定される。
(13)パルス間の時間間隔は、所定の時間分解能での離散時間として設定される。
【0188】
(14)複数のメッセージが時間的に重なっている場合、メッセージ間で衝突が発生している場合、ノイズの影響を受けて意図しないパルスが混入している場合、ノイズの影響を受けて当初のパルスが脱落している場合のいずれであっても、これらのメッセージを復号するアルゴリズム。
【0189】
(15)各ノードが同一のメッセージを連続して複数回送信する時間間隔をランダムに設定することで、受信側においてメッセージの復号についての不確実性を低減する方法。
【0190】
(16)他のノードから同一のメッセージを複数回に亘って送信する際の時間間隔をランダムに設定することで、受信側のノードにおいて各メッセージを復号するアルゴリズムを繰返し実行することで、送信されたメッセージを確実に復号する方法。
【0191】
[J.利点]
本実施の形態においては、2つの連統するパルス間の時間間隔を用いて情報を符号化する。特に、本実施の形態においては、情報を一連のパルス列に変換する前に、誤り訂正符号化を適用して情報をバイナリコードワードに変換するのではなく、衝突からの回復をより効率的に行なえるように、情報をパルスに直接符号化する。
【0192】
誤り訂正可能な程度は、情報の符号化に用いられるパルスの数に依存する。典型的な実施の形態においては、ある一対のパルス間の時間間隔が一定のメッセージ時間長Cであるパルス列を使用する。この一対のパルス間において、パルス間の時間間隔が互いに相関するようにパルス列を配置する。
【0193】
このような符号化の最も単純化された形式として、スパイクタイムst1,st2,st3,st4に発生するパルスP1,P2,P3,P4からなるパルス列を用いたときに、st2-st1=st3-st2、および、st4-st1=Cが成立する場合が挙げられる。なお、st2-st1=st3-st2<C/2が成立するように、スパイクタイムst1,st2,st3は選択される。
【0194】
このような符号化により生成されるメッセージは、メッセージ時間長Cのフレームとなり、当該フレームの開始を示す「アンカ」と称されるパルスP1と、当該フレームの「終了」を示すパルスP4と、フレーム内に2つの等しい時間間隔を規定する2つのパルスP2,P3を含むことになる。
【0195】
メッセージを誤りに対してよりロバストにするために、フレーム内にさらにパルスを配置するようにしてもよい。例えば、1フレーム内にパルスを追加して、同一の値が複数回に亘って繰返し符号化されるようにしてもよい。
【0196】
一対のパルス間のメッセージ時間長Cは、他のノードからのパルスが混在していても、フレームのアンカとなるパルスの識別を可能にする。さらに、メッセージを複数回送信することで、復号処理を冗長化することができ、複数のノードからのメッセージ送信により衝突が発生したとしても、元の情報を復元できる。
【0197】
本実施の形態に従う通信方法は、何らかの衝突が発生した場合であっても、元の情報を正確に復元できるアルゴリズムを提供する。情報を復元するアルゴリズムは、観測されるパルス列から何らかの情報を符号化したメッセージとなり得る複数の候補を抽出する。パルスを受信する毎に、メッセージ(フレーム)となり得る複数の候補が発生する可能性がある。そのため、メッセージは、ランダムに決定されるスリープ時間の後に所定回数だけ追加で送信されるようにしてもよい。このようなランダムに決定されるスリープ時間を用いることで、送信数を増加させるに伴って、メッセージを復元するための候補の数を低減できるという効果を奏する。
【0198】
本実施の形態に従う通信方法においては、ランダムに決定されるスリープ時間を用いるため、少ない再送回数で元の情報を復元でき、また、衝突が発生しても、メッセージを再送しなければならない可能性を低減できる。
【0199】
本実施の形態に従う通信方式において、連続するパルス間の時間間隔は連続時間が理想的ではあるが、現実の実装においては、パルスのタイミングの誤差やジッタが生じるため、離散時間を使用する必要がある。離散時間を使用することで、復号化処理において、より多くの復元可能性を生じさせ、この結果、メッセージが誤って復号されてしまう可能性も生じ得るが、そのような誤りが生じる可能性は実用上問題ないレベルに抑制できる。
【0200】
本実施の形態に従う通信方式において、送信ノードと受信ノードとの間に同期は必要なく、非同期で動作できる。このような非同期動作によれば、同一のメッセージを複数回に亘って送信する際に、先行のメッセージの送信から次のメッセージの送信までの時間間隔をランダムに決定することに役立つ。本実施の形態に従う通信方式は非同期動作を採用するため、非コヒーレントインパルス無線UWBなどに適している。
【0201】
本実施の形態に従う通信方式の応用を想定した場合、例えば、モノのインターネット(IoT:Internet of Things)の実現には、日常の小さなモノに含まれるフルポテンシャルを引き出すために概念的な再考が必要である。センシングは、従来の概念よりはるかに高密度で行なわれることが想定されている。すなわち、比較的小さな距離で相互作用する多数のノードが必要となることを意味する。
【0202】
ノードの数が非常に大きくなることによって、各ノードのバッテリを頻繁に充電することは不可能であるため、各ノードのエネルギー消費量は非常に少なくしなければならない。また、既存の無線技術(例えば、狭帯域無線)との干渉も予想されるため、このような干渉を最小限に抑えるために、新しい符号化、誤り訂正方法、および信号処理方法が必要となる。例えば、小さなノード間距離においては、低電力でのブロードキャストを使用することによって、干渉を最小限に抑えられるが、さらなる干渉の抑制を達成するためには、非コヒーレントインパルス無線UWBなどの、インパルス型通信の導入が不可欠になると想定される。
【0203】
本実施の形態に従う通信方式においては、脳内の信号伝送と同様に、ノード間の通信にはパルス列(スパイク列)が使用されることで、エネルギー消費量を非常に小さくできる。
【0204】
一例として、本実施の形態に従う通信方式は、低電力消費を維持しつつ、他のノードと通信する際に高いビットレートが必ずしも必要ではない無線アプリケーションにおいて有用である。このような無線アプリケーションの典型例としては、パーソナルエリアネットワーク(PAN:Personal Area Network)、ボディエリアネットワーク(BAN:Body Area Network)、多数の低コストノードを有する無線センサネットワーク、および、アクティブモードで動作できるRFIDタグあるいは非コヒーレントインパルス無線に基づく近距離無線通信(NFC)を採用しているタグなどが挙げられる。
【0205】
また、柔軟で費用対効果の高い方法で展開できるセンサノードを用いて災害監視にも適用可能である。大規模な災害発生時には、ネットワークインフラストラクチャが危険にさらされたり過負荷になる可能性があるため、既存のネットワークとは独立するとともに、多くの準備なしで迅速に運用可能なセンサネットワークの確立が急務である。本実施の形態に従う通信方式は、このようなアプリケーションの要件にも適合する。
【0206】
本発明に係るコア技術は、単純な相互作用によって、日常にある単純なモノをインテリジェント化できたインターネットの実現を可能にするものである。
【0207】
例えば、ユーザが、多数あるモノのうちから特定の1つを探索しようとするときに、ユーザに対して認知可能の情報をまとめて送信する構成、あるいは、手の形のようにユーザの必要に応じてオンザフライで適応する構成などを考えることができる。
【0208】
また、日常生活の中でモノを使って医療モニタリングを行なうことも可能である。例えば、ユーザの手に保持されるモノ、あるいは、ユーザによって着用されるモノは、心拍数や体温などを監視するのに非常に適している。そのため、周囲環境を実現する技術を安価に提供することができる。長期的には、本発明に係るコア技術を用いることで、非常に小さく、かつ、非常に安価なノードによる超高密度モニタリングを用いて新たなアプリケーションを提供できる。このような新たなアプリケーションの一例として、農業分野において、植物の疾病の管理、水や栄養のモニタリングなどが挙げられる。
【0209】
上述したアプリケーションに限られず、本発明に係るコア技術は、任意のアプリケーションに応用可能である。
【0210】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0211】
1 ネットワークシステム、301,302 メッセージ、2 ノード、4 アプリケーション、20 送受信コントローラ、21 符号化部、22 送信回路、23 アンテナ、24 受信回路、25 復号部、32,321,322,323,324,325,326,327,328,329,330,331,332,333,334 スパイクオートマトン、50,311,312,313,314,315,316,317,318 パルスイベント、251 パルス検出部、252 オートマトン管理部、253 カウンタ、254 パルスイベントキュー、255 メッセージ復元部、256 オートマトンキュー、258 レジスタ、303 受信パルス列、304,305 復号結果、306 衝突区間、3213,3223,3224,3233,3243,3253,3263,3273,3274,3283,3293,3303,3313,3323,3333 スパイクタイム、C メッセージ時間長、ST,ST1,ST2,ST3,ST4 ステート。