(57)【要約】【課題】時系列データに対する計算処理をより高速に行うことができるようにする。【解決手段】  サーバノードは、ステップＳ２１において、端末装置より送信される時系列データを元データ２７１として取得し、時系列上において隣り合う分割データ同士でその範囲の一部が重複する（境目付近のデータがどちらの部分データにも含まれる）ように時系列データを分割し、その分割データ２８１乃至２８４をそれぞれクライアントノード２９１乃至２９４に分配する。各クライアントノードは、ステップＳ２３において、分割データに対する予測計算を並列的に行い、得られた計算結果をサーバノードに送信する。サーバノードは、ステップＳ２４において、それらの計算結果を時系列に沿って集約し、１つの出力用時系列データ３０１を作成し、それを端末装置に出力する。本発明は、予測計算情報処理システムに適用することができる。【選択図】図１２
2006252394.tif 000002
【特許請求の範囲】
【請求項１】
所定の計算処理を行うための計算データを送信する第１の情報処理装置と、
前記第１の情報処理装置により送信される前記計算データを用いて前記計算処理を行い、計算結果を前記第１の情報処理装置に返す複数の第２の情報処理装置と
を備え、
前記第１の情報処理装置が、各第２の情報処理装置に、互いに異なる計算データを供給し、前記計算処理を並列に実行させる情報処理システムであって、
前記第１の情報処理装置は、
時系列に沿って因果関係を有する内容の第１の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、前記時系列に沿って複数の部分データに分割し、前記部分データを用いて前記計算データを作成する計算データ作成手段と、
前記計算データ作成手段により作成される前記計算データを、前記第２の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段と、
前記計算データ供給手段により前記計算データが供給される前記第２の情報処理装置より、前記計算処理の結果を含む計算結果データを取得する計算結果データ取得手段と、
前記計算結果データ取得手段により取得される前記計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段と
を備え、
前記第２の情報処理装置は、
前記計算データ供給手段により供給される前記計算データを取得する計算データ取得手段と、
前記計算データ取得手段により取得された前記計算データに基づいて前記計算処理を行う計算処理手段と、
前記計算処理手段による前記計算処理の結果を含む前記計算結果データを前記第１の情報処理装置に供給する計算結果データ供給手段と
を備えることを特徴とする情報処理システム。
【請求項２】
所定の計算処理を行う複数の他の情報処理装置のそれぞれに対して、前記計算処理の処理対象となる計算データを供給する情報処理装置であって、
時系列に沿って因果関係を有する内容の第１の時系列データを、前記時系列に沿って複数の部分データに分割し、前記部分データを用いて前記計算データを作成する計算データ作成手段と、
前記計算データ作成手段により作成される前記計算データを、前記他の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段と
を備え、
前記計算データ作成手段は、各部分データの時系列上の範囲の一部が、隣り合う部分データ同士で互いに重複するように、前記第１の時系列データを分割する
ことを特徴とする情報処理装置。
【請求項３】
前記計算データ供給手段により前記計算データが供給される前記他の情報処理装置より、前記計算処理結果を含む計算結果データを取得する計算結果データ取得手段と、
前記計算結果データ取得手段により取得される前記計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段と
をさらに備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記計算結果データ取得手段により取得される前記計算結果データの有効性を確認する有効性確認手段をさらに備え、
前記時系列データ作成手段は、前記有効性確認手段により有効であると確認される前記計算結果データのみを用いて前記第２の時系列データを作成する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記有効性確認手段は、前記計算結果データ取得手段による取得順が、前記計算データ供給手段による供給順よりも遅延した前記計算結果データを無効とする
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記計算データ供給手段による前記計算データの供給時刻を、前記計算データを供給する前記他の情報処理装置毎に管理する管理手段をさらに備え、
前記計算データ作成手段は、前記計算データ供給手段が同じ他の情報処理装置に複数回前記計算データを供給する場合、前記管理手段により管理される前記供給時刻に基づいて時系列上の範囲を決定し、前記範囲内の部分データを用いて前記計算データを作成する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記計算データ作成手段は、前記管理手段により管理される前記供給時刻よりも後の部分データを用いて前記計算データを作成する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記計算結果データは、前記計算処理結果とともに、前記他の情報処理装置の内部状態に関する情報であるコンテキストデータを含み、
前記計算結果データ取得手段により取得される前記コンテキストデータを保持する保持手段をさらに備え、
前記計算データ作成手段は、前記他の情報処理装置が前記部分データおよび前記コンテキストデータを用いて前記計算処理を行って前記計算結果データを生成するように、前記計算データを、前記部分データだけでなく、前記保持手段により保持されている、前記計算データの供給先以外の他の情報処理装置のコンテキストデータを用いて作成する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項９】
所定の計算処理を行う複数の他の情報処理装置のそれぞれに対して、前記計算処理の処理対象となる計算データを供給する情報処理装置の情報処理方法であって、
時系列に沿って因果関係を有する内容の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、前記時系列に沿って複数の部分データに分割し、前記部分データを用いて前記計算データを作成する計算データ作成ステップと、
供給部を制御し、前記計算データ作成ステップの処理により作成された前記計算データを、前記他の情報処理装置のそれぞれに所定の順番に分配するように供給させる計算データ供給ステップと
を含むことを特徴とする情報処理方法。
【請求項１０】
所定の計算処理を行う複数の他の情報処理装置のそれぞれに対して、前記計算処理の処理対象となる計算データを供給する処理をコンピュータに行わせるプログラムであって、
時系列に沿って因果関係を有する内容の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、前記時系列に沿って複数の部分データに分割し、前記部分データを用いて前記計算データを作成する計算データ作成ステップと、
供給部を制御し、前記計算データ作成ステップの処理により作成された前記計算データを、前記他の情報処理装置のそれぞれに所定の順番に分配するように供給させる計算データ供給ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置および方法、並びにプログラムに関し、特に、時系列データに対する計算処理をより高速に行うことができるようにする情報処理システム、情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
単一の計算機に時系列予測計算を行うアルゴリズムを実行させる場合、実時間性（リアルタイム性）を保つように実行させたとしても、状況により、その計算結果をリアルタイムに得る（要求するペースで計算結果を得る）ことが困難になる恐れがあった。例えば、その計算機の処理能力に対して時系列予測計算のアルゴリズムの計算量が大きいと、計算時間が増大してしまい、理想とする時間間隔で計算結果（予測値）が得られない恐れがあった。
【０００３】
このような遅延の発生を抑制するための方法として、アルゴリズム自身の最適化を行ったり、計算能力の高い計算機を利用したり、何らかの手法を用いて隔たりのある出力値を補間するようにしたりする等の方法が存在する。しかしながら、これらの方法を用いた対処では実際には限界がある。例えば、計算時間の長期化の原因が、演算負荷よりも根本的なアルゴリズムにある場合、上述したように演算負荷を軽減させても、待機時間が増加するなどして計算時間を大幅に短縮させることができない。また、例えば、その出力を用いてロボットの高速な運動制御を行うような場合、より正確な演算結果がより正確なタイミングで必要になり、補間処理やアルゴリズムの変形では対応できない場合があった。
【０００４】
そこで、並列型計算機システムを利用することによって処理を分割し、その分割された処理を並列に実行させ、最後に各演算結果を結合することによって、高速に計算結果を得る手法が提案されている（例えば特許文献１乃至３参照）。
【０００５】
例えば、図１に示されるようにシステムのサーバ処理を行う、図示せぬ計算機は、ステップＳ１において、元の大きなデータの塊である元データ１を取得すると、ステップＳ２において、その元データ１を所定の方法で分割し、分割データ１１乃至分割データ１４を生成する。そして、計算機はそれらを、実際に演算処理を行う端末装置２１乃至端末装置２４にそれぞれ供給する。端末装置２１乃至端末装置２４は、それぞれ、ステップＳ３において、供給された分割データを用いて演算を行い、計算結果を得る（並列計算する）。各端末装置は、それぞれ、得られた計算結果を計算機に供給する。計算機は、ステップＳ４において、端末装置２１乃至端末装置２４より供給される計算結果を集約し、元データ１に対する１つの計算結果３１を得る。
【０００６】
このように、複数の端末装置を用いて、並列に演算処理を行わせることにより、計算機は、１台で演算処理を行って元データ１より直接計算結果３１を得る場合よりも高速に計算結果３１を得ることができる。
【０００７】
【特許文献１】特開２００４−２０６３１４号公報
【特許文献２】特開２００３−３９３５６号公報
【特許文献３】特開２００２−２８８５７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した方法が適用できるのは、予測計算アルゴリズムが並列化に適している場合や、計算対象となる元データの各部分の独立性が保たれており、並列処理するために分割された分割データ１１乃至分割データ１４が互いに独立しており、またそれらに対する各演算処理が互いに独立しており、さらに、得られた計算結果を統合化するだけで、本来あるべき結果（元データ１に対する計算結果３１）を復元できる場合に限られてしまう。
【０００９】
したがって、例えば、リカレントニューラルネットワークを時系列予測計算アルゴリズムとして用いたときのように、計算アルゴリズムそのものが（マイコンレベルでの並列化には適しても）PC（Personal Computer）クラスタなどのような大規模な並列計算環境による並列計算に適さないアルゴリズムである場合、上述したような並列化手法を適用することができなかった。
【００１０】
つまり、リカレントニューラルネットワークが大規模なPCクラスタの並列計算環境に適してないとは、ニューラルネットワークのニューロン単位をPCクラスタの各計算ノードに割り当てたとしても、通信によるオーバーヘッドの方が大きくなってしまい、全体として高速化は期待することができないということである。
【００１１】
さらに、例えば、時系列データの予測演算により得られる予測結果を用いて、実環境で動作するロボットを制御するときのように、時系列予測計算の結果出力に実時間性が求められる場合、計算対象となる元データ１の値が時々刻々変化するので、元データ１の値が固定化されたバッチ処理の並列化とは異なり、ある範囲のデータをある一定の大きさで分割するというような単純な処理を行うことができなかった。
【００１２】
つまり、過去に蓄積されたある時間幅の時系列データを後でまとめて処理するのであれば、従来の方法により並列演算処理による効果を得ることができる場合も考えられるが、次にどのような値になるか不明な時系列データを、リアルタイムに、所定の時間間隔で分割して並列処理させ、得られた計算結果群に基づいて目的の時系列データを作成することは困難であった。
【００１３】
以上のように、従来の方法では、時系列予測計算処理をより高速に行うことが困難であった。
【００１４】
本発明はこのような状況に鑑みてなされたものであり、時系列データに対する計算処理をより高速に行うようにするものである。
【課題を解決するための手段】
【００１５】
本発明の情報処理システムは、所定の計算処理を行うための計算データを送信する第１の情報処理装置と、第１の情報処理装置により送信される計算データを用いて計算処理を行い、計算結果を第１の情報処理装置に返す複数の第２の情報処理装置とを備え、第１の情報処理装置が、時系列に沿って因果関係を有する内容の第１の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、時系列に沿って複数の部分データに分割し、部分データを用いて計算データを作成する計算データ作成手段と、計算データ作成手段により作成される計算データを、第２の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段と、計算データ供給手段により計算データが供給される第２の情報処理装置より、計算処理の結果を含む計算結果データを取得する計算結果データ取得手段と、計算結果データ取得手段により取得される計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段とを備え、第２の情報処理装置が、計算データ供給手段により供給される計算データを取得する計算データ取得手段と、計算データ取得手段により取得された計算データに基づいて計算処理を行う計算処理手段と、計算処理手段による計算処理の結果を含む計算結果データを第１の情報処理装置に供給する計算結果データ供給手段とを備えることを特徴とする。
【００１６】
本発明の情報処理装置は、時系列に沿って因果関係を有する内容の第１の時系列データを、時系列に沿って複数の部分データに分割し、部分データを用いて計算データを作成する計算データ作成手段と、計算データ作成手段により作成される計算データを、他の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段とを備え、計算データ作成手段は、各部分データの時系列上の範囲の一部が、隣り合う部分データ同士で互いに重複するように、第１の時系列データを分割することを特徴とする。
【００１７】
前記計算データ供給手段により計算データが供給される他の情報処理装置より、計算処理結果を含む計算結果データを取得する計算結果データ取得手段と、計算結果データ取得手段により取得される計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段とをさらに備えるようにすることができる。
【００１８】
前記計算結果データ取得手段により取得される計算結果データの有効性を確認する有効性確認手段をさらに備え、時系列データ作成手段は、有効性確認手段により有効であると確認される計算結果データのみを用いて第２の時系列データを作成するようにすることができる。
【００１９】
前記有効性確認手段は、計算結果データ取得手段による取得順が、計算データ供給手段による供給順よりも遅延した計算結果データを無効とするようにすることができる。
【００２０】
前記計算データ供給手段による計算データの供給時刻を、計算データを供給する他の情報処理装置毎に管理する管理手段をさらに備え、計算データ作成手段は、計算データ供給手段が同じ他の情報処理装置に複数回計算データを供給する場合、管理手段により管理される供給時刻に基づいて時系列上の範囲を決定し、範囲内の部分データを用いて計算データを作成するようにすることができる。
【００２１】
前記計算データ作成手段は、管理手段により管理される供給時刻よりも後の部分データを用いて計算データを作成するようにすることができる。
【００２２】
前記計算結果データは、計算処理結果とともに、他の情報処理装置の内部状態に関する情報であるコンテキストデータを含み、計算結果データ取得手段により取得されるコンテキストデータを保持する保持手段をさらに備え、計算データ作成手段は、他の情報処理装置が部分データおよびコンテキストデータを用いて計算処理を行って計算結果データを生成するように、計算データを、部分データだけでなく、保持手段により保持されている、計算データの供給先以外の他の情報処理装置のコンテキストデータを用いて作成することができる。
【００２３】
本発明の情報処理方法は、時系列に沿って因果関係を有する内容の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、時系列に沿って複数の部分データに分割し、部分データを用いて計算データを作成する計算データ作成ステップと、供給部を制御し、計算データ作成ステップの処理により作成された計算データを、他の情報処理装置のそれぞれに所定の順番に分配するように供給させる計算データ供給ステップとを含むことを特徴とする。
【００２４】
本発明のプログラムは、時系列に沿って因果関係を有する内容の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、時系列に沿って複数の部分データに分割し、部分データを用いて計算データを作成する計算データ作成ステップと、供給部を制御し、計算データ作成ステップの処理により作成された計算データを、他の情報処理装置のそれぞれに所定の順番に分配するように供給させる計算データ供給ステップとを含むことを特徴とする。
【００２５】
本発明の情報処理システムにおいては、第１の情報処理装置により、時系列に沿って因果関係を有する内容の時系列データが、時系列上の範囲の一部が隣り合う部分データ同士で互いに重複するように、時系列に沿って複数の部分データに分割され、部分データを用いて計算データが作成され、その作成された計算データが、第２の情報処理装置のそれぞれに、所定の順番に分配するように供給され、第２の情報処理装置により、その計算データが取得され、取得された計算データに基づいて計算処理が行われ、計算処理の結果を含む計算結果データが第１の情報処理装置に供給され、さらに、第１の情報処理装置により、その計算結果データが取得され、その取得された前記計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データが作成される。
【００２６】
本発明の情報処理装置および方法、並びにプログラムにおいては、時系列に沿って因果関係を有する内容の第１の時系列データが、時系列に沿って複数の部分データに分割され、その部分データを用いて計算データが作成され、その作成された計算データが、他の情報処理装置のそれぞれに、所定の順番に分配するように供給される。このとき、各部分データの時系列上の範囲の一部が、隣り合う部分データ同士で互いに重複するように、第１の時系列データが分割される。
【発明の効果】
【００２７】
本発明によれば、時系列データに対する計算処理をより高速に行うことができる。
【発明を実施するための最良の形態】
【００２８】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２９】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加されたりする発明の存在を否定するものではない。
【００３０】
本発明においては、所定の計算処理を行うための計算データを送信する第１の情報処理装置（例えば、図２のサーバノード）と、第１の情報処理装置により送信される計算データを用いて計算処理を行い、計算結果を第１の情報処理装置に返す複数の第２の情報処理装置（例えば、図２のクライアントノード）とを備え、第１の情報処理装置が、各第２の情報処理装置に、互いに異なる計算データを供給し、計算処理を並列に実行させる情報処理システム（例えば、図２のクラスタコンピュータ）が提供される。この情報処理システムでは、第１の情報処理装置が、時系列に沿って因果関係を有する内容の第１の時系列データ（例えば、図１２の元データ）を、隣り合う部分データ同士で範囲の一部が互いに重複するように、時系列に沿って複数の部分データ（例えば、図１２の分割データ）に分割し、部分データを用いて計算データを作成する計算データ作成手段（例えば、図７の計算データ作成部）と、計算データ作成手段により作成される計算データを、第２の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段（例えば、図７の計算データ送信部）と、計算データ供給手段により計算データが供給される第２の情報処理装置より、計算処理の結果を含む計算結果データを取得する計算結果データ取得手段（例えば、図７の計算結果データ受信制御部）と、計算結果データ取得手段により取得される計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段（例えば、図７のコマンド情報作成部）とを備え、第２の情報処理装置が、計算データ供給手段により供給される計算データを取得する計算データ取得手段（図１８のステップＳ１６３の処理を実行する図１１の通信部）と、計算データ取得手段により取得された計算データに基づいて計算処理を行う計算処理手段（図１８のステップＳ１６５の処理を実行する図１１の演算部）と、計算処理手段による計算処理の結果を含む計算結果データを第１の情報処理装置に供給する計算結果データ供給手段（図１８のステップＳ１６１の処理を実行する図１１の通信部）とを備える。
【００３１】
本発明においては、所定の計算処理を行う複数の他の情報処理装置（例えば、図２のクライアントノード）のそれぞれに対して、前記計算処理の処理対象となる計算データを供給する情報処理装置（例えば、図２のサーバノード）が提供される。この情報処理装置では、時系列に沿って因果関係を有する内容の第１の時系列データ（例えば、図１２の元データ）を、時系列に沿って複数の部分データ（例えば、図１２の分割データ２８１乃至２８４）に分割し、部分データを用いて計算データを作成する計算データ作成手段（例えば、図７の計算データ作成部）と、計算データ作成手段により作成される計算データを、他の情報処理装置のそれぞれに、所定の順番に分配するように供給する計算データ供給手段（例えば、図７の計算データ送信部）とを備え、計算データ作成手段は、各部分データの時系列上の範囲の一部が、隣り合う部分データ同士で互いに重複するように、第１の時系列データを分割する。
【００３２】
前記計算データ供給手段により計算データが供給される他の情報処理装置より、計算処理結果を含む計算結果データを取得する計算結果データ取得手段（例えば、図７の計算結果データ受信制御部）と、計算結果データ取得手段により取得される計算結果データを用いて、時系列に沿って因果関係を有する内容の第２の時系列データを作成する時系列データ作成手段（例えば、図７のコマンド情報作成部）とをさらに備えるようにすることができる。
【００３３】
前記計算結果データ取得手段により取得される計算結果データの有効性を確認する有効性確認手段（例えば、図７の有効性確認部）をさらに備え、時系列データ作成手段は、有効性確認手段により有効であると確認される計算結果データのみを用いて第２の時系列データを作成するようにすることができる。
【００３４】
前記有効性確認手段は、計算結果データ取得手段による取得順が、計算データ供給手段による供給順よりも遅延した計算結果データを無効とする（例えば、図１５のステップＳ１０４）ようにすることができる。
【００３５】
前記計算データ供給手段による計算データの供給時刻（例えば、図１０の供給時刻）を、計算データを供給する他の情報処理装置毎に管理する管理手段（例えば、図７の送信履歴テーブル更新部）をさらに備え、計算データ作成手段は、計算データ供給手段が同じ他の情報処理装置に複数回計算データを供給する場合、管理手段により管理される供給時刻に基づいて時系列上の範囲を決定し（例えば、図１７のステップＳ１４１）、範囲内の部分データを用いて計算データを作成するようにすることができる。
【００３６】
前記計算データ作成手段は、管理手段により管理される供給時刻よりも後の部分データを用いて計算データを作成する（例えば、図１７のステップＳ１４２）ようにすることができる。
【００３７】
前記計算結果データは、計算処理結果とともに、他の情報処理装置の内部状態に関する情報であるコンテキストデータを含み、計算結果データ取得手段により取得されるコンテキストデータを保持する保持手段（例えば、図６のコンテキストデーバッファ１８３）をさらに備え、計算データ作成手段は、他の情報処理装置が部分データおよびコンテキストデータを用いて計算処理を行って計算結果データを生成するように、計算データを、部分データだけでなく、保持手段により保持されている、計算データの供給先以外の他の情報処理装置のコンテキストデータを用いて作成する（例えば、図１７のステップＳ１４４）ようにすることができる。
【００３８】
本発明においては、所定の計算処理を行う複数の他の情報処理装置（例えば、図２のクライアントノード）のそれぞれに対して、前記計算処理の処理対象となる計算データを供給する情報処理装置（例えば、図２のサーバノード）の情報処理方法が提供される。この情報処理方法においては、時系列に沿って因果関係を有する内容の時系列データを、隣り合う部分データ同士で範囲の一部が互いに重複するように、時系列に沿って複数の部分データに分割し、部分データを用いて計算データを作成する計算データ作成ステップ（例えば、図１６のステップＳ１２４）と、供給部（例えば、図７の計算データ送信部）を制御し、計算データ作成ステップの処理により作成された計算データを、他の情報処理装置のそれぞれに所定の順番に分配するように供給させる計算データ供給ステップ（例えば、図１６のステップＳ１２６）とを含むことを特徴とする。
【００３９】
本発明のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、本発明の情報処理方法と同様である。
【００４０】
以下、本発明の実施の形態について図を参照して説明する。
【００４１】
図２は、本発明を適用した情報処理システムの一実施形態に係る構成例を示す図である。
【００４２】
図２において情報処理システム５１は、人間型のロボットであるヒューマノイドロボット６１およびそのヒューマノイドロボット６１の動作を制御する制御システム６２を有する時系列予測計算処理システムである。すなわち、情報処理システム５１は、制御システム６２が時系列予測計算処理として、ヒューマノイドロボット６１の動作の予測計算を行い、その予測に基づいて動作を制御する制御情報を生成し、その制御情報によりヒューマノイドロボット６１を制御する予測制御システムである。換言すると、ヒューマノイドロボット６１は、情報処理システム５１に予測制御されて動作する。
【００４３】
ヒューマノイドロボット６１および制御システム６２の間で無線通信が行われ、センサ情報およびコマンド情報等が授受される。例えば、ヒューマノイドロボット６１は、後述するようにセンサ機能を有しており、そのセンサ機能により検出された情報であるセンサ情報を制御システム６２に供給する。制御システム６２は、そのセンサ情報やユーザ入力等に基づいてヒューマノイドロボット６１の将来の最適な動作（将来行うべき動作）を予測し、その様に動作させるような制御コマンドを含むコマンド情報を作成し、それをヒューマノイドロボット６１に供給する。ヒューマノイドロボット６１は、そのコマンド情報に基づいて各部を動作させ、制御システム６２の予測制御に応じた動作を行う。
【００４４】
制御システム６２は、端末装置７１およびクラスタコンピュータ７２を有している。端末装置７１は、アンテナ７１Ａを介して、ヒューマノイドロボット６１と無線通信を行い、センサ情報やコマンド情報を授受し合う。また、端末装置７１は、クラスタコンピュータ７２と通信を行い、そのセンサ情報やコマンド情報を授受し合う。すなわち、端末装置７１は、ヒューマノイドロボット６１とクラスタコンピュータ７２との通信の仲介処理を行う。また、端末装置７１は、ユーザ入力に対する受け付け処理も行う。
【００４５】
クラスタコンピュータ７２は、端末装置７１より供給されるセンサ情報を用いて予測計算処理を行い、生成したコマンド情報を、計算結果として端末装置７１に供給する。このクラスタコンピュータ７２は、サーバノード８１、並びに、クライアントノード９１乃至クライアントノード９３を有しており、並列処理を行うコンピュータシステムである。すなわち、クラスタコンピュータ７２は、予測計算処理を細分化して並列に処理することにより、単一の計算機による予測計算処理よりも高速かつ安定的に予測計算処理を行うコンピュータシステムである。
【００４６】
サーバノード８１は、クライアントノード９１乃至クライアントノード９３に対してセンサ情報のサーバ処理を行う。すなわち、サーバノード８１は、端末装置７１より供給されるセンサ情報を分割し、それぞれをクライアントノード９１乃至クライアントノード９３に供給し、ヒューマノイドロボット６１の将来行うべき動作等を予測する予測計算処理を並行に実行させる。また、サーバノード８１は、各クライアントノードより供給される計算結果を取得し、それらを結合する。そして、その結合された計算結果からコマンド情報を作成し、それをセンサ情報に対する計算結果として端末装置７１に供給する。
【００４７】
クライアントノード９１は、サーバノード８１より供給される、分割されたセンサ情報等を用いて予測計算処理を行い、その計算結果をサーバノード８１に返す。クライアントノード９１は、他のクライアントノード（クライアントノード９２およびクライアントノード９３）と互いに独立して動作し、他のクライアントノードが実行する予測計算処理と並行して、予測計算処理を行うことができる。
【００４８】
クライアントノード９１乃至クライアントノード９３は、互いに同様に構成されており、同様の処理を行う。従って、クライアントノード９２およびクライアントノード９３の説明は省略する。なお、クライアントノード９１乃至クライアントノード９３を互いに区別して説明する必要の無い場合、例えば、クライアントノード９１乃至クライアントノード９３のいずれにも適用できる説明の場合、クライアントノード９０と称する。
【００４９】
このように構成されるクラスタコンピュータ７２は、予測計算処理の負荷を複数のノードに分散させることができるので、各ノード（サーバノード８１やクライアントノード９０）に必要な処理能力を低減させることができる。つまり、各ノードを、安価なパーソナルコンピュータを用いて構成した場合であっても、より多くのノードを設けることにより（より負荷を分散させることにより）、より大規模な処理を、より高速、かつ、より安定的に実行することができる。例えば、１台の計算機で作業させる場合にはスーパーコンピュータ並みの処理能力が必要である大規模な処理でも実行可能な高性能なシステムを安価に構築することができる。
【００５０】
なお、図２においては、情報処理システム５１が、１つのヒューマノイドロボット６１および１つの制御システム６２により構成されるように説明したが、これに限らず、ヒューマノイドロボット６１および制御システム６２の数は、それぞれ、いくつであってもよく、例えば複数であってもよい。
【００５１】
また、図２においては、制御システム６２が、１つの端末装置７１および１つのクラスタコンピュータ７２により構成されるように説明したが、これに限らず、端末装置７１およびクラスタコンピュータ７２は、それぞれ、いくつであってもよく、例えば複数であってもよい。
【００５２】
さらに、図２においては、クラスタコンピュータ７２が、１つのサーバノード８１および３つのクライアントノード９０（クライアントノード９１乃至クライアントノード９３）により構成されるように説明したが、これに限らず、サーバノード８１は、いくつであってもよく、例えば複数であってもよい。また、クライアントノード９０の数もいくつであってもよく、予めサーバノード８１が全てのクライアントノード９０を認識していれば、２つ以下であってもよいし、４つ以上であってもよい。つまり、１つのサーバノード８１に対応するクライアントノード９０の数もいくつであってもよく、例えば、サーバノード８１が複数存在する場合、各サーバノード８１に対応するクライアントノード９０の数が互いに異なるようにしてもよい。さらに、滞りなく処理を行えるのであれば、複数の１つのクライアントノード９０が複数のサーバノード８１に対応するようにしてもよい。さらに付言すると、クラスタコンピュータ７２は、時系列データに対して予測計算処理を行うものであればどのような構成であってもよい。
【００５３】
次に、このような構成の情報処理システム５１の各装置間で授受される情報について説明する。図３は、図２の情報処理システム５１において授受される情報の例を説明する図である。
【００５４】
ここで、図２の情報処理システム５１は、例えば、ヒューマノイドロボット６１が環境中のボールに対して動作を行うように、制御システム６２がヒューマノイドロボット６１を制御するシステムであるものとする。つまり、ヒューマノイドロボット６１は、制御システム６２の制御に従って、例えば、ボールを掴んだり、投げたり、蹴ったり、または置いたりする等の動作を行う。
【００５５】
このとき、ヒューマノイドロボット６１は、例えば、ステレオカメラ等の図示せぬセンサを有しており、空間上のボールの３次元位置を特定することができる。ヒューマノイドロボット６１は、自分自身の関節角に関する情報（すなわち、現在の動作（姿勢）に関する情報）である関節角情報１０１とともに、このボールの３次元座標に関する情報であるボール座標情報１０２をセンサ情報として制御システム６２の端末装置７１に供給する。
【００５６】
なお、関節角情報１０１は、ヒューマノイドロボット６１の関節角がどのような角度であるか（どのくらい曲がっているか）を示す情報であり、その関節角を制御するサーボモータの制御情報と等価である。従って、この関節角情報１０１は、サーボモータがどういう状態にあるかを実際に計測するセンサにより得られる情報を適用するようにしてもよいし、サーボモータを制御する制御情報を適用するようにしてもよい。
【００５７】
図３に示されるように、端末装置７１は、ヒューマノイドロボット６１より供給されるこれらのセンサ情報（関節角情報１０１およびボール座標情報１０２）をクラスタコンピュータ７２のサーバノード８１に供給する。サーバノード８１は、それらのセンサ情報を後述する方法で分割した後、分割された各データをクライアントノード９０に供給する。このときクライアントノード９０は、時系列予測器１１１として動作し、供給されたセンサ情報（分割された関節角情報１０１およびボール座標情報１０２）に基づいて、それぞれの将来の値を予測する予測処理を行う。そして、クライアントノード９０は、その予測計算結果として、関節角の予測値である関節角予測情報１０３と、ボール座標の予測値であるボール座標予測情報１０４を生成し、それらをサーバノード８１に出力する。
【００５８】
つまり、時系列予測器１１１は、ヒューマノイドロボット６１の行ったボールとのインタラクションの際のセンサ情報時系列データを学習データとし、予測モデルを獲得する。そのため、この情報処理システム５１では、ヒューマノイドロボット６１自らに行動生成させる前の段階で、人間をはじめとする教示者がロボットのアームを実際に手に取り、ボールとのインタラクションをする状況を生成して学習データを作成し、時系列予測器１１１の学習を行わせる。その後、時系列予測器１１１に対して、実際にボール座標、ロボット自身の現在の関節角度時系列情報（関節角情報１０１）をオンラインで入力することによって、時系列予測データ（関節角予測情報１０３）が生成される。
【００５９】
サーバノード８１は、それらの予測値から、関節角の目標値（予測値）であり、サーボモータ用の制御情報である関節角コマンド１０５を生成し、それを端末装置７１に供給する。端末装置７１は、その供給された関節角コマンド１０５をコマンド情報としてヒューマノイドロボット６１に供給する。ヒューマノイドロボット６１は、その関節角コマンド１０５に基づいて、サーボモータを動作させ、ボールに対する動作を行う。
【００６０】
次に、各装置の詳細な構成について説明する。図４は、ヒューマノイドロボット６１の一実施形態に係る、本発明に関する構成例を示すブロック図である。
【００６１】
図４において、ヒューマノイドロボット６１は、センサ部１２１、制御部１２２、無線通信部１２３、およびモータ部１２４を有している。
【００６２】
センサ部１２１は、例えば、上述したステレオカメラ等の図示せぬセンサを１つまたは複数有しており、各センサを動作させ、センサ情報を生成すると、それを制御部１２２に供給する。制御部１２２は、ヒューマノイドロボット６１の各部を制御し、ヒューマノイドロボット６１全体の制御処理を行う処理部である。制御部１２２は、図示せぬRAM（Random Access Memory）やROM（Read Only Memory）を内蔵するようにしてもよい。制御部１２２は、センサ部１２１よりセンサ情報を取得すると、無線通信部１２３を制御し、そのセンサ情報を端末装置７１に送信させる。また、制御部１２２は、無線通信部１２２よりコマンド情報を取得すると、そのコマンド情報をモータ部１２４に供給し、モータ部１２４を駆動させ、コマンド情報の指示どおりにヒューマノイドロボット６１の関節角を制御する。
【００６３】
無線通信部１２３は、例えば、IEEE（Institute of Electrical and Electronic Engineers）８０２．１１ｘ等の所定の無線通信規格を用いて無線通信処理を行う処理部である。無線通信部１２３は、図示せぬRAMやROMを内蔵するようにしてもよい。無線通信部１２３は、制御部１２２に制御されて端末装置７１と無線通信を行い、制御部１２２より供給されるセンサ情報を、アンテナ１２３Ａを介して端末装置７１に送信する。また、無線通信部１２３は、アンテナ１２３Ａを介して端末装置７１よりコマンド情報を受信すると、それを制御部１２２に供給する。
【００６４】
モータ部１２４は、１つまたは複数のサーボモータを有している。各サーボモータは、ヒューマノイドロボット６１の各関節（可動部）に対応する。つまり、モータ部１２４は、制御部１２２より供給されるコマンド情報に基づいて、ヒューマノイドロボット６１が有する各関節（可動部）の角度を調整する。換言すると、制御部１２２がコマンド情報を用いてモータ部１２４が有する各サーボモータの動作を制御することにより、ヒューマノイドロボット６１は、制御システム６２の制御どおりに動作する。
【００６５】
図５は、端末装置７１の一実施形態に係る、本発明に関する構成例を示すブロック図である。
【００６６】
図５において、端末装置７１は、CPU（Central Processing Unit）１３１、ROM１３２、RAM１３３、バス１３４、入出力インタフェース１４０、入力部１４１、出力部１４２、記憶部１４３、無線通信部１４４、通信部１４５、およびドライブ１４６を有している。
【００６７】
CPU１３１は、ROM１３２に記憶されているプログラム、または記憶部１４３からRAM１３３にロードされたプログラムに従って各種の処理を実行する。RAM１３３にはまた、CPU１３１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００６８】
CPU１３１、ROM１３２、およびRAM１３３は、バス１３４を介して相互に接続されている。このバス１３４にはまた、入出力インタフェース１４０も接続されている。
【００６９】
入出力インタフェース１４０には、キーボード、マウスなどよりなる入力部１４１、CRT（Cathode Ray Tube）、LCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部１４２、ハードディスクなどより構成される記憶部１４３、IEEE８０２．１１ｘ等の所定の無線通信規格に基づいて、ヒューマノイドロボット６１と無線通信を行う無線通信部１４４、並びに、イーサネット（登録商標）（Ethernet（登録商標））等の所定の通信規格に基づいて、サーバノード８１と通信処理を行う通信部１４５が接続されている。
【００７０】
入出力インタフェース１４０にはまた、必要に応じてドライブ１４６が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１５１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１４３にインストールされる。
【００７１】
なお、端末装置７１と、ヒューマノイドロボット６１やサーバノード８１との間の通信は、電波や赤外線信号等を利用する無線通信であっても、有線を介して電気信号や光信号等を授受する有線通信であってもよい。また、無線通信部１４４および通信部１４５がヒューマノイドロボット６１およびサーバノード８１以外の装置とも通信することができるようにしてもよい。さらに、必要に応じて、無線通信部１４４または通信部１４５を介して他の装置より取得したコンピュータプログラムが記憶部１４３にインストールされるようにしてもよい。
【００７２】
CPU１３１は、ROM１３２や記憶部１４３からRAM１３３に読み出されたプログラムを実行することにより、ユーザ入力を受け付ける処理や、ヒューマノイドロボット６１とサーバノード８１との通信を中継する処理等を行う。つまり、CPU１３１は、主に入力部１４１を制御して、ユーザ入力を受け付け、例えばそのユーザ入力をヒューマノイドロボット６１やサーバノード８１に供給する等、受け付けた指示に基づいた処理を行う。また、CPU１３１は、主に無線通信部１４４および通信部１４５を制御して、ヒューマノイドロボット６１とサーバノード８１との通信を中継する。もちろん、CPU１３１がこれら以外の処理も行うことができるようにしてもよい。
【００７３】
図６は、クラスタコンピュータ７２のサーバノード８１の一実施形態に係る、本発明に関する構成例を示すブロック図である。
【００７４】
図６において、サーバノード８１は、通信部１６１、データプール１６２、制御部１６３、通信部１６４、データバッファ１６５、ROM１６６、RAM１６７、入力部１６８、出力部１６９、記憶部１７０、およびドライブ１７１を有している。
【００７５】
通信部１６１は、イーサネット（登録商標）等の所定の通信規格に基づいて、端末装置７１と通信処理を行う。例えば、通信部１６１は、端末装置７１より供給されるセンサ情報を受信すると、それをデータプール１６２に供給して蓄積させる。また、例えば、通信部１６１は、データプール１６２に蓄積されているヒューマノイドロボット６１用のコマンド情報を定期的または不定期に読み出し、それを端末装置７１に送信する。
【００７６】
データプール１６２は、例えばDRAM（Dynamic Random Access Memory）やSRAM（Static Random Access Memory）に代表される半導体メモリ等の記憶素子を有しており、所定の容量の記憶領域を有している。データプール１６２には、通信部１６１が受信したセンサ情報（端末装置７１より供給された関節角情報１０１やボール座標情報１０２等）が一時的に保持される。このセンサ情報は制御部１６３により読み出される。また、データプール１６２には、制御部１６３より供給されるコマンド情報（関節角コマンド１０５等）も一時的に保持される。このコマンド情報は通信部１６１により読み出され、端末装置７１に送信される。これらのデータの授受は例えば所定の周期で定期的に繰り返し行われる。つまり、データプール１６２は、端末装置７１とのデータの授受の周期と、制御部１６３とのデータの授受の周期の違いを吸収するためのバッファとして動作する。なお、上述したデータの授受が不定期に行われるようにしてももちろんよい。
【００７７】
制御部１６３は、サーバノード８１の各部を制御して各種の処理を実行させるだけでなく、さらに、データプール１６２に蓄積されるデータを取得し、分割してクライアントノード９０に分配（送信）したり、各クライアントノード９０からデータを収集（受信）し、それらを結合してデータプール１６２に供給して蓄積させたりするサーバ処理を行ったりする。
【００７８】
例えば、制御部１６３は、データプール１６２に蓄積されるセンサ情報（端末装置７１より送信されたセンサ情報）を定期的または不定期に取得し、それをデータバッファ１６５に蓄積させたり、そのデータバッファ１６５に蓄積したセンサ情報や後述するコンテキストデータの部分データを用いて計算データ生成し、それをクライアントノード９０に分配する処理を行ったり、データバッファ１６５に保持される、後述する送信履歴テーブルの管理を行ったりする。また、制御部１６３は、例えば、クライアントノード９０より送信された計算結果データ（関節角予測情報１０３やボール座標予測情報１０４等の予測値、およびコンテキストデータ）等の情報からコマンド情報を生成し、それをデータプール１６２に供給して保持させたり、コンテキストデータをデータバッファ１６５に保持させたりする。さらに、制御部１６３がその他の処理を行うようにしてもよい。
【００７９】
通信部１６４は、制御部１６３に制御されて、所定の通信規格に基づいて、クライアントノード９０（クライアントノード９１乃至クライアントノード９３のそれぞれ）と通信を行い、計算データや計算結果データの送受信を行う。
【００８０】
データバッファ１６５は、DRAMやSRAM等の半導体メモリを有し、所定の容量の記憶領域を有している。その記憶領域には、センサ情報バッファ１８１、送信履歴テーブルバッファ１８２、およびコンテキストデータバッファ１８３が含まれる。
【００８１】
センサ情報バッファ１８１は、制御部１６３によりデータプール１６２より読み出されたセンサ情報を保持するバッファである。つまりセンサ情報バッファ１８１には、クライアントノード９０に送信する前の（未送信の）データが保持される。送信履歴テーブルバッファ１８２は、計算データ（センサ情報やコンテキストデータ）のクライアントノード９０への送信状況を示す送信履歴情報のテーブル情報である送信履歴テーブルを保持するバッファである。この送信履歴情報には、例えば、計算データを送信したクライアントノードのノード番号や、その送信時刻に関する情報等が含まれる。この送信履歴情報は、クライアントノード９０より供給される計算結果データの有効性を確認するため等に利用される。送信履歴情報テーブルの詳細については後述する。コンテキストデータバッファ１８３は、各クライアントノード９０より計算結果データとして供給される、クライアントノード９０の内部状態に関する情報であるコンテキストデータを保持するバッファである。このコンテキストデータは、制御部１６３により読み出されてクライアントノード９０に供給される。コンテキストデータは、例えば、クライアントノード９０間で学習結果を関連付けるために利用される。詳細については後述する。
【００８２】
なお、データバッファ１６５は、バッファとして機能する構成（記憶領域）を有していればよく、そのための記憶素子であれば、例えば、ハードディスクやフラッシュメモリ等のように、上述した以外の記憶素子を有するようにしてもよい。どの記憶素子を採用するかは、データの入出力速度、記憶容量、または素子のサイズ等の基準に基づいて最適なものを選択するようにすればよい。
【００８３】
ROM１６６は、制御部１６３により実行されるプログラムやデータを予め記憶しており、制御部１６３の要求に基づいて、それらを制御部１６３に供給する。RAM１６７は、制御部１６３が実行するプログラムやデータが一時的に保持される。つまり、制御部１６３は、ROM１６６に記憶されているプログラムやデータを読み出し、それをRAM１６７にロードして実行する。
【００８４】
入力部１６８は、制御部１６３に制御され、キーボードやマウス等の入力デバイス、または入力端子等を有しており、ユーザ入力や外部入力等を受け付け、その受け付けた情報を制御部１６３に供給する。出力部１６９は、例えば、CRTやLCD等のディスプレイやスピーカ等の出力デバイスを有しており、制御部１６３より供給された情報を出力する。記憶部１７０は、例えば、ハードディスクやフラッシュメモリ等の記録媒体を有しており、制御部１６３が実行するプログラムやデータの情報を記憶し、必要に応じてそれらの情報を制御部１６３に供給する。つまり、制御部１６３は、ROM１６６だけでなく、記憶部１７０に記憶されているプログラムやデータも、それらを読み出してRAM１６７にロードして実行することもできる。ドライブ１７１は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１７２が適宜装着されるデバイスであり、制御部１６３に制御され、その装着されたリムーバブルメディア１７２からプログラムやデータを読み出して制御部１６３に供給する。例えば、制御部１６３は、そのプログラムやデータを記憶部１７０に供給してインストールする。
【００８５】
なお、データバッファ１６５をデータプール１６２、RAM１６７、または記憶部１７０と一体に構成するようにしてもよい。その場合、そのデバイスの記憶領域全体が分割され、その一部がデータバッファ１６５として割り当てられ、その他の部分が他の領域として割り当てられる。なお、データプール１６２がRAM１６７や記憶部１７０と一体に構成されるようにしてもよい。
【００８６】
図７は、図６の制御部１６３の内部の構成例を示すブロック図である。
【００８７】
図７において制御部１６３は、制御部２０１、計算結果データ受信制御部２０２、送信元特定部２０３、有効性確認部２０４、無効値化部２０５、コンテキストデータ保持制御部２０６、コマンド情報作成部２０７、センサ情報受信部２０８、センサ情報更新確認部２０９、計算データ作成部２１０、送信履歴テーブル更新部２１１、および計算データ送信部２１２を有している。
【００８８】
制御部２０１は、制御部１６３内の各部を制御する制御処理を行う。計算結果データ受信制御部２０２は、通信部１６４を制御し、クライアントノード９０より計算結果データを受信する処理を行う。
【００８９】
送信元特定部２０３は、計算結果データ受信部２０２が通信部１６４を介して受信した計算結果データを参照し、その送信元となるクライアントノード９０を特定する。
【００９０】
有効性確認部２０４は、計算結果データ受信部２０２が通信部１６４を介して受信した計算結果データが有効なデータであるか否かを確認する構成を少なくとも有する。ここではさらに、有効性確認部２０４は、その計算結果データの有効性を、計算結果データ受信部２０２によるその取得順と、計算データ送信部２１２による、その計算結果データに対応する計算データの送信順に基づいて確認する構成も有する。つまり、有効性確認部２０４は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルの送信履歴情報を参照し、計算結果データの取得順が、計算データの送信順に対して遅延している場合、その計算結果データを無効と判定する。有効性確認部２０４は、無効と判定した計算結果データを破棄する。
【００９１】
無効値化部２０５は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、計算結果データ受信制御部２０２が計算結果データを受信することにより、無効となるその他の計算結果データが存在するか否かを確認し、必要な場合は、その送信履歴情報を無効値に設定する（無効値化する）。詳細については後述するが、制御部１６３は、送信履歴情報テーブルを用いて、クライアントノード９０より供給される計算結果データの順番を管理する。つまり、制御部１６３は、計算データを送信した順番と同じ順番で受信した計算結果データを有効とし、順番が入れ替わった計算結果データを無効とする。制御部１６３は、この有効・無効の情報を、送信履歴情報テーブルを用いて管理する。無効値化部２０５は、受信順が、その対応する計算データの送信順と異なる計算結果データ（受信が送信に比べて遅延した計算結果データ）を無効値とするように、送信履歴情報を更新する。
【００９２】
コンテキストデータ保持制御部２０６は、計算結果データ受信制御部２０２が受信した計算結果データに含まれるコンテキストデータ（送信元のクライアントノード９０の内部状態を示す情報）をコンテキストデータバッファ１８３に供給し、保持させる。また、コンテキストデータ保持制御部２０６は、計算結果データが無効である場合、コンテキストデータバッファ１８３に保持されている、その１つ前の（最新の）コンテキストデータを複製し、新たなコンテキストデータとして保持させる。
【００９３】
コマンド情報作成部２０７は、計算結果データ受信制御部２０２が受信した計算結果データより、ヒューマノイドロボット６１に供給するコマンド情報を生成し、それをデータプール１６２に供給して保持させる。センサ情報受信部２０８は、ヒューマノイドロボット６１より送信され、データプール１６２に保持されているセンサ情報を取得（受信）し、それをセンサ情報バッファ１８１に供給して保持させる。センサ情報更新確認部２０９は、センサ情報受信部２０８が取得（受信）したセンサ情報が更新されている（新たなセンサ情報である）ことを確認する。
【００９４】
計算データ作成部２１０は、センサ情報バッファ１８１に保持されているセンサ情報と、コンテキストデータバッファ１８３に保持されているコンテキストデータを用いて、クライアントノード９０に供給する計算データを作成する。つまり、計算データ作成部２１０は、時系列に沿って因果関係を有する内容の時系列データ（センサ情報）を、その時系列に沿って複数の部分データに分割し、その部分データを用いて計算データを作成する構成を少なくとも有する。ここで、計算データ作成部２１０は、さらにコンテキストデータも用いて計算データを作成する。また、ここではさらに、計算データ作成部２１０は、送信履歴テーブル更新部２１１により更新される送信履歴テーブル（送信履歴テーブルバッファ１８２に保持されている送信履歴テーブル）を参照し、その送信履歴テーブルに含まれる計算データの送信時刻に基づいて計算データに含めるセンサ情報の時系列上の範囲を決定する構成も有する。例えば、計算データ作成部２１０は、同じクライアントノード９０に対する前回の送信時刻より後のセンサ情報を用いて計算データを作成する。もちろんこれ以外の決定方法であってもよい。
【００９５】
送信履歴テーブル更新部２１１は、計算データ作成部２１０が作成した計算データを送信することを送信履歴テーブルに反映させるために、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを読み出して送信時刻を更新し、その更新済みの送信履歴テーブルを送信履歴テーブルバッファ１８２に供給して保持させる。つまり、送信履歴テーブル更新部２１１は、計算データ送信部２１２による計算データの送信時刻を、クライアントノード９０毎に管理する。
【００９６】
計算データ送信部２１２は、計算データ作成部２１０が作成した計算データを、通信部１６４を介してクライアントノード９０に所定の順番で送信する。
【００９７】
次に、図７の制御部１６３の各部の動作について説明する。制御部２０１は、例えばユーザ入力等に基づいて、サーバ処理を行うか否かを判定し、行うと判定した場合、計算結果データ受信制御部を制御し、クライアントノード９０より送信される計算結果データの受信に関する処理を実行させる。計算結果データ受信制御部２０２は、制御部２０１の制御に基づいて、通信部１６４を制御し、クライアントノード９０より送信される計算結果データの受信処理を行う。なお、後述するように、制御部１６３の各部により実行されるサーバ処理は、最初待機状態である。そして、計算結果データ受信制御部２０２が、最初に、通信部１６４を制御し、クライアントノード９０から空の計算結果データ（ダミーデータ）を受信すると、制御部１６３の各部は、それをきっかけとして、実質的なサーバ処理を開始する。計算結果データを受信すると場合、計算結果データ受信制御部２０２は、その計算結果データを送信元特定部２０３に供給する。
【００９８】
送信元特定部２０３は、計算結果データを参照し、ヘッダ情報等に基づいて、送信元のクライアントノード９０を特定する。送信元特定部２０３は、その送信元の情報とともに、計算結果データを有効性確認部２０４に供給する。有効性確認部２０４は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルの、計算結果データの送信元に対応する送信履歴情報を参照し、送信元特定部２０３より供給された計算結果データの有効性を確認し、計算結果データが有効である場合、その計算結果データと送信元の情報を無効値化部２０５に供給する。また、計算結果データが無効である場合、その計算結果データを破棄し、その旨をコンテキストデータ保持制御部２０６に通知する。なお、受信した計算結果データがダミーデータの場合、当然、送信履歴情報の送信時刻は有効なものでは無く、計算結果データは無効なものと判断される。
【００９９】
無効値化部２０５は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、有効性確認部２０４より供給された計算結果データと送信元の情報に基づいて、それより以前に受信する筈だった他の計算結果データが存在するか否かを確認し、存在する場合は、それらの計算結果データを無効とするように送信履歴テーブルを更新する。そして無効値化部２０５は、計算結果データをコンテキストデータ保持制御部２０６に供給する。
【０１００】
コンテキストデータ保持制御部２０６は、無効値化部２０５より供給される計算結果データに含まれるコンテキストデータをコンテキストデータバッファ１８３に供給して保持させる。また、コンテキストデータ保持制御部２０６は、有効性確認部２０４より無効であることを通知された場合、１つ前のステップにおいてコンテキストデータバッファ１８３に保持されたコンテキストデータ（その時点で最新のコンテキストデータ）を複製し、新たなコンテキストデータとしてコンテキストデータバッファ１８３に保持させる。ただし、コンテキストデータバッファ１８３にコンテキストデータが保持されていない場合、コンテキストデータ保持制御部２０６は、その複製処理を省略するか、若しくは、ダミーのコンテキストデータを生成して、そのダミーデータをコンテキストデータバッファ１８３に保持させる。
【０１０１】
そして、コンテキストデータ保持制御部２０６は、計算結果データ（少なくとも予測計算結果を含む）をコマンド情報作成部２０７に供給する。コマンド情報作成部２０７は、供給された予測計算結果を用いて、ヒューマノイドロボット６１に送信するコマンド情報を作成し、それをデータプール１６２に供給して保持させる。データプール１６２に保持されたコマンド情報は、所定のタイミングで端末装置７１により読み出され、ヒューマノイドロボット６１に供給される。コマンド情報作成部２０７は、コマンド情報をデータプール１６２に保持させると、処理終了をセンサ情報受信部２０８に通知する。
【０１０２】
センサ情報受信部２０８は、データプール１６２に保持されているセンサ情報を取得し、それをセンサ情報更新確認部２０９に供給する。センサ情報更新確認部２０９は、供給されたセンサ情報が、前回供給されたセンサ情報と異なるか否か、すなわち、データプール１６２に保持されているセンサ情報が更新されているか否か（新たなセンサ情報を受信したか否か）を確認する。センサ情報が更新されていない、すなわち、新たなセンサ情報がヒューマノイドロボット６１より供給されていない場合、センサ情報更新確認部２０９は、センサ情報受信部２０８のその旨を通知し、再度データプール１６２よりセンサ情報を取得させる。また、センサ情報が更新された、すなわち、新たなセンサ情報がヒューマノイドロボット６１より供給された場合、センサ情報更新確認部２０９は、センサ情報受信部２０８にその旨を通知する。センサ情報受信部２０８は、センサ情報更新確認部２０９において更新が確認されたセンサ情報をセンサ情報バッファ１８１に供給し、保持させる。そして、センサ情報更新確認部２０９は、処理終了を計算データ作成部２１０に通知する。
【０１０３】
計算データ作成部２１０は、センサ情報バッファ１８１よりセンサ情報を取得し、コンテキストデータバッファ１８３よりコンテキストデータを取得し、それらを用いて計算データを作成し、それを送信履歴テーブル更新部２１１に供給する。このとき、計算データ作成部２１０は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、その送信履歴情報に基づいて、計算データの送信先となるクライアントノード９０に未送信のセンサ情報をセンサ情報バッファ１８１より取得する。また、計算データ作成部２１０は、計算データの送信先となるクライアントノード以外のクライアントノードのコンテキストデータをコンテキストデータバッファ１８３より取得する。
【０１０４】
送信履歴テーブル更新部２１１は、計算データ作成部２１０が作成した計算データをクライアントノード９０に送信することを、送信履歴テーブルに反映させるために、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルの情報を更新する。送信履歴テーブルを更新すると、送信履歴テーブル更新部２１１は、計算データを計算データ送信部２１２に供給する。計算データ送信部２１２は、通信部１６４を制御し、その計算データをクライアントノード９０に送信する。計算データを送信すると、計算データ送信部２１２は、処理終了を制御部２０１に通知する。制御部２０１は、その通知を受け取ると、上述した処理を繰り返す。
【０１０５】
制御部１６３の各部は以上のように動作する。次に以上のような構成およびその動作の詳細について説明する。最初に計算データ作成部２１０の処理について図８の模式図を参照して説明する。
【０１０６】
計算データ作成部２１０は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、その送信履歴情報に基づいて、計算データの送信先となるクライアントノード９０に未送信のセンサ情報（送信履歴情報に記録されている送信時刻より後に受信したセンサ情報）をセンサ情報バッファ１８１より取得し、計算データを作成する。つまり、制御部１６３は、図８に示されるように、端末装置７１を介して供給され、データプール１６２に保持されるセンサ情報２３１を取得し、それをセンサ情報バッファ１８１に記録する。センサ情報バッファ１８１には、このように供給されるセンサ情報が、図８において示されるセンサ情報Ａ乃至センサ情報Ｅのように順番に蓄積される。なお、センサ情報バッファ１８１は、各センサ情報を保持した時刻を管理している。
【０１０７】
仮に計算データ作成部２１０が、このように保持されるセンサ情報群のうち、最新のセンサ情報のみを用いて計算データを作成するようにした場合、今回の送信先と同じクライアントノード９０に前回送信した時刻より後に蓄積されたセンサ情報（そのクライアントノード９０が演算中に蓄積されたセンサ情報）であり、最新でないセンサ情報は、そのクライアントノード９０に送信されないことになる。例えば、図８において、両矢印２３２で示されるセンサ情報Ｃ乃至センサ情報Ｅが、クライアントノード９１の演算中に蓄積されたセンサ情報であるとすると、これらのうち、最新のセンサ情報Ｅのみが計算データとして蓄積され、センサ情報Ｃおよびセンサ情報Ｄは、クライアントノード９１に供給されないことになる。
【０１０８】
このように、あるクライアントノード９０が、計算結果データを出力した時点での最新の計算データのみを受け取り、その計算データをもとに次のステップでの予測状態を計算するようにすると、各クライアントノード９０には、計算中にセンサ情報バッファ１８１に蓄積されたセンサ情報が通知されなくなる。元々、センサ情報は連続時間情報であるから、そのセンサ情報に基づいて正しく予測を行う為には、クライアントノードは、全てのセンサ情報を取得する必要がある。しかしながら、この方法では、連続時間情報の一部に欠損が生じることになる。つまり、各クライアントノードは離散時間の時系列情報に対して予測計算を行うことになり、結果として、予測の精度が低下する。
【０１０９】
なお、サーバノード８１は、センサ情報バッファ１８１に蓄積されるセンサ情報を順番に各クライアントノードに割り当てていく（分配する）ので、クライアントノード９０の数が増えれば増えるほど、離散の程度は大きくなることになる。従って、各クライアントノード９０が、連続時間の学習データを用いてアルゴリズムの学習を行っている場合には、学習データと実際の予測対象の状態変化との食い違いが大きくなり、予測計算の精度が低下する。
【０１１０】
そこで、サーバノード８１は、送信履歴テーブルを用いて、各クライアントノード９０に計算データを送信した時間を記録する。そして、計算データ作成部２１０は、各クライアントノード９０に送信する計算データを作成する際に、最新のセンサ情報だけでなく、その送信時刻の情報を参照して、それより後（計算データを送信するクライアントノード９０が計算中に）蓄積されたセンサ情報を全て含めるように計算データを作成する。
【０１１１】
図９の場合、計算データ作成部２１０は、送信履歴テーブルバッファ１８２を参照し、クライアントノード９１に前回送信した時刻を把握し、それより後に蓄積された送信履歴情報であるセンサ情報Ｃ乃至センサ情報Ｅを用いて計算データを作成し、それをクライアントノード９１に供給する。他のクライアントノードであるクライアントノード９２およびクライアントノード９３についても同様である。
【０１１２】
このようにすることにより、各クライアントノード９０は、連続する時系列データ（センサ情報）を用いて予測演算処理を行うことができ、より正確な予測結果を求めることができる。
【０１１３】
また、コンテキストデータバッファ１８３には、クライアントノード９０より計算結果データとして供給されるコンテキストデータが保持される。例えば、図８の場合、クライアントノード９３の内部状態に関する情報であるコンテキストデータ９３Ａ、クライアントノード９１の内部状態に関する情報であるコンテキストデータ９１Ａ、および、クライアントノード９２の内部状態に関する情報であるコンテキストデータ９２Ａがこの順番に繰り返し蓄積される。
【０１１４】
例えば、計算対象となる時系列予測計算アルゴリズムが、図９に示すリカレントニューラルネットワークのように、何らかの形で内部状態として計算出力を行った時点でのコンテキストデータを保持するような特徴を持つものである場合、あるクライアントノード９０が、前回計算結果を出力した時点で内部に保持するコンテキスト情報を、そのまま保持し、その次の予測計算にそのまま利用するようにすると、そのコンテキスト情報が新たな計算データのセンサ情報に最適でない恐れがある。つまり、前回保持したコンテキストデータは、その前回予測計算に用いたセンサ情報までに対応する情報であり、それ以降のセンサ情報（新たに取得したセンサ情報）については反映されていないので、新たに取得したセンサ情報とは何ら関連性が無く、それまでの学習結果を正しく受け継ぐことができない恐れがある。換言すると、以上のようなアルゴリズムで学習を行った場合、各クライアントノードが互いに独立して学習を行い、互いに関連性の無い学習結果を出力することになり、各学習結果に大きな乖離が生じる恐れがある。
【０１１５】
そこで、実際には、そのクライアントノード９０の１つ前に計算結果を出力したクライアントノード９０の保持するコンテキストデータを用いて予測計算を行う必要がある。そのために、サーバノード８１が各クライアントノード９０から予測計算結果（計算結果データ）を受信する際に、その結果と同時にそのクライアントノード９０が保持する最新のコンテキストデータを受信し、それを時系列データとしてコンテキストデータバッファ１８３に蓄積する。そして、サーバノード８１は、各クライアントノード９０に計算対象時系列データ（センサ情報）を渡す際に、そのセンサ情報とともにコンテキストデータの時系列データを送信する。
【０１１６】
具体的には、図８の場合、コンテキストデータバッファ１８３は、クライアントノード９１より新たに供給されたコンテキストデータ９１Ａを保持する。このとき、計算ノード作成部２１０は、両矢印２３３で示される、前回蓄積されたコンテキストデータ９１Ａ（図８中において、左から２番目のコンテキストデータ９１Ａ）より後に保持され、かつ最新のものでないコンテキストデータ９２Ａおよびコンテキストデータ９３Ａ（右から２番目および３番目のデータ）を含めるように計算データを作成する。つまり、各クライアントノード９０には、自分以外のクライアントノードのコンテキストデータが供給される。
【０１１７】
図８のクライアントノード９１は、以上のようにサーバノード８１より送られてきた２ステップ分のコンテキストデータ（時系列データ）を、自己の持つ最新のコンテキストデータの前に挿入して、次の時間の予測計算を実行する。
【０１１８】
このように、各クライアントノード９０が、上述したように他のクライアントノード９０のコンテキストデータを取り込むことで、他の影響を自己に含めるようにすることによって、互いのコンテキストデータを共有し、各クライアントノード９０内の時系列予測アルゴリズムの持つ内部状態がそれぞれ乖離しないように状態を保つことができる。
【０１１９】
なお、コンテキストデータは、クライアントノード９０が有する時系列予測計算アルゴリズム自身が生成するデータであるため、予測計算の対象データであるセンサ情報との対応を取ると、クライアントノード９０自身が持っているコンテキストデータが最新のコンテキストデータとなる。つまり、各クライアントノード９０から得られコンテキストデータを時系列情報としてまとめたものは最新のセンサデータよりも以前の状態までしか決定できない。
【０１２０】
図８を参照して説明すると、例えば、クライアントノード９１が図中左側の（図中右から４番目の）コンテキストデータ９１Ａを出力した時点においては、他のクライアントノード９２および９３はまだ演算中であり、そのコンテキストデータ９１Ａより時系列において後になる、そのコンテキストデータ９１Ａの図中右側の（図中右から３番目と２番目の）コンテキストデータ９２Ａおよびコンテキストデータ９３Ａは、まだ出力されていない。従ってクライアントノード９１は、その先の予測処理（換言すると、その次のコンテキストデータ９１Ａを算出する処理）を行う為に必要な、コンテキストデータ９２Ａおよびコンテキストデータ９３Ａを取得することができない。
【０１２１】
しかしながら、これらの未知の部分のコンテキストデータについては、過去のセンサ情報とコンテキストデータの時系列から予測計算を行うことによって生成することができる。つまり、クライアントノード９０は、自身が有する最新のコンテキストデータと、新たにサーバノード８１より供給された、それ以降のセンサ情報を用いて、保持している最新のコンテキストデータより後のコンテキストデータを生成することができる。結果として、各クライアントノード９０は、それらのコンテキストデータが未知のままでも予測計算を行うことができる。
【０１２２】
また、図８に示されるように、サーバノード８１の制御部１６３は、クライアントノード９０より計算結果データを取得すると、その中に含まれる予測情報に基づいて、ヒューマノイドロボット６１に供給するコマンド情報２３４を作成し、それをデータプール１６２に保持させる。データプール１６２に保持されたコマンド情報２３４は、所定のタイミングで端末装置７１により読み出され、ヒューマノイドロボット６１に送信される。
【０１２３】
このとき、各クライアントノード９０とサーバノード８１との間の通信時間や、各クライアントノード９０の計算処理時間が信頼に足る場合（これらの時間がクライアントノード９０間で互いに十分等しい場合）には、サーバノード８１が各クライアントノード９０より取得する計算結果データの順番は、サーバノード８１がそれらの計算結果データに対応する計算データを各クライアントノード９０に渡した順番に一致し、それら計算結果データをそのままの順番で結合した結合データは、正しい時系列情報になる。しかしながら、例えば、クラスタコンピュータ７２が、この時系列予測計算に特化した計算機システムではなく、他の用途に関する処理が共存し、かつ、この時系列予測計算と並列に動いている場合（汎用のクラスタコンピュータなどで運用する場合）、通信経路の混雑具合や他プロセスの処理の負荷状況、または、計算機の個体差等のような不確定要素が多く働くので、サーバノード８１は、必ずしも計算データを送信した順番で、各クライアントノード９０から計算結果データを得られるとは限らない。
【０１２４】
そのため、サーバノード８１は、各クライアントノード９０に計算データを送信した順番を記録し、各クライアントノード９０から計算結果データを受信した際に、その受信したデータの順番が送信時の順番と同一であるかを判定することにより、その受信したデータの有効性を確認する。つまり、確認の結果、計算結果データの受信順が、計算データの送信順と同一か、または、送信順より早い場合、サーバノード８１は、その計算結果データを採用する。逆に、計算結果データの受信順が、計算データの送信順よりも遅れた場合、サーバノード８１は、そのクライアントノード９０からの結果は破棄する。このようにすることにより、サーバノード８１は、ヒューマノイドロボット６１に送信するコマンド情報の時系列を正しい順番に制御し、時間的に逆戻りすることの無いようにすることができる。つまり、このようにすることにより、サーバノード８１は、処理の負荷を増大させずに容易に、より正確なコマンド情報を生成し、ヒューマノイドロボット６１に提供することができる。
【０１２５】
このような制御を行う為に、サーバノード８１は、各クライアントノード９０に計算データを送信した送信時刻を記録する送信履歴テーブルを作成し、それを送信履歴テーブルバッファ１８２に保持させる。制御部１６３は、各クライアントノード９０から計算結果データを受信すると、送信履歴テーブルに保持される送信履歴テーブルを参照し、その受信したデータの順番が、送信時の順番と同一であるかを判定する。送信履歴テーブルの、その計算結果データに対応するクライアントノードの送信履歴情報に無効値を示す値が含まれている場合、制御部１６３は、その計算結果データを無効と判定し、無効値を示す値が含まれていない場合は、その計算結果データを有効と判定する。
【０１２６】
送信履歴テーブルは、クライアントノード分のレコードを有しており、各ノード番号に送信時刻を示す情報が関連付けられている。例えば、クライアントノード９０が５つ存在する場合、送信履歴テーブルは、図１０Ａに示されるような構成となる。つまり、各ノード番号に、計算データが送信された送信時刻の情報が関連付けられている。
【０１２７】
このとき、例えば、図１０Ｂに示されるように、時刻７２においてノード番号「３」のクライアントノード９０が予測計算を終了し、計算結果データを送信したとすると、制御部１６３は、まず、この送信履歴テーブルのノード番号「３」の送信時刻の値を参照する。その前の図１０Ａに示されるように、ノード番号「３」の送信時刻の値は「６０」であり、有効であるので（無効値ではないので）、制御部１６３は、次に、送信時刻が、今回計算結果データを取得したノード番号「３」の送信時刻よりも以前の値となっているノード番号の送信時刻を無効値「−１」に設定する。つまり、図１０Ｂの場合、制御部１６３は、ノード番号「１」と「２」の送信時刻の値を無効値化する（「−１」に設定する）。
【０１２８】
次に、制御部１６３は、このノード番号「３」のクライアントノード９０に対して、新たな計算データを供給するので、そのとき、図１０Ｂに示されるように、送信履歴テーブルのノード番号「３」の送信時刻を「６０」から「７２」に更新する。
【０１２９】
次に、図１０Ｃに示されるように、時刻７５において、ノード番号「１」のクライアントノード９０が予測計算を終了し、計算結果データを送信したとすると、制御部１６３は、まず、この送信履歴テーブルのノード番号「１」の送信時刻の値を参照する。その前の図１０Ｂに示されるように、ノード番号「１」の送信時刻は無効値である。従って、制御部１６３は、このノード番号「１」の計算結果データを削除する。そして、制御部１６３は、このノード番号「１」のクライアントノード９０に対して、新たな計算データを供給するので、そのとき、図１０Ｃに示されるように、送信履歴テーブルのノード番号「１」の送信時刻を「−１」から「７５」に更新する。
【０１３０】
次に、図１０Ｄに示されるように、時刻７８において、ノード番号「３」のクライアントノード９０が予測計算を終了し、計算結果データを送信したとすると、制御部１６３は、まず、この送信履歴テーブルのノード番号「３」の送信時刻の値を参照する。その前の図１０Ｂに示されるように、ノード番号「３」の送信時刻は「７２」で有効である。従って、制御部１６３は、次に、送信時刻が、今回計算結果データを取得したノード番号「３」の送信時刻よりも以前の値となっているノード番号の送信時刻を無効値「−１」に設定する。つまり、図１０Ｄの場合、制御部１６３は、ノード番号「４」と「５」の送信時刻の値を無効値化する（「−１」に設定する）。
【０１３１】
次に、制御部１６３は、このノード番号「３」のクライアントノード９０に対して、新たな計算データを供給するので、そのとき、図１０Ｄに示されるように、送信履歴テーブルのノード番号「３」の送信時刻を「７２」から「７８」に更新する。
【０１３２】
このように、制御部１６３は、送信履歴テーブルを用いて送信時刻を管理し、さらに、計算結果データの出力が遅延した演算は無効とするように制御する。このようにすることにより、制御部１６３は、計算結果データの時系列を容易に管理することができる。また、制御部１６３は、送信履歴テーブルの送信時刻に無効値「−１」を設定することにより、計算結果データの有効性を管理するので、送信履歴テーブルの情報量を増大させずに計算結果データの時系列を容易に管理することができる。つまり、制御部１６３は、このような制御処理によって、常に最新の予測結果を採用しつつ、時系列予測結果の情報が時間的に逆戻りすることの無いように計算結果時系列情報を容易に管理することが可能になる。
【０１３３】
図１１は、クラスタコンピュータ７２のクライアントノード９０（クライアントノード９１乃至クライアントノード９３）の一実施形態に係る、本発明に関する構成例を示すブロック図である。
【０１３４】
クライアントノード９０は、通信部２５１、データバッファ２５２、および演算部２５３を有している。
【０１３５】
通信部２５１は、所定の通信規格により、サーバノード８１と通信を行い、上述した計算データや計算結果データのやり取り等を行う。例えば、通信部２５１は、サーバノード８１より送信される計算データを受信し、それをデータバッファ２５２に供給して保持させる。また、通信部２５１は、例えば、データバッファ２５２に保持されている計算結果データを取得し、それをサーバノード８１に送信する。データバッファ２５２は、DRAMやSRAM等の記憶素子を有しており、所定の容量の記憶領域を有している。データバッファ２５２は、その記憶領域を用いて、通信部２５１より供給される計算データ、および、演算部２５３より供給される計算結果データを一時的に保持する。演算部２５３は、データバッファ２５２に保持されている計算データを取得すると、その計算データを用いて、上述したように、時系列データに対する予測計算処理を行う。そして演算部２５３は、その計算結果を計算結果データとしてデータバッファ２５２に供給し、保持させる。
【０１３６】
すなわち、通信部２５１、データバッファ２５２、および演算部２５３は、図３に示される時系列予測器１１１として動作し、供給される時系列データに基づいて、その時系列データの時間的に後の値（時系列データのその先の値）を予測し、その予測値を計算結果データとして出力する。
【０１３７】
次に、図２のクラスタコンピュータ７２全体の処理について説明する。図１２は、クラスタコンピュータ７２が実行する処理の全体の流れを説明する図である。
【０１３８】
クラスタコンピュータ７２において、サーバノード８１は、ステップＳ２１において、端末装置７１より送信される時系列データを元データ２７１として取得する。実際には、端末装置７１は、この時系列データの部分データ（例えば、ヒューマノイドロボット６１の関節角情報１０１やボール座標情報１０２等のセンサ情報）をその時系列に沿って、順次、サーバノード８１のデータプール１６２に蓄積させる。サーバノード８１の制御部１６３は、そのデータプール１６２から部分データ（センサ情報）を取り出し、データバッファ１６５に蓄積する。ただし、この時点では、蓄積された部分データ群は、保持されているのみであり、換言すると、１つの塊（元データ２７１）としてまとめて管理されている。
【０１３９】
次に、サーバノード８１は、ステップＳ２２において、この元データ２７１を複数の分割データに分割する。例えば、図１２の場合、サーバノード８１は、元データ２７１を４つの分割データ（分割データ２８１乃至分割データ２８４）に分割している。このとき、サーバノード８１は、時系列上において隣り合う分割データ同士でその範囲の一部が重複する（境目付近のデータがどちらの部分データにも含まれる）ように時系列データを分割する。例えば、図１２の場合、元データ２７１の内、点線で挟まれている部分Ａは分割データ２８１と分割データ２８２の両方に含まれており、部分Ｂは分割データ２８２と分割データ２８３の両方に含まれており、部分Ｃは分割データ２８３と分割データ２８４の両方に含まれている。実際には、サーバノード８１の制御部１６３は、データプール１６２より取り出した部分データ群を、その部分データの単位で区切ることにより分割データを作成する。つまり、各分割データは、１つまたは複数の部分データにより構成される。
【０１４０】
時系列データを分割すると、サーバノード８１は、分割データをクライアントノード９０に分配する。例えば、図１２の場合、サーバノード８１は、分割データ２８１をクライアントノード２９１に送信し、分割データ２８２をクライアントノード２９２に送信し、分割データ２８３をクライアントノード２９３に送信し、分割データ２８４をクライアントノード２９４に送信する。このときサーバノード８１は、必要に応じて、コンテキストデータもクライアントノード９０に分配する。
【０１４１】
分割データを供給された各クライアントノード９０（図１２の場合、クライアントノード２９１乃至クライアントノード２９４）は、ステップＳ２３において、分割データに対する予測計算を並列的に（それぞれ互いに独立して）行う（並列計算する）。そして、各クライアントノード９０は、得られた計算結果をそれぞれ、サーバノード８１に送信する。
【０１４２】
サーバノード８１は、ステップＳ２４において、それらの計算結果を受信すると、それらを時系列に沿って集約し、１つの出力用時系列データ３０１（例えば、関節角コマンド１０５等のコマンド情報）を作成し、それを端末装置７１に出力する。実際には、サーバノード８１の制御部１６３は、クライアントノード９０より供給される計算結果データを、順次、有効性を確認し、有効な場合のみ、その計算結果データに対するコマンド情報を作成し、それをデータプール１６２に蓄積させる。端末装置７１は、そのデータプール１６２に蓄積されるコマンド情報群（出力用時系列データ）を所定のタイミングで順次読み出し、ヒューマノイドロボット６１に転送する。つまり、出力用時系列データ３０１の出力は、１度に出力されるのではなく、その部分データが時系列に沿って順次出力されるが、出力回数が複数化されているのみであり、本質的には、１つの塊（出力用時系列データ３０１）としてまとめて管理されている。
【０１４３】
このようにサーバノード８１が時系列データを、各範囲の一部が重複するように分割し、その分割データを複数のクライアントノード９０に並行して処理させることにより、クラスタコンピュータ７２は、より高速に予測計算を行うことができる。
【０１４４】
このような予測計算処理の効果について具体的に説明する。図１３は、予測計算処理の例を説明する図である。図１３において、図中上側に示されるグラフは、ヒューマノイドロボット６１より送信されるセンサ情報の推移を示すグラフであり、横軸が時刻を示し、縦軸が状態量を示している。つまり、このグラフは、時系列データの値の例を示すグラフである。このグラフにおける実線の曲線は、センサ情報の例を示している。このセンサ情報に基づいて予測計算を行った結果が点線の曲線で示されている。なお点線の直線の縦線は、この処理における時刻の単位である「ステップ」を示している。つまり、クラスタコンピュータ７２内においては、この時間間隔でデータの授受や入出力等が行われる。
【０１４５】
例えば、ある時刻においてその次のステップのセンサ情報の値を予測する場合、入力データとして９ステップ分のセンサ情報を必要とし、さらに予測計算時間として３ステップ分の時間が必要であるとする。例えば、クライアントノード９１が時刻Ｔにおいて時刻Ｔ＋１のセンサ情報の値（丸で示される点）を予測する場合、入力データとして時刻Ａから時刻Ｂまでのセンサ情報を必要とし、予測計算時間として時刻Ｂから時刻Ｔまでの時間が必要になる。つまり、時刻Ａ乃至時刻Ｂの時間がデータ収集時間となり、時刻Ｂ乃至時刻Ｔの時間が予測計算時間となる。
【０１４６】
このような場合において、１台のクライアントノード９０において予測計算を行うようにすると、クラスタコンピュータ７２は、９＋３＝１２ステップ毎にしか予測結果を出力することができない。つまり、１台の計算機で時系列状態予測計算を実行し、ヒューマノイドロボット６１の実時間制御を実現しようとすると、実際には「環境情報の取得（データ収集）→予測計算→予測結果の出力」をシリアルに繰り返し実行することになる。この繰返し周期（例えば上述の１２ステップ）は多くの場合予測計算のスピード（計算能力）に依存する。従って、ヒューマノイドロボット６１の制御周期は、長い（ステップ数が多い）だけでなく、計算機（クライアントノード９０）の負荷状態等に応じて無視出来ないほど変化してしまい、予測計算処理の安定性も低下する。
【０１４７】
そこで情報処理システム５１においては、この予測計算を、クラスタコンピュータ７２を利用することによって並列化して実行させる。これにより、情報処理システム５１は、各クライアントノード９０の担当するデータ量を小さくし、それぞれの計算量を削減することができ、結果として、最終結果を得るまでの時間を短縮することができる。従って、情報処理システム５１は、単一の計算機の能力に依存せずに制御周期をより高速化することができる。さらに、情報処理システム５１は、複数のクライアントノード９０に並行して予測処理を実行させることにより、各ノードの負荷状態等が制御に与える影響の割合を低減し、制御をより安定化することができる。
【０１４８】
ただし、従来の並列計算において、サーバノードは、ある大きな入力データの塊を、互いに重なりの無いように分割して各計算ノードに割り当てる。この手法は、分割された各データ間、および各データに対する処理間に因果関係がない場合には適用可能であるが、時系列予測計算アルゴリズムのように、前の状態の結果が次の状態に反映されるような計算対象、例えば、時系列に沿って因果関係を有する内容の時系列データであるセンサ情報を計算対象とする場合には適用できない。
【０１４９】
例えば、第１の計算ノードの処理結果を、第２の計算ノードが参照するような場合、第２の計算ノードは第１の計算ノードが処理を終了するまで待機しなければならない。つまり、このような場合、各計算ノードは並列に処理を行うことができず、１台の計算機で演算するのと等価になってしまう。
【０１５０】
これに対して、サーバノード８１は、各クライアントノード９０に供給するセンサ情報の範囲が一部重複（オーバーラップ）するようにセンサ情報を分割する。具体的には、計算データ作成部２１０は、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、センサ情報バッファ１８１に保持されたセンサ情報の内、送信先となるクライアントノード９０の送信履歴情報の送信時刻より後に、センサ情報バッファ１８１に保持されたセンサ情報を取り出し、それに、コンテキストデータバッファ１８３より取り出したコンテキストデータを合わせて計算データを作成する。
【０１５１】
つまり、計算データ作成部２１０は、時系列に沿って因果関係を有する内容の時系列データ（センサ情報）を、その時系列に沿って複数の部分データに、各部分データの時系列上の範囲の一部が、隣り合う（分割（抽出）された順序が連続する）部分データ同士で互いに重複するように、分割する。そして計算データ作成部２１０は、各部分データについて計算データを作成する。換言すると、計算データ作成部２１０は、時系列データ（センサ情報バッファ１８１に保持されたセンサ情報）から、その時系列に沿って抽出範囲をずらしながら、その抽出範囲内の時系列データである部分データを繰り返し抽出することにより、時系列データを分割する。このとき、計算データ作成部２１０は、今回の抽出範囲と前回の抽出範囲とで、その一部が重複するように抽出範囲をずらす。より具体的には、計算データ作成部２１０は、毎回、要求される計算結果データの出力間隔に応じた、抽出範囲よりも短い時間分、抽出範囲をずらす。
【０１５２】
このように、時系列データをその時系列に沿って分割して得られる各部分データの範囲の一部が、時系列上隣り合う（分割（抽出）された順序が連続する）部分データ同士で互いに重複するように、時系列データを分割することにより、時系列データ（センサ情報）内の因果関係を維持しながら並列計算を実現することができ、データ収集時間や予測計算時間より短い時間間隔で、より正確な予測結果を出力することができる。
【０１５３】
例えば、図１３に示されるように、時刻Ａよりデータ収集を開始するクライアントノード９１に対して、クライアントノード９２が時刻Ａ＋１よりデータ収集を開始し、クライアントノード９３が時刻Ａ＋２よりデータ収集を開始するようにする。このようにすることにより、クライアントノード９２は、時刻Ｔ＋１において時刻Ｔ＋２のセンサ情報の値（四角で示される点）を予測し、クライアントノード９３は、時刻Ｔ＋２において時刻Ｔ＋３のセンサ情報の値（三角で示される点）を予測することができる。つまり、各クライアントノード９０が予測結果を出力するタイミングは１ステップずつズレている。すなわち、クラスタコンピュータ７２は、データ収集と予測計算により１２ステップも必要であるにも関わらず、１ステップ毎に、より正確な予測結果を出力することができる。
【０１５４】
より具体的に説明すると、例えば、単一計算機で実行した予測計算の計算時間が５００msecであるが、ヒューマノイドロボット６１の制御周期はその計算周期より短くする必要があり、結果として、端末装置７１は、クラスタコンピュータ７２から計算出力を１０msec間隔で得る必要があるものとする。この場合、５００／１０＝５０なので、クライアントノード９０を５０ノード用意すればよい。サーバノード８１は、ヒューマノイドロボット６１より供給されるセンサ情報から、時系列の範囲に沿って切り出し範囲を１０msecずつ変えながら部分データを切り出し、各クライアントノード９０に送信（分配）する。つまり、サーバノード８１は、例えば、切り出した１つ目部分データをクライアントノード９１に送信し、切り出した２つ目部分データをクライアントノード９２に送信し、切り出した３つ目部分データをクライアントノード９３に送信する。さらに、サーバノード８１は、クライアントノード９１の処理が終了すると、切り出した４つ目部分データをクライアントノード９１に送信する。このような処理を繰り返し行うと、サーバノード８１には、１０msec毎に、各クライアントノード９０から計算結果が返ってくる。サーバノード８１は、それらの結果をつなげ、時系列予測結果を得、それを端末装置７１に供給する。すなわち、制御システム６２は、１０msecの制御周期を実現することができる。
【０１５５】
なお、上述したように、クライアントノード数は、下記の式（１）のように決定することができる。
【０１５６】
クライアントノード数＝（単一計算機で１ステップの計算に要する時間）／（必要な計算出力周期）          ・・・（１）
【０１５７】
なお、図１３において、実際にはデータの収集はサーバノード８１が行う為、時刻Ｔにおいて予測計算を終了したクライアントノード９１は、時刻Ｔより次の予測計算を開始することができる。つまり、時刻Ｔにおいて予測計算を終了したクライアントノード９１は、次に、時刻Ａ＋３よりデータ収集を開始し、時刻Ｂ＋３（＝Ｔ）より予測計算を開始し、時刻Ｔ＋３において、時刻Ｔ＋４のセンサ情報の値（丸で示される点）を予測することができる。
【０１５８】
このようにサーバノード８１が時系列データであるセンサ情報を、その範囲が重複するように分割し、それぞれを所定の順番でクライアントノード９１乃至クライアントノード９３に分配（送信）するようにし、そのデータに対して、クライアントノード９１乃至クライアントノード９３が順次予測計算を繰り返すことにより、クラスタコンピュータ７２は、データ収集と予測計算により１２ステップも必要であるにも関わらず、１ステップ毎に予測結果を出力することができる。
【０１５９】
つまり、図２の情報処理システム５１は、「観測された過去の状態量変化に基づいて次のステップでの状態量を予測する」というアルゴリズム（予測計算）を、並列計算環境（クラスタコンピュータ７２）を利用することによって、より高速に計算することができる。
【０１６０】
以上のようなことから、制御システム６２は、より高速に、かつ、より正確に予測計算を行い、より短い制御周期でヒューマノイドロボット６１を制御することができる。つまり、制御システム６２は、より的確にヒューマノイドロボット６１を制御することができる。
【０１６１】
以上のような制御処理の流れを説明する。
【０１６２】
上述したように、情報処理システム５１により実行される処理の流れは大きく２つに分けることができる。つまり、ヒューマノイドロボット６１より送信されたセンサ情報が、端末装置７１を介して、サーバノード８１のデータプール１６２に蓄積される処理、および、データプール１６２に蓄積されるコマンド情報が端末装置７１を介してヒューマノイドロボット６１に供給される処理からなる制御情報の送受信処理と、データプール１６２に蓄積されるセンサ情報をクライアントノードに分配して予測計算処理を並列に行わせ、それら計算結果を集めて結合し、コマンド情報を生成し、それをデータプール１６２に蓄積させる時系列予測処理に分けることができる。
【０１６３】
まず、端末装置７１が中継処理を行う制御情報の送受信処理について説明する。図１４は、その送受信処理の例を説明するフローチャートである。
【０１６４】
最初にステップＳ６１において、端末装置７１の入力部１４１は、CPU１３１に制御され、制御の開始を指示する入力を受け付ける。例えば、ユーザがキーボードを操作する等してヒューマノイドロボット６１の制御の開始を指示すると、入力部１４１はそれを受け付け、無線通信部１４４および通信部１４５に供給する。無線通信部１４４および通信部１４５は、その指示を取得すると、それぞれ、それをヒューマノイドロボット６１およびサーバノード８１に送信（供給）する。
【０１６５】
ヒューマノイドロボット６１の無線通信部１２３は、ステップＳ４１において、制御部１２２に制御されて、端末装置７１から送信（供給）された制御開始指示を受信（取得）すると、それを制御部１２２に供給する。制御部１２２は、ステップＳ４２においてセンサ部１２１よりセンサ情報を取得する。なお、このときモータ部１２４に対するコマンド情報の一部または全部をセンサ情報に付加するようにしてもよい。センサ情報を取得すると制御部１２２は、そのセンサ情報を無線通信部１２３に供給する。無線通信部１２３は、ステップＳ４３において、そのセンサ情報を端末装置７１に送信（供給）する。
【０１６６】
端末装置７１の無線通信部１４４は、CPU１３１に制御され、ステップＳ６２においてそのセンサ情報を取得すると、それを通信部１４５に供給する。通信部１４５は、センサ情報を供給されると、ステップＳ６３において、それをサーバノード８１に供給する。
【０１６７】
サーバノード８１の通信部１６１は、ステップＳ８１において、端末装置７１より供給される制御開始指示を取得すると、センサ情報の受け付けを開始する。そして、ステップＳ８２において、端末装置７１より供給されたセンサ情報を取得すると、通信部１６１は、それをデータプール１６２に供給する。センサ情報を供給されたデータプール１６２は、ステップＳ８３において、そのセンサ情報を保持する。通信部１６１は、さらに、データプール１６２に保持されている、ヒューマノイドロボット６１用のコマンド情報を読み出し、ステップＳ８４において、それを端末装置７１に供給する。
【０１６８】
端末装置７１の通信部１４５は、ステップＳ６４において、そのコマンド情報を取得すると、CPU１３１に制御されて、それを無線通信部１４４に供給する。無線通信部１４４は、コマンド情報を取得すると、ステップＳ６５において、そのコマンド情報をヒューマノイドロボット６１に送信（供給）する。ヒューマノイドロボット６１の無線通信部１２３は、ステップＳ４４において、そのコマンド情報を取得すると、それを制御部１２２に供給する。制御部１２２は、ステップＳ４５において、そのコマンド情報を適宜モータ部１２４に供給することにより、モータ制御を行う。このように各装置間で情報を授受することにより、ヒューマノイドロボット６１は、センサ情報（例えば、ボールの動きや現在の自分の姿勢）に応じた動作を行うことができる。換言すると、以上のように情報を授受することにより、制御システム６２は、ヒューマノイドロボット６１の現在の姿勢やボールの動きに応じて、適切にヒューマノイドロボット６１の動作を制御することができる。
【０１６９】
なお、端末装置７１の入力部１４１は、CPU１３１に制御され、ステップＳ６６において、制御終了指示の入力を受け付ける。例えば、ユーザがヒューマノイドロボット６１の制御を終了するように指示を入力すると、入力部１４１は、ステップＳ６６においてその指示を受け付け、その指示を無線通信部１４４および通信部１４５に供給する。無線通信部１４４および通信部１４５は、その指示を受け取ると、その指示をそれぞれヒューマノイドロボット６１またはサーバノード８１に送信（供給）する。
【０１７０】
ヒューマノイドロボット６１の無線通信部１２３は、ステップＳ４６においてその指示を受信（取得）すると、その指示を制御部１２２に供給する。制御部１２２は、ステップＳ４７において、以上のような制御処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ４１に戻し、それ以降の処理を繰り返す。また、例えばステップＳ４６において端末装置７１より処理終了指示を受け付けるなどし、ステップＳ４７において制御処理を終了すると判定した場合、制御部１２２は、制御処理を終了し、上述したデータの送受信処理を終了する。
【０１７１】
また、端末装置７１のCPU１３１は、ステップＳ６７において、以上のような制御処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ６２に戻し、それ以降の処理を繰り返す。また、例えばステップＳ６６においてユーザより終了指示を受け付けるなどし、ステップＳ６７において制御処理を終了すると判定した場合、CPU１３１は、制御処理を終了し、上述したデータの送受信処理を終了する。
【０１７２】
サーバノード８１の通信部１６１は、ステップＳ８５において処理終了指示を取得すると、その指示を制御部１６３に供給する。制御部１６３は、ステップＳ８６において、以上のような制御処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ８２に戻し、それ以降の処理を繰り返す。また、例えばステップＳ８５において端末装置７１より処理終了指示を受け付けるなどし、ステップＳ８６において制御処理を終了すると判定した場合、制御部１６３は、制御処理を終了し、上述したデータの送受信処理を終了する。
【０１７３】
次に、クラスタコンピュータ７２による時系列予測処理について説明する。この時系列予測処理は、サーバノード８１によるサーバ処理と、クライアントノード９０によるクライアント処理の２つの処理により構成される。
【０１７４】
最初に、サーバノード８１により実行されるサーバ処理について、図１５および図１６のフローチャートを参照して説明する。
【０１７５】
最初に、制御部１６３の制御部２０１は、ステップＳ１０１において、サーバ処理を終了するか否かを判定する。終了しないと判定した場合、制御部２０１は、処理をステップＳ１０２に進める。ステップＳ１０２において、計算結果データ受信制御部２０２は、クライアントノード９０より計算結果データを受信したか否かを判定する。受信していないと判定した場合、計算結果データ受信制御部２０２は、処理をステップＳ１０１に戻し、それ以降の処理を繰り返す。ステップＳ１０２において、計算結果データを受信したと判定した場合、計算結果データ受信制御部２０２は、処理をステップＳ１０３に進める。
【０１７６】
つまり、サーバノード８１は、クライアントノード９０からの計算結果データの送信をきっかけとして、サーバ処理を実質的に開始する。最初は、クライアントノード９０には計算データを送信していないので、クライアントノード９０からはダミーの計算結果データ（データの内容が空の計算結果データ）が送信されることになる。サーバノード８１は、このダミーデータを受信することにより、そのクライアントノード９０が動作可能である（予測計算を行うことができる）と判断し、実質的なサーバ処理（初回のステップＳ１０３以降の処理）を開始する。このように、ダミーデータを受信することによりサーバ処理を開始するようにすることにより、サーバノード８１は、サーバ処理を開始するための構成を新たに設ける必要がなく、製造コストを低減させることができる。
【０１７７】
ステップＳ１０３において、送信元特定部１０３は、受信した計算結果データの例えばヘッダ等を参照し、その送信元のクライアントノード９０を特定する。有効性確認部２０４は、ステップＳ１０４において、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、その計算結果データに対応する送信データの送信履歴情報に基づいて、受信した計算結果データの有効性を確認する。有効性確認部２０４は、ステップＳ１０５において、その確認結果に基づいて、送信履歴情報の送信時刻の値が有効値であるか（無効値であるか）否かを判定する。送信時刻の値が有効値であると判定した場合、有効性確認部２０４は、その計算結果データが有効であると判定し、処理をステップＳ１０６に進める。
【０１７８】
ステップＳ１０６において、無効値化部２０５は、遅延した計算データの送信履歴を無効値化する。つまり、無効値化部２０５は、受信した計算結果データに対応する計算データよりも先にクライアントノード９０に送信された計算データに対応する計算結果データ（本来、受信した計算結果データよりも先に受信する筈であったが未だ受信していない計算結果データ）を無効に設定するために、その計算結果データに対応する送信履歴情報を無効値化する（送信時刻に無効値を挿入する）ように送信履歴テーブルを更新する。
【０１７９】
コンテキストデータ保持制御部２０６は、ステップＳ１０７において、クライアントノード９０より受信したコンテキストデータをコンテキストデータバッファ１８３に保持させる。コンテキストデータは、計算結果であるセンサ予測情報とともに計算結果データとしてクライアントノード９０より送信される。
【０１８０】
コマンド情報作成部２０７は、ステップＳ１０８において、計算結果データを用いて、ヒューマノイドロボット６１に送信するコマンド情報を生成し、それをデータプール１６２に保持させる。ステップＳ１０８の処理を終了すると、コマンド情報作成部２０７は、処理を図１６のステップＳ１２１に進める。
【０１８１】
また、図１５のステップＳ１０５において、送信時刻の値が有効値でない（無効値である）と判定した場合、有効性確認部２０４は、その計算結果データが無効であると判定し、その計算データを破棄し、処理をステップＳ１０９に進める。ステップＳ１０９において、コンテキストデータ保持制御部２０６は、コンテキストデータバッファ１８３に保持されている１つ前のステップのコンテキスト情報を複製し、それをコンテキストデータバッファ１８３に保持させる。ステップＳ１０９の処理を終了すると、コンテキストデータ保持制御部２０６は、処理を図１６のステップＳ１２１に進める。
【０１８２】
図１６のステップＳ１２１において、センサ情報受信部２０８は、データプール１６２よりセンサ情報を取得（受信）する。センサ情報更新確認部２０９は、ステップＳ１２２において、その取得したセンサ情報を参照し、データプール１６２のセンサ情報が更新されたか否かを判定する。つまり、センサ情報更新確認部２０９は、センサ情報受信部２０８が取得したセンサ情報が、前回取得したセンサ情報と異なるか否かを確認することにより、データプール１６２に新たなセンサ情報が蓄積されたか否かを確認する。
【０１８３】
そして、データプール１６２のセンサ情報が更新されていない、すなわち、センサ情報受信部２０８が取得したセンサ情報が新しいものではないと判定した場合、センサ情報更新確認部２０９は、処理をステップＳ１２１に戻し、それ以降の処理を繰り返す。つまり、センサ情報受信部２０８は、センサ情報更新確認部２０９の確認に基づいて新しいセンサ情報を取得したと確認できるまで、データプール１６２よりセンサ情報を繰り返し取得する。
【０１８４】
そして、ステップＳ１２２において、データプール１６２のセンサ情報が更新された、すなわち、センサ情報受信部２０８が取得したセンサ情報が新しいものであると判定した場合、センサ情報更新確認部２０９は、処理をステップＳ１２３に進める。
【０１８５】
ステップＳ１２３において、センサ情報受信部２０８は、新しいものと確認されたセンサ情報をセンサ情報バッファ１８１に保持させる。ステップＳ１２４において、計算データ作成部２１０は、クライアントノード９０に送信する計算データを作成する。計算データの作成処理については、図１７のフローチャートを参照して後述する。
【０１８６】
図１６のステップＳ１２５において、送信履歴テーブル更新部２１１は、計算データ作成部２１０が作成した計算データのクライアントノード９０への送信を反映させるために、送信履歴テーブル１８２に保持されている送信履歴テーブルを更新する。ステップＳ１２６において、計算データ送信部２１２は、その計算データを、今回の送信先として選択されたクライアントノード９０に送信する。計算データを送信すると、計算データ送信部２１２は、その旨を制御部２０１に通知し、処理を図１５のステップＳ１０１に戻す。
【０１８７】
つまり、制御部１６３の各部は、ステップＳ１０１乃至ステップＳ１０９の各処理、並びに、ステップＳ１２１乃至ステップＳ１２６の各処理を、繰り返し実行することにより、ヒューマノイドロボット６１より供給されるセンサ情報に対する予測計算結果であるコマンド情報を出力する。
【０１８８】
そして、図１５のステップＳ１０１において、このサーバ処理を終了すると判定した場合、制御部２０１は、処理をステップＳ１１０に進め、終了処理を行った後、サーバ処理を終了する。
【０１８９】
サーバノード８１の制御部１６３は、以上のようにサーバ処理を行う。
【０１９０】
次に、図１６のステップＳ１２４において実行される計算データ作成処理を、図１７のフローチャートを参照して説明する。
【０１９１】
計算データ作成処理を開始すると、図７の計算データ作成部２１０は、ステップ１４１において、送信履歴テーブルバッファ１８２に保持されている送信履歴テーブルを参照し、前回の計算データの送信時刻を特定する。
【０１９２】
次に、ステップＳ１４２において、計算データ作成部２１０は、センサ情報バッファ１８１に保持されているセンサ情報の中から、ステップＳ１４１において特定した前回の送信時刻以降のセンサ情報を選択する。計算データ作成部２１０は、次に、ステップＳ１４３に処理を進め、コンテキストデータバッファ１８３に保持されているコンテキストデータの中から、ステップＳ１４１において特定した前回の送信時刻以降のコンテキスト情報を選択する。そして、計算データ作成部２１０は、ステップＳ１４４において、選択したセンサ情報およびコンテキスト情報を用いて計算データを作成する。計算データを作成した計算データ作成部２１０は、処理を図１６のステップＳ１２４に戻し、ステップＳ１２５以降の処理を実行させる。
【０１９３】
以上のようにサーバノード８１がサーバ処理を行うことにより、制御システム６２は、より高速に、かつ、より正確に予測計算を行い、より短い制御周期でヒューマノイドロボット６１を制御することができる。つまり、制御システム６２は、より的確にヒューマノイドロボット６１を制御することができる。
【０１９４】
次に、以上のようなサーバ処理に対応して、クライアントノード９０により実行されるクライアント処理について、図１８のフローチャートを参照して説明する。
【０１９５】
クライアントノード９０の通信部２５１は、ステップＳ１６１において、計算結果データをサーバノード８１に送信する。つまり、通信部２５１は、クライアントノード処理が開始されると最初に計算結果データをサーバノード８１に送信する。もちろん、最初は予測計算が行われていないので、通信部２５１は、ダミーの計算結果データ（実質的に空の計算結果データ）をサーバノード８１に送信する。
【０１９６】
ステップＳ１６２において、通信部２５１は、クライアント処理を終了するか否かを判定する。終了しないと判定した場合、通信部２５１は、処理をステップＳ１６３に進める。ステップＳ１６３において、通信部２５１は、サーバノード８１より新たな計算データを受信したか否かを判定する。受信していないと判定した場合、通信部２５１は、処理をステップＳ１６２に戻し、それ以降の処理を繰り返す。
【０１９７】
ステップＳ１６３において、新たな計算データを受信したと判定した場合、通信部２５１は、処理をステップＳ１６４に進める。ステップＳ１６４において、通信部２５１は、受信した計算データをデータバッファ２５２に供給し、セットする。データバッファ２５２は、供給された計算データを保持する。ステップＳ１６５において、演算部２５３は、データバッファ２５２に保持されている計算データを取得し、時系列予測計算処理を実行し、センサ情報の予測値を生成し、それをデータバッファ２５２に保持させ、処理をステップＳ１６１に戻す。ステップＳ１６１において、通信部２５１は、データバッファ２５２に保持されているセンサ情報の予測値（センサ予測情報）と、クライアントノード９０の内部状態の情報（コンテキストデータ）を計算結果データとしてサーバノード８１に送信する。つまり、予測計算が行われた後は、通信部２５１は、本物の（ダミーデータでない）計算結果データをサーバノード８１に送信する。
【０１９８】
クライアントノード９０の各部は、以上のように、ステップＳ１６１乃至ステップＳ１６５を繰り返し実行し、サーバノード８１より供給される計算データに対して予測計算を行い、計算結果データを返す。そして、ステップＳ１６２においてクライアント処理を終了すると判定した場合、通信部２５１は、処理をステップＳ１６６に進め、終了処理を行った後、クライアント処理を終了する。
【０１９９】
以上のようにクライアント処理を行うことにより、クライアントノード９０は、サーバノード８１より供給される計算データに対して予測計算を行い、計算結果データを返すことができる。これにより、サーバノード８１は、ヒューマノイドロボット６１より供給されるセンサ情報に対応するコマンド情報をヒューマノイドロボット６１に返すことができる。従って、制御システム６２は、より高速に、かつ、より正確に予測計算を行い、より短い制御周期でヒューマノイドロボット６１を制御することができる。つまり、制御システム６２は、より的確にヒューマノイドロボット６１を制御することができる。
【０２００】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、上述した情報処理システム５１全体、または情報処理システム５１を構成する一部の要素は、それぞれ、図１９に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【０２０１】
図１９において、パーソナルコンピュータ４００のCPU４０１は、ROM４０２に記憶されているプログラム、または記憶部４１３からRAM４０３にロードされたプログラムに従って各種の処理を実行する。RAM４０３にはまた、CPU４０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２０２】
CPU４０１、ROM４０２、およびRAM４０３は、バス４０４を介して相互に接続されている。このバス４０４にはまた、入出力インタフェース４１０も接続されている。
【０２０３】
入出力インタフェース４１０には、キーボード、マウスなどよりなる入力部４１１、CRT（Cathode Ray Tube）、LCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部４１２、ハードディスクなどより構成される記憶部４１３、モデムなどより構成される通信部４１４が接続されている。通信部４１４は、インターネットを含むネットワークを介しての通信処理を行う。
【０２０４】
入出力インタフェース４１０にはまた、必要に応じてドライブ４１５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア４２１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部４１３にインストールされる。
【０２０５】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０２０６】
この記録媒体は、例えば、図１９に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア４２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM４０２や、記憶部４１３に含まれるハードディスクなどで構成される。
【０２０７】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２０８】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。なお、以上において、１つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて１つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。
【図面の簡単な説明】
【０２０９】
【図１】従来の並列型計算機システムが実行する処理の流れを説明する図である。
【図２】本発明を適用した情報処理システムの一実施形態に係る構成例を示す図である。
【図３】図２の情報処理システムにおいて授受される情報の例を説明する図である。
【図４】図２のヒューマノイドロボットの一実施形態に係る、本発明に関する構成例を示すブロック図である。
【図５】図２の端末装置の一実施形態に係る、本発明に関する構成例を示すブロック図である。
【図６】図２のクラスタコンピュータのサーバノードの一実施形態に係る、本発明に関する構成例を示すブロック図である。
【図７】図６の制御部の内部の構成例を示すブロック図である。
【図８】計算データ作成部の実行する処理について説明する模式図である。
【図９】リカレントニューラルネットワークの構成例を示す模式図である。
【図１０】送信履歴テーブルの更新の様子を説明する図である。
【図１１】図２のクライアントノードの一実施形態に係る、本発明に関する構成例を示すブロック図である。
【図１２】クラスタコンピュータが実行する処理の全体の流れを説明する図である。
【図１３】予測計算処理の例を説明する図である。
【図１４】データの送受信処理の例を説明するフローチャートである。
【図１５】サーバ処理の例を説明するフローチャートである。
【図１６】サーバ処理の例を説明する、図１５に続くフローチャートである。
【図１７】、図１６のステップＳ１２４において実行される計算データ作成処理の例を説明するフローチャートである。
【図１８】クライアント処理の例を説明するフローチャートである。
【図１９】本発明の一実施形態を適用したパーソナルコンピュータの構成例を示す図である。
【符号の説明】
【０２１０】
５１  情報処理システム，  ６１  ヒューマノイドロボット，  ６２  制御システム，  ７１  端末装置，  ７２  クラスタコンピュータ，  ８１  サーバノード，  ９０乃至９３  クライアントノード，  １０１  関節角情報，  １０２  ボール座標情報，  １０３  関節角予測情報，  １０４  ボール座標予測情報，  １０５  関節角コマンド，  １１１  時系列予測器，  １２１  センサ部，  １２２  制御部，  １２３  無線通信部，  １２４  モータ部，  １４１  入力部，  １４４  無線通信部，  １４５  通信部，  １６１  通信部，  １６２  データプール，  １６３  制御部，  １６４  通信部，  １６５  データバッファ，  １８１  センサ情報バッファ，  １８２  送信履歴テーブルバッファ，  １８３  コンテキストデータバッファ，  ２０１  制御部，  ２０２  計算結果データ受信制御部，  ２０３  送信元特定部，  ２０４  有効性確認部，  ２０５  無効値化部，  ２０６  コンテキストデータ保持制御部，  ２０７  コマンド情報作成部，  ２０８  センサ情報受信部，  ２０９  センサ情報更新確認部，  ２１０  計算データ作成部，  ２１１  送信履歴テーブル更新部，  ２１２  計算データ送信部，  ２５１  通信部，  ２５２  データバッファ，  ２５３  演算部，  ４００  パーソナルコンピュータ
【図１】
2006252394.tif 000003
【図２】
2006252394.tif 000004
【図３】
2006252394.tif 000005
【図４】
2006252394.tif 000006
【図５】
2006252394.tif 000007
【図６】
2006252394.tif 000008
【図７】
2006252394.tif 000009
【図８】
2006252394.tif 000010
【図９】
2006252394.tif 000011
【図１０】
2006252394.tif 000012
【図１１】
2006252394.tif 000013
【図１２】
2006252394.tif 000014
【図１３】
2006252394.tif 000015
【図１４】
2006252394.tif 000016
【図１５】
2006252394.tif 000017
【図１６】
2006252394.tif 000018
【図１７】
2006252394.tif 000019
【図１８】
2006252394.tif 000020
【図１９】
2006252394.tif 000021