(57)【要約】【課題】一次側及び二次側の２つのＲＴコンポーネントの間の通信ポートのミスマッチ及びデータの仕様の違いを吸収するデータ中継用ＲＴコンポーネントを簡易に作成できること。【解決手段】一次側における第１データの出力ポートの仕様と二次側における第２データの入力ポートの仕様と第１データ及び第２データのデータ型と乗算係数及びオフセット値の情報とを入力する情報入力手順（Ｓ１）と、第１データの入力処理と、第１データに対して乗算係数及びオフセット値による数値変換処理及び第２データのデータ型へのデータ型変換処理を施すことにより第２データを導出するデータ変換処理と、第２データの出力処理とを、ロボットが備えるコンピュータに実行させるためのデータ中継用ＲＴコンポーネントのソースコードを自動生成して記憶装置に記憶させるソースコード生成手順（Ｓ２〜Ｓ７）とが、コンピュータにより実行される。【選択図】図２
2011086182.tif 000002
【特許請求の範囲】
【請求項１】
第１のＲＴコンポーネントから提供される第１データを第２データへ変換し、該第２データを第２のＲＴコンポーネントに提供する処理をＲＴミドルウェア上でプロセッサに実行させるデータ中継用ＲＴコンポーネントを生成するデータ中継用ＲＴコンポーネント生成方法であって、
所定のデータ入力手段を通じて、前記第１のＲＴコンポーネントにおける前記第１データの出力ポートの仕様と前記第２のＲＴコンポーネントにおける前記第２データの入力ポートの仕様と前記第１データのデータ型と前記第２データのデータ型と数値変換用情報とを含むデータ中継条件情報を入力する情報入力手順と、
前記出力ポートの仕様に対応して前記第１データを入力する第１データ入力処理と、該第１データに対して前記数値変換用情報を用いた数値変換処理及び前記第１データのデータ型から前記第２データのデータ型へのデータ型変換処理の各々を施すことにより前記第２データを導出するデータ変換処理と、該第２データを前記入力ポートの仕様に対応して出力する第２データ出力処理と、をロボットが備えるプロセッサに実行させるためのデータ中継用ＲＴコンポーネントのソースコードを自動生成して記憶手段に記憶させるソースコード生成手順と、
をコンピュータにより実行することを特徴とするデータ中継用ＲＴコンポーネント生成方法。
【請求項２】
前記数値変換用情報は、乗算係数の情報及びオフセット値の情報を含み、
前記数値変換処理は、前記乗算係数の情報を用いた乗算処理と前記オフセット値の情報を用いた加算処理とを含む、
請求項１に記載のデータ中継用ＲＴコンポーネント生成方法。
【請求項３】
前記データ中継条件情報は、少なくとも前記第１のＲＴコンポーネントに起因して生じるイベント及び前記第２のＲＴコンポーネントに起因して生じるイベントのいずれかを指定するイベント指定情報を含み、
前記ソースコード生成手順は、前記イベント指定情報に基づいて特定されるイベントの発生に応じて前記データ変換処理を前記プロセッサに実行させるための前記ソースコードを自動生成する、
請求項１又は請求項２に記載のデータ中継用ＲＴコンポーネント生成方法。
【請求項４】
前記数値変換用情報は、変換行列の情報を含み、
前記数値変換処理は、行列を構成する複数の行列要素である前記第１データに対し、前記変換行列を用いた行列変換処理を含む、
請求項１乃至請求項３のいずれかに記載のデータ中継用ＲＴコンポーネント生成方法。
【請求項５】
第１のＲＴコンポーネントから提供される第１データを第２データへ変換し、該第２データを第２のＲＴコンポーネントに提供する処理をＲＴミドルウェア上でプロセッサに実行させるデータ中継用ＲＴコンポーネントのソースコードを生成する処理を、コンピュータに実行させるためのデータ中継用ＲＴコンポーネント生成プログラムであって、
所定のデータ入力手段を通じて、前記第１のＲＴコンポーネントにおける前記第１データの出力ポートの仕様と前記第２のＲＴコンポーネントにおける前記第２データの入力ポートの仕様と前記第１データのデータ型と前記第２データのデータ型と数値変換用情報とを含むデータ中継条件情報を入力する情報入力手順と、
前記出力ポートの仕様に対応して前記第１データを入力する第１データ入力処理と、該第１データに対して前記数値変換用情報を用いた数値変換処理及び前記第１データのデータ型から前記第２データのデータ型へのデータ型変換処理の各々を施すことにより前記第２データを導出するデータ変換処理と、該第２データを前記入力ポートの仕様に対応して出力する第２データ出力処理と、をロボットが備えるプロセッサに実行させるためのデータ中継用ＲＴコンポーネントのソースコードを自動生成して記憶手段に記憶させるソースコード生成手順と、
をコンピュータに実行させるためのデータ中継用ＲＴコンポーネント生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＴ(Robot Technology)ミドルウェアにおいて動作するデータ中継用ＲＴコンポーネントを生成するデータ中継用ＲＴコンポーネント生成方法及びそのプログラムに関するものである。
【背景技術】
【０００２】
昨今、ロボット開発の効率化のため、ロボット用の総合プラットフォームソフトウェアであるＲＴミドルウェアが提供されている。ＲＴミドルウェアは、ロボットの要素となる様々な機能を実現するＲＴコンポーネントを通信ネットワークを介して組み合わせることを可能にする。そのため、ＲＴミドルウェアを用いれば、既存のＲＴコンポーネントを利用して、多様なロボットシステムを容易に構築することが可能となる。このＲＴミドルウェアの代表例は、日本の独立行政法人産業技術総合研究所が提供するOpenRTM-aistである。
【０００３】
なお、本明細書における用語「ロボット」は、移動ロボットやヒューマノイドロボット等のような一体となった知的装置を意味するだけの用語ではない。本明細書における用語「ロボット」は、ロボット技術を利用して実世界に働きかける機能を持つネットワーク化された知能化システムを総称する用語である。例えば、人間の生活空間の中に分散配置されたセンサやアクチュエータが、ネットワークを介して協調することによって生活支援や介護を実現するようなシステムも、本明細書におけるロボットに含まれる。
【０００４】
図９は、ロボットにおけるＲＴミドルウェアとＲＴコンポーネントとの関係を表す模式図である。ＲＴコンポーネント２０は、ＲＴミドルウェア１２０の上で動作し、ＲＴミドルウェア１２０は、所定のオペレーティングシステム１１０の上で動作する。前記ＲＴコンポーネント２０、前記ＲＴミドルウェア１２０及び前記オペレーティングシステム１１０は、ロボットが備えるプロセッサによって実行されるプログラムである。ＲＴコンポーネント２０は、例えば、カメラによる撮像を行う機能、撮像画像の画像処理によって物体を認識する機能又はロボットアーム等のアクチュエータ又はセンサを制御する機能等のロボットの要素となる各機能を実現する。ＲＴミドルウェア１２０においては、通信ネットワークを介して接続された複数のＲＴコンポーネント２０が、相互にデータ通信を行いながら動作する。
【０００５】
また、非特許文献１に示されるように、ＲＴミドルウェアにおけるＲＴコンポーネントの仕様は、ＯＭＧ(Object Management Group)により標準化が進められている。ＯＭＧは、分散オブジェクト指向システムの標準化を目的として設立されたコンソーシアムである。このＯＭＧにより規定される仕様に準拠したＲＴコンポーネントは、様々な企業や機関から提供される。また、ＲＴコンポーネントは、予め定め標準化された仕様に準拠して自作することも可能である。例えば、非特許文献２には、入力データに対し、型変換又は加算／減算等の単純な処理を施すＲＴコンポーネントを作成した旨が示されている。
【０００６】
そして、複数の既存のＲＴコンポーネントを利用してロボットを作ることにより、多様な機能を実現するロボットを効率的に作ることができる。特に、複数の既存のＲＴコンポーネントのみを通信ネットワークを介して組み合わせることにより、所望の処理を行うロボットを実現できれば好適である。
【０００７】
例えば、以下に示される４つのＲＴコンポーネントが予め提供されている場合を考える。即ち、第１のＲＴコンポーネントは、カメラによる撮像を行う機能を実現する。第２のＲＴコンポーネントは、カメラによる撮像画像に基づく画像処理によって物体を認識する機能を実現する。第３のＲＴコンポーネントは、ロボットアーム及びその基本的な動きを制御する機能を実現する。第４のＲＴコンポーネントは、画像処理により認識された物体を把持するようにロボットアームを制御する機能を実現する。
【０００８】
上記の場合、４つのＲＴコンポーネントを組み合わせるだけで、カメラにより得られた画像に基づいて物体を認識し、認識した物体をロボットアームによって把持するロボットを作ることができれば好適である。また、前記第４のＲＴコンポーネントを、他の自作のＲＴコンポーネントに置き換えるだけで、認識した物体に対し、ロボットアームによって所望の操作を行うロボットを作ることができれば好適である。
【０００９】
しかしながら、実際には、複数の既存のＲＴコンポーネントを単に接続するだけでは、想定通りの機能を果たすロボットを実現できないことが多い。既存のＲＴコンポーネントの接続を阻害する第１の理由は、データを提供する側のＲＴポーネントの出力ポートの仕様と、データを受け取る側のＲＴコンポーネントの入力ポートの仕様とのミスマッチである。以下、データを提供する側のＲＴポーネントのことを一次側ＲＴコンポーネントと称し、データを受け取る側のＲＴコンポーネントのことを二次側ＲＴコンポーネントと称する。
【００１０】
図１０は、ＯＭＧにより標準化された通信ポートの種類を表す模式図である。ＯＭＧの規格では、"OutPort"と称される第１の通信ポート２０１と、"InPort"と称される第２の通信ポート２０２と、"Provider"と称される第３の通信ポート２０３と、"Consumer"と称される第４の通信ポート２０４とが用意されている。前記第１の通信ポート２０１及び前記第３の通信ポート２０３は、前記一次側ＲＴコンポーネント２１の通信ポートである。また、前記第２の通信ポート２０２及び前記第４の通信ポート２０４は、前記二次側ＲＴコンポーネント２２の通信ポートである。前記第１の通信ポート２０１と前記第２の通信ポート２０２との組合せは、"Data Port"と称され、前記第３の通信ポート２０３と前記第４の通信ポート２０４との組合せは、"Service Port"と称される。
【００１１】
図１０（ａ）に示されるように、前記第２の通信ポート２０２は、前記第１の通信ポート２０１により出力されるデータを受け取ることができる。また、図１０（ｂ）に示されるように、前記第４の通信ポート２０４は、前記第３の通信ポート２０３により出力されるデータを受け取ることができる。また、前記第４の通信ポート２０４は、前記第３の通信ポート２０３に対してデータを引き渡すこともできる。
【００１２】
より具体的には、"Data Port"の組合せにおいては、ＲＴミドルウェアにより、前記第１の通信ポート２０１のデータバッファから前記第２の通信ポート２０２のデータバッファへデータが一定周期で転送される。一方、"Service Port"の組合せにおいては、ＲＴミドルウェアにより、前記第４の通信ポート２０４側からのデータ取得要求に応じて、前記第３の通信ポート２０３のデータバッファから前記第４の通信ポート２０４のデータバッファへデータが転送される。また、"Service Port"の組合せにおいては、ＲＴミドルウェアにより、前記第４の通信ポート２０４側からのデータ提供要求に応じて、前記第４の通信ポート２０４のデータバッファから前記第３の通信ポート２０３のデータバッファへデータが転送される場合もある。
【００１３】
しかしながら、図１０（ｃ）に示されるように、前記第１の通信ポート２０１と前記第４の通信ポート２０４との組合せは、ミスマッチの組合せである。また、図１０（ｄ）に示されるように、前記第３の通信ポート２０３と前記第２の通信ポート２０２との組合せも、ミスマッチの組合せである。これらミスマッチの組合せの下では、データの受け渡しを行うことができない。
【００１４】
また、既存のＲＴコンポーネントの接続を阻害する第２の理由は、前記一次側ＲＴポーネントの出力データの仕様と、前記二次側ＲＴコンポーネントの入力データの仕様とのミスマッチである。ここで、データの仕様とは、データ型及び物理量としてのデータのレンジ等である。このデータの仕様のミスマッチが存在する場合、たとえデータの受け渡しが行われたとしても、想定通りの機能を果たすロボットは実現されない。
【００１５】
そこで、従来のロボット開発者は、一次側ＲＴコンポーネントと二次側ＲＴコンポーネントとの組合せ毎に、データ中継用ＲＴコンポーネントを自作（プログラミング）していた。ここで、データ中継用ＲＴコンポーネントは、一次側ＲＴコンポーネントの出力データを取得し、そのデータを二次側ＲＴコンポーネントの入力データの仕様に合うように変換して二次側ＲＴコンポーネントに提供するＲＴコンポーネントである。そして、従来のロボット開発者は、自作のデータ中継用ＲＴコンポーネントを、一次側ＲＴコンポーネントと二次側ＲＴコンポーネントとの間に介在させることにより、所望の機能を果たすロボットを実現していた。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】神徳徹雄, 水川真「RT ミドルウエア標準化活動への誘い-OMG ワシントン技術会議2008 の報告-」 ROBOMEC2008, 1P1-E23, 2008年6月
【非特許文献２】渡部努, 相山康道「SimuLike: コンポーネントのデータ接続性向上のためのアダプタツール群の開発」 計測自動制御学会 SI2008, 1L4-2, 2008年12月
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、一次側ＲＴコンポーネントと二次側ＲＴコンポーネントとの組合せ毎にデータ中継用ＲＴコンポーネントを自作することは、非常に手間であるという問題点があった。そのため、従来は、既存のＲＴコンポーネントを利用することが、ロボット開発の十分な効率化につながらないことが多かった。
【００１８】
一方、主要な一次側ＲＴコンポーネント及び二次側ＲＴコンポーネントの間に、非特許文献２に示されるような、型変換又は加算／減算等の単純な処理を施す複数の既存のＲＴコンポーネントを直列的に接続することが考えられる。この場合、直列的に接続された複数の既存のＲＴコンポーネントが、データ変換を行う。しかしながら、その場合、データが、発信元から最終的な送信先へ到達する間に、多くのＲＴコンポーネントの通信を経るため、データ伝送の遅延が生じやすいという問題点があった。
【００１９】
以上に示した問題点を解決するためには、一次側ＲＴコンポーネントと二次側ＲＴコンポーネントとの間の通信ポートのミスマッチ及びデータの仕様の違いを吸収するデータ中継用ＲＴコンポーネントを簡易に生成できるツールが有効である。
【００２０】
本発明は、一次側ＲＴコンポーネントと二次側ＲＴコンポーネントとの間の通信ポートのミスマッチ及びデータの仕様の違いを吸収するデータ中継用ＲＴコンポーネントを簡易に作成できるデータ中継用ＲＴコンポーネント生成方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明に係るデータ中継用ＲＴコンポーネント生成方法は、データ中継用ＲＴコンポーネントを生成する方法であり、次の（１）及び（２）に示される各手順をコンピュータにより実行することを特徴とする。ここで、前記データ中継用ＲＴコンポーネントは、第１のＲＴコンポーネントから提供される第１データを第２データへ変換し、該第２データを第２のＲＴコンポーネントに提供する処理をＲＴミドルウェア上でプロセッサに実行させるプログラムモジュールである。
【００２２】
（１）第１の手順は、所定のデータ入力手段を通じて、前記第１のＲＴコンポーネントにおける前記第１データの出力ポートの仕様と前記第２のＲＴコンポーネントにおける前記第２データの入力ポートの仕様と前記第１データのデータ型と前記第２データのデータ型と数値変換用情報とを含むデータ中継条件情報を入力する情報入力手順である。（２）第２の手順は、前記出力ポートの仕様に対応して前記第１データを入力する第１データ入力処理と、該第１データに対して前記数値変換用情報を用いた数値変換処理及び前記第１データのデータ型から前記第２データのデータ型へのデータ型変換処理の各々を施すことにより前記第２データを導出するデータ変換処理と、該第２データを前記入力ポートの仕様に対応して出力する第２データ出力処理と、をロボットが備えるプロセッサに実行させるためのデータ中継用ＲＴコンポーネントのソースコードを自動生成して記憶手段に記憶させるソースコード生成手順である。
【００２３】
より具体的には、前記数値変換用情報が、乗算係数の情報及びオフセット値の情報を含むことが考えられる。この場合、前記数値変換処理は、前記乗算係数の情報を用いた乗算処理と前記オフセット値の情報を用いた加算処理とを含む。なお、本発明は、上記（１）及び上記（２）の各手順を実行する手段を備えたデータ中継用ＲＴコンポーネント生成装置として捉えることもできる。また、本発明は、上記（１）及び上記（２）の各手順をコンピュータに実行させるためのデータ中継用ＲＴコンポーネント生成プログラムとして捉えることもできる。
【発明の効果】
【００２４】
本発明によれば、一次側ＲＴコンポーネントである前記第１のコンポーネントと二次側ＲＴコンポーネントである前記第２のコンポーネントとの間のデータの仕様の違いを吸収するデータ中継用ＲＴコンポーネントを簡易に作成することができる。その結果、ＲＴミドルウェア及び既存のＲＴコンポーネントを利用してロボットを作ることが容易となる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態に係るデータ中継用ＲＴコンポーネント生成プログラムを実行する計算機１００の概略ブロック図。
【図２】計算機１００が実行するデータ中継用ＲＴコンポーネント生成処理の手順の一例を表す第１のフローチャート。
【図３】計算機１００が実行するデータ中継用ＲＴコンポーネント生成処理の手順の一例を表す第２のフローチャート。
【図４】計算機１００が実行するデータ中継用ＲＴコンポーネント生成処理の手順の一例を表す第３のフローチャート。
【図５】第１のグループに属するデータ中継用ＲＴコンポーネントのデータ中継タイプを表す模式図。
【図６】第２のグループに属するデータ中継用ＲＴコンポーネントのデータ中継タイプを表す模式図。
【図７】第３のグループに属するデータ中継用ＲＴコンポーネントのデータ中継タイプを表す模式図。
【図８】通信ポートの組合せのパターンごとの起動イベントの候補が一覧表示された図。
【図９】ロボットにおけるＲＴミドルウェアとＲＴコンポーネントとの関係を表す模式図。
【図１０】ＯＭＧにより標準化された通信ポートの種類を表す模式図。
【発明を実施するための形態】
【００２６】
以下添付図面を参照しながら、本発明の実施の形態について説明し、本発明の理解に供する。なお、以下の実施の形態は、本発明を具体化した一例であり、本発明の技術的範囲は、以下の実施の形態の内容に限定されない。
【００２７】
まず、図１に示されるブロック図を参照しつつ、本発明の一実施形態に係るデータ中継用ＲＴコンポーネント生成プログラムを実行する計算機１００の概略構成について説明する。即ち、計算機１００は、本発明の一実施形態に係るデータ中継用ＲＴコンポーネント生成装置である。データ中継用ＲＴコンポーネント生成装置Ｘは、パーソナルコンピュータ又はワークステーション等の計算機である。図１に示されるように、計算機１００は、ＣＰＵ１、データ入力装置２、表示装置３及び記憶装置４を備えている。
【００２８】
前記ＣＰＵ１は、前記記憶装置４に記憶されたプログラムを実行する演算手段である。前記データ入力装置２は、当該計算機１００にデータを入力するデータ入力手段の一例である。前記データ入力装置２は、例えば、当該計算機１００のオペレータによる操作に従って当該計算機１００にデータを入力するキーボード又はマウス等である。また、外部装置からネットワークを介してデータを入力するネットワークインターフェースカード等の通信手段が、前記データ入力装置２の一部又は全部として採用されてもよい。前記表示装置３は、液晶ディスプレイ又はＣＲＴ等であり、前記ＣＰＵ１により実行されるプログラムの内容に応じて各種の情報を表示する装置である。前記記憶装置４は、ハードディスク又はＲＡＭディスク等の記憶手段である。前記記憶装置４は、例えば、オペレーティングシステム１０、データ中継用ＲＴコンポーネント生成プログラム１１及びコンパイラ１２等が、予め記憶される。また、前記ＣＰＵ１の処理によって生成されるデータ中継用ＲＴコンポーネント２３が、前記記憶装置４に記録される。
【００２９】
前記データ中継用ＲＴコンポーネント２３は、データを提供する側の前記一次側ＲＴコンポーネント２１から、データを受け取る側の前記二次側ＲＴコンポーネント２２へのデータの伝送を中継するＲＴコンポーネントである。前記一次側ＲＴコンポーネント２１、前記二次側ＲＴコンポーネント２２及び前記データ中継用ＲＴコンポーネント２３は、いずれもＲＴミドルウェア１２０上で動作するソフトウェアである。
【００３０】
前記データ中継用ＲＴコンポーネント２３は、次の３つの処理を、ロボットが備えるマイクロプロセッサに実行させるためのプログラムモジュールである。その第１の処理は、前記一次側ＲＴコンポーネント２１から提供される一次側データを取得する処理である。第２の処理は、前記一次側データを前記二次側ＲＴコンポーネント２２に提供される二次側データへ変換する処理である。第３の処理は、前記二次側データを前記二次側ＲＴコンポーネント２２に提供する処理である。そして、前記データ中継用ＲＴコンポーネント生成プログラム１１は、前記データ入力装置２を通じて入力される所定の情報に基づいて、前記データ中継用ＲＴコンポーネント２３を自動生成する処理を前記ＣＰＵ１に実行させるためのプログラムである。
【００３１】
次に、図２、図３及び図４に示されるフローチャートを参照しつつ、前記ＣＰＵ１が、前記データ中継用ＲＴコンポーネント生成プログラム１１を実行することによって実現されるデータ中継用ＲＴコンポーネント生成処理の手順の一例について説明する。以下の説明において、Ｓ１、Ｓ２、…は、処理の手順の識別符号を表す。また、前記データ中継用ＲＴコンポーネント生成処理は、前記データ入力装置２に対し前記データ中継用ＲＴコンポーネント生成プログラム１１を起動するための操作がなされることによって開始される。
【００３２】
まず、前記ＣＰＵ１は、前記データ入力装置２を通じて、データ中継条件情報を入力して前記記憶装置４に記録する処理を実行する（Ｓ１）。前記データ中継条件情報には、前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント各々の仕様に関する情報と、前記一次側データから前記二次側データへの数値変換に関する情報とが含まれている。以下、前者をコンポーネント仕様情報と称し、後者を数値変換用情報と称する。さらに、前記データ中継条件情報には、後述するイベント指定情報も含まれる。
【００３３】
また、前記コンポーネント仕様情報には、前記一次側ＲＴコンポーネント２１における前記一次側データの出力ポートの仕様及び前記一次側データのデータ型の情報が含まれている。また、前記コンポーネント仕様情報には、前記二次側ＲＴコンポーネント２２における前記二次側データの出力ポートの仕様及び前記二次側データのデータ型の情報も含まれている。さらに、前記コンポーネント仕様情報には、前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２が、他のＲＴコンポーネントに対して提供するサービス名と、そのサービスを実現する関数群の名称と、その関数群の引数及び戻り値の情報とが含まれる。
【００３４】
前記ＯＭＧにより定められた分散オブジェクト技術の仕様であるＣＯＲＢＡに準拠したソフトウェアの環境においては、前記コンポーネント仕様情報は、前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２各々のインターフェースファイルに含まれる。従って、前記ＣＰＵ１は、前記記憶装置４に記憶された前記インターフェースファイルを読み込むバッチ処理により、前記コンポーネント仕様情報を入力することも考えられる。
【００３５】
例えば、各ＲＴコンポーネントがＯＭＧの規格に準拠している場合、前記一次側データの出力ポート及び前記二次側データの入力ポート各々が図１０に示した４種類の通信ポートのいずれに該当するか、を表す情報が、前記コンポーネント仕様情報の一部として入力される。さらに、各ＲＴコンポーネントがＯＭＧの規格に準拠している場合、前記一次側データ及び前記二次側データが、１３種類のデータ型のいずれに該当するか、を表す情報も、前記コンポーネント仕様情報の一部として入力される。前記１３種類のデータ型は、"Character"、"Double"、"Float"、"Long"、"LongDouble"、"LongLong"、"Octet"、"Short"、"UnsignedLong"、"UnsignedLongLong"、UnsignedShort"、"WideCharacter"及び"WideString"である。
【００３６】
一方、前記数値変換用情報には、前記一次側データの値に対する乗算処理に用いられる乗算係数の情報と、前記一次側データの値に対する加算処理に用いられるオフセット値の情報とが含まれる。前記乗算係数及び前記オフセット値は、前記一次側データを、前記二次側ＲＴコンポーネント２２におけるデータの入力レンジに合うデータへ変換するための数値である。
【００３７】
例えば、前記一次側ＲＴコンポーネント２１の出力レンジの仕様が、０(mm)から１０００(mm)の範囲の物理量を０から２５５の範囲の値で出力する仕様であり、前記二次側ＲＴコンポーネント２２の入力レンジの仕様が−１０００(mm)から＋１０００(mm)の範囲の物理量を０から２５５の範囲の値で入力する仕様である場合を考える。この場合、前記一次側データを、前記二次側ＲＴコンポーネント２２におけるデータの入力レンジに合うデータへ変換するために、前記乗算係数として０．５が入力され、前記オフセット値として１２７．５が入力される。
【００３８】
また、前記数値変換用情報は、前記乗算係数及び前記オフセット値を一意に特定できる間接的な情報であることも考えられる。例えば、前記一次側データの２つのサンプル値(x1,x2)と、その各々に対応する前記二次側データの２つのサンプル値(y1,y2)との組合せ(x1,y1)及び(x2,y2)が、前記数値変換用情報として入力されてもよい。この場合、前記ＣＰＵ１は、前記乗算係数k及び前記オフセット値hを、"k=(y1-y2)/(x1-x2)"及び"h=(x2*y1-x1*y2)/(x2-x1)"の各式により算出する。なお、"*"は乗算を表す符号である。
【００３９】
なお、前記コンポーネント仕様情報、前記数値変換用情報及び前記イベント指定情報が、それぞれ異なるルートで入力されることも考えられる。例えば、前記コンポーネント仕様情報が、ネットワーク経由により、又は、前記記憶装置４からのデータ読み出しにより入力され、前記数値変換用情報及び前記イベント指定情報が、キーボード等の操作に応じて入力されることが考えられる。
【００４０】
次に、前記ＣＰＵ１は、前記コンポーネント仕様情報に基づいて、前記データ中継用ＲＴコンポーネント２３のフレームワークを生成し、そのフレームワークを前記記憶装置４に記録する（Ｓ２）。以下、このステップＳ２で生成される前記データ中継用ＲＴコンポーネント２３のフレームワークのことを、単にフレームワークと称する。ＲＴコンポーネントのフレームワークを生成するためのプログラムは、例えば、独立行政法人産業技術総合研究所から"RtcTemplate"として提供されており、そのプログラムは、ステップＳ２の処理を行うプログラムとして採用できる。"RtcTemplate"は、"OpenRTM-aist"として提供されるプログラム群の一部である。
【００４１】
前記フレームワークには、前記一次側ＲＴコンポーネント２１の通信ポートに対応してデータを受信する一次側の通信インターフェースのソースコードと、前記二次側ＲＴコンポーネント２２の通信ポートに対応してデータを送信する二次側の通信インターフェースのソースコードとが含められる。
【００４２】
例えば、前記一次側の通信インターフェースのソースコードには、入力側のデータバッファを定義するソースコードが含められる。また、前記二次側の通信インターフェースのソースコードには、出力側のデータバッファを定義するソースコードが含められる。前記入力側のデータバッファは、前記ＲＴミドルウェア１２０によって前記一次側ＲＴコンポーネント２１から転送される前記一次側データが格納されるデータバッファである。また、前記出力側のデータバッファは、前記二次側データを格納すべきデータバッファである。前記二次側のデータバッファに格納された前記二次側データは、前記ＲＴミドルウェア１２０によって前記二次側ＲＴコンポーネント２２へ転送される。
【００４３】
なお、前記一次側の通信インターフェースのソースコードは、前記一次側ＲＴコンポーネント２１の出力ポートの仕様に対応して前記一次側データを入力する処理を、ロボットが備えるプロセッサに実行させるためのプログラムのソースコードの一例である。また、前記二次側の通信インターフェースのソースコードは、前記二次側ＲＴコンポーネント２２の入力ポートの仕様に対応して前記二次側データを出力する処理を、ロボットが備えるプロセッサに実行させるためのプログラムのソースコードの一例である。
【００４４】
以下、図５、図６及び図７を参照しつつ、前記一次側データの出力ポート及び前記二次側データの入力ポートの組合せについて説明する。以下に示す例は、前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２が、ＯＭＧにより標準化された通信ポートを有するＲＴコンポーネントである場合の例である。この場合、前記データ中継用ＲＴコンポーネント２３を介してのデータの受け渡しが成立し得る前記一次側データの出力ポート及び前記二次側データの入力ポートの組合せは、図５〜図７に示される９通りのパターンが考えられる。なお、前記一次側データの出力ポートと、前記一次側ＲＴコンポーネント２１が前記一次側データを送信する通信ポートとは同じ意味である。また、前記二次側データの入力ポートと、前記二次側ＲＴコンポーネント２２が前記二次側データを受信する通信ポートとは同じ意味である。
【００４５】
図５には、前記一次側データの出力ポートが、ＯＭＧの規格において"OutPort"と称される前記第１の通信ポート２０１である場合の３つのパターン＜Ｐ１＞〜＜Ｐ３＞が示されている。図６には、前記一次側データの出力ポートが、ＯＭＧの規格において"Provider"と称される前記第３の通信ポート２０３である場合の３つのパターン＜Ｐ４＞〜＜Ｐ６＞）が示されている。図７には、前記一次側データの出力ポートが、ＯＭＧの規格において"Consumer"と称される前記第４の通信ポート２０４である場合の３つのパターン＜Ｐ７＞〜＜Ｐ９＞が示されている。なお、前記第１の通信ポート２０１は、その性質上、前記二次側データの入力ポートにはなり得ない。同様に、前記第２の通信ポート２０２は、その性質上、前記一次側データの出力ポートにはなり得ない。
【００４６】
また、パターン＜Ｐ１＞、パターン＜Ｐ２＞及びパターン＜Ｐ３＞は、それぞれ前記二次側データが、前記第２の通信ポート２０２、前記第４の通信ポート２０４及び前記第３の通信ポート２０３により受信されるパターンである。また、パターン＜Ｐ４＞、パターン＜Ｐ５＞及びパターン＜Ｐ６＞は、それぞれ前記二次側データが、前記第２の通信ポート２０２、前記第４の通信ポート２０４及び前記第３の通信ポート２０３により受信されるパターンである。同様に、パターン＜Ｐ７＞、パターン＜Ｐ８＞及びパターン＜Ｐ９＞は、それぞれ前記二次側データが、前記第２の通信ポート２０２、前記第４の通信ポート２０４及び前記第３の通信ポート２０３により受信されるパターンである。
【００４７】
前記ＣＰＵ１は、ステップＳ２において、パターン＜Ｐ１＞〜パターン＜Ｐ９＞のいずれかに対応した前記一次側の通信インターフェース及び前記二次側の通信インターフェース各々のソースコードを含む前記フレームワークを生成する。即ち、ポートの組合せが、パターン＜Ｐ１＞〜パターン＜Ｐ３＞のいずれかである場合、前記第２の通信ポート２０２として動作するためのインターフェースが、前記一次側の通信インターフェースとして設定される。また、ポートの組合せが、パターン＜Ｐ４＞〜パターン＜Ｐ６＞のいずれかである場合、前記第４の通信ポート２０４として動作するためのインターフェースが、前記一次側の通信インターフェースとして設定される。また、ポートの組合せが、パターン＜Ｐ７＞〜パターン＜Ｐ９＞のいずれかである場合、前記第３の通信ポート２０３として動作するためのインターフェースが、前記一次側の通信インターフェースとして設定される。
【００４８】
また、通信ポートの組合せが、パターン＜Ｐ１＞、パターン＜Ｐ４＞及びパターン＜Ｐ７＞のうちのいずれかである場合、前記第１の通信ポート２０１として動作するためのインターフェースが、前記二次側の通信インターフェースとして設定される。また、パターン＜Ｐ２＞、パターン＜Ｐ５＞及びパターン＜Ｐ８＞のいずれかである場合、前記第３の通信ポート２０３として動作するためのインターフェースが、前記二次側の通信インターフェースとして設定される。また、パターン＜Ｐ３＞、パターン＜Ｐ６＞及びパターン＜Ｐ９＞のいずれかである場合、前記第４の通信ポート２０４として動作するためのインターフェースが、前記二次側の通信インターフェースとして設定される。
【００４９】
次に、前記ＣＰＵ１は、前記一次側データから前記二次側データへのデータ変換処理を実行する前提条件となるイベントを判別する処理を行う（Ｓ３）。以下、そのイベントのことを起動イベントと称する。前記起動イベントの判別は、前記一次側データの出力ポート及び前記二次側データの入力ポート各々の種類（仕様）と、前記イベント指定情報とに基づいて行われる。前記イベント指定情報は、少なくとも前記一次側ＲＴコンポーネント２１の動作に起因して生じるイベント及び前記二次側ＲＴコンポーネント２１の動作に起因して生じるイベントのいずれかを指定する情報である。
【００５０】
前記起動イベントの判別は、以下の５つの候補のうちから１つを選択することによって行われる。第１の候補は、前記一次側ＲＴコンポーネント２１が前記第１の通信ポート２０１を通じて前記一次側データをデータバッファへ書き込んだ直後に生じるイベントである。以下、このイベントのことを"Write"イベントと称する。第２の候補は、前記一次側ＲＴコンポーネント２１が前記第４の通信ポート２０４を通じて前記一次側データを送信した直後に生じるイベントである。以下、このイベントのことを"Set"イベントと称する。第３の候補は、前記二次側ＲＴコンポーネント２２が前記第２の通信ポート２０２を通じて前記二次側データをデータバッファから読み出す直前に生じるイベントである。以下、このイベントのことを"Read"イベントと称する。第４の候補は、前記二次側ＲＴコンポーネント２２が前記第４の通信ポート２０４を通じて前記二次側データを受信する直前に生じるイベントである。以下、このイベントのことを"Get"イベントと称する。第５の候補は、前記データ中継用ＲＴコンポーネント２３自らが一定周期で発生させるイベントである。以下、このイベントのことを"Execute"イベントと称する。
【００５１】
ここで、"Write"イベント及び"Set"イベントは、前記一次側ＲＴコンポーネント２１の動作に起因して生じる一次側イベントである。また、"Read"イベント及び"Get"イベントは、前記二次側ＲＴコンポーネント２２の動作に起因して生じる二次側イベントである。また、"Execute"イベントは、前記データ中継用ＲＴコンポーネント２３自らが一定周期で発生させる自分のイベントである。図８は、通信ポートの組合せのパターンごとの前記起動イベントの候補が一覧表示された図である。
【００５２】
前記ＣＰＵ１は、ステップＳ３において、通信ポートの組合せのパターンに応じた前記起動イベントの候補の中から、前記イベント指定情報により指定される候補を、前記起動イベントとして選択する。前記イベント指定情報は、通信ポートの組合せのパターンに応じた前記起動イベントの候補が複数存在する場合に、前記一次側イベント、前記二次側イベント及び前記自分のイベントのうちのいずれを前記起動イベントとして選択するかを指定する情報である。なお、前記イベント指定情報により指定される候補が存在しない場合の例外処理は、各種考えられる。前記例外処理としては、例えば、エラーメッセージを出力することによる中断処理、又は、前記自分のイベントを選択する処理等が考えられる。
【００５３】
次に、前記ＣＰＵ１は、ステップＳ３での判別結果である前記起動イベントに対応したイベントドリブン型の関数を前記フレームワークに設定する（Ｓ４）。以下、このイベントドリブン型の関数を関数"Ｆｉ"と称する。このステップＳ４では、具体的な処理を実行するためのソースコードが未だ含まれていない状態の関数"Ｆｉ"が、前記フレームワーク内に定義される。さらに、ステップＳ４では、関数"Ｆｉ"が、前記起動イベントの発生に応じて前記ＲＴミドルウェア１２０によって起動されるための所定の登録処理が行われる。
【００５４】
例えば、前記起動イベントが"Write"イベントである場合、関数"Ｆｉ"として、コールバック関数"OnWrite"が設定される。コールバック関数"OnWrite"は、前記一次側ＲＴコンポーネント２１が前記第１の通信ポート２０１を通じて前記一次側データをデータバッファへ書き込んだ直後に、前記ＲＴミドルウェア１２０によって起動される関数である。また、前記起動イベントが"Read"イベントである場合、関数"Ｆｉ"として、コールバック関数"OnRead"が設定される。コールバック関数"OnRead"は、前記二次側ＲＴコンポーネント２２が前記第２の通信ポート２０２を通じて前記二次側データをデータバッファから読み出す直前に、前記ＲＴミドルウェア１２０によって起動される関数である。また、前記起動イベントが"Execute"イベントである場合、関数"Ｆｉ"として、コールバック関数"OnExecute"が設定される。コールバック関数"OnExecute"は、前記ＲＴミドルウェア１２０によって一定周期で起動される関数である。なお、その周期は、別途設定される。
【００５５】
次に、前記ＣＰＵ１は、関数"Ｆｉ"内に、当該関数"Ｆｉ"が実行する具体的な処理の内容を規定するソースコードを追加する（Ｓ５）。以下、図３に示されるフローチャートを参照しつつ、ステップＳ５における処理の詳細について説明する。
【００５６】
ステップＳ５において、前記ＣＰＵ１は、以下に示す第１の条件が成立しているか否かを判別する（Ｓ１１）。前記第１の条件は、次に示す条件１．１及び条件１．２の２つの条件のうちの１つ以上が成立するという条件である。
【００５７】
まず、条件１．１は、前記起動イベントが前記二次側イベント又は前記自分のイベントであり、かつ、前記データ中継用ＲＴコンポーネント２３の一次側の通信ポートが前記一次側データの受信を制御できるポートであるという条件である。ここで、前記データ中継用ＲＴコンポーネント２３の一次側の通信ポートが前記第４の通信ポート２０４である場合が、前記一次側データの受信を制御できる場合である。その他の通信ポートは、ＲＴコンポーネント自体によるデータの受信タイミングの制御を行うことができない。次に、条件１．２は、前記起動イベントが前記一次側イベントであるという条件である。より具体的には、その一次側イベントは、"Set"イベント又は"Write"イベントである。
【００５８】
そして、前記第１の条件が成立していると判別された場合、前記ＣＰＵ１は、関数"Ｆｉ"内に、前記一次側データを受信するためのソースコードを追加する（Ｓ１２）。より具体的には、ステップＳ１２で追加されるソースコードは、次の３種類のソースコードが考えられる。
【００５９】
１つ目は、前記第４の通信ポート２０４を通じて、前記一次側ＲＴコンポーネント２１にデータを要求するソースコードである。このソースコードは、条件１．１が成立する場合に追加される。例えば、前記ＣＰＵ１は、前記一次側ＲＴコンポーネント２１により提供されるサービス関数"Get"を利用して前記一次側データを要求するソースコードを追加する。ロボット制御の実行環境において、前記ＲＴミドルウェア１２０は、その要求に応じて、前記一次側データを前記一次側ＲＴコンポーネント２１から前記データ中継用ＲＴコンポーネント２３へ転送する。
【００６０】
２つ目は、前記第２の通信ポート２０２を通じて、前記一次側ＲＴコンポーネント２１からデータを取得するソースコードである。このソースコードは、条件１．２が成立する場合に追加されるソースコードのうちの１つである。例えば、前記ＣＰＵ１は、コールバック関数"OnWrite"の引数として前記一次側ＲＴコンポーネント２１から引き渡される前記一次側データを取得するソースコードを追加する。
【００６１】
３つ目は、前記第３の通信ポート２０３を通じて、前記一次側ＲＴコンポーネント２１からデータを取得するソースコードである。このソースコードは、条件１．２が成立する場合に追加されるソースコードのうちの１つである。例えば、前記ＣＰＵ１は、当該データ中継用ＲＴコンポーネント２３が提供するサービス関数"Set"の利用により、前記一次側ＲＴコンポーネント２１から引き渡される前記一次側データを、取得するソースコードを追加する。そのデータは、例えば、サービス関数"Set"の引数として引き渡される。
【００６２】
ところで、前記第１の条件が成立しない状況は、前記起動イベントが前記二次側イベントであって、かつ、前記一次側データを受信するためのソースコード、即ち、前記一次側イベントを自発的に発生させるためのソースコードが、そもそも存在しない状況である。従って、前記データ中継用ＲＴコンポーネント２３の一次側の通信ポートが、前記第４の通信ポート２０４ではない。この場合、前記データ中継用ＲＴコンポーネント２３は、主体的にデータ受信を行うことができない。即ち、データ受信のタイミングは、前記ＲＴミドルウェア１２０によって制御される。
【００６３】
一方、前記第１の条件が成立していないと判別された場合、前記ＣＰＵ１は、関数"Ｆｉ"内に、前記一次側データを入力用の内部データバッファから読み出すためのソースコードを追加する（Ｓ１３）。
【００６４】
また、前記ＣＰＵ１は、関数"Ｆｉ"内に、データ変換処理のソースコードを追加する（Ｓ１４）。このステップＳ１４の処理の手順は、図４に示されるが、その内容は後述する。
【００６５】
また、前記ＣＰＵ１は、ステップＳ５の処理の一部として、以下に示す第２の条件が成立しているか否かを判別する（Ｓ１４）。前記第２の条件は、次に示す条件２．１及び条件２．２の２つの条件のうちの１つ以上が成立するという条件である。
【００６６】
まず、条件２．１は、前記起動イベントが前記一次側イベント又は前記自分のイベントであり、かつ、前記データ中継用ＲＴコンポーネント２３の二次側の通信ポートが前記二次側データの送信を制御できるポートであるという条件である。ここで、前記データ中継用ＲＴコンポーネント２３の二次側の通信ポートが前記第４の通信ポート２０４である場合が、前記二次側データの送信を制御できる場合である。その他の通信ポートは、ＲＴコンポーネント自体によるデータの送信タイミングの制御を行うことができない。次に、条件２．２は、前記起動イベントが前記二次側イベントであるという条件である。より具体的には、その二次側イベントは、"Read"イベント又は"Get"イベントである。
【００６７】
そして、前記第２の条件が成立していると判別された場合、前記ＣＰＵ１は、関数"Ｆｉ"内に、前記二次側データを送信するためのソースコードを追加する（Ｓ１５）。より具体的には、ステップＳ１５で追加されるソースコードは、次の３種類のソースコードが考えられる。
【００６８】
１つ目は、前記第４の通信ポート２０４を通じて、前記二次側ＲＴコンポーネント２２に対するデータ送信を要求するソースコードである。このソースコードは、条件２．１が成立する場合に追加される。例えば、前記ＣＰＵ１は、前記二次側ＲＴコンポーネント２２により提供されるサービス関数"Set"を利用して前記二次側データの送信を要求するソースコードを追加する。ロボット制御の実行環境において、前記ＲＴミドルウェア１２０は、その要求に応じて、前記二次側データを前記データ中継用ＲＴコンポーネント２３から前記二次側ＲＴコンポーネント２２へ転送する。
【００６９】
２つ目は、前記第１の通信ポート２０１を通じて、前記二次側ＲＴコンポーネント２２に対してデータを引き渡すソースコードである。このソースコードは、条件２．２が成立する場合に追加されるソースコードのうちの１つである。例えば、前記ＣＰＵ１は、コールバック関数"OnRead"の引数として、前記二次側ＲＴコンポーネント２２に対して前記二次側データを引き渡すソースコードを追加する。
【００７０】
３つ目は、前記第３の通信ポート２０３を通じて、前記二次側ＲＴコンポーネント２２に対してデータを引き渡すソースコードである。例えば、前記ＣＰＵ１は、当該データ中継用ＲＴコンポーネント２３が提供するサービス関数"Get"を利用して前記二次側ＲＴコンポーネント２２が要求するデータを、その二次側ＲＴコンポーネント２２に引き渡すソースコードを追加する。そのデータは、例えば、サービス関数"Get"の戻り値として引き渡される。
【００７１】
ところで、前記第２の条件が成立しない状況は、前記起動イベントが前記一次側イベントであって、かつ、前記二次側データを送信するためのソースコード、即ち、前記二次側イベントを自発的に発生させるためのソースコードが、そもそも存在しない状況である。従って、前記データ中継用ＲＴコンポーネント２３の二次側の通信ポートが、前記第４の通信ポート２０４ではない。この場合、前記データ中継用ＲＴコンポーネント２３は、主体的にデータ送信を行うことができない。即ち、データ送信のタイミングは、前記ＲＴミドルウェア１２０によって制御される。
【００７２】
一方、前記第２の条件が成立していないと判別された場合、前記ＣＰＵ１は、関数"Ｆｉ"内に、前記二次データを出力用の内部データバッファへ書き込むためのソースコードを追加する（Ｓ１７）。ステップＳ５においては、以上に示したステップＳ１１からステップＳ１７までの処理が行われる。なお、ステップＳ１１からステップＳ１３までの手順と、ステップＳ１４の手順と、ステップＳ１５からステップＳ１７までの手順との実行順序は、入れ替えられてもよい。
【００７３】
以下、図４に示されるフローチャートを参照しつつ、ステップＳ１４の処理の詳細について説明する。ステップＳ１４において、前記ＣＰＵ１は、ステップＳ１において前記数値変換用情報が入力されたか否か、即ち、前記データ中継条件情報に前記数値変換用情報が含まれているか否かを判別する（Ｓ２１）。そして、前記数値変換用情報が入力されたと判別された場合、前記ＣＰＵ１は、前記数値変換用情報に基づく数値変換処理を行うためのソースコードを関数"Ｆｉ"内に追加する（Ｓ２２）。より具体的には、前記一次側データの値に対し、前記乗算係数kを乗算し、前記オフセット値hを加算することにより得られる変換後の値を、所定の変数に代入する式を表すソースコードを追加する。一方、前記数値変換用情報が入力されていないと判別された場合、前記ＣＰＵ１は、ステップＳ２２の処理をスキップする。
【００７４】
また、前記ＣＰＵ１は、前記一次側データのデータ型の変換が必要であるか否か、即ち、前記一次側データのデータ型と前記二次側データのデータ型とが異なっているか否かを判別する（Ｓ２３）。そして、データ型の変換が必要であると判別された場合、前記ＣＰＵ１は、前記変換後の値のデータに対し、そのデータ型を前記二次側データのデータ型へ変換するキャスト処理を行うためのソースコードを関数"Ｆｉ"内に追加する（Ｓ２４）。一方、データ型の変換が不要であると判別された場合、前記ＣＰＵ１は、ステップＳ２４の処理をスキップする。ステップＳ１４においては、以上に示したステップＳ２１からステップＳ２４までの処理が行われる。
【００７５】
なお、ステップＳ２１及びステップＳ２２の手順と、ステップＳ２３及びステップＳ２４の手順との実行順序は、逆であってもよい。また、前記ＣＰＵ１が、前記一次側データのデータ型を、最も分解能の高いデータ型へ変換した後に、ステップＳ２２の処理とステップＳ２４の処理とを行うことも考えられる。これにより、データ変換処理における大きな丸め誤差の発生が、回避される。
【００７６】
また、前記ＣＰＵ１は、以上に示したステップＳ１〜Ｓ５の処理に加え、図１に示されるステップＳ６及びステップＳ７の処理を実行する。即ち、前記ＣＰＵ１は、前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２の一方又は両方との間でデータを送信又は受信するための通信用ソースコードを追加する必要があるか否かを判別する（Ｓ６）。
【００７７】
より具体的には、前記ＣＰＵ１は、以下の第３の条件が成立している場合に、前記フレームワークに、前記一次側データを受信するためのソースコードを追加する必要があると判別する（Ｓ６）。前記第３の条件は、前記起動イベントが前記二次側イベントであり、かつ、前記データ中継用ＲＴコンポーネント２３の一次側の通信ポートが前記一次側データの受信を制御できないポートであるという条件である。この条件が成立する場合、前記データ中継用ＲＴコンポーネント２３の一次側の通信ポートは、前記第２の通信ポート２０２又は前記第３の通信ポート２０３である。
【００７８】
そして、前記第３の条件が成立している場合、前記ＣＰＵ１は、前記フレームワークに、前記一次側データを受信するためのソースコードを追加する（Ｓ７）。例えば、前記ＣＰＵ１は、前記一次側データの受信ポートが前記第２の通信ポート２０２である場合、コールバック関数"OnWrite"を利用して前記一次側ＲＴコンポーネント２１から前記一次側データを取得するソースコードを追加する。或いは、前記ＣＰＵ１は、前記一次側データの受信ポートが前記第３の通信ポート２０２である場合、当該データ中継用ＲＴコンポーネント２３が提供するサービス関数"Set"を利用して前記一次側ＲＴコンポーネント２１が提供するデータを取得するソースコードを追加する。
【００７９】
また、前記ＣＰＵ１は、以下の第４の条件が成立している場合に、前記フレームワークに、前記二次側データを送信するためのソースコードを追加する必要があると判別する（Ｓ６）。前記第４の条件は、前記起動イベントが前記一次側イベントであり、かつ、前記データ中継用ＲＴコンポーネント２３の二次側の通信ポートが前記二次側データの送信を制御できないポートであるという条件である。この条件が成立する場合、前記データ中継用ＲＴコンポーネント２３の二次側の通信ポートは、前記第１の通信ポート２０１又は前記第３の通信ポート２０３である。
【００８０】
そして、前記第４の条件が成立している場合、前記ＣＰＵ１は、前記フレームワークに、前記二次側データを送信するためのソースコードを追加する（Ｓ７）。例えば、前記ＣＰＵ１は、前記二次側データの送信ポートが前記第１の通信ポート２０１である場合、コールバック関数"OnRead"を利用して前記二次側ＲＴコンポーネント２２へ前記二次側データを送信するソースコードを追加する。或いは、前記ＣＰＵ１は、前記二次側データの送信ポートが前記第３の通信ポート２０２である場合、当該データ中継用ＲＴコンポーネント２３が提供するサービス関数"Get"を利用して前記二次側ＲＴコンポーネント２１が要求するデータを、前記二次側ＲＴコンポーネント２１へ引き渡すソースコードを追加する。
【００８１】
一方、前記第３の条件及び前記第４の条件の両方が成立していない場合、前記ＣＰＵ１は、ステップＳ７の処理をスキップする。以上に示したように、前記ＣＰＵ１は、前記データ中継用ＲＴコンポーネント生成プログラム１１を実行することにより、ステップＳ１〜ステップＳ７の処理を実行する。なお、ステップＳ４〜Ｓ７の手順が行われる順序は、図２に示される以外の順序であってもよい。例えば、ステップＳ６及びＳ７の手順が行われた後に、ステップＳ４及びＳ５の手順が行われること、又は、ステップＳ４とステップＳ５との間で、ステップＳ６及びＳ７の手順が行われること等が考えられる。
【００８２】
また、前記データ中継用ＲＴコンポーネント生成プログラム１１は、図２〜図４に示された手順を実行するためのプログラムの他、想定通りに処理が進まない場合に行われるエラー処理を実行するためのプログラムも含んでいる。例えば、前記データ中継用ＲＴコンポーネント生成プログラム１１には、前記一次側データ又は前記二次側データが格納されるデータバッファの参照が開始されてから、そのデータバッファにデータが存在しない状況が一定時間以上継続した場合に、データの参照を中止してエラー通知を行うためのプログラム等が含まれる。
【００８３】
前記ＣＰＵ１が、前記データ中継用ＲＴコンポーネント生成プログラム１１を実行することにより、前記データ中継用ＲＴコンポーネント２３のソースコードが、前記記憶装置４に記録される。そのソースコードは、前記コンパイラ１２によってオブジェクトコードに変換されることにより、ロボットが備えるプロセッサが実行可能な前記データ中継用ＲＴコンポーネント２３になる。また、前記データ中継用ＲＴコンポーネント生成プログラム１１が、前記ＣＰＵ１に対し、前記コンパイラ１２によるソースコードのコンパイル処理まで実行させるプログラムであることも考えられる。
【００８４】
図２、図３及び図４に示されたフローチャートにおいて、ステップＳ１は、前記データ中継条件情報を入力する情報入力手順の一例である。また、ステップＳ２〜Ｓ７は、前記一次側データ（第１データ）の入力処理と、データ変換処理と、前記二次側データ（第２データ）の出力処理とを、ロボットが備えるプロセッサに実行させるための前記データ中継用ＲＴコンポーネント２３のソースコードを自動生成して前記記憶装置４に記憶させるソースコード生成手順の一例である。また、ステップＳ２、ステップＳ１２及びステップＳ７は、前記一次側データの出力ポートの仕様に対応して前記一次側データを入力する第１データ入力処理を、前記プロセッサに実行させるためのソースコードを自動生成して前記記憶装置４に記憶させる手順の一例である。また、ステップＳ２、ステップＳ１５及びステップＳ７は、前記二次側データをその入力ポートの仕様に対応して出力する第２データ出力処理を、前記プロセッサに実行させるためのソースコードを自動生成して前記記憶装置４に記憶させる手順の一例である。
【００８５】
前記データ中継用ＲＴコンポーネント生成処理によれば、前記一次側ＲＴコンポーネント２１と前記二次側ＲＴコンポーネント２２との間のデータの仕様の違いを吸収する前記データ中継用ＲＴコンポーネント２３のソースコードを簡易に作成することができる。その結果、前記ＲＴミドルウェア１２０と既存のＲＴコンポーネント２０（前記一次側ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２）を利用してロボットを作ることが容易となる。
【００８６】
また、前記データ中継用ＲＴコンポーネント生成処理では、前記データ変換処理が実行されるタイミングは、前記イベント指定情報の入力によって調整可能である。これにより、前記データ中継用ＲＴコンポーネント２３の動作内容が、高い自由度で設定可能となる。例えば、前記一次側イベントの発生頻度と前記二次側イベントの発生頻度とが異なる場合に、発生頻度の低い方のイベントを前記起動イベントとして指定することにより、前記データ変換処理の実行回数が必要最小限に抑えられる。その結果、ロボットが供えるプロセッサの演算負荷は小さくて済む。
【００８７】
また、前記一次側データが、行列を構成する複数の行列要素である場合が考えられる。例えば、前記一次側データが、複数の行列要素に相当するデータの集合からなる配列データである場合等である。この場合、前述した実施形態におけるステップＳ１において、変換行列の情報が、前記数値変換用情報の一部として入力されることも考えられる。前記変換行列の情報は、前記一次側データにより特定される行列を、所望の他の行列（前記二次側データ）へ変換するために用いられる行列を特定する情報である。この場合、前記ＣＰＵ１は、ステップＳ２２において、複数の行列要素である前記一次側データに対し、前記変換行列を用いた行列変換処理を行うことによって前記二次側データを導出する。
【００８８】
このような行列変換処理が、数値変換処理（Ｓ２２）として行われることにより、前記一次側データから前記二次側データへのアフィン変換が可能となる。このアフィン変換は、ＲＴコンポーネント２１及び前記二次側ＲＴコンポーネント２２の各々において採用されるデータの座標系が異なる場合に有効である。
【産業上の利用可能性】
【００８９】
ＲＴコンポーネントの生成に利用可能である。
【符号の説明】
【００９０】
１  ＣＰＵ
２  データ入力装置
３  表示装置
４  記憶装置
１０  オペレーティングシステム
１１  データ中継用ＲＴコンポーネント生成プログラム
１２  コンパイラ
１００  計算機
２０１  第１の通信ポート
２０２  第２の通信ポート
２０３  第３の通信ポート
２０４  第４の通信ポート
２０  ＲＴコンポーネント
２１  一次側ＲＴコンポーネント
２２  二次側ＲＴコンポーネント
２３  データ中継用ＲＴコンポーネント
１１０  オペレーティングシステム
１２０  ＲＴミドルウェア
【図１】
2011086182.tif 000003
【図２】
2011086182.tif 000004
【図３】
2011086182.tif 000005
【図４】
2011086182.tif 000006
【図５】
2011086182.tif 000007
【図６】
2011086182.tif 000008
【図７】
2011086182.tif 000009
【図８】
2011086182.tif 000010
【図９】
2011086182.tif 000011
【図１０】
2011086182.tif 000012