(57)【特許請求の範囲】
【請求項１】
内部時刻を基準時刻と一致させる時刻更新処理を行う外部の装置の内部時刻に基づく送信時刻を含む情報を受信する受信部と、
基準時刻を保持する計時部と、
前記送信時刻から前記基準時刻に基づく前記情報を受信した受信時刻までの通信時間を計算する通信時間計算部と、
前記外部の装置との通信時間の分布を表す通信時間分布モデルを保持するモデル保持部と、
計算された前記通信時間に基づき前記通信時間分布モデルを更新するモデル更新部と、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する時刻補正部と、
を有することを特徴とする時刻補正装置。
【請求項２】
前記モデル更新部により更新された前記通信時間分布モデルに基づき、計算された前記通信時間の発生確率を計算する確率計算部と、
前記発生確率が所定の値以下の場合に、前記外部の装置における前記内部時刻を前記基準時刻と一致させる時刻更新処理の発生時刻を更新する時刻更新部と、
を有することを特徴とする請求項１に記載の時刻補正装置。
【請求項３】
前記確率計算部は、前記発生確率が所定の値以下の場合には、前記時刻更新処理が行われたと推定し、
前記時刻更新部は、前記時刻更新処理が行われた時刻を更新し、
前記確率計算部は、前記発生確率が所定の値を超えている場合には、前記時刻更新処理は行われていないと推定し、
前記時刻補正部は、直前の前記時刻更新処理が発生した時刻に基づき前記送信時刻を補正する
ことを特徴とする請求項２に記載の時刻補正装置。
【請求項４】
前記通信時間分布モデルは、前記外部の装置における前記内部時刻のずれを表す第１のモデルと、前記内部時刻のずれを含まない前記通信時間のばらつきの分布を表す第２のモデルとに基づくことを特徴とする請求項３に記載の時刻補正装置。
【請求項５】
前記通信時間分布モデルにおける通信時間は、前記第１のモデルによる前記内部時刻のずれと、前記第２のモデルによる前記通信時間の分布と、前記内部時刻のずれおよび前記通信時間の差異を含まない場合の真の通信時間との和であることを特徴とする請求項４に記載の時刻補正装置。
【請求項６】
前記第２のモデルによる前記通信時間の分布は、確率的に長さが決定されるノイズによるものであり、確率分布に従うことを特徴とする請求項４または請求項５に記載の時刻補正装置。
【請求項７】
前記第１のモデルによる前記内部時刻のずれは、前記時刻更新処理が発生した時刻からの経過時間に比例することを特徴とする請求項４から請求項６のいずれかに記載の時刻補正装置。
【請求項８】
時刻補正装置の外部の装置であって、内部時刻を基準時刻と一致させる時刻更新処理を行う前記外部の装置の内部時刻に基づく送信時刻を含む情報を受信し、
前記送信時刻から前記時刻補正装置内の基準時刻に基づく前記情報を受信した受信時刻までの通信時間を算出し、
前記通信時間の分布を予測した通信時間分布モデルを、前記通信時間に基づき更新し、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する
ことを特徴とする時刻補正方法。
【請求項９】
時刻補正装置の外部の装置であって、内部時刻を基準時刻と一致させる時刻更新処理を行う前記外部の装置の内部時刻に基づく送信時刻を含む情報を受信し、
前記送信時刻から前記時刻補正装置内の基準時刻に基づく前記情報を受信した受信時刻までの通信時間を算出し、
前記通信時間の前記内部時刻に対する予測される分布を表す通信時間分布モデルを、前記通信時間に基づき更新し、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻補正装置、時刻補正方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、センサの小型化・低価格化やネットワークの発達により、様々なセンシングデータの蓄積が可能となってきており、そのようなセンシングデータを、様々なソリューションに役立てたいという要望が高まっている。
【０００３】
一方、ネットワークに接続され、サーバに情報をアップロードするセンサの数、種類は増加している。例えば、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）の使用状況収集ツールのように、他人の装置にソフトをインストールすることによりセンサとして機能させるものもある。このように、他人の装置にソフトをインストールした場合等には、基本的にシステム設定は変更できない。また、ＰＣから携帯端末まで端末の種類やリソースの大小も様々である。このような状況では、センサを一つ一つ管理するのは手間がかかるので、運用時には個々のセンサは出来る限り手を入れる必要がない状態にしておきたいという要望が存在する。
【０００４】
しかしながら、サーバが様々なセンサのデータを統合して扱うには、サーバとセンサとの内部時刻のずれが出来るだけ小さいことが望ましい。このため、各センサの内部時刻をサーバに一致するよう自動的に補正したい。
【０００５】
このような内部時刻の自動補正の例としては、センサがサーバに送信を行い、サーバが受信時の内部時刻を返送することにより、センサとサーバの内部時刻のずれを計測して補正する技術が知られている。別の例としては、Ｆｌｏｏｄｉｎｇ  Ｔｉｍｅ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＦＴＳＰ）を用いた方法が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２０９９９５号公報
【非特許文献】
【０００７】
【非特許文献１】M. Maroti、 B. Kusy、 G. Simon and A. Ledeczi著  The Flooding Time Synchronization Protocol Proceedings of the 2nd ACM Conference on Embedded Networked Sensor Systems (SenSys’04), Baltimore、Maryland (2004).
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、センサからの通信にサーバが返信する方式では、双方向通信が必要であるとともに、センサ側で時刻を修正するため、センサ側にも手を入れる必要がある。また、ＦＴＳＰを用いる方法は、無線用の特殊なプロトコルを用いるため、センサ側のＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ（ＭＡＣ）レイヤに手を入れ、タイムスタンプをとるようにしなければならない。
【０００９】
このように、センサ一つ一つに手を入れて補正するのは手間がかかる。そこで、特殊な同期プロトコルは使わず、センサ・サーバ間の通信はセンサ情報（センサ内部時刻とセンサ値）のアップロードのみで時刻のずれを補正できることが望ましい。しかし、各センサの内部時刻の進み方にはばらつきがあるため、センサ情報のアップロードのみの通信では、精度よくセンサの内部時刻を補正することが困難であった。
【００１０】
上記課題に鑑み、センサからのアップロード情報に基づき正確な時刻の補正を行うことが可能な時刻補正装置、時刻補正方法、およびプログラムを提供する。
【課題を解決するための手段】
【００１１】
ひとつの態様である時刻補正装置は、受信部、計時部、通信時間計算部、モデル保持部、モデル更新部、および時刻補正部を有している。受信部は、外部の装置の内部時刻に基づく送信時刻を含む情報を受信することを特徴としている。計時部は、基準時刻を保持する。通信時間計算部は、送信時刻から基準時刻に基づく情報を受信した受信時刻までの通信時間を計算する。モデル保持部は、通信時間の分布を予測した通信時間分布モデルを保持する。モデル更新部は、計算された通信時間に基づき通信時間分布モデルを更新する。時刻補正部は、更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する。
【００１２】
別の態様である時刻補正方法においては、時刻補正装置の外部の装置の内部時刻に基づく送信時刻を含む情報を受信し、前記送信時刻から前記時刻補正装置内の基準時刻に基づく前記情報を受信した受信時刻までの通信時間を算出する。また、前記通信時間の分布を予測した通信時間分布モデルを、前記通信時間に基づき更新し、更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正することを特徴としている。
【００１３】
なお、上述した本発明に係る方法をコンピュータに行わせるためのプログラムであっても、このプログラムを当該コンピュータによって実行させることにより、上述した本発明に係る方法と同様の作用・効果を奏するので、前述した課題が解決される。
【発明の効果】
【００１４】
上述した態様の時刻補正装置、時刻補正方法、およびプログラムによれば、センサからのアップロード情報に基づき正確な時刻の補正を行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】一実施の形態による時刻補正システムの構成を示すブロック図である。
【図２】一実施の形態による時刻補正システムにおけるサーバの機能を示すブロック図である。
【図３】一実施の形態による通信時間の予測される分布の一例を示す図である。
【図４】一実施の形態による内部時刻の予測されるずれの一例を示す図である。
【図５】一実施の形態による送信時刻と通信時間との関係の一例を示す図である。
【図６】一実施の形態による時刻補正システムの動作を示すフローチャートである。
【図７】一実施の形態による時刻補正システムの動作を示すフローチャートである。
【図８】一実施の形態による通信時間履歴の一例を示す図である。
【図９】一実施の形態によるセンサ情報の一例を示す図である。
【図１０】一実施の形態による通信時間履歴の一例を示す図である。
【図１１】一実施の形態による時刻補正後のセンサ情報の一例を示す図である。
【図１２】一実施の形態によるＮＴＰ発生推定時刻が設定し直された後の通信時間履歴の一例を示す図である。
【図１３】標準的なコンピュータの構成の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、一実施の形態による時刻補正システムについて図面を参照しながら説明する。図１は、時刻補正システム１の構成を示すブロック図である。図１に示すように、時刻補正システム１は、サーバ３、少なくとも一つのセンサ２０およびＮｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ（ＮＴＰ）サーバ３７が、ネットワーク３５を介して接続されたシステムである。サーバ３は、ネットワーク３５を介して少なくとも一つのセンサ２０から各種の計測値を取得する情報処理装置である。センサ２０は、各種の計測値を取得し、ネットワーク３５を介してサーバ３に送信する計測装置である。ネットワーク３５は、インターネット、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ等の通信網である。
【００１７】
サーバ３は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）５、記憶装置９、時計１１、入出力装置１３、通信装置１５を有しており、互いにバス１７を介して接続されている。
【００１８】
ＣＰＵ５は、サーバ３全体の動作を制御する演算処理装置である。記憶装置９は、例えば、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、およびハードディスクなどの記憶装置およびその駆動装置を含む。記憶装置９は、例えばサーバ３の動作を制御するプログラム等各種制御プログラムを予め記憶したり、プログラムを実行する際に必要に応じて作業領域として使用したりするための記憶部である。ＣＰＵ５は、記憶装置９に記録されている所定の制御プログラムを読み出して実行することによって、各種の制御処理を行うようにすることができる。
【００１９】
時計１１は、ＮＴＰサーバ３７による時刻（以下、基準時刻という）を保持する計時装置である。時計１１は、ＮＴＰサーバ３７に例えば所定時間毎にアクセスして時刻を更新することが好ましい。この更新を行う間隔を、時計１１が基準時刻を保持するのに十分な時間に短く設定することにより、時計１１が基準時刻を保持するように構成する。
【００２０】
入出力装置１３は、入力装置および出力装置の総称である。入力装置は、サーバ３の使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をＣＰＵ７に送付する装置であり、例えばキーボード装置、マウス装置などである。出力装置は、サーバ３による処理結果を出力する装置であり、表示装置などが含まれる。例えば表示装置は、ＣＰＵ５により送付される表示データに応じてテキストや画像を表示する。
【００２１】
通信装置１５は、有線または無線により外部との間で行われる各種データの授受の管理を行うインタフェース装置である。バス１７は、上記各装置等を互いに接続し、データのやり取りを行う通信経路である。
【００２２】
センサ２０は、例えばＲＯＭ、ＲＡＭ等を含む記憶装置２１、ＣＰＵ２３、検出部２５、時計２７、通信装置２９を有し、互いにバス３１を介して接続されている。センサ２０は、各種の計測を行い、ネットワーク３５を介して計測値および送信時刻を送信する計測装置である。
【００２３】
ＣＰＵ２３は、センサ２０全体の動作を制御する演算処理装置である。記憶装置２１は、例えばセンサ２０の動作を制御する各種制御プログラムを予め記憶したり、プログラムを実行する際に必要に応じて作業領域として使用したりするための記憶装置である。ＣＰＵ２３は、記憶装置２１に記録されている所定の制御プログラムを読み出して実行することによって、各種の制御処理を行うようにすることもできる。
【００２４】
検出部２５は、各種の計測値を検出するセンサである。通信装置２９は、有線または無線により外部との間で行われる各種データの授受の管理を行うインタフェース装置である。バス３１は、上記各装置等を互いに接続し、データのやり取りを行う通信経路である。
【００２５】
図２は、時刻補正システム１におけるサーバ３の機能を示すブロック図である。図２に示すように、サーバ３のＣＰＵ５は、通信時間計算部４１、モデル更新部４３、発生確率計算部４５、ＮＴＰ時刻更新部４７、および時刻補正部４９の機能を有している。記憶装置９は、通信時間履歴記憶部５１および通信時間モデル記憶部５３を有している。
【００２６】
通信時間計算部４１は、通信装置１５がセンサ２０から受信したセンサ情報６１に含まれる送信時刻と、情報を受信した受信時刻とから、通信時間を計算する。また、通信時間計算部４１は、計算した結果を通信時間履歴記憶部５１に記憶させる。
【００２７】
モデル更新部４３は、通信時間計算部４１で計算された通信時間のモデルを更新する。また、モデル更新部４３は、更新したモデルを通信時間モデル記憶部５３に記憶させる。モデルについては後述する。
【００２８】
発生確率計算部４５は、モデル更新部４３で更新され、通信時間モデル記憶部５３に記憶されたモデルに基づいて、通信時間計算部４１で計算され、通信時間履歴記憶部５１に記憶された通信時間の発生確率を計算する。
【００２９】
ＮＴＰ時刻更新部４７は、発生確率計算部４５で計算された発生確率が所定の閾値以下の時には、センサ２０においてＮＴＰ時刻更新が行われたと判断し、通信時間履歴記憶部５１および通信時間モデル記憶部５３においてＮＴＰ時刻の更新を行う。以下、ＮＴＰ時刻更新が行われたと推定される時刻を、ＮＴＰ発生推定時刻という。
【００３０】
時刻補正部４９は、発生確率計算部４５で計算された発生確率が所定の閾値より大きい場合に、ＮＴＰ時刻更新は行われていないと判断し、内部時刻を補正する。また、時刻補正部４９は、補正された時刻補正済みのセンサ情報６３を出力し、通信時間履歴Ｓを更新する。
【００３１】
通信時間履歴記憶部５１は、通信時間履歴Ｓを保持している。通信時間履歴Ｓは、前回のＮＴＰ発生推定時刻ｔＮＴＰ以降にアップロードされたセンサ情報６１と通信時間とを保持している。センサ情報６１とは、センサ２０の検出部２５が検出した計測値と、センサ２０からサーバ３へのセンサ情報６１の送信時刻（センサ２０の内部時刻の下での送信時刻）を含む情報である。
【００３２】
ここで、図３から図５を参照しながら、内部時刻の補正に用いるモデルについて説明する。一組のセンサ２０とサーバ３を考える。まず、センサ２０の内部時刻がサーバ３内部の時刻と一致していると仮定した場合の、センサ２０からサーバ３への通信時間ｘを考える。通信時間ｘは、「最適ケースの通信時間」と、確率的に長さが決定される「通信時間ノイズ」の和であると考えられる。
【００３３】
図３は、通信時間の予測される分布の一例を示す図、図４は、内部時刻の予測されるずれの一例を示す図である。このとき、通信時間ｘの分布は、確率分布ｐ（ｘ）に従うと予測される。図３において、横軸は通信時間ｘ、縦軸は、通信時間ｘの確率分布ｐ（ｘ）を示す。図３に示すように、予測される通信時間の分布は、下記の式１で表すことができる。
ｐ（ｘ）=ｃ（γ）ｅｘｐ（−（ｘ−δ）／γ）    （ｘ≧δ）・・・（式１）
但し、
δ：最適ケースの通信時間を表すパラメータ
γ：通信時間ノイズのばらつき具合を表すパラメータ
ｃ（γ）：ｐ（ｘ）の総和を１にするための係数
である。このモデルでは、ｃ（γ）＝１／γとなる。このとき、ｐ（ｘ）の総和が常に１であることは簡単に計算できる。
【００３４】
次に、時刻ｔ（ここでは、ｔ≧ｔＴＮＰ）における、サーバ３に対するセンサの内部時刻のずれｙ（ｔ）を考える。図４においては、横軸はセンサ２０の内部時刻ｔ、縦軸は、センサ２０の内部時刻ｔのサーバ３の内部時刻に対するずれｙ（ｔ）を示している。図４に示すように、ずれｙ（ｔ）は、センサでのＮＴＰ発生時（ｔ＝ｔＮＴＰ）に０であり、ＮＴＰからの経過時刻に比例すると考えられ、下記の式２で表すことができる。
ｙ（ｔ）＝α（ｔ−ｔＮＴＰ）・・・（式２）
ｔＮＴＰ：前回のＮＴＰ発生時刻
α：センサの内部時刻のずれの広がり方を表すパラメータ
【００３５】
最後に、サーバ３で計測される通信時間（サーバ３の受信時刻とセンサ２０の送信時刻との差）ｚを考える。ここで、サーバ３の受信時刻はサーバ３の内部時刻に基づいて測定され、センサの送信時刻はセンサ２０の内部時刻に基づいて測定されたものである。よって、通信時間ｚは「最適ケースの通信時間」と「通信時間ノイズ」と「サーバに対するセンサの内部時刻のずれ」の和であると考えられる。したがって、通信時間ｚは、確率分布ｑ（ｔ、ｚ）に従う。
ｑ（ｔ、ｚ）＝１／γ・ｅｘｐ（−（ｚ−αｔ−β））／γ）（ｚ≧αｔ+β）・・・（式３）
但し、β=δ−αｔＮＴＰである。
【００３６】
このモデルを用いた時刻補正の概要は以下のとおりである。すなわち、サーバ３で計測される通信時間ｚの通信時間履歴Ｓを式３の確率分布ｑ（ｔ、ｚ）にあてはめ、その発生確率を計算する。発生確率が十分小さくなったら、すなわち、通信時間履歴Ｓが確率分布ｑ（ｔ、ｚ）にあてはまらなくなったら、その時刻をセンサ２０でＮＴＰが発生したＮＴＰ発生時刻ｔＮＴＰとみなす。ＮＴＰ発生時刻ｔＮＴＰが分かれば、サーバ３の内部時刻に対するセンサ２０の内部時刻のずれはα（ｔ−ｔＮＴＰ）で推定できるので、センサ２０の内部時刻を補正できる。
【００３７】
図５は、送信時刻ｔ（センサ２０の内部時刻ｔに基づく時刻であるので、同一の符号で表す）と通信時間ｚとの関係の一例を示す図である。図５において、横軸は送信時刻ｔ、縦軸は、通信時間ｚである。折れ線グラフ７２は、送信時刻ｔ（ｉ）（ｉは、データの送信順を表す整数）と対応する通信時間ｚ（ｉ）とを表す点（ｔ（ｉ）、ｚ（ｉ））を互いに結んだグラフである。
【００３８】
図５に示すように、通信時間ｚは、送信時刻ｔに対し、例えば点Ｐ１、Ｐ２において、突然大きく変動しており、ＮＴＰ時刻更新が行われたと考えられる。また、点Ｐ１〜Ｐ２の間は、通信時間ｚの最低値を結んだ包絡線７０（破線で表している）が直線に近い関係を示している。
【００３９】
点Ｐ１、Ｐ２は、上述のように、センサ２０内部においてＮＴＰサーバ３７へのアクセスによる内部時刻の補正が行われたことを示していると考えられ、このとき、センサ２０の内部時刻とサーバ３の内部時刻は、合致していると考えられる。また、点Ｐ１〜Ｐ２の間は、センサ２０の内部時刻が、サーバ３の内部時刻に対して、一定の割合で変化していると考えられる。すなわち、上述のように、この間の通信時間ｚは、下記の式で表されると考えられる。
ｚ＝α（ｔ−ｔＮＴＰ）＋δ・・・（式４）
よって、このとき、センサ２０の内部時刻とサーバ３内部で保持されている基準時刻とのずれは、α（ｔ−ｔＮＴＰ）と推定される。
【００４０】
次に、図６から図１０を参照しながら、本実施の形態による時刻補正システム１の動作について説明する。図６、図７は、時刻補正システム１の動作を示すフローチャートである。時刻補正システム１においては、センサ２０からサーバ３に、センサ情報６１が不定期にアップロードされているとする。
【００４１】
図６に示すように、まずＣＰＵ５は、通信時間履歴記憶部５１の通信時間履歴Ｓを空にする。すなわち、履歴の数ｎ＝０である。通信装置１５は、センサ情報６１を受信する（Ｓ１０２）。一方、ＣＰＵ５は、受信が行われたことを判別するまで判別を繰り返す（Ｓ１０３：ＮＯ）。
【００４２】
ＣＰＵ５が、通信装置１５によりセンサ情報６１の受信が行われたことを判別すると（Ｓ１０３：ＹＥＳ）、通信時間計算部４１は、センサ情報６１を取得する。また、通信時間計算部４１は、センサ情報６１に含まれたセンサ２０の内部時刻に基づく送信時刻と、サーバ３における受信時刻とに基づき、通信時間ｚを計算する（Ｓ１０４）。さらに通信時間計算部４１は、取得したセンサ情報６１、および計算結果を通信時間履歴Ｓに追加する。
【００４３】
以降では、通信時間履歴Ｓはｎ個の情報を保持しており、保持している中でｉ番目にアップロードされた情報の送信時刻をｔ（ｉ）、そのときの通信時間をｚ（ｉ）とする。通信時間計算部４１は、サーバ３の内部時刻の下での受信時刻ｕ（ｉ）を計測するとともに、通信時間ｚ（ｉ）をｚ（ｉ）＝ｕ（ｉ）−ｔ（ｉ）により計算する。
【００４４】
図８に、ｎ＝２の場合の通信時間履歴Ｓの例を示す。図８に示すように、ｎ＝１において、送信時刻ｔ（１）=２０１１／４／１  ０：００：００、このとき通信時間ｚ（１）＝２００（ミリ秒）である。ここで、ＮＴＰ発生時刻ｔＮＴＰ＝ｔ（１）である。ｎ＝２においては、送信時刻ｔ（２）=２０１１／４／１  ０：０１：００、このとき通信時間ｚ（２）＝４００（ミリ秒）である。
【００４５】
図９に、センサ情報６１の一例を示す。図９に示すように、通信装置１５は、ｎ＝３において、例えば、センサ値＝１００００、送信時刻ｔ（３）＝２０１１／４／１  ０：０２：００を含むセンサ情報６１を受信したとする。このとき、通信時間計算部４１は、上記センサ情報６１の受信時刻を受信時刻ｕ（３）＝２０１１／４／１ ０：０２：００．３００であると取得する。
【００４６】
この例では、受信時刻と送信時刻との差は３００ミリ秒であるから、ｚ（３）＝３００（ミリ秒）であり、通信時間計算部４１は、算出した結果を通信時間履歴Ｓに記憶する。図１０は、ｎ＝３の場合の通信時間履歴Ｓの一例を示している。図１０に示すように、通信時間履歴Ｓには、ｎ＝３に関するデータが一行追加されることになる（Ｓ１０５）。
【００４７】
通信時間計算部４１は、ここで、ｎ＞１であるか否か判別する（Ｓ１０６）。ｎ＞１でない場合には（Ｓ１０６：ＹＥＳ）、Ｓ１０２に戻って、次のセンサ情報６１の受信を待つ。ｎ＞１の場合には（Ｓ１０６：ＹＥＳ）、ＣＰＵ５は処理を１０７に進める。
【００４８】
以下、モデル更新部４３は、通信時間モデルの確率分布ｑ（ｔ、ｚ）のパラメータα、β、γを推定し直す。パラメータα、β、γは、以下の方法で推定できる。まず、モデル更新部４３は、Ｓ１０７において、図５の折れ線グラフ７２のような、複数の送信時刻ｔ（ｉ）とそれぞれより計算された通信時間ｚ（ｉ）とにより、例えば点Ｐ１〜Ｐ２において最小二乗法で得られる傾きをパラメータαとみなす。
【００４９】
【数１】
0005811663.tif 000002
【００５０】
ここで、モデル更新部４３は、ＮＴＰ時刻更新が既に発生しているか否かを判別する（Ｓ１２１）。ＮＴＰ時刻更新が発生しているか否かは、後述するＳ１２７において、通信時間履歴Ｓの発生確率が閾値以下であると判別された際に、ＮＴＰ時刻更新が発生していることを示すフラグを立てるなどの記録を行うことにより、判別することができる。
【００５１】
例えば上記フラグなどにより、ＮＴＰ時刻更新が発生済みと判別された場合には（Ｓ１２１：ＹＥＳ）、モデル更新部４３は、得られたパラメータαのもとで、通信時間履歴Ｓの全てのｘ（ｉ）＝ｚ（ｉ）−α（ｔ（ｉ）−ｔＮＴＰ）の最小値をδとする（式６）。
【００５２】
【数２】
0005811663.tif 000003
【００５３】
なお、ＮＴＰ時刻更新の発生が推定されていない場合は（Ｓ１２１：ＮＯ）、モデル更新部４３は、δ=０と仮定して（Ｓ１２３）、ＮＴＰ発生推定時刻ｔＮＴＰを下記の式７により更新する（Ｓ１２４、式７）。
【００５４】
【数３】
0005811663.tif 000004
【００５５】
さらに、モデル更新部４３は、得られたパラメータα、δのもとで、モデル更新部４３は、ｉ＝１〜ｎにおける確率分布ｑ（ｔ、ｚ）の発生確率を最大にするγを求める（Ｓ１２５、式８）。
【００５６】
【数４】
0005811663.tif 000005
ただし、Ｄ（ｉ）＝−（ｚ（ｉ）−α（ｔ（ｉ）−ｔＮＴＰ）−δ）である。
このγは下記の式９により簡単に求めることができる。
【００５７】
【数５】
0005811663.tif 000006
【００５８】
例えば、図１０の通信時間履歴Ｓの場合、以下のα、δ、γが得られる。
α=０．０５
δ=２００（ミリ秒）
γ=５０（ミリ秒）
【００５９】
ここで図５を再び参照する。上記のようにしてモデル更新部４３で得られたパラメータα、γ、δを用いて表される、ｚ＝α（ｔ−ｔＮＴＰ）+δは、図５の直線７０となる。なお、図５に示した例は、図１０の通信時間履歴Ｓの例とは別の数値例となっている。
【００６０】
直線７０において、点Ｐ１では送信時刻ｔ＝ｔＮＴＰ、通信時間ｚ＝δである。また、ｚ＝α（ｔ−ｔＮＴＰ）+δは、「サーバに対するセンサの内部時刻のずれ」と「最適ケースの通信時間」の和を表しており、点（ｔ（ｉ）、ｚ（ｉ））と直線７０との差が「通信時間ノイズ」を表している。
【００６１】
次に、発生確率計算部４５は、推定し直したパラメータα、β、γのもとで、通信時間履歴Ｓにおける確率分布ｑ（ｔ（ｉ）、ｚ（ｉ））による発生確率を計算する（Ｓ１２６）。この発生確率は、例えば、以下の計算式で求めることができる。
【００６２】
【数６】
0005811663.tif 000007
【００６３】
ここで、確率分布ｑ（ｔ、ｚ）の最大値は１/γであるから、γｑ（ｔ、ｚ）の最大値は１であり、単に確率分布ｑ（ｔ（ｉ）、ｚ（ｉ））の積をとるのと比較すると、パラメータγやセンサ情報６１の数ｎの影響を受けにくい発生確率になっていることが分かる。例えば、図１０の通信時間履歴Ｓの場合には、発生確率として０．０５が得られる。
【００６４】
次に、発生確率計算部４５は、求めた発生確率が予め与えられた閾値を上回っているか否か判別する（Ｓ１２７）。発生確率が閾値を上回っている場合には（Ｓ１２７：ＹＥＳ）、時刻補正部４９は、センサ情報６１に含まれる送信時刻ｔ（ｉ）からα（ｔ（ｉ）−ｔＮＴＰ）を減ずることで、センサ２０から受け取ったセンサ情報６１の送信時刻ｔ（ｉ）を補正し（Ｓ１２９）、図６の処理に戻る。
【００６５】
例えば、図１０の例では、ＮＴＰ時刻更新部４７における閾値が０．０１の場合、発生確率＝０．０５であるため、ＮＴＰ発生推定時刻ｔＮＴＰの設定し直しは発生しない。この場合、時刻補正部４９は発信時刻ｔ（ｉ）からα（ｔ（ｉ）−ｔＮＴＰ）=１００（ミリ秒）を減ずることで、センサ２０から受け取ったセンサ情報６１の発信時刻ｔ（ｉ）を補正するとともに、補正した発信時刻ｔ（ｉ）を出力する。
【００６６】
図１１は、時刻補正後の補正済センサ情報６３の一例を示す図である。図１１に示すように、時刻補正部４９は、送信時刻を１００（ミリ秒）補正する。時刻補正部４９は、送信時刻２０１１／４／１  ０：０１：５９．９００、センサ値＝１００００を含む補正済センサ情報６３を出力する。また、ＣＰＵ５は、送信時刻を補正した補正済センサ情報６３により、通信時間履歴記憶部５１の通信時間履歴Ｓを更新する。
【００６７】
発生確率が閾値を上回っていない場合には（Ｓ１２７：ＮＯ）、ＮＴＰ時刻更新部４７は、ＮＴＰ発生推定時刻ｔＮＴＰを最新のセンサ情報６１の発信時刻ｔ（ｉ）に更新する（Ｓ１３０）。この場合、時刻補正部４９がセンサ情報６１の発信時刻ｔ（ｉ）を補正する必要はない。このとき、センサ２０においてＮＴＰ時刻更新が発生したと推定し、通信時間履歴Ｓの最終行以外を削除したのち、ＮＴＰ発生推定時刻ｔＮＴＰ=ｔ（１）に設定し直す（Ｓ１３１）。
【００６８】
図１２は、ＮＴＰ発生推定時刻ｔＮＴＰが設定し直された後の通信時間履歴Ｓの一例を示す図である。図１０の例において、仮に閾値が０．１であった場合、通信時間履歴Ｓは図１２に示すように、ｉ＝１に対応するデータのみに更新される。なおこの例では、ｔ（１）＝ｔＮＴＰ＝２０１１／４／１  ０：０２：００である。そのときは、センサ２０から受け取ったセンサ情報６１がそのままセンサ内部時刻補正システムの出力となる。そしてＣＰＵ５は、処理を図６のＳ１０２に戻す。
【００６９】
以上説明したように、本実施の形態による時刻補正システム１によれば、センサ２０からのセンサ情報６１の通信時間は、「サーバに対するセンサの内部時刻のずれ」、「最適ケースの通信時間」および「通信時間ノイズ」の和であるとしたモデルを採用している。通信時間計算部４１は、センサ２０からサーバ３がセンサ情報６１を受信するたび通信時間を計算して、通信時間履歴Ｓに追加する。通信時間履歴Ｓには、前回のＮＴＰ発生以降のセンサ情報６１が記録される。モデル更新部４３は、センサ２０からのセンサ情報６１が受信されると、通信時間履歴Ｓを参照して通信時間分布モデルにおける各パラメータを更新する。
【００７０】
発生確率計算部４５は、算出された通信時間について、更新された通信時間分布モデルを用いて発生確率を計算する。発生確率が所定の閾値以下の場合には、ＮＴＰ時刻更新が発生したとみなして、ＮＴＰ時刻更新部４７は、ＮＴＰ発生推定時刻を更新する。発生確率が所定の閾値を超えている場合には、時刻補正部４９は、通信時間分布モデルの各パラメータとＮＴＰ発生推定時刻を用いて、最新のセンサ情報６１の内部時刻のずれを推定する。
【００７１】
以上のように、時刻補正システム１によれば、センサ２０からサーバ３へセンサ２０の内部時刻に基づく送信時刻を含むセンサ情報６１のみを送信することにより、センサ情報６１の送信時刻を、サーバ３の内部時刻に基づく時刻に補正することが可能になる。時刻補正システム１においては、センサ２０からサーバ３への通信を行うだけで時刻の補正が可能であるため、通信を増加させることがない。
【００７２】
また、センサ２０に何らかの変更を加えたり、管理を行ったりする必要がなく、センサ２０の数や種類にかかわらず、ずれ時間の推定を行うことが可能である。また、例えば式１０を用いることにより、時刻補正システム１は、センサ２０からサーバ３にセンサ情報６１を送信する際のネットワークの混雑等の状況や、センサ情報６１のデータ数に影響されずに時刻補正を行なうことができる。このように、時刻補正システム１によれば、簡便な方法で、センサ２０とサーバ３との内部時刻のずれを推定し、補正することができる。
【００７３】
各センサのＮＴＰ時刻更新を推定することが可能になるため、内部時刻の進み方にばらつきがあり、ＮＴＰにより突然時刻が進んだり遅れたりしても、センサ２０とサーバ３との内部時刻のずれを推定することが可能になる。また、ＮＴＰ時刻更新を行うセンサと行わないセンサとが混在していても、それぞれのセンサに応じた送信時刻の補正を行なうことができる。
【００７４】
上記実施の形態において、通信装置１５は、受信部の一例であり、時計１１は、計時部の一例であり、発生確率計算部４５は、確率計算部およびずれ推定部の一例である。また、通信時間モデル記憶部５３は、モデル保持部の一例であり、ＮＴＰ時刻更新部４７は、時刻更新部の一例である。
【００７５】
ここで、上記実施の形態による時刻補正方法の動作をコンピュータに行わせるために共通に適用されるコンピュータの例について説明する。図１３は、標準的なコンピュータのハードウエア構成の一例を示すブロック図である。図１３に示すように、コンピュータ３００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）３０２、メモリ３０４、入力装置３０６、出力装置３０８、外部記憶装置３１２、媒体駆動装置３１４、ネットワーク接続装置等がバス３１０を介して接続されている。
【００７６】
ＣＰＵ３０２は、コンピュータ３００全体の動作を制御する演算処理装置である。メモリ３０４は、コンピュータ３００の動作を制御するプログラムを予め記憶したり、プログラムを実行する際に必要に応じて作業領域として使用したりするための記憶部である。メモリ３０４は、例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）等である。入力装置３０６は、コンピュータの使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をＣＰＵ３０２に送付する装置であり、例えばキーボード装置、マウス装置などである。出力装置３０８は、コンピュータ３００による処理結果を出力する装置であり、表示装置などが含まれる。例えば表示装置は、ＣＰＵ３０２により送付される表示データに応じてテキストや画像を表示する。
【００７７】
外部記憶装置３１２は、例えば、ハードディスクなどの記憶装置であり、ＣＰＵ３０２により実行される各種制御プログラムや、取得したデータ等を記憶しておく装置である。媒体駆動装置３１４は、可搬記録媒体３１６に書き込みおよび読み出しを行うための装置である。ＣＰＵ３０２は、可搬型記録媒体３１６に記録されている所定の制御プログラムを、記録媒体駆動装置３１４を介して読み出して実行することによって、各種の制御処理を行うようにすることもできる。可搬記録媒体３１６は、例えばＣｏｎｐａｃｔ  Ｄｉｓｃ（ＣＤ）−ＲＯＭ、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリ等である。ネットワーク接続装置３１８は、有線または無線により外部との間で行われる各種データの授受の管理を行うインタフェース装置である。バス３１０は、上記各装置等を互いに接続し、データのやり取りを行う通信経路である。
【００７８】
上記実施の形態による時刻補正方法をコンピュータに実行させるプログラムは、例えば外部記憶装置３１２に記憶させる。ＣＰＵ３０２は、外部記憶装置３１２からプログラムを読み出し、コンピュータ３００に時刻補正の動作を行なわせる。このとき、まず、時刻補正の処理をＣＰＵ３０２に行わせるための制御プログラムを作成して外部記憶装置３１２に記憶させておく。そして、入力装置３０６から所定の指示をＣＰＵ３０２に与えて、この制御プログラムを外部記憶装置３１２から読み出させて実行させるようにする。また、このプログラムは、可搬記録媒体３１６に記憶するようにしてもよい。
【００７９】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を採ることができる。例えば、上記通信時間分布モデルは、「サーバに対するセンサの内部時刻のずれ」、「最適ケースの通信時間」および「通信時間ノイズ」に基づくものであれば上記に限定されず、他の形態でもよい。例えば、通信時間の確率分布のモデルは式時刻補正システム１に示した分布に必ずしも限られず、通信時間ｘがある所定の値δ以上の範囲に分布し、しかも、通信時間ｘの増加に応じて減少するような分布であれば、他の式で表される分布を用いるようにしてもよい。
【００８０】
サーバ３およびセンサ２０の構成は、同様の機能を有するものであれば、本発明の範囲である。また、センサ２０は、ＮＴＰ時刻更新を行わないセンサでもよい。この場合、Ｓ１２１において常に「ＮＯ」と判定され、δ＝０の条件で時刻が補正される。また、上記実施の形態においては、センサを例にして説明したが、内部時刻に基づく送信時刻を送信できるものであれば、センサ以外の、例えば汎用性のあるコンピュータなど他の装置の時刻補正にも適用が可能である。
【００８１】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
外部の装置の内部時刻に基づく送信時刻を含む情報を受信する受信部と、
基準時刻を保持する計時部と、
前記送信時刻から前記基準時刻に基づく前記情報を受信した受信時刻までの通信時間を計算する通信時間計算部と、
前記外部の装置との通信時間の分布を表す通信時間分布モデルを保持するモデル保持部と、
計算された前記通信時間に基づき前記通信時間分布モデルを更新するモデル更新部と、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する時刻補正部と、
を有することを特徴とする時刻補正装置。
（付記２）
前記モデル更新部により更新された前記通信時間分布モデルに基づき、計算された前記通信時間の発生確率を計算する確率計算部と、
前記発生確率が所定の値以下の場合に、前記外部の装置における前記内部時刻を前記基準時刻と一致させる時刻更新処理の発生時刻を更新する時刻更新部とと、
を有することを特徴とする付記１に記載の時刻補正装置。
（付記３）
前記確率計算部は、前記発生確率が所定の値以下の場合には、前記時刻更新処理が行われたと推定し、
前記時刻更新部は、前記時刻更新処理が行われた時刻を更新し、
前記確率計算部は、前記発生確率が所定の値を超えている場合には、前記時刻更新処理は行われていないと推定し、
前記時刻補正部は、直前の前記時刻更新処理が発生した時刻に基づき前記送信時刻を補正する
ことを特徴とする付記２に記載の時刻補正装置。
（付記４）
前記通信時間分布モデルは、前記外部の装置における前記内部時刻のずれを表す第１のモデルと、前記内部時刻のずれを含まない前記通信時間のばらつきの分布を表す第２のモデルとに基づくことを特徴とする付記３に記載の時刻補正装置。
（付記５）
前記通信時間分布モデルにおける通信時間は、前記第１のモデルによる前記内部時刻のずれと、前記第２のモデルによる前記通信時間の分布と、前記内部時刻のずれおよび前記通信時間の差異を含まない場合の真の通信時間との和であることを特徴とする付記４に記載の時刻補正装置。
（付記６）
前記第２のモデルによる前記通信時間の分布は、確率的に長さが決定されるノイズによるものであり、確率分布に従うことを特徴とする付記４または付記５に記載の時刻補正装置。
（付記７）
前記第１のモデルによる前記内部時刻のずれは、前記時刻更新処理が発生した時刻からの経過時間に比例することを特徴とする付記４から付記６のいずれかに記載の時刻補正装置。
（付記８）
時刻補正装置の外部の装置の内部時刻に基づく送信時刻を含む情報を受信し、
前記送信時刻から前記時刻補正装置内の基準時刻に基づく前記情報を受信した受信時刻までの通信時間を算出し、
前記通信時間の分布を予測した通信時間分布モデルを、前記通信時間に基づき更新し、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する
ことを特徴とする時刻補正方法。
（付記９）
前記モデル更新部により更新された前記通信時間分布モデルに基づき、計算された前記通信時間の発生確率を計算し、
前記発生確率が所定の値以下の場合に、前記外部の装置における前記内部時刻を前記基準時刻と一致させる時刻更新処理の発生時刻を更新する、
ことを特徴とする付記８に記載の時刻補正方法。
（付記１０）
前記発生確率が所定の値以下の場合には、前記時刻更新処理が行われたと推定し、
前記時刻更新処理が行われた時刻を更新し、
前記発生確率が所定の値を超えている場合には、前記時刻更新処理は行われていないと推定し、
直前の前記時刻更新処理が発生した時刻に基づき前記送信時刻を補正する
ことを特徴とする付記９に記載の時刻補正方法。
（付記１１）
前記通信時間分布モデルは、前記外部の装置における前記内部時刻のずれを表す第１のモデルと、前記内部時刻のずれを含まない前記通信時間のばらつきの分布を表す第２のモデルとに基づくことを特徴とする付記１０に記載の時刻補正方法。
（付記１２）
前記通信時間分布モデルにおける通信時間は、前記第１のモデルによる前記内部時刻のずれと、前記第２のモデルによる前記通信時間の分布と、前記内部時刻のずれおよび前記通信時間の差異を含まない場合の真の通信時間との和であることを特徴とする付記９に記載の時刻補正方法。
（付記１３）
前記第２のモデルによる前記通信時間の分布は、確率的に長さが決定されるノイズによるものであり、確率分布に従うことを特徴とする付記１１または付記１２に記載の時刻補正方法。
（付記１４）
前記第１のモデルによる前記内部時刻のずれは、前記時刻更新処理が発生した時刻からの経過時間に比例することを特徴とする付記１１から付記１３のいずれかに記載の時刻補正方法。
（付記１５）
時刻補正装置の外部の装置の内部時刻に基づく送信時刻を含む情報を受信し、
前記送信時刻から前記時刻補正装置内の基準時刻に基づく前記情報を受信した受信時刻までの通信時間を算出し、
前記通信時間の前記内部時刻に対する予測される分布を表す通信時間分布モデルを、前記通信時間に基づき更新し、
更新された前記通信時間分布モデルに基づき、前記送信時刻のずれを補正する処理をコンピュータに実行させるためのプログラム。
【符号の説明】
【００８２】
１      時刻補正システム
３      サーバ
５      ＣＰＵ
９      記憶装置
１１    時計
１３    入出力装置
１５    通信装置
１７    バス
２０    センサ
２１    記憶装置
２３    ＣＰＵ
２５    検出部
２７    時計
２９    通信装置
３１    バス
３５    ネットワーク
３７    ＮＴＰサーバ
４１    通信時間計算部
４３    モデル更新部
４５    発生確率計算部
４７    ＮＴＰ時刻更新部
４９    時刻補正部
５１    通信時間履歴記憶部
５３    通信時間モデル記憶部
６１    センサ情報
６３    補正済センサ情報
【図１】
0005811663.tif 000008
【図２】
0005811663.tif 000009
【図３】
0005811663.tif 000010
【図４】
0005811663.tif 000011
【図６】
0005811663.tif 000012
【図７】
0005811663.tif 000013
【図８】
0005811663.tif 000014
【図９】
0005811663.tif 000015
【図１０】
0005811663.tif 000016
【図１１】
0005811663.tif 000017
【図１２】
0005811663.tif 000018
【図１３】
0005811663.tif 000019
【図５】
0005811663.tif 000020