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