(57)【特許請求の範囲】
【請求項１】
リアルタイムデバイス制御システムにおいて、
汎用オペレーティングシステム（ＧＰＯＳ）と、
前記ＧＰＯＳ上において動作し、デバイス制御システムを駆動するリアルタイムオペレーティングシステム（ＲＴＯＳ）と、
前記ＲＴＯＳと接続されてハードリアルタイムにて制御される一つ以上のデバイスと、
を備え、
前記デバイス制御システムは、前記ＧＰＯＳとのユーザインタフェースを提供し、前記インタフェースの入力又は時間同期化に従うリアルタイムデバイス制御処理を行い、前記制御処理に従って前記一つ以上のデバイスとの通信を処理するリアルタイムデバイス制御システム。
【請求項２】
前記デバイス制御システムは、前記ＧＰＯＳ上において仮想オペレーティングシステム（ＯＳ）方式により駆動されるリアルタイムカーネルを備える請求項１に記載のリアルタイムデバイス制御システム。
【請求項３】
前記デバイス制御システムは、
前記カーネルとの時間同期化に従って、デバイスからセンサ情報を受信して共有メモリに更新するデバイス制御モジュールを更に備える請求項２に記載のリアルタイムデバイス制御システム。
【請求項４】
前記デバイス制御モジュールは、
前記カーネルとの時間同期化に従って、前記共有メモリからレファレンス情報を取得し、前記レファレンス情報に基づいて生成された制御信号を前記デバイスに転送する請求項３に記載のリアルタイムデバイス制御システム。
【請求項５】
前記デバイス制御システムは、
前記ＧＰＯＳからアクセス可能な一つ以上のエージェントプロセスを含む請求項１に記載のリアルタイムデバイス制御システム。
【請求項６】
前記ＧＰＯＳは、ＯＳＸ、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓのうちのいずれか一つにおいて前記デバイス制御システムと連動する外部プロセスを含む請求項５に記載のリアルタイムデバイス制御システム。
【請求項７】
前記ＧＰＯＳは、前記デバイス制御システムの各エージェントプロセスにアクセスする他のロボットミドルウェアフレームワークを更に備える請求項５に記載のリアルタイムデバイス制御システム。
【請求項８】
リアルタイムロボット制御システムにおいて、
ＧＰＯＳに提供されるインタフェースを介して前記ＧＰＯＳと連動され、互いに独立したプロセスを有する一つ以上のエージェントと、
前記一つ以上のエージェントの動作に従ってロボットデバイスの制御のためのレファレンスデータを更新する共有メモリと、
前記エージェントと同期化され、前記共有メモリから取得されるレファレンスデータに基づいて、前記ロボットデバイスの制御信号を出力するデバイス制御モジュールと、
を備えるＧＰＯＳ連動型リアルタイムロボット制御システム。
【請求項９】
前記デバイス制御モジュールは、前記ＧＰＯＳ上において仮想オペレーティングシステム方式により駆動されるリアルタイムカーネルと同期化される請求項８に記載のＧＰＯＳ連動型リアルタイムロボット制御システム。
【請求項１０】
前記デバイス制御モジュールは、前記カーネルとの時間同期化に従って、前記デバイスからセンサ情報を受信して前記共有メモリに更新する請求項９に記載のＧＰＯＳ連動型リアルタイムロボット制御システム。
【請求項１１】
前記ＧＰＯＳは、ＯＳＸ、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓのうちのいずれか一つにおいて前記エージェントと連動する外部プロセスを含む請求項８に記載のＧＰＯＳ連動型リアルタイムロボット制御システム。
【請求項１２】
前記ＧＰＯＳは、前記デバイスの制御システムの各エージェントプロセスにアクセスする他のロボットミドルウェアフレームワークを更に備える請求項１１に記載のＧＰＯＳ連動型リアルタイムロボット制御システム。
【請求項１３】
前記制御信号を転送するための通信モジュールを更に備え、
前記通信モジュールは、ＥｔｈｅｒＣＡＴ、ＣＡＮ、ＲＳ４８５のうちから選択される少なくとも一つの方式で変換して前記ロボットデバイスに送信する請求項８に記載のＧＰＯＳ連動型リアルタイムロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムデバイス制御システム及びリアルタイムロボットシステムに関する。より具体的に、本発明は、正確なリアルタイム処理が可能であり、開発及びデバッギングが容易である他、ハードウェア的に強靭な階層的なアーキテクチャを有するＧＰＯＳ連動型リアルタイムロボット制御システム及びこれを用いたリアルタイムデバイス制御システムに関する。
【背景技術】
【０００２】
現在、国内外の多くの機関においてロボットへの取り組みが盛んに行われている。ロボットは、大きく、ハードウェアとソフトウェアとに大別でき、これらがまとめられて一つのシステムを構成する。
【０００３】
ロボットハードウェアを構成する要素としては、ロボット関節を動かすための駆動器及び制御器、バッテリ及び電源制御器、通信モジュール、センサ、ロボットの外骨格、電子回路、バッテリなどが挙げられる。これらの色々な種類の要素を各自が希望するロボットの特性の通りに組み合わせてロボットハードウェアプラットフォームを形成する。
【０００４】
各々の要素もまた、設計目的に応じて、大きさ、外形、性能、製造社などが異なり、結果的に、無数の種類のロボットハードウェアプラットフォームを造ることになる。実際にも、全世界的に非常に多岐にわたるロボットが存在している。このため、共通的に目的とするロボットプラットフォームの性能及び機能を調べ、一つの代表的な標準型ロボットプラットフォームを開発しようとする研究が全世界的に行われている。
【０００５】
また、ハードウェア的に上述したように標準型ロボットプラットフォームを開発することを目指した研究があるのと同様に、ソフトウェアもまた共用可能な標準型ロボットソフトウェアに関する研究がある。ロボットハードウェアに属する駆動制御器やセンサなどのロボットデバイスを制御するためのソフトウェア、ロボットモーションを手軽に開発することを補助するためのソフトウェア、タスク間の連関関係を決定してロボットの運営を補助するソフトウェア、ナビゲーションやビジョンソリューションを提供するソフトウェアなど様々な種類のソフトウェアがあり、標準型ソフトウェアの開発もまた標準型ハードウェアの開発と略同じ目的を目指して研究が行われている。
【０００６】
しかしながら、前記標準型ソフトウェアの開発に当たって、多数の開発者が共通して要求する事項を解消するための標準ソリューションを提供することが困難であるのが現状である。
【０００７】
特に、ハードウェア的に変更される事項が増えるにつれ、開発者間の協業を進めることが困難であるだけではなく、多数の人が同時に開発した機能又はプロセスにより処理が重複するという問題が発生する虞がある。これにより、リアルタイム同期化が困難であり、ハードウェアの安定性又は強靭性に劣る他、開発時間もまた長びいてしまうという問題がある。
【０００８】
また、ハードウェアの開発に当たっても前記標準ソフトウェアとの互換性を保つために追加的な機能の変更を加えることを余儀なくされるため、駆動性能が低下することが懸念されるという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上述したような課題を解消するためのものであって、リアルタイム性が求められるロボット制御システムにおいて、同じハードウェアの制御及び処理に対する色々な独立したプロセスが共存可能でありながらも、これに従うロボットの動作が安定的に制御可能であり、その強靭性及び拡張性を提供することのできるＧＰＯＳ連動型で階層的なアーキテクチャを有するリアルタイムデバイス制御システム及びこれを用いたリアルタイムロボット制御システムを提供するところにその目的がある。
【課題を解決するための手段】
【００１０】
上述した課題を解決するための本発明の実施形態によるシステムは、リアルタイムデバイス制御システムであって、汎用オペレーティングシステム（ＧＰＯＳ）と、前記ＧＰＯＳ上において動作し、デバイス制御システムを駆動するリアルタイムオペレーティングシステム（ＲＴＯＳ）と、前記ＲＴＯＳと接続されてハードリアルタイムにて制御される一つ以上のデバイスと、を備え、前記デバイス制御システムは、前記ＧＰＯＳとのユーザインタフェースを提供し、前記インタフェースの入力又は時間同期化に従うリアルタイムデバイス制御処理を行い、前記制御処理に従って前記一つ以上のデバイスとの通信を処理する。
また、上述したような課題を解消するための本発明の実施形態によるシステムは、リアルタイムロボット制御システムであって、ＧＰＯＳに提供されるインタフェースを介して前記ＧＰＯＳと連動され、互いに独立したプロセスを有する一つ以上のエージェントと、前記一つ以上のエージェントの動作に従ってロボットデバイスの制御のためのレファレンスデータを更新する共有メモリと、前記エージェントと同期化され、前記共有メモリから取得されるレファレンスデータに基づいて、前記ロボットデバイスの制御信号を出力するデバイス制御モジュールと、を備える。
【００１１】
一方、上述した課題を解決するための方法及びシステムは、前記方法をコンピュータにて実行させるためのプログラム及び前記プログラムが記録された記録媒体により実現されてもよい。
【発明の効果】
【００１２】
本発明の実施形態によれば、互いに独立したプロセスを有する複数のエージェントと、前記複数のエージェントの動作に従って生成されるレファレンスが記憶される共有メモリと、を提供し、前記レファレンスを用いて前記ハードウェアデバイスを制御する別途のデバイス制御モジュールを提供することにより、リアルタイム性が求められるロボット制御システムにおいて、同じハードウェア制御に対する色々な独立したプロセスが共存可能でありながらも、これに従うロボットの動作が安定的に制御可能である。
【００１３】
これによる本発明の実施形態によれば、たとえ各エージェントを互いに独立して開発したとしても、共有メモリを介してレファレンスの合成及び選別が可能になって、相互間の衝突可能性を減らすことができ、強靭なリアルタイム性を確保することができる。なお、誤りが発生したときにエージェントの取り換え及びリアルタイムデバッギングなどが容易になるので、協業のし易さ及び拡張性をもたらすことができる。
【００１４】
また、本発明の実施形態によれば、各々のデバイス、デバイス制御モジュール、共有メモリ及びエージェント間の階層化されたアーキテクチャを提供して、統制されたシステムを介して安定化され、しかも、体系的なシステムを保持することができるという効果がある。
【００１５】
更に、本発明の実施形態によれば、汎用オペレーティングシステム（ＧＰＯＳ：Ｇｅｎｅｒａｌ Ｐｕｒｐｏｓｅ Ｏｐｅｒａｔｉｏｎ Ｓｙｓｔｅｍ）上においてリアルタイムオペレーティングシステムを実現し、その内部で処理することにより、ユーザの使い勝手を極大化させながらも通信モジュールと融合したロボットデバイスに対する低レベルの制御を可能にし、ハードリアルタイム（ｈａｒｄ ｒｅａｌ−ｔｉｍｅ）を実現することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態による全体のシステムを概略的に示す概念図である。
【図２】本発明の実施形態によるロボット制御システムの制御方法を説明するためのフローチャートである。
【図３】本発明の実施形態による共有メモリ及びシステム間の関係を説明するための図である。
【図４】本発明の実施形態による共有メモリ及びシステム間の関係を説明するための図である。
【図５】本発明の実施形態によるデバイス制御モジュール及びエージェント間のデータのやり取りを説明するための図である。
【図６】本発明の実施形態によるデバイス制御モジュールを説明するためのブロック図である。
【図７】本発明の他の一実施形態によるロボット制御システムの制御動作を説明するためのフローチャートである。
【図８】本発明の実施形態による階層の構造及び動作環境を説明するための図である。
【図９】本発明の実施形態によるロボットシステムの階層的なアーキテクチャの設計を示す図である。
【図１０】本発明の実施形態によるロボット制御システムを汎用オペレーティングシステムにおいて駆動することのできるシステム及び階層構造を説明するための図である。
【図１１】本発明の実施形態によるロボット制御システムを汎用オペレーティングシステムにおいて駆動することのできるシステム及び階層構造を説明するための図である。
【発明を実施するための形態】
【００１７】
以下の内容は単に本発明の原理を例示する。このため、当業者は、たとえ本明細書に明確に説明又は図示されていないとしても、本発明の原理を実現し、本発明の概念及び範囲に含まれている様々な装置を発明することができる筈である。なお、本明細書に列挙された全ての条件付き用語及び実施形態は、原則的に本発明の概念が理解されるようにするための目的でのみ明らかに意図され、このように特別に列挙された実施形態及び状態に制限的ではないものと理解されるべきである。
【００１８】
また、本発明の原理、観点及び実施形態だけではなく、特定の実施形態を列挙する全ての詳細な説明は、このような事項の構造的及び機能的な均等物を含むように意図されるものと理解されるべきである。なお、これらの均等物は、現在公知の均等物だけではなく、将来に開発されるべき均等物、すなわち、構造とは無関係に同じ機能を行うように発明された全ての素子を備えるものと理解されるべきである。
【００１９】
したって、例えば、本明細書のブロック図は、本発明の原理を具体化する例示的な回路の概念的な観点を示すものであると理解されるべきである。これと同様に、全てのフローチャート、状態変換図、擬似コードなどは、コンピュータにて読み取り可能な媒体に実質的に表わすことができ、コンピュータ又はプロセッサが明示されているか否かを問わず、コンピュータ又はプロセッサにより行われる様々なプロセスを表わすものであると理解されるべきである。
【００２０】
プロセッサ又はこれと類似の概念として表示された機能ブロックを含む図面に示されている様々な素子の機能は、専用ハードウェアだけではなく、適切なソフトウェアと関連してソフトウェアを実行する能力を有するハードウェアの使用により提供可能である。プロセッサにより提供されるとき、前記機能は、単一の専用プロセッサ、単一の共有プロセッサ又は複数の個別的なプロセッサにより提供可能であり、これらのうちの一部は共有可能である。
【００２１】
また、プロセッサ、制御又はこれと類似の概念として提示される用語の明確な使用は、ソフトウェアを実行する能力を有するハードウェアを排他的に引用して解釈されてはならず、制限なしにデジタル信号プロセッサ（ＤＳＰ）ハードウェア、ソフトウェアを保存するための読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）及び不揮発性メモリを暗示的に含むものであると理解されるべきである。周知慣用の他のハードウェアも含まれ得る。
【００２２】
本明細書の特許請求の範囲において、詳細な説明の欄に記載された機能を行うための手段として表現された構成要素は、例えば、前記機能を行う回路素子の組み合わせ又はファームウェア／マイクロコードなどをはじめとする全ての形式のソフトウェアを含む機能を行うあらゆる方法を含むものと意図され、前記機能を行うように、前記ソフトウェアを実行するための適切な回路と結合される。このような特許請求の範囲により定義される本発明は、様々に列挙された手段により提供される機能が結合され、請求項が要求する方式と結合されるため、前記機能を提供可能ないかなる手段もまた本明細書から把握されるものと均等なものであると理解されるべきである。
【００２３】
上述した目的、特徴及び長所は、添付図面と結び付けて行う次の詳細な説明によりなお一層明らかになり、これにより、本発明が属する技術分野において通常の知識を有する者が本発明の技術的思想を容易に実施することができる筈である。なお、本発明を説明するに当たって、本発明と関連する公知の技術についての具体的な説明が本発明の要旨を余計に曖昧にする虞があると認められる場合にはその詳細な説明を省略する。
【００２４】
以下、添付図面に基づいて、本発明に係る好適な一実施形態について詳細に説明する。
【００２５】
図１は、本発明の実施形態による全体システムを概略的に示す概念図である。
図１を参照すると、本発明の実施形態による全体システムは、一つ以上のデバイス１００と、デバイス制御モジュール２００と、共有メモリ３００と、一つ以上のエージェント４００及びユーザシステム５００を備える。
【００２６】
デバイス１００は、最終的にロボット制御システムの動作を行う一つ以上の駆動装置を備えていてもよい。駆動装置は、ハードウェア装置又はソフトウェア装置を備えていてもよい。駆動装置は、例えば、関節モータに対する駆動を制御する関節デバイス、センサボードを備えるセンサデバイス又はシミュレータ装置のうちの少なくとも一つを備えていてもよい。
【００２７】
また、デバイス１００は、デバイス制御モジュール２００から受信される制御信号に従って制御され、前記デバイス制御モジュール２００にセンサデータなどの様々なデータを出力してもよい。更に、ここで、デバイス１００という用語は、ハードウェアに限定されるものではなく、実際にハードウェアデバイスを駆動するためのソフトウェアドライバを含む概念として用いられてもよい。したって、各デバイス１００は、デバイス制御モジュール２００と物理的及びソフトウェア的にも接続可能である。
【００２８】
また、各デバイス１００は、デバイス制御モジュール２００との通信ネットワークを形成してもよい。通信ネットワークは、システムの安定性のために、コントローラエリアネットワーク（ＣＡＮ：ＣｏｎｔｒｏｌｌｅｒＡｒｅａＮｅｔｗｏｒｋ）方式のプロトコルを用いたシステムネットワークを形成してもよい。
【００２９】
例えば、各々のデバイス１００は、デバイス制御モジュール２００と一つ以上のＣＡＮ通信チャンネルにより接続されてもよく、前記ＣＡＮ通信チャンネルを介して予め設定された制御周期に従って、ＣＡＮフレームデータにより構成されるメッセージを受信したり、前記デバイス制御モジュール２００にメッセージを出力したりしてもよい。ここで、前記メッセージは、モータ制御レファレンス、エンコーダ値、制御器のステータス値、パルス幅変調（ＰＷＭ：ＰｕｌｓｅＷｉｄｔｈＭｏｄｕｌａｔｉｏｎ）指令、センサ値又はその他の様々な設定又は出力値を含んでいてもよい。
【００３０】
また、デバイス制御モジュール２００は、前記複数のエージェント４００から生成されて前記共有メモリに記憶された各々のレファレンスから、一つ以上のデバイス１００の制御のためのハードウェア制御データを取得し、前記ハードウェア制御データから選択される前記一つ以上のデバイス１００に前記レファレンスに従う制御信号を転送する。
【００３１】
デバイス制御モジュール２００は、ロボット制御システムの制御のためのオペレーティングシステムの上に常住してもよく、バックグラウンドにおいて実行されてもよい。
【００３２】
デバイス制御モジュール２００は、前記共有メモリ３００を参照してデバイス１００を唯一に直接的に通信してもよく、前記通信チャンネルを介して制御信号を転送したりセンサ信号を受信したりしてもよい。
【００３３】
例えば、デバイス制御モジュール２００は、関節デバイス１００の制御のためのレファレンスを前記関節デバイス１００に転送したり、センサデバイス１００から所要のセンサ情報を受信したりしてもよい。
【００３４】
更に、前記デバイス制御モジュール２００は、前記オペレーティングシステムの上に生成されたリアルタイムスレッド（ｔｈｒｅａｄ）を含んでいてもよい。更にまた、前記スレッドは、システムのモーション生成動作周期と同期化されることにより、リアルタイム処理を可能にする。なお、デバイス制御モジュール２００は、データの読み取り及び変換などの処理のためのノンリアルタイムスレッドを更に含んでいてもよい。
【００３５】
これらに加えて、前記複数のエージェント４００は、互いに独立したプロセスを有する独立したソフトウェアモジュールにより実現されてもよい。例えば、エージェント４００は、それぞれ異なるモーションを処理し、これに対応するレファレンスを出力するためのプロセスを行ってもよい。例えば、各エージェント４００は、モーションエージェント、コントローラエージェント、通信エージェント又はワーキング（ｗａｌｋｉｎｇ）エージェント、ダンピング（ｄａｍｐｉｎｇ）エージェント、その他の様々なエージェントを備えていてもよい。
【００３６】
上述したエージェント４００は、機能的にプロセスが分離されているため、ヒープ（ｈｅａｐ）、データ（ｄａｔａ）及びスタティック（ｓｔａｔｉｃ）メモリを共有せず、各々のスレッドを生成して動作してもよく、相互間の共有のための所要データは各々共有メモリ３００に提供してもよく、これに伴う相互間の衝突なしに有機的な処理が可能になり、ソフトウェアの開発及び処理が容易になる。
【００３７】
特に、本発明の実施形態によれば、前記複数のエージェント４００は、互いに独立したプロセスの動作に従って、前記共有メモリ３００からセンサデータを、本発明の実施形態によれば、各々のエージェント４００は各々定義されたプロセスに従って共有メモリ３００のハードウェア抽象化データ及びユーザ定義データを参照し、これに基づいて生成されるレファレンスデータを共有メモリ３００のハードウェア抽象化データに記憶してもよい。
【００３８】
ここで、ユーザ定義データは、エージェント４００間の情報の共有のための共有データ及びユーザ定義可能なその他のシステムの駆動のための様々なデータを含んでいてもよい。
【００３９】
また、ハードウェア抽象化データは、デバイス１００を制御するために抽象化されたレファレンス、センサデータ、モーションオーナ変数及び指令データを含んでいてもよい。なお、デバイス制御モジュール２００は、前記ハードウェア抽象化データ及びハードウェアデータベース２５０に予め保存されたハードウェア情報を用いて、各デバイス１００別の制御信号を生成してもよい。
【００４０】
これにより、デバイス制御モジュール２００は、前記共有メモリ３００から取り出されるハードウェア抽象化データを用いて、制御対象デバイス１００を識別し、制御対象デバイス１００に対する制御信号を生成して、制御対象デバイス１００に前記レファレンスに従う制御信号を出力してもよい。
【００４１】
更に、強靭なリアルタイム性の保証のために、各エージェント４００の処理周期は、システムのモーション情報を処理する動作周期よりも短い必要がある。これにより、前記エージェント４００がセンサデータからレファレンスを生成し、共有メモリ３００を介して前記デバイス制御モジュール２００がレファレンスから制御信号を生成及び出力し、センサデータを更新する時間は、前記システムの第１の動作周期内に含まれてもよい。したがって、前記一連の動作は、前記第１の動作周期内に全て処理可能である。
【００４２】
一方、ユーザシステム５００は、エージェント４００及びデバイス制御モジュール２００の制御及びモニタリングのためのユーザインタフェースを提供してもよい。なお、ユーザシステム５００は、エージェント４００の制御のためのミドルウェアを備えていてもよく、その他の外部システムと接続可能な様々なインタフェースを提供してもよい。
【００４３】
図２は、本発明の実施形態によるロボット制御システムの制御方法を説明するためのフローチャートである。
【００４４】
また、図３及び図４は、本発明の実施形態による共有メモリ及びシステム間の関係を説明するための図である。
【００４５】
更に、図５は、本発明の実施形態によるデバイス制御モジュール及びエージェント間のデータのやり取りを説明するための図である。
【００４６】
以下、前記図２から図５に基づいて、本発明のロボット制御システム及びその制御方法についてより具体的に説明する。
【００４７】
図２を参照すると、本発明の実施形態によるロボット制御システムの制御方法は、まず、互いに独立したプロセスを有する複数のエージェント４００の動作が行われる（Ｓ１０１）。
また、デバイス制御モジュール２００は、共有メモリ３００に記憶されたレファレンスからハードウェア抽象化データを取得する（Ｓ１０３）。
【００４８】
更に、デバイス制御モジュール２００は、ハードウェア抽象化データからハードウェアの制御のための制御信号を生成し（Ｓ１０７）、生成された制御信号を一つ以上のデバイス１００に転送する（Ｓ１０９）。
【００４９】
一方、デバイス制御モジュール２００は、センサに対応するデバイス１００からセンサデータを受信し（Ｓ１１１）、前記受信されたセンサデータを共有メモリ３００に更新する（Ｓ１１３）。
【００５０】
更にまた、前記一連の動作ステップはロボット制御システムのリアルタイム動作周期に対応する第１の周期内に全て処理できるので、リアルタイム性を保証することができる。
【００５１】
このようなプロセスのために、図３に示すように、各々のエージェント４００及びデバイス制御モジュール２００は、共有メモリ３００を用いてデータのやり取り及び転送処理を行ってもよい。
【００５２】
各エージェント４００の動作に従って、共有メモリ３００には、各デバイス１００に対応するレファレンスが記憶されてもよく、デバイス制御モジュール２００は、レファレンスを取得して制御信号を出力するのに用いられてもよい。
【００５３】
このような複数のエージェント４００及びデバイス制御モジュール２００は、共有メモリ３００を中心としてマルチエージェントシステムを構成してもよい。これにより、独立した仕事を行う各々のパートを多数人の開発者が分離して開発することもでき、協業可能なロボット制御システムの開発環境における有利な構造を有することができる。
【００５４】
本発明の実施形態によるエージェント４００を用いれば、開発者は、プロセス同時開発モデルから独立した開発空間を保証されながらも、共有メモリ３００を用いることにより、他のエージェント４００の演算結果物と互いに作用したりデータをやり取りしたりすることが可能になる。
一方、図４に示すように、共有メモリ３００の上には、ハードウェア抽象化データ及びユーザ定義データが含まれていてもよい。
【００５５】
ハードウェア抽象化データは、センサデータ、レファレンスデータ、モーションオーナ（ｍｏｔｉｏｎｏｗｎｅｒ）及び指令データを含んでいてもよく、デバイス制御モジュール２００は、共有メモリ３００の前記ハードウェア抽象化データ領域にしかアクセスすることができない。
【００５６】
これにより、デバイス制御モジュール２００は、共有メモリ３００のハードウェア抽象化データ領域にアクセスしてデバイス１００から受信したセンサデータを更新したり、更新されたレファレンスデータを取得してデバイス１００に対する制御信号を生成したりすることができる。
【００５７】
ここで、ハードウェア抽象化データは、ロボットデバイス制御に関する細部的なデータを抽象化して変換されたデータフォーマットを有してもよく、デバイス制御モジュール２００は、これを実際にハードウェア制御信号に変換して適切なデバイス１００に転送してもよい。
【００５８】
これにより、エージェント４００の開発者やユーザは、ハードウェアについての深い理解なしにも制御を容易に行うことができる。開発者やユーザは、共有メモリ３００を介して抽象化されたハードウェア入力情報をレファレンスに転送し、デバイス制御モジュール２００は、前記ハードウェア抽象化データからデバイス１００の制御のための低レベルの制御信号を生成してもよい。
【００５９】
また、ハードウェアの拡張性と、ハードウェアの変更及び修正がある可能性があるため、デバイス制御モジュール２００は、上述したハードウェアデータベース２５０を用いて前記制御信号を生成するのに必要なハードウェア情報を管理してもよい。ハードウェア情報は、例えば、デバイス１００の一覧、関節モータ情報（減速比、エンコーダパルス、駆動器のチャンネル数など）又は通信規約などを含んでいてもよい。
【００６０】
デバイス制御モジュール２００は、前記ハードウェアデータベース２５０をロードして駆動対象デバイス１００のハードウェア情報を把握することができ、これにより、この駆動対象デバイス１００の制御のための最適な制御信号を生成することができる。なお、たとえハードウェアの変更があったり、新たな構成のハードウェアを使用したりしたとしても、ハードウェアデータベース２５０の修正だけでも適用可能になるので、ハードウェアの変化に強靭であり、且つ、ハードウェアが拡張可能な特性を提供することができる。
更に、ハードウェア抽象化データは、レファレンスデータ、センサデータ、モーションオーナ及び指令データを含んでいてもよい。
【００６１】
ここで、前記レファレンスデータは、各エージェント４００において演算結果に応じて更新されてもよく、デバイス制御モジュール２００が各デバイス１００を制御するための現在のステップにおける目標値を含んでいてもよい。例えば、レファレンスデータは、関節モーションレファレンス及び関節コントローラレファレンスを含んでいてもよい。
【００６２】
また、センサデータは、デバイス制御モジュール２００が各デバイス１００から受信する測定データを含んでいてもよい。ここで、測定データは、例えば、関節デバイスのエンコーダ値、センシングデータを含む現在のステップにおけるステータス情報を含んでいてもよい。
【００６３】
一方、指令データは、デバイス制御モジュール２００及びエージェント４００を上位システムレベルで制御するための指令情報を含んでいてもよく、指令対象プロセス情報及びパラメータ情報を含んでいてもよい。
【００６４】
一方、他の共有メモリ３００のデータは、エージェント４００が読み出す値であるため混同の余地がないが、レファレンスデータの場合には、同じ関節デバイス１００に対してエージェント４００ごとに出力する値が異なる虞がある。これに伴う衝突の余地を無くすために、共有メモリ３００は、モーションオーナ（ｏｗｎｅｒ）情報を含んでいてもよい。
【００６５】
また、図５に示すように、図５は、本発明の実施形態によるデバイス制御モジュール２００及びエージェント４００間のデータのやり取りに当たって、モーションオーナ及びレファレンスデータ間の関係が説明可能である。
【００６６】
図５に示すように、共有メモリ３００のハードウェア抽象化データ領域は、各エージェント４００別にレファレンスデータが更新可能なエージェント４００別のメモリ領域３５０を備えていてもよい。
【００６７】
これにより、各エージェント４００は、自分のメモリ空間領域に自分が計算したレファレンスを更新することができる。
【００６８】
ここで、各エージェント４００は、各デバイス１００に対応するレファレンスデータを演算して更新してもよい。例えば、関節デバイス１００がＪ１からＪ３１まで合計で３１個存在する場合、各エージェント４００別のメモリ空間領域には、前記各々の関節デバイス１００に対応するレファレンスデータ領域が含まれていてもよい。
【００６９】
これとともに、共有メモリ３００は、前記関節デバイス１００の各々に対するモーションオーナ変数を含んでいてもよい。したがって、各モーションオーナ変数空間には、関節デバイス１００の数と同じ数のモーションオーナ変数が含まれていてもよい。
【００７０】
また、各モーションオーナ変数は、予め設定された複数のエージェント４００のうち前記関節デバイス１００に対する権限を有する一つのエージェントを表わしてもよい。これにより、当該関節デバイス１００に対する制御権がどのようなエージェント４００に従属されているかをデバイス制御モジュール２００が判断することができる。
【００７１】
更に、各関節デバイス１００に対する制御権は、モーションオーナ変数の変更に従って、他のエージェント４００又はデバイス制御モジュール２００にも移転されてもよい。
【００７２】
このために、デバイス制御モジュール２００は、優先的にモーションオーナ変数から特定の関節デバイス１００の制御権を有するエージェント４００を識別してもよい。なお、デバイス制御モジュール２００は、識別されたエージェント４００のレファレンスデータを収集し、前記収集されたレファレンスデータを結合して総合的に構成された全体の関節デバイス１００に関する全体のレファレンスデータを生成してもよい。
【００７３】
また、デバイス制御モジュール２００は、全体のレファレンスデータを用いて、各デバイス１００に対する制御信号を生成してもよく、適切に転送してもよい。
【００７４】
デバイス制御モジュール２００は、相当する関節レファレンスの値を読み込み、このようにして総合的に単一のセットにより構成されたロボットの全体の関節のレファレンスを構成し、これをロボットデバイスに転送して駆動する。
【００７５】
このようなデータのやり取り方式を通じて、ロボットの各関節を異なるエージェント４００において衝突なしに制御することができる。例えば、一つのエージェント４００においては、下体の姿勢安定化に関するアルゴリズムを介して下体関節を制御し、もう一つのエージェント４００においては、上体の特定のタスクモーションを生成すれば、両エージェント４００の結果がまとめられてロボットの全身タスクが行われてもよい。これは、ロボットのマルチエージェントシステムの特性に合う効率よい制御を可能にする。
【００７６】
図６は、本発明の実施形態によるデバイス制御モジュールを説明するためのブロック図である。
図６を参照すると、デバイス制御モジュール２００は、モーションセレクタ２１０と、コントローラ信号累積部２２０と、信号結合部２３０及び情報ハンドラ２４０を備える。
【００７７】
本発明の実施形態によれば、関節に関するレファレンスデータは、関節モーションの制御及び細部的なコントロールのための二つ以上のレファレンス信号を含んでいてもよい。これにより、各関節デバイス１００に対応するエージェント４００は、前記二つ以上のレファレンス信号をレファレンスデータとして生成して共有メモリ３００に記憶することができる。
【００７８】
また、図６に示すように、レファレンス信号は、モーションレファレンス及びコントローラレファレンスと名称されてもよい。モーションレファレンスは、各関節に支配的な値を与えるレファレンスデータを含んでいてもよく、コントローラレファレンスは、微視的にモーションレファレンスに加減される細部的なレファレンスデータを含んでいてもよい。但し、本発明の実施形態において、前記レファレンスがその名称に限定されることはない。
【００７９】
これにより、デバイス制御モジュール２００には、共有メモリ３００からモーションレファレンス出力データＭ１〜Ｍｍ及びコントローラレファレンスＭ１〜Ｍｍが入力可能である。
更に、モーションレファレンスは、一つの関節デバイス１００別に一つが選択されてもよいが、コントローラレファレンスは全て累積されて加減されてもよい。
【００８０】
このために、モーションセレクタ２１０は、前記モーションオーナ変数情報に基づいて、前記モーションレファレンスデータから各関節デバイス１００に対応するモーションレファレンスデータを選択し、これを信号結合部２３０に出力してもよい。したがって、一つの関節デバイス１００には、一つのモーションレファレンスデータが選択可能である。
【００８１】
更にまた、コントローラ信号累積部２２０においては、前記モーションオーナ変数とは無関係に、各コントローラレファレンスデータを累積して結果値を信号結合部２３０に出力してもよい。
【００８２】
加えて、信号結合部２３０においては、前記モーションレファレンスデータ及び前記コントローラレファレンスデータ累積結果値を合成して最終的な関節デバイス１００別のレファレンスデータを生成してもよく、適切なターゲット関節デバイス１００に出力してもよい。
【００８３】
ここで、信号結合部２３０は、レファレンスのタイプを識別し、レファレンスのタイプに従う処理空間を仕切ってもよい。このために、信号結合部２３０は、タイプ識別部及び空間処理部を備えていてもよい。
【００８４】
例えば、レファレンスデータは、関節動作だけではなく、タスク処理などの他のタイプを有してもよく、これにより、タイプ識別部は、前記タスクタイプであるか、又は関節タイプであるかを識別することができ、空間処理部は、前記タイプに従って異なるデータ空間の処理を提供することができる。
【００８５】
このように、モーションレファレンス及びコントローラレファレンスを分離することにより、ロボットモーションを生成する過程において機能的な分離が可能になる。例えば、二足歩行のモーションを生成することを想定したとき、一つのエージェント４００において基本的な歩行パターンを生成してモーションレファレンスを生成し、もう一つのエージェント４００においてダンピングコントローラを設計し、更にもう一つのエージェント４００において振動を制御するコントローラを設計してコントローラレファレンスに出力することにより、非常に手軽に設計及び開発を行うことが可能になる。
【００８６】
一方、情報ハンドラ２４０は、センサデバイス１００又はその他の測定対象デバイスから収集されるセンサデータをまとめて、共有メモリ３００に出力する機能を行ってもよい。
【００８７】
図７は、本発明の他の一実施形態によるロボット制御システムの制御動作を説明するためのフローチャートである。
【００８８】
一般に、ロボットを用いた実際の実験において問題が発生すれば、一般に、ロボットを最初から再起動しなければならない。モバイルプラットフォームの場合には、ロボットの初期化過程が簡単であるとはいえ、ヒューマノイドのように多関節システムの場合や、地面において初期化を行い難く、クレーンなどを用いて空中において初期化を行わなければならない場合には、全体的な初期化過程が非常に煩雑であり、しかも、長時間がかかってしまう。
【００８９】
したがって、図７に示すように、本発明の実施形態によるデバイス制御モジュール２００は、このようなロボットを初期化する過程なしにデバッギングを行い、再びロボットをテストすることができる。
【００９０】
このために、まず、システムの初期化が行われ（Ｓ２０１）、それぞれ互いに独立したプロセスを有する複数のエージェント４００が動作する（Ｓ２０２）。
【００９１】
次いで、誤りが発生した特定のエージェントが存在する場合（Ｓ２０３）、前記誤りが発生したエージェントの動作は中断され、デバイス制御モジュール２００又は他のエージェント４００が前記モーションオーナ変数を他のエージェントに変更する（Ｓ２０５）。
【００９２】
これにより、ユーザがエージェント４００を介してモーションアルゴリズムをテストする間に問題が発生すれば、単に他のエージェント４００又はデバイス制御モジュール２００にモーションオーナを渡し、中断されたエージェント４００に対するコードを修正することができる。
【００９３】
また、作成したコードをコンパイルしてデバッギングが終わった場合（Ｓ２０７）、再びモーションオーナ変数を元のエージェント４００にスイッチすることができる（Ｓ２０９）。
【００９４】
このように、開発者は、モーションオーナを読み出した後に実験を行い続けることができる。これは、結果的に開発を促し、ユーザにとって、これを更に上手く活用して他の特殊の粒ＡＬにおいてロボットの関節レファレンスを持続的に観察して衝突が起こることを感知して、衝突が発生する場合にモーションオーナを切り換えてロボットを安全に実験可能にするという効果を有する。
【００９５】
図８は、本発明の実施形態によるロボットシステムの動作環境を説明するための図である。
【００９６】
本発明の実施形態によれば、汎用的にロボットソフトウェアが使われるためには、単一のロボットプラットフォームのみを動作させるソフトウェアではなく、多種多様な形態のロボットを動作させることが求められるため、拡張可能でありながらも、ロボットハードウェアの変化に適用し易い他、実際的なロボットプラットフォームだけではなく、ロボットシミュレータも同じソフトウェアにより制御される必要がある。
【００９７】
これにより、本発明の実施形態によるロボット制御システム（１０００）は、アメリカのＲＯＳ（Ｒｏｂｏｔ Ｏｐｅｒａｔｉｏｎ Ｓｙｓｔｅｍ）や、韓国のＯＰＲｏＳ（Ｏｐｅｎ Ｐｌａｔｆｏｒｍ ｆｏｒ Ｒｏｂｏｔｉｃｓ Ｓｅｒｖｉｃｅｓ）などの他の有用なロボットミドルウェアの機能が利用可能な汎用システムを構築することができる。これにより、クラウッドロボット体系上のソフトウェアが提供する色々なビジョンソリューションやロボットのタスクを管理する機能を本発明のシステムに手軽に適用可能な環境を提供することができる。
【００９８】
このために、ロボット制御システム１０００の各エージェント４００がモーションを生成すれば、これにより、各ロボットデバイス１００を制御するデバイス制御モジュール２００が動作して全体システムのリアルタイム制御を提供することができる。なお、上位の他のロボットソフトウェアにおいてモーション間の接続若しくは判断基準などを提示したり、複数のロボットを同時に運用したりすることもできる。
【００９９】
これは、図９に基づいて説明されるロボット制御システム１０００の階層的なアーキテクチャによりなお一層具体的に説明され得る。
【０１００】
図９は、本発明の実施形態によるロボットシステムの階層的なアーキテクチャの設計を示す図である。
【０１０１】
上述したように、他の通常の外部プロセスにおいて、本発明の実施形態による複数のエージェントにアクセスしたり、任意のエージェントを生成したりして、独立して動作させ得る環境を提供するために、ロボット制御システム１０００は、各データ処理モジュールが階層（ｌａｙｅｒ）化された構造を備えていてもよい。
【０１０２】
また、各階層化された構造は、前記ロボット制御システム１０００と接続されたり、前記ロボット制御システム１０００を搭載（又は、設置）したりしたリアルタイムオペレーティングシステム（ＲＴＯＳ）上においてソフトウェア又はハードウェア的に実現されてもよい。なお、各階層間の動作周期の同期化のために、リアルタイムオペレーティングシステムは、グローバルなタイマ割り込みＴｉｍｅｒ Ｉｎｔｅｒｕｐｔを第４の階層及び第２の階層に提供してもよい。
【０１０３】
例えば、第４の階層の各エージェントは、前記リアルタイムオペレーティングシステムのプロセスにより実現されてもよく、プロセスに含まれているスレッド動作に従って共有メモリにアクセスし、センサデータを取得し、レファレンスデータを保存してもよい。このため、同期化された第２の階層のデバイス制御モジュールは、前記リアルタイムオペレーティングシステム上におけるスレッド動作に従って、デバイスのセンサデータを共有メモリに保存し、共有メモリのレファレンスデータ及びモーションオーナに従うデバイス制御信号を生成して各デバイスに出力してもよい。
【０１０４】
このように、リアルタイムオペレーティングシステム上において実現可能な本発明の実施形態によるロボット制御システム１０００は、ロボットプラットフォーム又はシミュレータに取り込まれている一つ以上の制御対象デバイスｊｏｉｎｔ又はＳｅｎｓｏｒを備える第１の階層と、前記第１の階層の上位段において前記デバイスを直接的に制御するデバイス制御モジュールを備える第２の階層と、前記第２の階層の上位段において前記デバイス制御モジュールと接続される共有メモリを備える第３の階層と、前記第３の階層の上位段において前記共有メモリを用いた独立したプロセスを行う一つ以上のエージェントを備える第４の階層と、前記第４の階層の上位段においてユーザ指令に従って前記一つ以上のエージェントを制御する第５の階層と、を備える階層的なアーキテクチャにより構成されてもよい。
【０１０５】
ここで、前記第１乃至第５の階層は、隣り合う階層間にのみ通信可能なように、各々の通信プロトコルが予め設定されている。各階層は、上位又は下位の階層を介してのみその次の階層にアクセスすることができ、このようにして統制されたシステムを介して安定化され、体系的なシステムを保持することができる。
【０１０６】
まず、第１の階層には、各デバイスが備えられ得る。デバイスは、実質的な制御の対象である低レベルのロボットデバイスを備えていてもよく、例えば、駆動器の制御器、センサボード又はロボットシミュレータのデバイスが備えられ得る。
【０１０７】
また、第２の階層には、デバイス制御モジュール２００がロボットを制御するためにバックグラウンドに常駐して実行され得る。第２の階層は、ロボットシステムのデバイスが直接的に制御可能な唯一な階層であってもよい。
【０１０８】
例えば、第２の階層のデバイス制御モジュールは、共有メモリから生成された関節のレファレンスをロボットデバイスに転送し、逆に、センサの値をデバイスから取得してもよい。第２の階層は、リアルタイムオペレーティングシステム（ＲＴＯＳ）から生成されるリアルタイムスレッドにより動作してもよく、第２の階層のスレッドは、モーションの生成の制御周期と同期化された周期を有してもよい。もし、デバイスがシミュレータと連動されている場合、第２の階層のスレッドは、シミュレータの時間と同期化されて動作してもよい。第２の階層は、指令を読み込んで解釈可能なノンリアルタイムスレッドをも有してもよく、ノンリアルタイムスレッドは、リアルタイムスレッドから残る時間に他の指令を受け取って処理してもよい。
【０１０９】
これにより、デバイス制御モジュールは、前記システムのバックグラウンドに常駐し、前記共有メモリから取得されるレファレンスから前記デバイスを制御するための制御信号を前記第１の階層に転送する階層的なアーキテクチャを有することができる。
【０１１０】
一方、第３の階層は、共有メモリ階層であって、ハードウェアの抽象化データ部及びユーザ定義データ部を備えていてもよい。図９に示すように、ハードウェア抽象化データ部には、上述したハードウェア抽象化データが備えられてもよく、ハードウェア抽象化データの種類としては、センサデータ、レファレンスデータ、モーションオーナ（ｍｏｔｉｏｎ ｏｗｎｅｒ）及び指令情報が挙げられる。第２の階層のデバイス制御モジュールは、単に第３の階層の共有メモリにのみ接続可能である。
【０１１１】
一方、ユーザ定義データ部は、第４の階層に存在する複数のエージェントプロセスの間で共有されるエージェント共有データと、ユーザ定義に従うロボット駆動データと、を一時的に又は永久的に保存してもよい。
【０１１２】
また、第４の階層は、外部プロセスのユーザが自分のみのロボットモーションなどを生成するための各エージェントプロセスを駆動する階層であって、エージェントプロセスはまるで葡萄の粒のように階層内において互いに独立して実行されるため、特に粒ＡＬとも呼ばれる。各エージェントは互いに独立して第３の階層の共有メモリからセンサデータを読み込んでモーションを生成し、生成されたモーションの関節レファレンスを共有メモリに更新してもよい。
更に、第４の階層のエージェントプロセスはまた、モーションオーナにどのような粒が当該関節のレファレンスに対する所有権を有しているかを設定してもよい。
【０１１３】
更にまた、各エージェントは、リアルタイムオペレーティングシステム（ＲＴＯＳ）から非常に短い周期の速いリアルタイムスレッドを生成してもよく、速いスレッドは、各エージェントのモーション生成スレッドを上述した第４の階層のデバイス制御モジュールのリアルタイムスレッドと同期化させるのに用いられてもよい。例えば、モーションを生成するスレッドは、前記速いスレッドによりデバイス制御モジュールとリアルタイムにて同期化されてもよく、同期化と同時に演算が再開（Ｒｅｓｕｍｅ）され、一回のレファレンス演算ループを巡回してから猶予（Ｓｕｓｐｅｎｄ）されてもよい。この動作が繰り返し行われ続けることにより、ロボット制御システム１０００の制御が行われてもよい。
【０１１４】
ここで、全てのエージェントがロボットのモーションを直接的に生成するわけではなく、衝突を感知してモーションオーナを他のエージェントから読み出して、ロボットを安全にするエージェントがあってもよく、他のエージェントを補助する付随的な処理を施してもよく、通信モジュールｃｏｍｍ．ｍｏｄｕｌｅにより実現されて第５の階層と情報をやり取りながら他のエージェントを制御する役割を果たすエージェント（図９におけるエージェントＮ）も存在してもよい。
【０１１５】
一方、第５の階層は、前記エージェントに対応する制御及びロボット制御システム１０００に対するモニタリングの機能を提供するユーザインタフェースモジュールを備えていてもよい。
【０１１６】
これに伴い、第５の階層は、ロボットの制御のし易さを提供するための様々なプロセスを備えていてもよい。例えば、第５の階層には、指令を与え易いか、又はモニタリングするためのグラフィックユーザインタフェース（ＧＵＩ：Ｇｒａｐｈｉｃ Ｕｓｅｒ Ｉｎｔｅｒｆａｃｅ）若しくはデータを保存するロギングプログラムが備えられてもよい。
【０１１７】
また、前記第５の階層は、外部のプロセスがアクセス可能な領域であって、既存のＲＯＳ及びＯＰＲｏＳなどのロボットミドルウェアがエージェントを制御するための一つ以上のインタフェース機能を提供してもよい。
【０１１８】
更に、上位の他のロボット制御システムが存在して、第５の階層を介して下位のロボット制御システム１０００を制御してもよい。したがって、前記第５の階層を介してロボット制御システム１０００は無限に拡張可能な構造を有することができ、これを通じて、ハイパマルチエージェント（ｈｙｐｅｒ ｍｕｌｔｉ−ａｇｅｎｔ）システムが制御可能な構造的な可能性を提供することができる。
【０１１９】
一方、図９及び図１０は、本発明の実施形態によるロボット制御システムを汎用オペレーティングシステムにおいて駆動することのできるシステム及び階層構造を説明するための図である。
【０１２０】
リアルタイム制御をするためのオペレーティングシステムは、時代的にも次から次へと開発されてきた。まず、ユーザが自らファームウェアを作成してロボットシステムを制御する方法が存在した。この方法は、繰り返し的な仕事を行う産業用ロボットに最も広く用いられる。まず、システムの構成が簡単であるというメリットがあり、ハードウェア割り込みを活用した最も確実な方法のハードリアルタイム（ｈａｒｄ ｒｅａｌ−ｔｉｍｅ）を実現することができる。しかしながら、ファームウェアは開発し難いため、開発者が限定的であり、しかも、メンテナンスを行い難い。なお、マイクロコントローラのみを使用するため演算速度に制限を受け、機能的に単純な仕事しか行うことができない。
【０１２１】
次いで、Ｗｉｎｄｏｗｓ若しくはＬｉｎｕｘ（登録商標）などの汎用オペレーティングシステム（Ｇｅｎｅｒａｌ Ｐｕｒｐｏｓｅ ＯＳ）及びファームウェアに基づくシステムを並行してインストールして使用する方法が提案されている。この場合、実際的なリアルタイムはファームウェアに基づくシステムにおいて司り、オペレーティングシステムに搭載されたソフトウェアにおいて指令を転送する役割を果たす。多くのサービスロボットがこのような構造のシステムを用いてロボットを駆動しており、この方法を利用すれば、オペレーティングシステムが提供する様々な機能を活用することができ、ユーザが主として多用していたインタフェースにおいて作用をするため使い勝手が高いというメリットがある。これに対し、依然としてリアルタイムが求められる部分はファームウェアにおいて作成するため、ファームウェアに基づくシステムが有する欠点が依然として存在する。
【０１２２】
一方、このようなファームウェアの開発の欠点を克服するために、通常のオペレーティングシステムから脱皮して、リアルタイムに対応可能な別途のオペレーティングシステムが開発されて用いられる場合もある。この場合、二重カーネルのリアルタイムオペレーティングシステムなどが例示されている。別途のリアルタイムオペレーティングシステム中に存在するリアルタイム通信モジュールを介してロボットシステムを制御し、通常のオペレーティングシステムにおいてはユーザが自分のアルゴリズムを作成してリアルタイムオペレーティングシステムに転送してもよい。この方法は、色々なロボットミドルウェアにおいて採用している。この場合、ファームウェアの開発をしていた内容をリアルタイムオペレーティングシステムにおいて支援するためユーザの開発難易度が下がり、リアルタイム演算能力が高くなる。しかしながら、このような二重カーネルの場合、その動作遅延によりモーションレベルにおける精度のよいハードリアルタイム（ｈａｒｄ ｒｅａｌ−ｔｉｍｅ）を実現し難く、システムを構成し難いという欠点が存在する。
【０１２３】
すなわち、既存のオペレーティングシステムに基づくリアルタイム制御は、ハードリアルタイムシステム（ｈａｒｄ ｒｅａｌ−ｔｉｍｅ ｓｙｓｔｅｍ）でのように作業の実行の開始や完了に対する時間制約条件が遵守できない場合にシステムに致命的な影響を与える場合、すなわち、保証されるコンピューティングと時間の正確性及びコンピューティングに対する予測性を持たせる必要があるシステムにおいては、システムの構成及び適用が困難であるという問題がある。
【０１２４】
したがって、本発明の実施形態によるロボット制御システム１０００は、上述した欠点を解消するために、汎用オペレーティングシステム（ＧＰＯＳ：Ｇｅｎｅｒａｌ Ｐｕｒｐｏｓｅ ＯＳ）上において実現されながらも、ロボットデバイス１００にはハードリアルタイム（ｈａｒｄ ｒｅａｌ ｔｉｍｅ）制御を提供するリアルタイムオペレーティングシステム（ＲＴＯＳ）の制御システムフレームワークを提供することができる。
【０１２５】
特に、図９に示すように、本発明の実施形態によるロボット制御システム１０００を備える前記ＲＴＯＳは、ＧＰＯＳと連動する仮想オペレーティングシステム方式により実現されてもよい。
【０１２６】
図９を参照すると、本発明の実施形態によるロボット（又は、デバイス）制御システム１０００は、汎用オペレーティングシステム（ＧＰＯＳ：Ｇｅｎｅｒａｌ Ｐｕｒｐｏｓｅ Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）と、前記ＧＰＯＳ上において動作し、デバイス制御システムを駆動するリアルタイムオペレーティングシステム（ＲＴＯＳ：Ｒｅａｌ Ｔｉｍｅ Ｏｐｅｒａｔｉｏｎ Ｓｙｓｔｅｍ）及び前記ＲＴＯＳと接続されてハードリアルタイム（ｈａｒｄ ｒｅａｌ−ｔｉｍｅ）にて制御される一つ以上のデバイス１００を備え、前記ロボット制御システム１０００は、前記ＧＰＯＳとのユーザインタフェースを提供し、前記インタフェース入力又は時間同期化に従うリアルタイムデバイス制御処理を行い、前記制御処理に従って前記一つ以上のデバイスとの通信を処理してもよい。
【０１２７】
また、本発明の実施形態によるロボット制御システム１０００もまた、前記仮想オペレーティングシステム上において実現されてもよく、全ての重要な動作をリアルタイムオペレーティングシステム（ＲＴＯＳ）の内部のコア領域１２００において行ってもよい。
【０１２８】
ロボット制御システム１０００は、上述した第２乃至第４の階層間の動作に従ってロボットデバイス１００を制御する核心プロセスをＧＰＯＳ上において起動されたリアルタイムオペレーティングシステム（ＲＴＯＳ）のリアルタイム通信部１３００と連動させてコア領域１２００において処理してもよい。
【０１２９】
更に、ユーザ領域１１００は、上述した第４の階層の制御のための第５の階層のユーザインタフェースを処理してもよい。特に、前記ユーザインタフェースを介してその他のロボットフレームワークも手軽にユーザ領域１１００にアクセスしてもよい。
【０１３０】
これにより、ユーザが作成するモーションの生成に対する部分などもリアルタイムオペレーティングシステム内に存在可能であり、その結果、ユーザは、リアルタイムにて制御されるロボットのモーションを手軽に生成することが可能になり、低レベルのロボットデバイスがどのような方式により制御されるかが分からなくても、これに取って代わる核心プロセスが提供するハードウェア抽象化のインタフェースを介して簡単にロボットを駆動することが可能になる。
【０１３１】
また、上述したＲＯＳ若しくはＯＰＲｏＳなどの他のロボットフレームワークミドルウェアが通常のオペレーティングシステムにおいて駆動されながらも、ロボット制御システム１０００のユーザ領域１１００と連動可能であるので、この構造を介してユーザがモーションレベルのハードリアルタイムを手軽に実現することができる。なお、リアルタイム演算能力が高くなる。
【０１３２】
更に、本発明の実施形態において、ＧＰＯＳとしては、ＯＳＸ、Ｌｉｎｕｘ又はＷｉｎｄｏｗｓなどが挙げられるが、オペレーティングシステム（ＯＳ）環境の変化に従って他のＧＰＯＳが本発明の実施形態に適用可能であるということはいうまでもない。
【０１３３】
図１０は、上述した汎用オペレーティングシステム（ＧＰＯＳ：Ｇｅｎｅｒａｌ Ｐｕｒｐｏｓｅ  ＯＳ）上においてハードリアルタイムオペレーティングシステム（ＯＳ）を提供するロボット制御システム１０００フレームワークの階層構造を示す。
【０１３４】
図１０を参照すると、ロボット制御システム１０００は、前記ＧＰＯＳ上において仮想オペレーティングシステム方式により駆動されるリアルタイムカーネル（Ｋｅｒｎｅｌ）を備えていてもよい。ＧＰＯＳは、仮想オペレーティングシステム方式により駆動されたロボット制御システム１０００のエージェント４００階層にアクセスしてもよく、前記ロボット制御システム１０００は、エージェント４００と、共有メモリ３００と、前記リアルタイムカーネル（Ｋｅｒｎｅｌ）２１０と、デバイス制御モジュール２００及び通信モジュール２２０を備えていてもよい。
【０１３５】
例えば、前記ＧＰＯＳは、ＯＳＸ、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓのうちのいずれか一つにおいてエージェント４００と連動する外部プロセスを含んでいてもよい。
【０１３６】
これにより、ＧＰＯＳは、一つ以上のエージェント４００にアクセスすることができる。各エージェント４００は、上述した第４の階層に備えられてもよく、ロボット制御システム１０００は、第５の階層のユーザインタフェースを提供して、エージェント４００に対するＧＰＯＳのアクセスを許可してもよい。
【０１３７】
また、各エージェント４００の動作に従って共有メモリ３００に対するデータの入出力が行われれば、デバイス制御モジュール２００は、ＲＴＯＳにおいて動作するリアルタイムカーネル２１０の時間同期化に従って通信モジュール２２０を介してロボットデバイス１００からセンサデータを収集し、前記共有メモリ３００に更新し、ロボットデバイス１００に制御信号を出力してもよい。
【０１３８】
更に、前記デバイス制御モジュール２２０は、ＧＰＯＳ上のロボットフレームワークと直接的に接続されてもよい。本発明の実施形態によれば、図１に基づいて上述したロボットフレームワークに関するハードウェア情報を保存するハードウェアデータベース２５０は、ＧＰＯＳ上のメモリ領域に位置してもよい。この場合、デバイス制御モジュール２２０は、ＧＰＯＳ上のメモリ領域にアクセスして、所要のハードウェアデータを取得してもよい。
【０１３９】
これにより、ＧＰＯＳ上におけるロボットフレームワークに関するハードウェア情報を有しているデータベースに基づくファイルデータの入力だけでも、ハードウェアの拡張性と、ハードウェアの変更及び修正を提供することができる。ハードウェア情報としては、ロボットデバイスの一覧、関節の情報（減速比、エンコーダパルス、駆動器のチャンネル数など）、通信規約などが挙げられる。結果的に、本発明の実施形態によるロボット制御システム１０００がロボットハードウェアの変化に強靭であり、ハードウェアが拡張可能であるという特性を提供することが可能になる。
【０１４０】
また、前記ＧＰＯＳは、前記デバイス制御システムの各エージェントプロセスにアクセスする他のロボットミドルウェアフレームワークを更に備えていてもよい。ここで、ミドルウェアフレームワークとしては、上述したＲＯＳ、ＯＰＲｏｓなどが挙げられる。
【０１４１】
一方、通信モジュール２２０は、各ロボットデバイス１００と接続されてロボット制御システム１０００とのデータの送受信を処理してもよい。通信モジュール２２０は、デバイスの特性に応じて、ＥｔｈｅｒＣＡＴ、ＣＡＮ、ＲＳ４８５その他の様々な通信方式に対応可能である。
【０１４２】
一方、上述した本発明に係る方法は、コンピュータにて実行されるためのプログラムにより製作されてコンピュータにて読み取り可能な記録媒体に保存されてもよく、コンピュータにて読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、光データ保存装置などが挙げられ、なお、キャリアウェーブ（例えば、インターネットを用いた送信）の形態で実現されるものも含む。
【０１４３】
コンピュータにて読み取り可能な記録媒体は、ネットワークにより接続されたコンピュータシステムに分散されて、分散方式によりコンピュータにて読み取り可能なコードが保存され且つ実行され得る。なお、前記方法を実現するための機能的な（ｆｕｎｃｔｉｏｎ）プログラム、コード及びコードセグメントは、本発明が属する技術分野におけるプログラマにより容易に推論可能である。
【０１４４】
また、以上では、本発明の好適な実施形態について図示し且つ説明したが、本発明は、上述した特定の実施形態に何等限定されるものではなく、特許請求の範囲において請求する本発明の要旨を逸脱することなく、当該発明が属する技術分野において通常の知識を有する者により種々に変形して実施可能であるということはいうまでもなく、これらの変形実施は、本発明の技術的思想や展望から個別的に理解されてはならない筈である。
【図１】
0006771027.tif 000002
【図２】
0006771027.tif 000003
【図３】
0006771027.tif 000004
【図４】
0006771027.tif 000005
【図５】
0006771027.tif 000006
【図６】
0006771027.tif 000007
【図７】
0006771027.tif 000008
【図８】
0006771027.tif 000009
【図９】
0006771027.tif 000010
【図１０】
0006771027.tif 000011
【図１１】
0006771027.tif 000012