現在 OMG にて、ロボット開発の効率を高める Robot Technology Component(以下RTC)の仕様策定が行われています。 この RTC 仕様を実装および適用した共通プラットフォームとして、独立行政法人産業技術総合研究所・知能システム研究部門・タスクインテリジェンス研究グループでは OpenRTM-aist を提供しています。 RTSystemEditor は、この OpenRTM-aist に含まれる開発ツールの1つであり、RTC をリアルタイムにグラフィカル操作する機能を持っています。 また、Eclipse 統合開発環境のプラグインとして作成されており、Eclipse 上にて既存のプラグインとシームレスに操作を行うことができます。
現在 OMG にて、ロボット開発の効率を高める Robot Technology Component(以下RTC)の仕様策定が行われています。 この RTC 仕様を実装および適用した共通プラットフォームとして、独立行政法人産業技術総合研究所・知能システム研究部門・統合知能研究グループでは OpenRTM-aist を提供しています。
RTSystemEditor は、この OpenRTM-aist に含まれる開発ツールの1つであり、RTC をリアルタイムにグラフィカル操作する機能を持っています。 また、その名前のとおり Eclipse 統合開発環境のプラグインとして作成されており、Eclipse 上にて既存のプラグインとシームレスに操作を行うことができます。
本ドキュメントは、RTC についての基本知識を既に持っている方を対象としています。 RTC の内容については、OMG のドキュメントや こちらを参照してください。
ここでは、OpenRTM-aist RT System Editor (以下 RTSystemEditor) の画面例を示します。
RTSystemEditor は、 RTC をリアルタイムにグラフィカル操作する機能を持っています。提供される機能の一覧は以下のとおりです。
№ | 機能名称 | 機能概要 |
1 | コンポーネントコンフィグレーション表示/編集機能 | 選択したコンポーネントのコンフィギュレーションプロファイル情報をコンフィグレーションビューに表示し編集する。 |
2 | コンポーネント動作変更機能 | 選択したコンポーネントの動作を変更する。 |
3 | RTシステム組み立て機能 | システムエディタ上でシステムの組み立てを行う。 |
4 | システムセーブ/オープン機能 | システムエディタの内容をRTSプロファイルとしてセーブする。RTSプロファイルをシステムエディタでオープンする。システムのポート接続、コンフィグレーションを変更しない) |
5 | システム復元機能 | RTS プロファイルをシステムエディタでオープンし、プロファイルの内容を元にシステムを復元する。(プロファイルの内容でシステムのポート接続、コンフィグレーションを再構築する) |
RTSystemEditor の動作に必要な環境は以下のとおりです。
№ | 環境 | 備考 |
1 | Java Development Kit 6 | 注意:Java1.5(5.0)では動作しません。 |
2 | Eclipse 3.4以上 | Eclipse 本体 |
3 | Eclipse EMF 2.4以上(SDO,XSD含む) | RTSystemEditor が依存する Eclipse プラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
4 | Eclipse GEF 3.4以上 | RTSystemEditor が依存する Eclipse プラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
5 | RT Name Service View | RTSystemEditorが依存するOpenRTM-aist に含まれる開発ツール |
6 | RT Repository View | RTSystemEditorが依存するOpenRTM-aist に含まれる開発ツール |
RTSystemEditor は、 OpenRTM-aist を対象に開発されたものです。その他の RTC プラットフォームに対する操作は想定しておりません。
ここでは、RTSystemEditor のインストールおよび起動について説明します。
RTSystemEditor は Eclipse プラグインであるため、 Eclipse 本体および依存している他の Eclipse プラグインをまずインストールする必要があります。 インストールに関しては、OpenRTM Eclipse tools のインストール を参照してください。
RTSystemEditor では、以下のようなビューを使用します。
№ | ビュー名 | 説明 |
1 | ネームサービスビュー | RTC が登録されているネームサービスの内容をツリー表示します。 |
2 | コンフィグレーションビュー | 選択されている RTC のコンフィグレーション情報を表示/編集します。 |
3 | マネージャコントロールビュー | 選択されているマネージャを制御します。 |
4 | 複合コンポーネントビュー | 選択されている複合 RTC のポート公開情報を表示/設定します。 |
5 | 実行コンテキストビュー | 選択されている RTC が属する実行コンテキスト(EC)の一覧を表示し、RTC、EC のアクション実行、EC への RTC のアタッチ/デタッチを行います。 |
6 | ログビュー | ログ通知オブザーバーにより通知されるログメッセージを表示します。 |
7 | プロパティビュー | 選択されている RTC のプロファイル情報を表示します。 |
8 | システムエディタ | RTC をグラフィカルに表示し、RTシステムを作成します。 |
9 | オフラインシステムエディタ | RTリポジトリやローカルの RTコンポーネント仕様ファイルの内容をグラフィカルに表示し、RTシステムを作成します。 |
この後の節では、各ビューについてそれぞれ解説していきます。
ネームサービスビューは、RTC をリアルタイムにグラフィカル操作する機能を持っています。提供される機能の一覧は以下のとおりです。
No. | 機能名称 | 機能概要 |
1 | ネームサーバー接続/編集機能 | ネームサーバーに接続し、登録されているコンポーネントをネームサービスビューにツリー形式で表示する。 |
2 | コンポーネントプロファイル表示機能 | 選択したコンポーネントのプロファイル情報をプロパティビューに表示する。 |
メニューから[ウインドウ] > [ビューの表示] > [Name Service View] を選択すると、ネームサービスビューが表示されます。
ネームサーバーに接続するには、ネームサービスビューの上部に存在する [ネームサーバを追加] ボタンをクリックするか、コンテキストメニューから [ネームサーバを追加] を選択します。
ネームサーバー接続ダイアログでは、IPアドレスおよびポート番号を入力します。(ポート番号が省略された場合には、設定画面で設定されたポート番号が使用されます。デフォルトのポート番号は2809番ポートです)
※Eclipseの(再)起動時には最後に接続したアドレスへ自動的に接続します。存在しない場合には、ローカルホストの2809番ポートに接続を試みます。
接続しているネームサーバーを画面から削除するには、ネームサーバーを右クリックし [ビューから削除] を選択します。
接続したネームサーバーにコンポーネントが登録されていると、以下のように登録内容がツリー形式で表示されます。
各アイコンの意味は以下のとおりです。
№ | アイコン | 種類(KIND) | 名前 |
1 | ![]() |
host_cxt | ホストコンテキスト |
2 | ![]() |
mgr_cxt | マネージャコンテキスト |
3 | ![]() |
cate_cxt | カテゴリコンテキスト |
4 | ![]() |
mod_cxt | モジュールコンテキスト |
5 | ![]() |
上記以外 | フォルダー(上記以外のコンテキスト) |
6 | ![]() |
なし | RTC |
7 | ![]() |
なし | マネージャ |
8 | ![]() |
なし | オブジェクト(RTC 以外のオブジェクト) |
9 | ![]() |
なし | ネームサーバーにエントリされてはいるが、実体のオブジェクトにアクセスできないゾンビオブジェクト |
ネームサービスビューは、接続先の各ネームサーバーを常に監視し、表示の同期・更新を行っています。(監視の周期は、設定画面の[[接続周期:]]で変更することができます)。 また、明示的にネームサーバーの内容を再取得する場合は更新を行います。更新を行うには、ネームサービスビューの上部の [更新] ボタンをクリックするか、コンテキストメニューにて [更新] を選択します。
ネームサービスビューでは、RTC の数が多くなることによって操作する範囲が煩雑化するのを防ぐために、表示ルートの位置を移動する機能があります。
表示ルートを移動するには、移動する先を選択し、ネームサービスビューの上部の [次へジャンプ] ボタンをクリックするか、コンテキストメニューにて [次へジャンプ] を選択します。
移動後は、[戻る] で1階層上に戻ることができます。また、[ホームへ戻る] で最上位の階層に戻ります。
ネームサービスビューでは、RTC の数が多くなることによって操作する範囲が煩雑化するのを防ぐための、もうひとつの方法として、フィルター(表示するエントリの種類を限定)する機能があります。
フィルターを設定するには、ネームサービスビューの上部に存在する [フィルタを設定] ボタンをクリックします。
「フィルタを設定」ダイアログでは、非表示にするエントリの種類を、「ビューから除外するエレメントを選択」欄から選択します。
ネームサービスビューの表示から除外したい要素にチェックをつけると、ネームサービスビューに表示されなくなります。
「ネーミングオブジェクト名」を有効にすると、オブジェクト名の条件に一致するものが非表示となります。
オブジェクト名の条件は前方一致と部分一致が選択できます。
ネームサービスビューでは、ネームサービスのネーミングオブジェクトのエントリを削除することができます。ネーミングオブジェクトを削除するには、コンテキストメニューにて [ネームサービスから削除] ボタンをクリックします。
ネームサービスビューで、ネームサービスにオブジェクトのエントリを登録することができます。
オブジェクトを登録するには、配下にオブジェクトを追加したいコンテキストおよびオブジェクトのコンテキストメニューから、[オブジェクトを追加] を選択します。
「オブジェクトを追加」ダイアログでは、オブジェクトの名前(Name)、種類(Kind)、および IOR を指定します。
ネームサービスビューで、ネームサービスにコンテキストのエントリを登録することができます。
コンテキストを登録するには、配下にコンテキストを追加したいコンテキストのコンテキストメニューから、[コンテキストを追加] を選択します。
「コンテキストを追加」ダイアログでは、コンテキストの名前(Name)、種類(Kind)を指定します。
種類(Kind)には以下のいずれかの値を選択します。
№ | 種類(Kind) | 名前 |
1 | host_cxt | ホストコンテキスト |
2 | mgr_cxt | マネージャコンテキスト |
3 | cate_cxt | カテゴリコンテキスト |
4 | mod_cxt | モジュールコンテキスト |
5 | 上記以外を入力 | フォルダー(上記以外のコンテキスト) |
ネームサービスビューには、ゾンビオブジェクトを一括して削除する機能があります。ゾンビオブジェクトをすべて削除するには、ネームサービスビュー上部の [ゾンビをクリア] ボタンをクリックします。
ここでは、リポジトリビューについて解説します。
リポジトリビューは、RTコンポーネント仕様記述ファイルを読み込み、ツリービューで表示する機能をもっています。
ここでは、リポジトリビューに RTコンポーネント仕様記述ファイルを指定して表示する方法を説明します。
リポジトリビュー内で右クリックし、表示されるコンテキストメニューから [ファイルから読込] を選択すると、ファイル選択ダイアログが表示されます。ここでリポジトリビューに読み込む RTコンポーネント仕様記述ファイルを選択します。
このダイアログは xml ファイルのみ表示するようフィルタがかかります。
ローカルに存在する RTコンポーネント仕様記述ファイルを読み込んだ場合、最上位階層は読み込んだ RTコンポーネント仕様記述ファイルの絶対パスを表示します。 そして、2階層目は RTコンポーネント仕様記述ファイル内で定義されている category 属性の値を表示します。 また3階層目は RTコンポーネント仕様記述ファイル内の name 属性に記述されている値と RTコンポーネント仕様記述ファイル名を表示します。
ここでは、RTコンポーネント仕様記述ファイルが存在するディレクトリーを指定して、ディレクトリー内の全ファイルの読み込み、表示を行う方法を説明します。
リポジトリビュー上で右クリックし、表示されるコンテキストメニューから [ディレクトリから読込] を選択すると、ディレクトリー選択ダイアログが表示されます。 リポジトリビューに読み込むディレクトリーを選択します。ディレクトリー以下に存在する RTコンポーネント仕様記述ファイルを読み込みます。
リポジトリビューのコンポーネントは、リポジトリビュー上で右クリックし、コンテキストメニューから [削除] を選択して削除することが可能です。
[削除] はパス、category、コンポーネントのいずれかを選択している場合のみ選択できます。
ここでは、コンフィグレーションビューについて説明します。
コンフィグレーションビューでは、選択された RTC のコンフィグレーションを表示/編集することができます。左側に CofigurationSet のリストが表示され、右側に ConfigurationSet 内のプロパティが表示されます。
No. | 説明 |
① | 選択されているコンポーネント名。 |
② | 選択されている ConfigurationSet 名。 |
③ | アクティブになっている ConfigurationSet。また、アクティブな ConfigurationSet を変更することができる。 |
④ | ConfigurationSet のリスト。 |
⑤ | 左側で選択されている ConfigurationSet のプロパティの名前。 |
⑥ | 左側で選択されている ConfigurationSet のプロパティの値。 |
⑦ | ConfigurationSet を追加/削除するボタン。 |
⑧ | プロパティを追加/削除するボタン。 |
⑨ | 設定値の編集ダイアログを開くボタン、および変更内容を適用/キャンセルするボタン。 |
コンフィグレーションビューで編集中の情報は、⑨の [適用] ボタンがクリックされるまで適用されません。また、修正中(未適用)の情報は赤く表示されます。
コンフィグレーションの設定値を編集するには⑨の [編集] ボタンをクリックし、編集用のダイアログを開いて編集を行います。
複数の ConfigurationSet がある場合は、ダイアログ上部のタブ(⑩)で編集対象を切替えることができます。
コンフィグレーションの各パラメーターには、編集用の widget を指定することができ、ConfigurationSet に widget 種別が定義されていれば、指定の widget でパラメーターを編集できます(⑪)。 widget 種別にはスライダー、スピナ、ラジオボタン、チェックボックス、および順序付きリストがあり、widget 種別の指定がない場合はデフォルトでテキストボックスを使用します。
また、各パラメーターには制約条件を指定することができ、widget 種別がスライダー、スピンの場合は制約条件の指定が必須となります。該当の widget 種別が定義されていて、制約条件が指定されていない場合はデフォルトのテキストボックスとなります。
widget種別 | イメージ | 説明 |
スライダ | ![]() |
制約条件で指定された最小値、最大値の範囲をスライダーで選択します。テキストボックスへの入力も可能です。 |
スピナ | ![]() |
制約条件で指定された最小値、最大値の範囲をスピナで選択します。小数の精度は制約条件の最小値、最大値の記述に準拠します。ただし、負数の指定はできません。 例) 最大値が「10.00」の場合は小数2桁 |
ラジオボタン | ![]() |
ラジオボタンで値を選択します。 |
チェックボックス | ![]() |
チェックボックスで値を選択します。複数の値を選択でき、カンマ区切りで設定されます。 |
順序付きリスト | ![]() |
左の選択リストから値を選択します。複数の値を選択でき、順序を保持し、また、重複を許可します。選択した値はチェックボックス同様、カンマ区切りで設定されます。 |
テキストボックス | ![]() |
通常のテキスト入力で設定します。 |
各パラメーターに制約条件が指定されていると入力値に対して制約条件のチェックが行われ、条件を満たさない場合はフォームを赤で示します。 また、[OK] ボタンで編集確定時に変更のあった ConfigurationSet の全パラメーターに対して制約条件チェックを行い、制約条件を満たさないパラメーターがあったときにはエラーダイアログを表示します。
コンフィグレーション編集ダイアログの [Apply] チェックボックス(⑫)をチェック中は、RTC に対してリアルタイムで設定値の変更が反映されます。
ここではマネージャコントロールビューについて説明します。
ネームサービスビューでマネージャを選択すると、マネージャコントロールビューがアクティブになり、選択されたマネージャを制御できるようになります。
No. | 説明 |
① | ロード可能モジュール一覧表示ボタン。 |
② | ロード済みモジュール一覧表示ボタン。 |
③ | コンポーネント一覧表示ボタン。 |
④ | コンポーネント生成ボタン。 コンポーネント作成ダイアログを開き、新しくコンポーネントを生成します。生成されたコンポーネントは③のコンポーネント一覧表示で表示されます。 |
⑤ | マネージャ複製ボタン。新しいマネージャを起動します。※現在、仕様未定のため使用不可 |
⑥ | マネージャ終了ボタン。選択中のマネージャを終了します。※現在、仕様未定のため使用不可 |
⑦ | モジュール、およびコンポーネントの一覧を表示するテーブル。 |
⑧ | モジュールを URL 指定でロードする場合に URL を指定します。 |
⑨ | モジュールのロード、アンロードボタン。 ⑦のテーブルで選択中のモジュール、もしくは URL で指定したモジュールをロード、アンロードします。 |
マネージャにモジュールをロードするには [Loadable Modules] ボタンをクリックし、表示されたロード可能モジュールを選択すると、[Load] ボタンが有効になり、クリックするとモジュールがロードされます。
また、「URL:」のテキストボックスにモジュールの URL を入力して [Load] ボタンをクリックすることにより、URL 指定でモジュールを追加することもできます。
モジュールをアンロードするには [Loaded Modules] ボタンをクリックし、表示されたロード済みモジュールを選択すると、[Unload] ボタンが有効になり、クリックするとモジュールがアンロードされます。
新しくコンポーネントを生成するには [Create] ボタンをクリックして、コンポーネント生成ダイアログを開き、生成するコンポーネントの種別を選択し、[OK] をクリックするとコンポーネントが生成されます。
生成されたコンポーネントはマネージャによってネームサービスに登録され、[Active Components] ボタンで表示されるコンポーネント一覧に表示されるようになります。
コンポーネントの種別は、マネージャにロード済みのモジュールで定義されているコンポーネントから選択します。
Parameter にはコンポーネント生成パラメーターを指定することができ、「param1=value1¶m2=value2」の形式で記述します。以下の共通パラメーターは、すべてのコンポーネントで設定可能です。
パラメーター名 | 説明 |
instance_name | コンポーネントのインスタンス名。 指定しない場合はコンポーネント種別 (type_name)に通番を付与 |
type_name | コンポーネントの種別 |
description | コンポーネントの説明 |
version | コンポーネントのバージョン |
vendor | コンポーネントの提供元 |
category | コンポーネントのカテゴリ |
また、コンポーネント生成パラメーターで ConfigurationSet の値も指定することができます。
ConfigurationSet のパラメーターは「conf.NNNN.PPPP=VVVV」の形式で、NNNN には ConfigurationSet 名、PPPP にはパラメーター名、VVVV には設定値をそれぞれ指定します。
例として、ConsoleIn のコンポーネントを生成し、mode1という名前の ConfigurationSet を作成し、input_mode、input_cycle というパラメーターを指定する場合は以下のようになります。
ここでは実行コンテキストビューについて説明します。
実行コンテキストビューでは、選択中の RTC が属する実行コンテキスト(EC)の一覧を表示し、EC の開始/終了、RTC のアクション実行、EC への RTC のアタッチ/デタッチを行うことができます。また、EC の実行周期の設定を行うことができます。
No. | 説明 |
① | RTC のインスタンス名。 |
② | RTC が属する EC のリストを表示。 RTC がオーナーの EC は「owned*」、RTC が参加のみの EC は「participate*」で表示。 |
③ | ②で選択中の EC の実行レート。 |
④ ⑤ |
選択中の EC のプロパティを Name、Value の一覧として表示。 id: EC の ID。オンラインの場合は context_handle を ID として表示。 kind: EC 種別 (PERIODIC/EVENT_DRIVEN/OTHER) state: EC の状態 (RUNNING/STOPPING) component_state: 選択中の RTC の EC 上での状態 (ACTIVE/INACTIVE/ERROR) owner: この EC のオーナー RTC のインスタンス名 participants: この EC に参加中の RTC の数 その他、EC に設定された任意のプロパティを表示。 |
⑥ | 入力された実行レートを EC へ反映させる。 |
⑦ | 選択中の EC を開始する。(オフラインでは使用不可) |
⑧ | 選択中の EC を停止する。(オフラインでは使用不可) |
⑨ | 選択中の RTC の、選択中の EC 上での状態をアクティブにする。(オフラインでは使用不可) |
⑩ | 選択中の RTC の、選択中の EC 上での状態を非アクティブにする。(オフラインでは使用不可) |
⑪ | 選択中の RTC の、選択中の EC 上での状態をリセットする。(オフラインでは使用不可) |
⑫ | 選択中の RTC を、選択中の EC からデタッチする。 ただし、RTC 自身が EC のオーナーの場合はデタッチ不可。 |
⑬ | システムエディタ上の RTC の選択ダイアログを開き、選択した RTC を EC にアタッチする。 |
実行レートの編集中の値は、⑥の [Apply] ボタンがクリックされるまで適用されません。また、修正中(未適用)の情報は薄い赤色で表示されます。入力値が不正な場合は赤色で表示されます。
オンラインエディタの場合は EC の操作や、その EC 上での RTC の状態を変更することができます。
[Start] ボタンをクリックすると EC を開始し、プロパティの state が「RUNNING」となり、[Stop] ボタンをクリックすると EC を停止し、state が「STOPPING」となります。
EC 上での RTC の状態を変更するには [Activate]、[Deactivate] ボタンをクリックします。アクティブ化すると、プロパティの component_state が「ACTIVE」となり、非アクティブ化すると component_state が「INACTIVE」となります。
何らかの理由で RTC が「ERROR」状態となったときは、[Reset] ボタンをクリックして復旧します。
RTC は複数の EC にアタッチすることができます。
RTC を追加したい EC を選択して、[Attach] ボタンをクリックすると、RTC の選択ダイアログが開きます。選択ダイアログには、システムエディタ上にある RTC の一覧が表示されます。
RTC を選択して [OK] をクリックすると、EC に RTC が追加され、追加した RTC の participate ECの一覧に新しく EC が追加されます。
EC のアタッチを解除するには、participate の EC を選択して [Detach] ボタンをクリックします。
ここでは複合コンポーネントビューについて説明します。
複合コンポーネントビューでは、選択された複合 RTC のポート公開情報が表示され、ポートの公開/非公開を設定することができます。
No. | 説明 |
① | 複合 RTC のインスタンス名。 |
② | 複合 RTC のタイプ名。 |
③ | ポートの公開/非公開の状態。 |
④ | 複合 RTC に含まれる子 RTC のインスタンス名。 |
⑤ | 複合 RTC に含まれる子 RTC のポート名。 |
⑥ | ポートの公開/非公開の変更を反映させます。 |
⑦ | ポートの公開/非公開の変更をキャンセルします。 |
複合コンポーネントビューで編集中の情報は、⑥の [Apply] ボタンがクリックされるまで適用されません。また、修正中(未適用)の情報は薄い赤色で表示されます。また、システムエディタ上で選択したポートは薄い黄色で表示されます。
複合コンポーネントのポートが、別のコンポーネントのポートと接続されている場合は、複合コンポーネントビューで該当のポートがグレイで表示され、編集不可となります。
ここではログビューについて説明します。
ログビューは、選択したダイアグラム上のログ収集対象の RTC 一覧を表示し、RTC から通知されたログメッセージを表示します。
表示したい RTC を選択でき、また、ログレベルによって表示をフィルタリングすることもできます。
No. | 説明 |
① | 選択中のダイアグラム内の RTC のうち、ログ収集対象となっているものの一覧を表示。 ここでチェックをつけた RTC のログが表示される。 |
② | 表示するログレベルのしきい値を指定。 指定されたレベル以上のログメッセージを表示する。 |
③ | ログメッセージを表示。 RTC の選択、およびログレベル指定により、表示をフィルタリングする。 表示項目は次のとおり。 ・タイムスタンプ ・ログレベル(SILENT/ERROR/WARN/INFO/DEBUG/TRACE/VERBOSE/PARANOID) ・RTC のインスタンス名 ・ログ通知対象 ・ログメッセージ |
ダイアグラムを選択すると、ダイアグラム上のログ収集対象 RTC の一覧を①に表示します。ログは、ログ通知オブザーバー機能により RTC から通知され、オブザーバーを登録したものがログ収集対象となります。
一覧からログを表示したい RTC を選択(チェック)すると、③のログ表示テーブルにメッセージを表示します。
また、ログメッセージはログレベルによって表示をフィルタリングすることができます。②のコンボボックスでしきい値となるレベルを選択すると、選択したレベル以上のログのみ表示します。たとえば、コンボボックスで「INFO」を選択すると、「ERROR」「WARN」「INFO」のメッセージのみ表示されます。
ここではプロパティビューについて説明します。
プロパティビューでは、 System Dialog で選択された RTC やコネクタのプロファイル情報をリアルタイムに表示します。( RTC の選択中であっても変更が検出されれば即座に反映されます)
表示されるアイコンの意味は以下のとおりです。
No. | アイコン | 名前 | 表示内容 |
1 | ![]() |
RTC | InstanceName、TypeName、Description、Vender、Category、State(※1番目の ExecutionContext の LifeCycleState を基にして表示される) |
2 | ![]() |
ExecutionContext | State、Kind、Rate |
3 | ![]() |
ServicePort | Name、プロパティ情報のリスト |
4 | ![]() |
Outport | Name、プロパティ情報のリスト |
5 | ![]() |
Inport | Name、プロパティ情報のリスト |
6 | ![]() |
PortInterfaceProfile | InterfaceName、TypeName、PortInterfacePolarity |
7 | ![]() |
マネージャー | Components (生成したコンポーネント名のリスト) Loadable Modules (ロード可能なモジュール名のリスト) Loaded Modules (ロード済みのモジュール名のリスト) |
ここでは、システムエディタの概要と基本操作について説明します。
システムエディタでは、RTC の状態がリアルタイムで表示されます。またポート間の接続や、RTC の状態を変更することでシステム構築、動作検証を行うことができます。
RTC のポート間の接続方法と RTC を実行する方法を説明します。
新しいシステムエディタを開くには、ツールバーの [Open New System Editor] ボタンをクリックするか、メニューバーの [File] > [Open New System Editor] を選択します。
RTC をシステムエディタに配置するには、ネームサービスビューから RTC をドラッグ&ドロップします。
ネームサービス上で [Ctrl] キーを押しながらクリックし、複数RTC を選択すれば、まとめてシステムエディタ上へ配置することができます。
なお、すでにシステムエディタ上に配置された RTC、もしくは複合RTC の親RTC、子RTCを重複して追加することはできません。 複数 RTC の配置では重複する RTC はスルーされ、単体RTC の配置ではエラーダイアログが表示されます。
ここでは、 RTC の状態を変更する方法を説明します。
システムダイアグラムでは、RTCを選択し、「Activate」、「Deactivate」、「Reset」、「Finalize」、「Exit」、「Start」、「Stop」を実行することができます。 また、ネームサービスビューでも同様に実行することができます。
これらのアクションの意味は以下のとおりです。実行先にご注意ください。
No. | アクション名 | 実行先 | 意味 |
1 | Activate | 選択された RTC とその1番目の ExecutionContext に対して実行 | Activate を要求する |
2 | Deactivate | 〃 | Deactivate を要求する |
3 | Reset | 〃 | Reset を要求する |
4 | Exit | 選択された RTC に対して実行 | Exit を要求する |
5 | Start | 選択された RTC の1番目の ExecutionContext に対して実行 | Start を要求する |
6 | Stop | 〃 | Activate を要求する |
「設定画面」のオンラインエディタの項目で、アクションの実行確認を有効にしている場合は、アクションの実行前に確認のダイアログが表示されます。
初期設定では、事前確認を行わないようになっています。
Activate、Deactivate については、ショートカットキーが割り当てられています。初期設定では以下の設定になっています。
・Activate → Ctrl + Alt + A
・Deactivate → Ctrl + Alt + D
キーバインドを変更するには、Eclipse 標準の設定メニューの「一般」→「キー」で設定することができます。
また、簡易にシステムを操作するための機能として、システムエディタに含まれるすべての RTC へ Activate、Deactivate、Start、Stop、変更を要求することがツールバーとコンテキストメニューからできます。
All 系のアクションは、1番目以外の ExecutionContext についても行われます。 Activate やStart を画面内の RTC に1つずつおこなった場合と結果が異なることにご注意ください。
システムエディタでは、 RTC のポート間を接続することができます。
ポート間を接続するには、ポートとポートをドラッグ&ドロップでつなぎます。
ドラッグ&ドロップ終了後、接続に必要な情報の入力を促すダイアログが表示されます。
このダイアログでは、 ConnectorProfile を作成します。 ConnectorProfile は、それぞれのポートが必要とする条件が満たされるように作成される必要がありますが、このダイアログは必要な条件を満たす値のみが入力されるようプルダウンで促します。 必要な条件を満たすことができない接続の場合には、ドラッグ&ドロップの接続時に禁止マークが表示され、ドラッグ&ドロップを行うことができません。
ポート間の接続は、大きくデータポート間接続とサービスポート間接続に分かれます。詳細については「システムエディタ(ポート間の接続 編)」を参照願います。
ポート間の接続を切断するには、接続を選択し [Delete] ボタンをクリックするか、コンテキストメニューに表示される [Delete] をクリックします。
ポートの接続をすべて切断するには、ポートを選択して、右クリックし「All Disconnect」を実行します。
単独のポート接続へ ConnectorProfile を設定することができます。
ポートを右クリックし、コンテクストメニューから「Connect」を選択すると、ポート間接続のときと同様に、ConnectorProfile の設定ダイアログが開きます。
単独のポート接続を削除するには、同じく右クリックのコンテキストメニューから「Disconnect」を選択し、ポート切断ダイアログから操作します。 ダイアログに表示された ConnectorProfile の一覧から対象を削除し、[OK] ボタンをクリックすると切断処理が実施されます。
ログ通知オブザーバにより、RTC のログメッセージをツールで収集することができます。(OpenRTM-aist 1.1以降)
ダイアグラム上の RTC を右クリックし、コンテキストメニューの「Start Logging」を選択するとログ収集を開始します。 すでにログ収集を開始している RTC の場合は、メニュー表示が「Stop Logging」となり、ログ収集を停止します。
なお、オブザーバに対応していない RTC の場合は、メニューが非活性となります。
ログ収集は、状態通知オブザーバと同様、ログ通知のオブザーバの参照を RTC に登録し、通知を受けます。 コンテキストメニューからログ収集開始時にオブザーバを登録し、ログ収集停止時にオブザーバを解除します。 また、状態通知オブザーバと同じく、ダイアグラムから RTC を削除するとオブザーバを解除します。
ログ通知では、時刻やログレベルを含んだデータ構造(ログレコード)が RTC から送られ、ツールはログのデータを蓄積します。 蓄積されたログは、ログビューを使って参照することができます。
複合コンポーネントの操作を説明します。
複数のコンポーネントをまとめて複合コンポーネントにすることができます。
複合コンポーネントにしたいコンポーネントを選択して、右クリックして「Create Composite Component」を選択すると、複合コンポーネント生成ダイアログが表示されます。
ダイアログの各項目は以下のとおりです。
No. | ダイアログ説明 | 説明 |
① | Manager | ネームサービスビューに表示されているマネージャ一覧からマネージャを選択します。ここで選択されたマネージャが複合コンポーネントを生成します。 |
② | Name | 複合コンポーネントのインスタンス名を指定します。 |
③ | Type | 複合コンポーネントの種別を指定します。指定可能な種別は以下のとおり。 [PeriodicECShared] 各RTCが ExecutionContext のみを共有する形で動作します。各RTCの状態は独立しているため、複合コンポーネント内で複数の状態が存在することもあります。 [PeriodicStateShared] 各RTCが同一の ExecutionContext を共有するとともに、状態も共有する形で動作します。 [Grouping] 各RTCが何も共有しない複合コンポーネントで、各RTCがそれぞれ ExecutionContext、状態を保持します。 |
④ | Path | 複合コンポーネントに設定するパスを指定します。 |
⑤ | Port | 子のコンポーネントのポート一覧から、複合コンポーネントに表示するポートを選択します。 ここで選択されたポートに対して、複合コンポーネントにプロキシ用のポートが作成されます。 |
⑥ | - | ポートの全選択・全解除ボタン |
複合コンポーネントを作成すると、子のコンポーネントとして選択していたコンポーネントはシステムエディタ上から表示が消え、新しい複合コンポーネントが描画されます。
複合コンポーネントのダイアグラムをダブルクリックするか、右クリックして「エディタで開く」を選択すると、新しいシステムダイアグラムが開き、複合コンポーネント内部が表示されます。
複合コンポーネント内を表示するシステムエディタを開いて、ネームサービスビューから RTC をドラッグ&ドロップすることで、複合コンポーネントの子が追加されます。追加された子RTCのポートはすべて非公開に設定されます。
複合コンポーネント内を表示するシステムエディタを開いて、そこで子のコンポーネントを削除することで、複合コンポーネントの子が削除されます。
削除された子のコンポーネントは、複合コンポーネント内から表示が消え、元のシステムダイアグラム(複合コンポーネント自身が表示されているダイアグラム)に表示されます。
複合コンポーネント上で右クリックして「Delete」を選択すると、複合コンポーネントがダイアグラムから削除されます。
削除時に複合コンポーネントを別のシステムダイアグラムで開いていると、エディタの終了確認のダイアログが表示されます。
複合コンポーネント上で右クリックして「Decompose Composite Component」を選択すると、複合コンポーネントへexist()が送られ、コンポーネント自体を終了します。
解除時に複合コンポーネントを別のシステムダイアグラムで開いていると、エディタの終了確認のダイアログが表示されます。
複合コンポーネントが解除されると、子のコンポーネントが元のシステムダイアグラム(複合コンポーネントが表示されていたダイアグラム)に表示されます。
複合コンポーネント内を表示するシステムエディタにあるコンポーネントのポートが複合コンポーネント上に公開されている場合、下記のように別のアイコンで表示されます。
No. | 名前 | 形状 |
1 | InPort | ![]() |
2 | OutPort | ![]() |
3 | ServicePort | ![]() |
公開されているポートを右クリックして、「Unexport」を選択すると、そのポートが公開されていない状態に変わります。また、公開されていないポートを右クリックして、「Export」を選択すると、そのポートが公開されている状態に変わります。
ただし、ポートが別のコンポーネントのポートと接続されている場合は、「Unexport」にすることができません。
システムエディタのセーブとオープンについて説明します。
システムエディタはセーブすることができます。セーブするには、メニューの [File] もしくはエディタを右クリックして「Save」を選択します。(「Save As…」では、セーブするファイルを任意選択することができます)
システムのセーブを選択すると、プロファイル情報ダイアログが開き、必要な項目を設定して [OK] ボタンをクリックすると、システムの情報がファイルにセーブされます。
名前 | 形状 |
Vendor | ベンダ名。RTシステムの識別子を構成する要素。 必須項目。 |
System Name | システム名。RTシステムの識別子を構成する要素。 必須項目。 |
Version | システムのバージョン。RTシステムの識別子を構成する要素。 必須項目。 |
Path | システムをセーブするファイル名。 必須項目。 |
Update Log | バージョンの補足説明などを記述。 |
Required | RTシステムを動作させるのに必須の RTC にチェックをつける。 |
セーブしたシステムエディタをオープンするには、エディタを右クリックして「Open」を選択します。
セーブしたシステムエディタをオープンおよび復元するには、エディタを右クリックして「Open and Restore...」、もしくは「Open and Quick Restore...」を選択します。
RTC の表示と RTC の描画編集の操作を説明します。
システムエディタに配置された RTC は矩形で表示され、ポートはその矩形の周りに表示されます。また、それぞれの状態が色で表現されます。
アイコンと状態色の一覧は以下のとおりです。
No. | 名前 | 形状 | 状態 | デフォルト色(※) | |
1 | RTC | ![]() |
CREATED | ![]() |
White |
INACTIVE | ![]() |
Blue | |||
ACTIVE | ![]() |
Light Green | |||
ERROR | ![]() |
Red | |||
UNKNOWN | ![]() |
Black | |||
2 | Execution Context (1番目のみ) |
(RTCの矩形の外周線) | RUNNING | ![]() |
Gray |
STOPPED | ![]() |
Black | |||
3 | InPort | ![]() |
未接続 | ![]() |
Blue |
接続済(1つ以上) | ![]() |
Light Green | |||
4 | OutPort | ![]() |
未接続 | ![]() |
Blue |
接続済(1つ以上) | ![]() |
Light Green | |||
5 | ServicePort | ![]() |
未接続 | ![]() |
Light Blue |
接続済(1つ以上) | ![]() |
Cyan |
※各状態の色は、設定画面の 表示色 にて変更することができます。
また、RTC の種別やカテゴリに合わせてアイコン画像をつけることができます。
※アイコン画像は、設定画面の アイコン にて変更することができます。
システムエディタへ配置した RTC の状態を監視し、リアルタイムに表示を更新します。
監視方法には状態通知オブザーバ方式(OpenRTM-aist 1.1以降)、もしくはポーリングによる周期チェックがあり、設定画面の接続にて監視パラメーターを変更することができます。
システムエディタへ RTC を配置するときに、ミドルウェアのバージョンをチェックし、オブザーバ対応であれば RTC へオブザーバを登録します。オブザーバ未対応の場合は周期的に状態の問い合わせを行います。
システムエディタから RTC を削除すると、オブザーバも解除します。
状態通知オブザーバが通知する内容は次のとおりです。
通知 | 説明 |
COMPONENT_PROFILE | RTC のコンポーネントプロファイルに変更があった場合に通知 |
RTC_STATUS | RTC の状態 新しい状態と対象となる EC の ID を通知 |
EC_STATUS | 実行コンテキストの状態 実行レートの変更、EC の開始/停止、RTC のアタッチ/デタッチを通知 |
PORT_PROFILE | ポートの状態 ポートの追加/削除、コネクションの接続/切断を通知 |
CONFIGURATION | コンフィグレーションの状態 コンフィグレーションの追加/変更/削除、アクティブなコンフィグレーションの切り替えを通知 |
ここでは、RTC の描画編集について説明していきます。(「編集」ではなく「描画編集」とあえてしているのは、ここで説明される作業は描画の編集であり、システムに対する影響は全くないためです。)
また、選択された RTC の位置と大きさがステータスバーに表示されます。
データポート間、サービスポート間の接続について説明します。
データポートの接続で、「InPort」と「OutPort」を接続します。これらの間をドラッグ&ドロップでつなぐと以下のダイアログが表示されます。なお、初期表示時には「Buffer」の設定項目は隠れています。
ダイアログの項目と条件は以下のとおりです。
№ | ダイアログ項目名 | ConnectorProfile | 必要条件 |
① | Name | name | 特になし |
② | Data Type | <<properties>> dataport.data_type |
このコネクタで接続されているデータポート間で送受信するデータ型を指定します。 それぞれのポートで互いに送受信可能なデータ型から選択します。ただし、Any を含む場合は相手ポートのどのような値も許容します。 |
③ | Instance Type | <<properties>> dataport.interface_type |
RTシステム設計者が想定する、もしくは RTC が動作する RTミドルウェア上でサポートされているインターフェース種別を指定します。 それぞれのポートで互いにサポートしているインターフェース種別から選択します。ただし、Any を含む場合は相手ポートのどのようなインターフェースも許容します。 |
④ | Dataflow Type | <<properties>> dataport.dataflow_type |
RTシステム設計者が想定する、もしくは RTC が動作する RTミドルウェア上でサポートされているデータフロー型を指定します。 それぞれのポートで互いにサポートしているデータフロー型から選択します。ただし、Any を含む場合は相手ポートのどのようなデータフローも許容します。 |
⑤ | Subscription Type | <<properties>> dataport.subscription_type |
[Dataflow Typeの値がPushの時に必要な条件] RTシステム設計者が想定する、もしくはRTCが動作するRTミドルウェア上でサポートされているサブスクリプション種別を指定します。 それぞれのポートで互いにサポートしているサブスクリプション種別から選択します。ただし、Anyを含む場合は相手のどのようなサブスクリプション種別も許容します。 |
⑥ | Push Rate(Hz) | <<properties>> dataport.push_interval |
[Dataflow Typeの値が”Push”でかつSubscription Typeが”Periodic”の時に必要な条件] サブスクリプション種別が「Periodic」な場合にデータの送信周期を指定します。送信周期は正数値(小数可)で指定します。 |
⑦ | Push Policy | <<properties>> dataport.publisher.push_policy |
データ送信ポリシー。[Dataflow Typeの値が”Push”でかつSubscription Typeが”Periodic”の時に必要な条件]all、fifo、skip、new から選択します。 all:バッファ内のデータを一括送信 fifo:バッファ内のデータをFIFOで1個ずつ送信 skip:バッファ内のデータを間引いて送信 new:バッファ内のデータの最新値を送信(古い値は捨てられます。) |
⑧ | Skip Count | <<properties>> dataport.publisher.skip_count |
送信データスキップ数。[Push Policy の値が”skip”の時に必要な条件]バッファ内のデータがこの設定値で間引されて送信されます。 |
⑨ | 詳細 | ― | チェックボックスをチェックすると、入出力ポートのバッファの詳細設定項目が表示されます。 ダイアログの初期表示時は隠れています。 |
⑩ ⑮ |
Buffer length (OutPort/InPort) |
<<properties>> buffer.length |
バッファの長さ |
⑪ ⑯ |
Buffer full policy (OutPort/InPort) |
<<properties>> buffer.write.full_policy |
バッファへのデータ書き込み時に、バッファフルだった場合の挙動。overwrite、do_nothing、block から選択します。 overwrite:データを上書きします。 do_nothing:何もしません。 block:ブロックします。 block を指定した場合、次の timeout 値を指定すれば、指定時間後書き込み不可能であればタイムアウトします。 デフォルトは overwrite (上書き)です。 |
⑫ ⑰ |
Buffer write timeout (OutPort/InPort) |
<<properties>> buffer.write.timeout |
バッファへのデータ書き込み時に、タイムアウトアウトイベントを発生させるまでの時間(単位:秒) デフォルトは 1.0 [sec]です。0.0を設定した場合はタイムアウトしません。 |
⑬ ⑱ |
Buffer empty policy (OutPort/InPort) |
<<properties>> buffer.read.empty_policy |
バッファからのデータ読み出し時に、バッファが空だった場合の挙動。readblock、do_nothing、block から選択します。 readblock:最後の要素を再読み出します。 do_nothing:何もしません。 block:ブロックします。 block を指定した場合、次の timeout 値を指定すれば、指定時間後読み出し不可能であればタイムアウトします。 デフォルトは readbackです。 |
⑭ ⑲ |
Buffer read timeout (OutPort/InPort) |
<<properties>> buffer.read.timeout |
バッファからのデータ読み出し時に、タイムアウトイベントを発生させるための時間(単位:秒) デフォルトは 1.0 [sec]です。0.0 を設定した場合はタイムアウトしません。 |
⑳ 21 |
Name/Value | <<properties>> Name |
任意のプロパティを設定 [追加] ボタンで項目の追加、[削除] ボタンで項目の削除が可能です。 入力された項目は NVList の形式で ConnectorProfileのProperties に設定されます。 同一 Key の Property は設定する事はできません。 |
②~⑤までの項目について、RT System Editor は指定可能な値を、それぞれのポートの値リストから文字列のマッチングを行って作成します。 双方のポートに対して ANY しか指定されていないような場合には、入力可能な値を判断することができません。 このため、双方のポートに ANY が含まれている場合に、RT System Editor は任意の文字列を入力できるようにしています。任意の文字列が入力可能な項目には、「任意入力可」と表示されます。
サービスポート間の接続では、「ServicePort」と「ServicePort」を接続します。これらの間をドラッグ&ドロップでつなぐと以下のダイアログが表示されます。
ダイアログの項目と条件は以下のとおりです。
№ | ダイアログ項目名 | ConnectorProfile | 必要条件 |
① | Name | Name | 特になし |
② | 詳細 | ― | チェックボックスをチェックすると、Consumer/Provider の詳細設定項目が表示されます。 ダイアログの初期表示時は隠れています。 |
③ | Consumer | ― | 接続するサービスポートに設定されたインターフェースの Consumer のリストから選択します。 ComboBox の選択リストには<コンポーネント名>:<インターフェース名>:<インスタンス名>の形式で表示されます。 追加された Consumer/Provider のペアは、ConsumerのIDをプロパティのキー、Provider の ID をプロパティの値として、ConnectorProfile に格納されます。 なお、Consumer/Provider の ID は以下の形式で表現します。 <rtc_name>.port.<port_name>.<if_polality>.<if_tname>.<if_iname> - rtc_nameはコンポーネント名 - port_name はポート名 - if_polalityは Consumer は「required」、Provider は「provided」 - if_tnameはインターフェースのタイプ名 - if_inameはインターフェースのインスタンス名 |
④ | Provider | <<properties>> Consumer の ID をキーとして設定 |
Consumerと同様、接続するサービスポートに設定されたインターフェースの Provider のリストから選択します。 |
⑤ | Add | ― | Consumer/Provider の新規エントリを追加します。 |
⑥ | Delete | ― | 選択中の Consumer/Provider のエントリを削除します。 |
⑦ ⑧ |
Name/Value | <<properties>> Name |
任意のプロパティを設定 [追加] ボタンで項目の追加、[削除] ボタンで項目の削除が可能です。 入力された項目は NVList の形式で ConnectorProfile の Properties に設定されます。 同一 Key の Property は設定する事はできません。 |
サービスポートの場合、必須となる接続の条件はありません。しかし、 ServicePort 間での PortInterfaceProfile が完全にマッチング(※1)しない場合、接続ダイアログにて警告を表示します。
ここでは、オフラインシステムエディタの概要について説明します。
新しいオフラインシステムエディタを開くには、ツールバーの「Open New Offline System Editor」ボタンをクリックするか、メニューバーの [File] > [Open New Offline System Editor] を選択します。
コンポーネント仕様をオフラインシステムエディタに配置するには、リポジトリビューからコンポーネント仕様をドラッグ&ドロップします。
リポジトリビュー上で Ctrlキーを押しながらクリックし、複数コンポーネント仕様を選択すれば、まとめてオフラインシステムエディタ上へ配置することができます。
ここでは、オフラインシステムエディタを使用したデプロイ機能の概要について説明します。
デプロイ機能を用いることで、オフラインシステムエディタで作成したオフラインプロファイルから実際のシステム構築を行うことが可能となります。
オフラインエディタ上に配置したコンポーネントを右クリックし、表示されたメニュー中から「Set Deploy Info.」を選択すると、デプロイ情報設定画面が表示されます。
設定したデプロイ情報は、RtsProfile とは別に保存、読込する事が可能です。オフラインエディタを右クリックして表示されるメニュー中から「Save Deploy Info.」「Load Deploy Info.」をそれぞれ選択してください。
設定したデプロイ情報を基に、実際のシステムを構築(デプロイ)する場合は、オフラインエディタを右クリックして表示されるメニュー内から「Deploy System」を選択します。
デプロイを実行すると、設定されたデプロイ情報を基に実システムの構築(デプロイ)を行います。そして、新規オンラインエディタを開き、デプロイ結果を表示します。
対象となるオフラインシステム内に、デプロイ情報が設定されていないコンポーネントが存在する場合や、設定したデプロイターゲットがデプロイ時に起動していない場合には、以下のような警告画面が表示されます。
警告画面中で「キャンセル」を選択した場合は、デプロイ処理を中断します。[OK] を選択した場合は、起動中のデプロイターゲットを使用して、可能な限りシステムの構築(デプロイ)を実行します。
ここでは、 RT System Editor の設定画面について説明します。 RT System Editor の設定画面は、メニューの [window] > [preferences] > [RT System Editor] で表示することができます。
接続設定では、状態通知オブザーバーのハートビートの設定、および接続周期の設定を行います。
状態通知オブザーバー対応のミドルウェア(OpenRTM-aist 1.1以降)では、オブザーバーへのハートビート送信により RTC の生存確認を行います。ハートビートの設定項目は以下のとおりです。
名前 | 説明 |
ハートビート有効化 | ハートビートによるタイムアウト検出を有効にするかを指定します。 |
ハートビート受信間隔 | ハートビートの受信間隔を指定します。 単位は秒、デフォルトは1.0秒。 |
ハートビート受信回数 | タイムアウト検出のためのハートビートの受信回数を指定します。 受信間隔x受信回数=タイムアウト時間 [秒] デフォルトは3回。 |
接続周期は、従来のミドルウェア(OpenRTM-aist 1.0以前)において、システムエディタがシステム情報を収集し、表示へ反映する周期です。
単位はミリ秒、0 を指定した場合には同期は行われません。
表示色の設定画面では、システムエディタにて表示される RTC と ExecutionContext 状態の色を設定することができます。 それぞれの状態の意味については、システムエディタのRTCの表示をご覧ください。
アイコンの設定画面では、システムエディタで表示する RTC に付与されるアイコン画像と、表示対象のパターンを設定することができます。 表示対象は RTC の種別、もしくはカテゴリのパターンを設定します。 アイコン画像の表示イメージは、システムエディタのRTCの表示をご覧ください。
[Add]、[Edit]、[Delete] ボタンでアイコン画像のエントリを追加、編集、削除します。 [Add]、[Edit] ボタンをクリックするとアイコン画像設定ダイアログが開き、表示対象のパターンとアイコン画像ファイルを設定します。
オフラインエディタでポート接続時に選択できるパラメーターを設定することができます。
設定可能な項目は [Interface Type]、[Data Flow Type]、[Subscription Type] で、ポート接続時にここで設定したパラメーターから値を選択することができます。 それぞれの意味についてはデータポート間接続を参照してください。
オンラインエディタで、RTC のアクション実行時に、事前の実行確認を行うかを設定します。 初期値はチェックなし(確認を行わない)です。
接続周期とは、RT Name Service View がシステムの情報を収集して表示へ反映する周期のことです。&br 接続周期は、ネームサービスビューとシステムエディタの2つがあります。単位はミリ秒で、0 を指定した場合には、同期は行われません。
タイムアウト待ち時間は、システムの情報を収集する際、システムとの接続が確立されない場合に待機する時間です(単位はミリ秒)。
接続周期と同期タイムアウト待ち時間の関係は下図のようになります。
(例 接続周期が1000ms、同期タイムアウト待ち時間が100msの場合)
Apache Jakarta Commons Lang Copyright 2001-2006 The Apache Software Foundation
This product includes software developed by The Apache Software Foundation.