JP5140652B2 - ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法 - Google Patents

ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法 Download PDF

Info

Publication number
JP5140652B2
JP5140652B2 JP2009250249A JP2009250249A JP5140652B2 JP 5140652 B2 JP5140652 B2 JP 5140652B2 JP 2009250249 A JP2009250249 A JP 2009250249A JP 2009250249 A JP2009250249 A JP 2009250249A JP 5140652 B2 JP5140652 B2 JP 5140652B2
Authority
JP
Japan
Prior art keywords
thread
execution
component
processing
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009250249A
Other languages
English (en)
Other versions
JP2010108504A (ja
Inventor
チョル ス ジャン
スン−ウン ジョン
ビョン ヨル ソン
ソン フン キム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Electronics and Telecommunications Research Institute ETRI
Original Assignee
Electronics and Telecommunications Research Institute ETRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electronics and Telecommunications Research Institute ETRI filed Critical Electronics and Telecommunications Research Institute ETRI
Publication of JP2010108504A publication Critical patent/JP2010108504A/ja
Application granted granted Critical
Publication of JP5140652B2 publication Critical patent/JP5140652B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)
  • Stored Programmes (AREA)

Description

本発明はロボット用ソフトウェアコンポーネントのスレッド処理に関し、更に詳しくは、ロボット用ソフトウェアコンポーネントを駆動させるコンポーネント実行エンジンを通じたロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法に関する。
周知のように、ロボットの役割が産業用ロボットから家庭用知能型ロボットに変わることにより、ロボットシステムが複雑になっている。特定の作業のみを行うのに十分な程度のハードウェア、ソフトウェア構造を有する産業用ロボットとは異なり、家庭用知能型ロボットは多様な作業を行うためのセンサ、モータアクチュエータなどを含んでいるのはもちろん、これらを制御し、外部との通信を行う例えば、マイクロ・プロセッサ、コントローラ、DSP(Digital Signal Processor)、SoC(System on Chip)などのネットワークで連結された分散構造を有する複数のプロセシングユニットを含む。
ロボットソフトウェアモジュールは、このようなプロセシングユニット上で行われ、互いに緊密に通信を行ってデータとコントロールをやりとりする。複雑に絡み合っている分散構造を有するロボットを効率的に制御するためには、ロボット内部の制限されたリソースを効率的に利用しながら、複数のノードで同時に起こる多様なことを統合的、且つ、調和がとれるように処理できる効率的な制御ソフトウェア構造が必要である。
ロボット用ソフトウェアコンポーネントは、再使用及び交換が可能であり、コンポーネントが提供するインターフェースを介して接近するソフトウェアモジュールであって、ロボットソフトウェアモジュールの機能を行う。コンポーネントユーザの立場からはコンポーネントが提供するインターフェースのみを用い、該当インターフェースに対する詳細な実装は分からなくなる。即ち、コンポーネントは外部に公開されたインターフェース以外には分からないブラックボックスとなり、このようにすることで、外部インターフェースが変更しない限り、内部実装を自由に変更できるようになる。
産業用ロボットにおいて、ロボット制御パターンは大きくクライアント/サーバパターンと、制御ループパターンの2種類に区分することができる。クライアント/サーバパターンでは、コンポーネントで提供するメソッドを呼び出して特定の動作を行うか、コンポーネント内部の属性を読み込んだり変更する。クライアント/サーバパターンの例としては、CORBA(Common Object Request Broker Architecture)、RMI(Remote Method Invocation)及びRPC(Remote Procedure Call)などが挙げられる。
制御ループパターンは、典型的な制御ループでのように、コンポーネント間でデータやイベントを周期的にやりとりしながら、コンポーネントが自身の状態に応じてセンサデータを処理した後、アクチュエータを駆動することで作業を行う。制御ループパターンの例としては、無人自動車に搭載され、コンポーネント同士で予め定められたデータフォーマットを特定の周期毎に伝送して制御ループを構成するJAUS(Joint Architecture for Unmanned System)が挙げられる。
一方、家庭用知能型ロボットは、産業用ロボットよりは構造が遥かに複雑であり、多様な機能を行わなければならないので、前述した2種類のパターンを混用して更に柔軟なロボット制御を行うことが効率的である。
従って、ロボット用ソフトウェアコンポーネントは、有限状態の機械を有して能動的に動作しなければならず、コンポーネント相互間のデータ交換及びメソッド呼び出しを通じて制御が行われなければならない。このように能動的に動作するコンポーネントを用いる最近提案されたロボットプログラミング方式としては、OROCOS(Open Robot Control System)、RTC(Robot Technology Component)などが挙げられる。
ロボットの応用はコンポーネントの組み合わせであり、コンポーネント間の結合度を下げるために、ポートを介したコンポーネントの使用が進められている。ポートはコンポーネントを連結し、コンポーネント相互間の通信を可能にする。
しかしながら、ポートを用いるとしても、独立して行われる多数のコンポーネントを処理するために、数多くのスレッドが用いられると、システムリソースが無駄使いされる上に、スレッド間の情報伝達が遅くなり、システムの効率を低下させてしまうという問題がある。
米国特許出願公開第2008/0141220号明細書
本発明は上記事情に鑑みてなされたものであって、その目的は、コンポーネントのポート種類に応じてコンポーネントを実行するスレッドの構成を変更することで、システムリソースの無駄使いを防止し、システムの効率を向上させることができるロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法を提供することにある。
前記目的を達成するために、本発明の一観点によるロボット用ソフトウェアコンポーネントのスレッド処理装置は、入力データをバッファに格納した後、該当コンポーネントの周期に応じて実行スレッドを用いて周期的実行方式で前記入力データを処理するか、前記入力データに対して生成される専用スレッドを用いて専用実行方式で前記入力データを処理するデータポート部と、入力イベントを受動実行方式で処理するイベントポート部と、入力メソッドの要請に対応するユーザ定義メソッドを呼び出して前記受動実行方式で入力メソッドの要請を処理するメソッドポート部とを含む。
好ましくは、前記周期的実行方式のために、前記対応するコンポーネントの前記周期と優先順位がコンポーネント設定情報に設定される。
また、前記周期的実行方式において、同じ周期及び同じ優先順位を有するコンポーネントは1つのスレッドで処理されることが好ましい。
更に、前記周期的実行方式において、同じ周期を有するものの、優先順位の異なるコンポーネントは1つのスレッドを用いて前記優先順位に従って順次処理される。
また、前記専用実行方式において、前記専用スレッドは一度実行された後に待機し、再開始メソッドが呼び出されると、再実行される。
更に、前記受動実行方式において、前記イベントは有限状態機械を用いて処理される。
また、前記受動実行方式において、前記イベントのための新たなスレッドが生成され、前記新たなスレッドを用いて前記イベントが処理される。
更に、前記受動実行方式において、前記メソッド要請のための新たなスレッドが生成され、前記新たなスレッドを用いて前記メソッド要請が処理される。
本発明の他の観点によるロボット用ソフトウェアコンポーネントのスレッド処理方法は、データポート、イベントポート及びメソッドポートを介して外部コンポーネントとの通信を行う段階と、前記データポートを介して受信されたデータを周期的実行方式又は専用実行方式で処理する段階と、前記イベントポートを介して受信されたイベントを受動実行方式で処理する段階と、前記メソッドポートを介して受信されたメソッド要請を前記受動実行方式で処理する段階とを含む。
好ましくは、前記データを周期的実行方式で処理する段階では、前記データは該当コンポーネントの周期に応じて実行スレッドを用いて処理される。
また、前記周期的実行方式のために、前記対応するコンポーネントの前記周期と優先順位がコンポーネント設定情報に設定されることが好ましい。
更に、前記データを周期的実行方式で処理する段階では、同じ周期及び同じ優先順位を有するコンポーネントは1つのスレッドで処理される。
また、前記データを周期的実行方式で処理する段階では、同じ周期を有するコンポーネントは優先順位に従って整列され、1つのスレッドを用いて前記優先順位に従って順次処理される。
更に、前記データを周期的実行方式で処理する段階では、前記実行スレッドが前記対応するコンポーネントの周期に応じて前記データを処理するのに失敗する場合にエラーを報告する。
また、前記データを専用実行方式で処理する段階では、前記入力データに対して生成される専用スレッドを用いて専用実行方式で前記入力データが処理され、前記専用スレッドは一度実行された後に待機し、再開始メソッドが呼び出されると、再実行される。
更に、前記データを専用実行方式で処理する段階では、前記専用スレッドはミューテックス(Mutex、mutual exclusion object)を用いて再開始メソッド要請を待機する。
また、前記イベントを受動実行方式で処理する段階では、前記イベントは有限状態機械を用いて処理される。
更に、前記イベントを受動実行方式で処理する段階では、前記イベントのための新たなスレッドが生成され、前記新たなスレッドを用いて前記イベントが処理される。
また、前記メソッド要請を受動実行方式で処理する段階では、前記メソッド要請に対応するユーザ定義メソッドが呼び出されて前記メソッド要請を処理する。
更に、前記メソッド要請を受動実行方式で処理する段階では、前記メソッド要請のための新たなスレッドが生成され、前記新たなスレッドを用いて前記メソッド要請が処理される。
本発明によれば、分散環境で弱結合された形態を取っているロボット用ソフトウェアコンポーネントを駆動させるコンポーネント実行エンジンが、コンポーネントのポート種類に応じてコンポーネントを実行するスレッドの構成を異にすることで、独立して行われる多数のコンポーネントを処理するために数多くのスレッドが用いられるという問題が解決される。従って、システムリソースの無駄使いとスレッド間の情報伝達の遅延が防止されることができ、更にシステムの効率低下も防止され得るという効果を奏する。
それぞれコンポーネント実行エンジン部及び多数のコンポーネント部を含む2つのノードで構成されたロボットシステムの構成図である。 本発明によるポート別にスレッドを処理するコンポーネント部の構成図である。 コンポーネント部の実行方式によって分類されたコンポーネントクラスダイヤグラムを示す図である。 周期的実行コンポーネントのコンポーネント設定情報例を示す図である。 周期的実行方式においてデータに対するスレッド処理過程を示すフローチャートである。 専用実行方式においてデータに対するスレッド処理過程を示すフローチャートである。 実行メソッドを実行した後、コンポーネントの次の開始を待機するコードを例示する図である。 受動実行方式においてイベントに対するスレッド処理過程を示すフローチャートである。 受動実行方式においてメソッドに対するスレッド処理過程を示すフローチャートである。
以下、添付の図面を参照して本発明の実施形態について詳細に説明する。
図1は、それぞれコンポーネント実行エンジン部及び多数のコンポーネント部を含む2つのノードで構成されたロボットシステムの構成図である。ノード100Aは、コンポーネント部102a、102b、102c、コンポーネント実行エンジン部104a、通信ミドルウェア106a及びオペレーティングシステム(OS)108aを含む。ノード100Bは、コンポーネント部102d、102e、102f、102g、コンポーネント実行エンジン部104b、通信ミドルウェア106b及びオペレーティングシステム(RTOS)108bを含む。
ロボット用ソフトウェアコンポーネントに対応し、互いに連結されてロボット用ソフトウェアシステムを構成するコンポーネント部102a、102b、102c、102d、102e、102f、102gのそれぞれは、自ら動作するのではなく、コンポーネント実行エンジン部104a、104bにより駆動される。コンポーネント実行エンジン部104a、104bはオペレーティングシステム108a、108bと、例えば、CORBAなどのような通信ミドルウェア106a、106b上で動作する。コンピュータノード100A、100Bはそれぞれコンポーネント実行エンジン部104a、104bを備え、コンポーネント実行エンジン部104aはノードA内のコンポーネント部102a、102b、102cを駆動させ、コンポーネント実行エンジン部104bはノードB内のコンポーネント部102d、102e、102f、102gを駆動させる。
以下、前述したような構成を有するロボットシステムにおいてデータ、イベント及びメソッドをスレッド処理するスレッド処理システムについて図2〜図4を参照して説明する。
図2は、本発明によるポート別にスレッドを処理するコンポーネント部200の構成図である。
コンポーネント部200は、該当コンポーネントのメソッドを呼び出すためのメソッドポート部202、他のコンポーネント部とのデータ交換のためのデータポート部204、イベントの発生をコンポーネント部に知らせるイベントポート部206などを含む。即ち、コンポーネント部200は、メソッドポート部202、データポート部204及びイベントポート部206を通じて他のコンポーネント部と通信する。
コンポーネント部200の実行方式は、周期的実行方式、専用実行方式及び受動実行方式に分類される。データポート部204は周期的実行方式又は専用実行方式で動作し、メソッドポート部202及びイベントポート部206は受動実行方式で動作する。これらについての詳細な説明は後述する。
周期的実行方式において、データポート部204はコンポーネント実行エンジン部からデータが入力されると、入力されたデータをバッファ(図2においてQで示す)に一時格納した後に、周期的実行のための実行メソッド(例えば、onExecute()など)が既に設定された周期に従って呼び出されると、データポート部204の処理部205では呼び出された実行メソッドを用いてバッファに一時格納されたデータを処理する。
専用実行方式において、該当コンポーネントが最初に始める場合、コンポーネントの状態はレディー(READY)状態からランニング(RUNNING)状態に変更され、専用スレッドにより実行メソッド(例えば、onExecute())が1回実行される。その後、コンポーネントの状態はミューテックス(mutex)を用いて次の順番の開始を待機するサスペンデッド(SUSPENDED)状態に変更される。サスペンデッド状態でメソッドポート部202を通じて再び開始メソッド(例えば、resume())の呼び出しが要請されると、コンポーネントの状態はサスペンデッド(SUSPENDED)状態からランニング(RUNNING)状態に変更される。その後、処理部205はミューテックスを通じて専用スレッドを呼び出して実行メソッド(例えば、onExecute())を再び呼び出した後、呼び出された実行メソッドを通じてデータを処理する。
受動実行方式において、コンポーネント実行エンジン部からメソッドポート部202にメソッド要請が提供されると、メソッドポート部202の処理部203はユーザ定義メソッド(例えば、userDefinedMethod())を呼び出し、このようなユーザ定義メソッドを用いて要請されたメソッドを受動で(別途のスレッドを割り当てずに)処理する。
受動実行方式において、コンポーネント実行エンジン部からイベントポート部206にイベントが提供されると、イベントポート部206の処理部207は処理部207内の有限状態機械(FSM)を用いてイベントを直ぐに(バッファリングせずに)処理する。
以上のように、メソッドポート部202、データポート部204及びイベントポート部206はそれぞれ処理部203、処理部205及び処理部207を含む。しかしながら、メソッドポート部202、データポート部204及びイベントポート部206はそれぞれの処理部203、205、207の代わりに共通の処理部を有し得るのはもちろんである。また、各コンポーネント部は必要に応じて多数のメソッドポート部202、データポート部204、イベントポート部206を含むことができる。
図3は、コンポーネント部の実行方式(即ち、コンポーネントの実行方式)によって分類されたコンポーネントクラスダイヤグラムを示す図である。ロボット用ソフトウェアコンポーネントはコンポーネントの実行方式によって、多数のメソッドを有するIComponent300の下位クラスである周期的(periodic)実行コンポーネント302、専用(dedicated)実行コンポーネント304、受動(passive)実行コンポーネント306などに分類され、これに対する指定はコンポーネントの生成時にXML(Extensible Mark-up Language)ファイルに記述し得る。
ロボットソフトウェアコンポーネントは、以下のように生成される。まず、コンポーネントの実行方式によって周期的実行コンポーネント302、専用実行コンポーネント304、受動実行コンポーネント306の中から親クラスが選択され、選択された親クラスから継承されたテンプレートコードが生成される。その後、生成されたテンプレートコードにユーザのコードを追加し、コンパイル過程を行ってコンポーネントを生成する。生成されたコンポーネントは、コンポーネント部でハードウェア実装されることができ、コンポーネント実行エンジン部でハードウェア実装されたコンポーネント実行エンジンにより指定された実行方式によって実行されることができる。
周期的実行方式は、典型的な制御ループのように、周期的にデータを処理することや、アルゴリズムを行うために用いられる。このような制御ループは下位レベルのデバイス制御のために使用され得る。周期的なデータの処理のために、コンポーネント実行エンジンはコンポーネントの特定の実行メソッド(例えば、onExecute())を周期的に呼び出して、データポート部204でハードウェア実装されたデータポートを通じて受信したデータを順次処理できる。
周期的実行方式で処理しなければならないコンポーネントは、XMLなどで記述されるコンポーネント設定情報にその実行周期及び優先順位が設定されなければならない。優先順位は、多数のコンポーネントが同時に実行される場合、優先順位に従ってコンポーネントを実行するためのものである。即ち、コンポーネント実行エンジンは優先順位が最も高いコンポーネントにスレッドを割り当てて処理した後に、次に高い優先順位を有するコンポーネントにスレッドを割り当てる。図4は、周期的実行コンポーネントのコンポーネント設定情報例を示す図である。図4に示すように、コンポーネント設定情報に、コンポーネントの実行周期と優先順位を、XMLを用いて設定できる。
以下、データに対するスレッド処理過程を図5〜図7を参照して説明する。
図5は、周期的実行方式においてデータに対するスレッド処理過程を示すフローチャートである。
まず、ロボット用ソフトウェアコンポーネントは待機モードに設定される(段階S502)。待機モード中にコンポーネント実行エンジン内の外部からのデータの受信を担当するスレッド(以下、「受信スレッド」という)は、外部からデータが入力されるかをチェックする(段階S504)。
前記段階S504のチェックの結果、外部からデータが入力された場合、受信スレッドはコンポーネントのデータポートを通じて入力されたデータをバッファに一時格納する(段階S506)。
その後、コンポーネント実行エンジン内の周期的実行を担当するスレッド(以下、「周期的実行スレッド」という)は、既に設定された周期となるかをチェックする(段階S508)。
前記段階S508のチェックの結果、既に設定された周期となる場合、周期的実行スレッドは周期的実行モードのための実行メソッド(例えば、onExecute())を呼び出し、コンポーネントの処理部を通じてバッファに格納されている受信データを処理する(段階S510)。
ここで、コンポーネント実行エンジンは、同一の周期で処理されるコンポーネントを1つのスレッドを通じて優先順位に従って順次実行する。従って、システムリソースの無駄使いを防止でき、複数のスレッドで処理する場合に発生するスレッドコンテキストスイッチング(thread context switching)時間を短縮でき、ロボット用システムの性能を向上させることができる。
ロボット用システムの性能の向上を最大化するためには、周期的に呼び出される実行メソッドは、最大限に速くリターンされなければならず、ブロックされる関数を呼び出してはならない。仮に、周期的に呼び出される実行メソッドがコンポーネントの実行周期通り呼び出されない場合にはコンポーネント実行エンジンはエラーをレポートできる。
一方、同一のスレッドを通じて実行されるコンポーネントのうち、いずれか1つのコンポーネントが、実行時間が非常に長くかかったり、或いはブロックされた関数を呼び出す場合には、該当スレッドを用いて処理すべき他のコンポーネントは実行が遅れたり、最初から実行されないこともある。従って、実行時間が長くかかったり、その時間を予測できないコンポーネントに対しては周期的実行方式の代りに、専用実行方式が利用され得る。
図6は、専用実行方式においてデータに対するスレッド処理過程を示すフローチャートである。
まず、ロボット用ソフトウェアコンポーネントは待機モードに設定される(段階S602)。待機モード中にコンポーネントの処理部専用のスレッド(以下、「専用スレッド」という)は、コンポーネントが初めて開始(例えば、start()メソッドを通じて)するかをチェックする(段階S604)。
前記段階S604のチェックの結果、コンポーネントが最初に開始する場合、専用スレッドは該当コンポーネントの状態をレディー(READY)状態からランニング(RUNNING)状態に変更する(段階S606)。そして、専用スレッドはコンポーネントの処理部を通じて実行メソッド(例えば、onExecute())を1回実行する(段階S608)。
その後、専用スレッドはコンポーネントの状態をサスペンデッド(SUSPENDED)状態に変更する(段階S610)。また、専用スレッドはミューテックスを用いて次の順番の開始を待機する(段階S612)。図7は、実行メソッドを実行した後、コンポーネントの次の開始を待機するコードを例示する図である。
その後、コンポーネント実行エンジンの受信スレッドは外部からレジュームメソッド(例えば、resume())の呼び出しが要請されるかをチェックする(段階S614)。
前記段階S614のチェックの結果、レジュームメソッドの呼び出しが要請されると、このような呼び出し要請はメソッドポートを通じてコンポーネントの処理部に伝達され、これにより、処理部ではコンポーネントの状態をサスペンデッド(SUSPENDED)状態からランニング(RUNNING)状態に変更する(段階S616)。
その後、処理部はミューテックスを通じて専用スレッドを起動して実行メソッドを再び呼び出す(段階S618)。専用スレッドは呼び出された実行メソッドを通じてデータを処理する(段階S620)。
一方、外部から停止メソッド(例えば、stop())呼び出しが要請された場合、コンポーネント実行エンジンの受信スレッドはこのような呼び出し要請を、メソッドポート部を介してコンポーネントの処理部に伝達する。その後、処理部はコンポーネントの状態をストップド(STOPPED)に変更した後、ミューテックス(mutex)を通じて専用スレッドを呼び出す。専用スレッドは、例えば、while文を通じてコンポーネントの状態をチェックする。チェックの結果、ランニング(RUNNING)状態でない場合、専用スレッドは終了し、該当コンポーネントは破棄(destroy)され得る。
なお、データの処理はこのように周期的実行方式や専用実行方式で処理する一方、メソッドとイベントに対する処理は受動実行方式で処理される。受動実行方式では、メソッドやイベントがコンポーネント実行エンジンの周期的実行スレッド又はコンポーネントの専用スレッドにより処理されるのではなく、外部からメソッド呼び出し要請やイベントを受信した受信スレッドにより処理される。
即ち、受動実行方式では、コンポーネントを能動的に動作させるための別途のスレッドが割り当てられず、コンポーネント実行エンジンの受信スレッドを通じてメソッドやイベントが処理される。
図8は、受動実行方式においてイベントに対するスレッド処理過程を示すフローチャートである。
まず、ロボット用ソフトウェアコンポーネントは待機モードに設定される(段階S802)。待機モード中にコンポーネント実行エンジンの受信スレッドは外部からイベントが受信されるかをチェックする(段階S804)。
前記段階S804のチェックの結果、イベントが受信される場合、受信されたイベントはイベントポート部を通じてコンポーネントの処理部に伝達され、受信スレッドにより処理部内の有限状態機械(FSM)を用いて処理される(段階S806)。即ち、受信されたイベントは処理される前にバッファリングされない。
図9は、受動実行方式においてメソッドに対するスレッド処理過程を示すフローチャートである。
まず、ロボット用ソフトウェアコンポーネントは待機モードに設定される(段階S902)。待機モード中にコンポーネント実行エンジンの受信スレッドは外部からメソッドが要請されるかをチェックする(段階S904)。
前記段階S904のチェックの結果、メソッドが要請された場合、メソッド要請はメソッドポート部を通じてコンポーネントの処理部に伝達され、受信スレッドはユーザ定義メソッド(例えば、userDefinedMethod())を呼び出す(段階S906)。
次に、受信スレッドは呼び出されたユーザ定義メソッドを用いて要請されたメソッドを処理する(段階S908)。
受動実行方式では、コンポーネント実行エンジンの受信スレッドがコンポーネントを直接実行させる間にメソッド又はイベントを受信できなくなる。このような問題を解決するために、受信スレッドが既に受信されたメソッド又はイベントを処理するための新たなスレッドを要請及び呼び出すこともできる。このような場合、受信スレッドは続けてメソッド又はイベントを受信するために利用されることができ、前記新たに要請又は呼び出されるスレッドはメソッドやイベントの処理が終わった後にシステムに返還され得る。
なお、本発明の詳細な説明では具体的な実施形態について説明したが、本発明の範囲から逸脱しない範囲内で様々な変形が可能であるのはもちろんである。従って、本発明の範囲は説明された実施形態に限定されず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものにより定まるべきである。

Claims (10)

  1. ロボット用ソフトウェアコンポーネントのスレッド処理装置であって、各コンポーネントが、
    入力データをバッファに格納した後、前記入力データを周期的実行方式または専用実行方式で処理するデータポート部と、
    入力イベントを、前記バッファに格納することなく受動実行方式で処理するイベントポート部と、
    入力メソッドの要請を受信すると、前記入力メソッドに対して別個のスレッドを割り当てることなく、前記入力メソッドに対応するユーザ定義メソッドを呼び出すことによって、前記受動実行方式で入力メソッドの要請を処理するメソッドポート部と
    備え、
    前記データポート部において前記入力データを前記周期的実行方式で処理することは、予め設定された周期に従って実行メソッドを呼び出すことにより処理を実行する周期的実行スレッドを用いて、前記入力データを処理することを含み、前記周期的実行方式は、同じ周期が設定されているコンポーネントを、各コンポーネントに対して予め設定された優先順位に従って1つの周期的実行スレッドで順次実行し、
    前記データポート部において前記入力データを前記専用実行方式で処理することは、前記実行メソッドを一度呼び出した後に待機し、前記メソッド要請によって再開始メソッドが呼び出されると再び実行される専用スレッドを用いて、前記入力データを処理することを含む、前記ロボット用ソフトウェアコンポーネントのスレッド処理装置。
  2. 各コンポーネントの前記周期および前記優先順位は、コンポーネント設定情報において予め設定されることを特徴とする請求項1に記載のロボット用ソフトウェアコンポーネントのスレッド処理装置。
  3. 前記受動実行方式において、前記イベントは有限状態機械を用いて処理されることを特徴とする請求項1に記載のロボット用ソフトウェアコンポーネントのスレッド処理装置。
  4. 前記受動実行方式において、前記イベントのための新たなスレッドが呼び出され、前記新たなスレッドを用いて前記イベントが処理されることを特徴とする請求項3に記載のロボット用ソフトウェアコンポーネントのスレッド処理装置。
  5. ロボット用ソフトウェアコンポーネントのスレッド処理方法であって、前記ロボット用ソフトウェアコンポーネントの各々は、データポート部、イベントポート部及びメソッドポート部を備え、前記方法は、
    あるコンポーネントが前記データポート部、前記イベントポート部及び前記メソッドポート部を介して外部コンポーネントとの通信を行う段階と、
    前記データポート部を介して受信したデータを周期的実行方式又は専用実行方式で処理する段階と、
    前記イベントポート部を介して受信したイベントを、バッファリングすることなく受動実行方式で処理する段階と、
    前記メソッドポート部を介して受信したメソッド要請を、該要請されたメソッドに対して別個のスレッドを割り当てることなく、前記要請されたメソッドに対応するユーザ定義メソッドを呼び出すことによって前記受動実行方式で処理する段階と
    を含み、
    前記データを前記周期的実行方式で処理することは、予め設定された周期に従って実行メソッドを呼び出すことにより処理を実行する周期的実行スレッドを用いて、前記データを処理することを含み、前記周期的実行方式は、同じ周期が設定されているコンポーネントを、各コンポーネントに対して予め設定された優先順位に従って1つの周期的実行スレッドで順次実行し、
    前記データを前記専用実行方式で処理することは、前記実行メソッドを一度呼び出した後に待機し、前記メソッド要請によって再開始メソッドが呼び出されると再び実行される専用スレッドを用いて、前記データを処理することを含む、ロボット用ソフトウェアコンポーネントのスレッド処理方法。
  6. 各コンポーネントの前記周期と優先順位は、コンポーネント設定情報において予め設定されることを特徴とする請求項5に記載のロボット用ソフトウェアコンポーネントのスレッド処理方法。
  7. 前記データを周期的実行方式で処理する段階では、前記実行スレッドが前記データを前記コンポーネントの前記周期通りに処理できなかったとき、エラーを報告することを特徴とする請求項5に記載のロボット用ソフトウェアコンポーネントのスレッド処理方法。
  8. 前記データを専用実行方式で処理する段階では、前記専用スレッドはミューテックス(Mutex、mutual exclusion object)を用いて前記再開始メソッドの要請を待つことを特徴とする請求項5に記載のロボット用ソフトウェアコンポーネントのスレッド処理方法。
  9. 前記イベントを受動実行方式で処理する段階では、前記イベントは有限状態機械を用いて処理されることを特徴とする請求項5に記載のロボット用ソフトウェアコンポーネントのスレッド処理方法。
  10. 前記イベントを受動実行方式で処理する段階では、前記イベントのための新たなスレッドを呼び出して、前記新たなスレッドを用いて前記イベントが処理されることを特徴とする請求項9に記載のロボット用ソフトウェアコンポーネントのスレッド処理方法。
JP2009250249A 2008-10-31 2009-10-30 ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法 Expired - Fee Related JP5140652B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20080107778 2008-10-31
KR10-2008-0107778 2008-10-31
KR10-2009-0023617 2009-03-19
KR1020090023617A KR101102930B1 (ko) 2008-10-31 2009-03-19 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법

Publications (2)

Publication Number Publication Date
JP2010108504A JP2010108504A (ja) 2010-05-13
JP5140652B2 true JP5140652B2 (ja) 2013-02-06

Family

ID=42275550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009250249A Expired - Fee Related JP5140652B2 (ja) 2008-10-31 2009-10-30 ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法

Country Status (2)

Country Link
JP (1) JP5140652B2 (ja)
KR (1) KR101102930B1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924976B2 (en) 2011-08-26 2014-12-30 Knu-Industry Cooperation Foundation Task scheduling method and apparatus
KR101335083B1 (ko) * 2011-08-26 2013-12-05 강원대학교산학협력단 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치
KR102013704B1 (ko) * 2012-11-26 2019-08-23 한국전자통신연구원 로봇용 소프트웨어 컴포넌트 조합 장치 및 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204672A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp インタフェースシステム
JP3832517B2 (ja) * 1996-07-05 2006-10-11 セイコーエプソン株式会社 ロボット用コントローラ及びその制御方法
JP2000330821A (ja) 1999-05-21 2000-11-30 Mitsubishi Electric Corp 組み込みシステム用ソフトウェアの製作方法
JP2004280299A (ja) * 2003-03-13 2004-10-07 Omron Corp コントローラ、開発装置及びシステム
US20050010925A1 (en) * 2003-07-10 2005-01-13 Charbel Khawand Interprocessor communication protocol with smart streaming port
US7339592B2 (en) * 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
JP2007157166A (ja) * 2005-12-08 2007-06-21 Korea Electronics Telecommun モバイルホームサービスロボットを制御するサーバのxml基盤のサービス提供方法及びその装置
JP2008015585A (ja) * 2006-07-03 2008-01-24 National Institute Of Information & Communication Technology 生活タスク支援システム

Also Published As

Publication number Publication date
KR20100048843A (ko) 2010-05-11
KR101102930B1 (ko) 2012-01-10
JP2010108504A (ja) 2010-05-13

Similar Documents

Publication Publication Date Title
US10365626B2 (en) Extending the functionality of a programmable logic controller (PLC) with apps without changing the PLC programming
US20070168082A1 (en) Task-based robot control system for multi-tasking
US7788668B2 (en) System and method for implementing distributed priority inheritance
JP5149258B2 (ja) ロボットコンポーネント管理装置
US11307550B2 (en) Sequence control of program modules
US20100131076A1 (en) Control system, and method for configuring a control system
CN103645678A (zh) 一种实时响应网络控制***
JP5140652B2 (ja) ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法
CN1225689C (zh) 开放式结构机器人控制器
US8689217B2 (en) System and method for thread processing robot software components responsive to periodic, dedicated, and passive modes
Atmojo et al. Dynamic online reconfiguration in manufacturing systems using SOSJ framework
CN102214094B (zh) 经由异步编程模型执行操作
EP3467655A1 (en) System and method for mpi implementation in an embedded operating system
Brugali et al. Service component architectures in robotics: The sca-orocos integration
Goel et al. Handling multithreading approach using java
Jatzkowski et al. Hierarchical Scheduling for Plug-and-Produce
Aendenroomer et al. Enabling federated control by developing a distributed control application platform
CN116578404B (zh) 线程管理方法、装置、存储介质及电子设备
Nickschas et al. CARISMA-A Service-Oriented, Real-Time Organic Middleware Architecture.
Domínguez-Brito et al. Coolbot: A component model and software infrastructure for robotics
Baunach et al. Introduction to a small modular adept real-time operating system
CN112965436B (zh) 一种单线程多轴控制方法及相关装置
US20230418658A1 (en) Computer System and Method for Executing an Automotive Customer Function
JP4633319B2 (ja) 汎用運動制御システム
Schmidtmann et al. Microprogrammable hardware abstraction layer for flexible automation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120910

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees