現在 OMG にて、ロボット開発の効率を高める Robot Technology Component(以下 RTC)の仕様策定が行われています。この RTC 仕様を実装および適用した共通プラットフォームとして、独立行政法人産業技術総合研究所・知能システム研究部門・タスクインテリジェンス研究グループでは OpenRTM-aist を提供しています。 RT System Editor は、この OpenRTM-aist に含まれる開発ツールの1つであり、RTC をリアルタイムにグラフィカル操作する機能を持っています。また、Eclipse 統合開発環境のプラグインとして作成されており、Eclipse上にて既存のプラグインとシームレスに操作を行うことができます。
ここでは、 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.2.1 | Eclipse 本体 |
3 | Eclipse EMF 2.2.4 EMF+SDO Runtime および XSD Runtime | RT System Editor が依存する Eclipse プラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
4 | Eclipse GEF 3.2.2 | RT System Editor が依存する Eclipse プラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
5 | Eclipse Java development tools(JDT) | ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
6 | RT Name Service View | RT System Editorが依存するOpenRTM-aistに含まれる開発ツール |
7 | RT Repository View | RT System Editorが依存するOpenRTM-aistに含まれる開発ツール |
RTSystemEditor は、 OpenRTM-aist を対象に開発されたものです。その他の RTC プラットフォームに対する操作は想定しておりません。
インストール後、 Eclipse を初めて起動すると、以下のようなページが表示されます。
この Welcome ページを左上の「X」により閉じると以下のページが表示されます。
右上の「 Open Perspective 」ボタンを押下し、プルダウンの「 その他(O)… 」ボタンを押下します。
「 RT System Editor 」を選択することで、 RTSystemEditor が起動します。
RTSystemEditor では、以下のようなビューを使用します。
№ | ビュー名 | 説明 |
1 | ネームサービスビュー | RTCが登録されているネームサービスの内容をツリー表示します。 |
2 | コンフィグレーションビュー | 選択されているRTCのコンフィグレーション情報を表示/編集します。 |
3 | マネージャコントロールビュー | 選択されているマネージャを制御します。 |
4 | 複合コンポーネントビュー | 選択されている複合RTCのポート公開情報を表示/設定します。 |
5 | プロパティビュー | 選択されているRTCのプロファイル情報を表示します。 |
6 | システムエディタ | RTCをグラフィカルに表示し、RTシステムを作成します。 |
7 | オフラインシステムエディタ | RTリポジトリやローカルのRTコンポーネント仕様ファイルの内容をグラフィカルに表示し、RTシステムを作成します。 |
この後の節では、各ビューについてそれぞれ解説していきます。
ネームサービスビューは、RTCをリアルタイムにグラフィカル操作する機能を持っています。提供される機能の一覧は以下のとおりです。
No. | 機能名称 | 機能概要 |
1 | ネームサーバ接続/編集機能 | ネームサーバに接続し、登録されているコンポーネントをネームサービスビューにツリー形式で表示する。 |
2 | コンポーネントプロファイル表示機能 | 選択したコンポーネントのプロファイル情報をプロパティビューに表示する。 |
メニューから[ウィンドウ]-[ビューの表示]-[Name Service View]を指示すると、ネームサービスビューが表示されます。
ネームサーバに接続するには、ネームサービスビューの上部に存在するボタンを押下するか、コンテキストメニューにて「ネームサーバを追加」を選択します。
ネームサーバ接続ダイアログでは、IPアドレスおよびポート番号を入力します。(ポート番号が省略された場合には、設定画面で設定されたポート番号が使用されます。デフォルトのポート番号は2809番ポートです)
接続しているネームサーバを画面から削除するには、ネームサーバを選択し「ビューから削除」を実行します。
接続したネームサーバにコンポーネントが登録されていると、以下のように登録内容がツリー形式で表示されます。
各アイコンの意味は以下のとおりです。
№ | アイコン | 種類(KIND) | 名前 |
1 | ![]() |
host_cxt | ホストコンテキスト |
2 | ![]() |
mgr_cxt | マネージャコンテキスト |
3 | ![]() |
cate_cxt | カテゴリコンテキスト |
4 | ![]() |
mod_cxt | モジュールコンテキスト |
5 | ![]() |
上記以外 | フォルダ(上記以外のコンテキスト) |
6 | ![]() |
なし | RTC |
7 | ![]() |
なし | マネージャ |
8 | ![]() |
なし | オブジェクト(RTC以外のオブジェクト) |
9 | ![]() |
なし | ネームサーバにエントリされてはいるが、実体のオブジェクトにアクセスできないゾンビオブジェクト |
ネームサービスビューは、接続先の各ネームサーバを常に監視し、表示の同期・更新を行っています。(監視の周期は、設定画面の[[接続周期:]]で変更することができます)。 また、明示的にネームサーバの内容を再取得する場合にはリフレッシュを行うことができます。リフレッシュを行うには、ネームサービスビューの上部に存在するボタンを押下するか、コンテキストメニューにて「更新」を選択します。
ネームサービスビューでは、RTCの数が多くなることによって操作する範囲が煩雑化するのを防ぐために、表示ルートの位置を移動する機能があります。
表示ルートを移動するには、移動する先を選択し、「次へジャンプ」で移動します。
移動後は、「戻る」で1階層上に上ることができます。また、「ホームへ戻る」で最上位の階層に戻ります。
ネームサービスビューでは、RTCの数が多くなることによって操作する範囲が煩雑化するのを防ぐための、もうひとつの方法として、フィルター(表示するエントリの種類を限定)する機能があります。
フィルタを行うには、ネームサービスビューの上部に存在する「フィルタを設定」ボタンを押下します。
「フィルタを設定」ダイアログでは、非表示にするエントリの種類を、「ビューから除外するエレメントを選択」欄から選択します。
ネームサービスビューの表示から除外したい要素にチェックをつけると、ネームサービスビューに表示されなくなります。
「Naming object name」を有効にすると、オブジェクト名の条件に一致するものが非表示となります。
オブジェクト名の条件は前方一致と部分一致が選択できます。
ネームサービスビューでは、ネームサービスのネーミングオブジェクトのエントリを削除することができます。ネーミングオブジェクトを削除するには、コンテキストメニューにて「ネームサービスから削除」ボタンを押下します。
ネームサービスビューで、ネームサービスにオブジェクトのエントリを登録することができます。
オブジェクトを登録するには、配下にオブジェクトを追加したいコンテキストおよびオブジェクトのコンテキストメニューから、「オブジェクトを追加」を指示します。
ネームサービスビューで、ネームサービスにコンテキストのエントリを登録することができます。
コンテキストを登録するには、配下にコンテキストを追加したいコンテキストのコンテキストメニューから、「コンテキストを追加」を指示します。
「コンテキストを追加」ダイアログでは、コンテキストの名前(name)、種類(kind)を指定します。
種類(kind)には以下のいずれかの値を選択します。
№ | 種類(KIND) | 名前 |
1 | host_cxt | ホストコンテキスト |
2 | mgr_cxt | マネージャコンテキスト |
3 | cate_cxt | カテゴリコンテキスト |
4 | mod_cxt | モジュールコンテキスト |
5 | 上記以外を入力 | フォルダ(上記以外のコンテキスト) |
ネームサービスビューには、ゾンビオブジェクトを一括して削除する機能があります。ゾンビオブジェクトをすべて削除するには、ネームサービスビューの上部に存在するボタンを押下します。
ここでは、コンフィグレーションビューについて説明します。
コンフィグレーションビューでは、選択されたRTCのコンフィグレーションを表示/編集することができます。左側にCofigurationSetのリストが表示され、右側にConfigurationSet内のプロパティが表示されます。
No. | 説明 |
① | 選択されているコンポーネント名。 |
② | 選択されているConfigurationSet名。 |
③ | アクティブになっているConfigurationSet。また、アクティブなConfigurationSetを変更することができる。 |
④ | ConfigurationSetのリスト。 |
⑤ | 左側で選択されているConfigurationSetのプロパティの名前。 |
⑥ | 左側で選択されているConfigurationSetのプロパティの値。 |
⑦ | ConfigurationSetを追加/削除するボタン。 |
⑧ | プロパティを追加/削除するボタン。 |
⑨ | 設定値の編集ダイアログを開くボタン、および変更内容を適用/キャンセルするボタン。 |
コンフィグレーションビューで編集中の情報は、⑨の適用ボタンが押下されるまで適用されません。また、修正中(未適用)の情報は赤く表示されます。
コンフィグレーションの設定値を編集するには⑨の「Edit Value」ボタンを押下し、編集用のダイアログを開いて編集を行います。
複数のConfigurationSetがある場合は、ダイアログ上部のタブ(⑩)で編集対象を切替えることができます。
コンフィグレーションの各パラメータには、編集用のwidgetを指定することができ、ConfigurationSetにwidget種別が定義されていれば、指定のwidgetでパラメータを編集できます(⑪)。widget種別にはスライダ、スピナ、およびラジオボタンがあり、widget種別の指定がない場合はデフォルトでテキストボックスを使用します。
また、各パラメータには制約条件を指定することができ、widget種別がスライダ、スピンの場合は制約条件の指定が必須となります。該当のwidget種別が定義されていて、制約条件が指定されていない場合はデフォルトのテキストボックスとなります。
widget種別 | イメージ | 説明 |
スライダ | ![]() |
制約条件で指定された最小値、最大値の範囲をスライダで選択します。テキストボックスへの入力も可能です。 |
スピナ | ![]() |
制約条件で指定された最小値、最大値の範囲をスピナで選択します。小数の精度は制約条件の最小値、最大値の記述に準拠します。ただし、負数の指定はできません。例) 最大値が「10.00」の場合は小数2桁 |
ラジオボタン | ![]() |
ラジオボタンで値を選択します。 |
テキストボックス | ![]() |
通常のテキスト入力で設定します。 |
各パラメータに制約条件が指定されていると入力値に対して制約条件のチェックが行われ、条件を満たさない場合はフォームを赤で示します。また、「OK」ボタンで編集確定時に変更のあったConfigurationSetの全パラメータに対して制約条件チェックを行い、制約条件を満たさないパラメータがあったときにはエラーダイアログを表示します。
コンフィグレーション編集ダイアログの「Apply」チェックボックス(⑫)をチェックして「OK」ボタンをクリックすると、変更のあったConfigurationSetに対して編集内容の適用が行われます。(⑨と同様)
コンフィグレーションビューに表示される情報は、RTC選択時に最新の情報をキャッシュして表示しています(コンフィグレーションの編集に備えるため)。このため、いつまでも同じRTCを選択し続けると、システムとの情報差が発生します。RTSystemEditorは編集の適用時に、この差を意識することなく編集中の情報を正として完全に上書きしますのでご注意ください。
また、RTCの仕様上では、プロパティのValueにはあらゆるオブジェクトを登録可能ですが、RTSystemEditorから登録/編集できるのは文字列のみとなります。
ここではマネージャコントロールビューについて説明します。
ネームサービスビューでマネージャを選択すると、マネージャコントロールビューがアクティブになり、選択されたマネージャを制御できるようになります。
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というパラメータを指定する場合は以下のようになります。
その他にも、コンポーネントによって任意のパラメータを指定することができます。&br
ここでは複合コンポーネントビューについて説明します。
複合コンポーネントビューでは、選択された複合RTCのポート公開情報が表示され、ポートの公開/非公開を設定することができます。
No. | 説明 |
① | 複合RTCのインスタンス名。 |
② | 複合RTCのタイプ名。 |
③ | ポートの公開/非公開の状態。 |
④ | 複合RTCに含まれる子RTCのインスタンス名。 |
⑤ | 複合RTCに含まれる子RTCのポート名。 |
⑥ | ポートの公開/非公開の変更を反映させます。 |
⑦ | ポートの公開/非公開の変更をキャンセルします。 |
複合コンポーネントビューで編集中の情報は、⑥の適用ボタンが押下されるまで適用されません。また、修正中(未適用)の情報は薄い赤色で表示されます。また、システムエディタ上で選択したポートは薄い黄色で表示されます。
複合コンポーネントのポートが、別のコンポーネントのポートと接続されている場合は、複合コンポーネントビューで該当のポートがグレイで表示され、編集不可となります。
ここではプロパティビューについて説明します。
プロパティビューでは、 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のLifeCycleStateはExecutionContextごとに存在します。つまり状態は複数存在しますが、RT Name Service Viewでは1番目のExecutionContextのみを使用してSTATEを表示します。
ここでは、システムエディタの概要と基本操作について説明します。
システムエディタでは、RTCの状態がリアルタイムで表示されます。またポート間の接続や、RTCの状態を変更することでシステム構築、動作検証を行うことができます。
新しいシステムエディタを開くには、ツールバーの「 Open New System Editor 」ボタンを押下するか、メニューバーの [ファイル]-[ Open New System Editor] を選択します。
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 | Finalize | 選択されたRTCに対して実行 | Finalize を要求する |
5 | Exit | 〃 | Exit を要求する |
6 | Start | 選択された RTC の1番目の ExecutionContext に対して実行 | Start を要求する |
7 | Stop | 〃 | Activate を要求する |
また、簡易にシステムを操作するための機能として、システムエディタに含まれるすべての RTC へActivate、Deactivate、Start、Stop、変更を要求することがツールバーとコンテキストメニューからできます。
システムエディタでは、 RTC のポート間を接続することができます。
ポート間を接続するには、ポートとポートをドラッグ&ドロップでつなぎます。
ドラッグ&ドロップ終了後、接続に必要な情報の入力を促すダイアログが表示されます。
このダイアログでは、 ConnectorProfile を作成します。 ConnectorProfile は、それぞれのポートが必要とする条件が満たされるように作成される必要がありますが、このダイアログは必要な条件を満たす値のみが入力されるようプルダウンで促します。 必要な条件を満たすことができない接続の場合には、ドラッグ&ドロップの接続時に禁止マークが表示され、ドラッグ&ドロップを行うことができません。
ポート間の接続は、大きくデータポート間接続とサービスポート間接続に分かれます。詳細については「システムエディタ(ポート間の接続 編)」を参照願います。
ポート間の接続を切断するには、接続を選択し Delete ボタンを押下するか、コンテキ29ストメニューに表示される Delete を押下します。
ポートの接続をすべて切断するには、ポートを選択して、右クリックし「すべて切断」を実行します。
複合コンポーネントの操作を説明します。
複数のコンポーネントをまとめて複合コンポーネントにすることができます。
複合コンポーネントにしたいコンポーネントを選択して、右クリックして「複合コンポーネントの作成」を選択すると、複合コンポーネント生成ダイアログが表示されます。
ダイアログの各項目は以下のとおりです。
No. | ダイアログ説明 | 説明 |
① | Manager | ネームサービスビューに表示されているマネージャ一覧からマネージャを選択します。ここで選択されたマネージャが複合コンポーネントを生成します。 |
② | Name | 複合コンポーネントのインスタンス名を指定します。 |
③ | Type | 複合コンポーネントの種別を指定します。指定可能な種別は以下のとおり。 [PeriodicECShared] 各RTCがExecutionContextのみを共有する形で動作します。各RTCの状態は独立しているため、複合コンポーネント内で複数の状態が存在することもあります。 [PeriodicStateShared] 各RTCが同一のExecutionContextを共有するとともに、状態も共有する形で動作します。 [Grouping] 各RTCが何も共有しない複合コンポーネントで、各RTCがそれぞれExecutionContext、状態を保持します。 |
④ | Path | 複合コンポーネントに設定するパスを指定します。 |
⑤ | Port | 子のコンポーネントのポート一覧から、複合コンポーネントに表示するポートを選択します。 ここで選択されたポートに対して、複合コンポーネントにプロキシ用のポートが作成されます。 |
⑥ | - | ポートの全選択・全解除ボタン |
複合コンポーネントを作成すると、子のコンポーネントとして選択していたコンポーネントはシステムエディタ上から表示が消え、新しい複合コンポーネントが描画されます。
複合コンポーネントのダイアグラムをダブルクリックするか、右クリックして「エディタで開く」を選択すると、新しいシステムダイアグラムが開き、複合コンポーネント内部が表示されます。
※
ただし、システム構成の保存時には、コンポーネントの描画情報はコンポーネントに対して1つしか保存できないため、複合コンポーネント内を表示するシステムダイアグラムで変更した描画情報は保存されません。
複合コンポーネント内を表示するシステムエディタを開いて、ネームサービスビューからRTCをドラッグ&ドロップすることで、複合コンポーネントの子が追加されます。追加された子RTCのポートはすべて非公開に設定されます。
複合コンポーネント内を表示するシステムエディタを開いて、そこで子のコンポーネントを削除することで、複合コンポーネントの子が削除されます。
削除された子のコンポーネントは、複合コンポーネント内から表示が消え、元のシステムダイアグラム(複合コンポーネント自身が表示されているダイアグラム)に表示されます。
複合コンポーネント上で右クリックして「Delete」を選択すると、複合コンポーネントがダイアグラムから削除されます。
削除時に複合コンポーネントを別のシステムダイアグラムで開いていると、エディタの終了確認のダイアログが表示されます。
複合コンポーネント上で右クリックして「複合コンポーネントを解除」を選択すると、複合コンポーネントへexist()が送られ、コンポーネント自体を終了します。
解除時に複合コンポーネントを別のシステムダイアグラムで開いていると、エディタの終了確認のダイアログが表示されます。
複合コンポーネントが解除されると、子のコンポーネントが元のシステムダイアグラム(複合コンポーネントが表示されていたダイアグラム)に表示されます。
複合コンポーネント内を表示するシステムエディタにあるコンポーネントのポートが複合コンポーネント上に公開されている場合、下記のように別のアイコンで表示されます。
No. | 名前 | 形状 |
1 | InPort | ![]() |
2 | OutPort | ![]() |
3 | ServicePort | ![]() |
公開されているポートを右クリックして、「非公開」を選択すると、そのポートが公開されていない状態に変わります。また、公開されていないポートを右クリックして、「公開」を選択すると、そのポートが公開されている状態に変わります。
ただし、ポートが別のコンポーネントのポートと接続されている場合は、「非公開」にすることができません。
システムエディタのセーブとオープンについて説明します。
システムエディタはセーブすることができます。セーブするには、メニューの [ファイル] もしくはエディタを右クリックして「 Save 」を選択します。(「 Save As… 」では、セーブするファイルを任意選択することができます)
システムのセーブを選択すると、プロファイル情報ダイアログが開き、必要な項目を設定して「OK」をクリックすると、システムの情報がファイルにセーブされます。
名前 | 形状 |
Vendor | ベンダ名。RTシステムの識別子を構成する要素。 必須項目。 |
System Name | システム名。RTシステムの識別子を構成する要素。 必須項目。 |
Version | システムのバージョン。RTシステムの識別子を構成する要素。 必須項目。 |
Path | システムをセーブするファイル名。 必須項目。 |
Update Log | バージョンの補足説明などを記述。 |
Required | RTシステムを動作させるのに必須のRTCにチェックをつける。 |
セーブしたシステムエディタをオープンするには、エディタを右クリックして「 Open 」を選択します。
オープン後は、 RTSystemEditor はリモートのシステムを正として最新の情報へと更新を行います。セーブ内容をシステムへ復元するには、次の節で説明する「 Open and Restore… 」を使用してください
セーブしたシステムエディタをオープンおよび復元するには、エディタを右クリックして「Open and Restore...」、もしくは「Open and Quick Restore...」を選択します。
また、RTSystemEditorはエラー発生時でも、できる限りの復元を試みます。
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 の描画編集について説明していきます。(「編集」ではなく「描画編集」とあえてしているのは、ここで説明される作業は描画の編集であり、システムに対する影響は全くないためです。)
また、選択された RTC の位置と大きさがステータスバーに表示されます。
データポートの接続で、「 InPort 」と「 OutPort 」を接続します。これらの間をドラッグ&ドロップでつなぐと以下のダイアログが表示されます。
ダイアログの項目と条件は以下のとおりです。
№ | ダイアログ項目名 | 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 | properties "buffer.length" | バッファの長さ |
⑩ | Buffer full policy | properties "buffer.write.full_policy" | バッファへのデータ書き込み時に、バッファフルだった場合の挙動。overwrite、do_nothing、blockから選択します。 overwrite:データを上書きします。 do_nothing:何もしません。 block:ブロックします。 block を指定した場合、次の timeout 値を指定すれば、指定時間後書き込み不可能であればタイムアウトします。 デフォルトは overwrite (上書き)です。 |
⑪ | Buffer write timeout | properties " buffer.write.timeout" | バッファへのデータ書き込み時に、タイムアウトアウトイベントを発生させるまでの時間(単位:秒) デフォルトは 1.0 [sec]です。0.0を設定した場合はタイムアウトしません。 |
⑫ | Buffer empty policy | properties "buffer.read.empty_policy” | バッファからのデータ読み出し時に、バッファが空だった場合の挙動。readblock、do_nothing、blockから選択します。 readblock:最後の要素を再読み出します。 do_nothing:何もしません。 block:ブロックします。 block を指定した場合、次の timeout 値を指定すれば、指定時間後読み出し不可能であればタイムアウトします。 デフォルトは readbackです。 |
⑬ | Buffer read timeout | properties " buffer.read.timeout" | バッファからのデータ読み出し時に、タイムアウトイベントを発生させるための時間(単位:秒) デフォルトは 1.0 [sec]です。0.0を設定した場合はタイムアウトしません。 |
サービスポート間の接続では、「ServicePort」と「ServicePort」を接続します。これらの間をドラッグ&ドロップでつなぐと以下のダイアログが表示されます。
ダイアログの項目と条件は以下のとおりです。
№ | ダイアログ項目名 | ConnectorProfile | 必要条件 |
① | Name | Name | 特になし |
② | properties "rtc_iname" properties "port_name" properties "interfaces.if_iname" |
インターフェース接続対象のサービスポートに複数のサービスインターフェースが定義されていた場合に有効。どのインターフェースを接続するかを指定できます。 |
サービスポートの場合、必須となる接続の条件はありません。しかし、 ServicePort 間での PortInterfaceProfile が完全にマッチング(※1)しない場合、接続ダイアログにて警告を表示します。
ここでは、オフラインシステムエディタの概要について説明します。
新しいオフラインシステムエディタを開くには、ツールバーの「Open New Offline System Editor」ボタンを押下するか、メニューバーの[ファイル]-[ Open New Offline System Editor]を選択します。
コンポーネント仕様をオフラインシステムエディタに配置するには、リポジトリビューからコンポーネント仕様をドラッグ&ドロップします。
オフラインシステムエディタでは、システムエディタで行えることのうち、実行時コンポーネントの動作に関すること以外のほとんどの操作を、システムエディタと同様の操作で行うことができます。
ここでは、 RT System Editor の設定画面について説明します。 RT System Editor の設定画面は、メニューの [window]-[preferences…]-[RT System Editor] で表示することができます。
接続周期とは、 RT System Editor がシステムの情報を収集して表示へ反映する周期のことです。
単位はミリ秒で、0を指定した場合には、同期は行われません。
表示色の設定画面では、システムエディタにて表示される RTC と ExecutionContext 状態の色を設定することができます。それぞれの状態の意味については、システムエディタのRTCの表示をご覧ください。
接続周期とは、RT Name Service Viewがシステムの情報を収集して表示へ反映する周期のことです。 単位はミリ秒で、0を指定した場合には、同期は行われません。デフォルトポート番号には、Name Serviceのポート番号の既定値を指定します。
タイムアウト待ち時間は、システムの情報を収集する際、システムとの接続が確立されない場合に待機する時間です(単位はミリ秒)。
接続周期と同期タイムアウト待ち時間の関係は下図のようになります。
(例 接続周期が1000ms、同期タイムアウト待ち時間が100msの場合)
A. RT System Editor は常にシステムの情報を収集しながら表示に同期しています。このシステム情報を収集する際に、動作していないオブジェクトのリファレンスにアクセスするとタイムアウト待ちを起こして極端に遅くなることがあります。 動作していないオブジェクトが発生した場合には、ネームサービスビューから「 Delete from NameService 」を行って削除を行い、また動作していないオブジェクトとポート接続しているオブジェクトを、ネームサービスおよびシステムエディタから削除するとパフォーマンスが戻ることがあります。
Apache Jakarta Commons Lang Copyright 2001-2006 The Apache Software Foundation
This product includes software developed by The Apache Software Foundation.