ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
とりあえず例のツールに機能を追加しました。
これで欲しかった機能はほぼ実装できたと思います。
これを使えば複合コンポーネントの利用が多少楽になるかもしれないです。
あらかじめ、Python2.7、pyQt4、OpenRTM-aist-Python-1.1.0-Release、rtctree、rtcprofile、rtshellをインストールしておいてください。
動作手順としては、
まずはSettingRTSystem.pyをダブルクリックして実行してください。
ツールが起動したら、新規作成ボタンを押してプロジェクトを新規作成します。
次にCPP、Pythonタブを選択→RTコンポーネントをファイルから読み込みボタンを押下して、起動したいRTCのDLL、Pythonファイルを選択します。
※この時モジュールの存在するディレクトリへのパスは相対パスで入力されるので作成したプロジェクトとモジュール、ツールを解凍したフォルダとの位置関係は変更しないでください、
今のところツールを解凍したフォルダのprojectフォルダにプロジェクトを作成してモジュールも同梱することを推奨しています。
ただし/usr/local/components/libに存在するモジュールを指定した場合のみ絶対パスで入力されるようになっています。Linuxの場合、RTCをビルド後make installと入力するとこのフォルダにモジュールがコピーされるので、それを利用させてもらっています。
次にRTCDタブに戻ってrtcd起動ボタンを押すことで選択したRTCを起動できます。
そしてRTシステムエディタでデータポート、サービスポートの接続、コンフィギュレーションパラメータの設定を行い、必要であれば複合コンポーネント作成します(必要でない場合はしなくてもかまいません)。
複合コンポーネントを起動するマネージャはツールと同時に起動したmanager_compositeをしていしてください。
そしてFile→Saveを選択して任意の場所にプロジェクトを保存してください。
すると作成したプロジェクトのフォルダ内にバッチファイルが生成されています。
この中のstart.bat(Linuxではstart.sh)を実行すると先ほど選択したRTCの起動、複合コンポーネントの起動、RTシステムの復元までを行います。
複合コンポーネント内で実行順序を設定したい場合は実行順序設定可能な実行コンテキストを指定する事もできます。
実行コンテキストタブから実行コンテキストをファイルから読み込みボタンを押下して、C++の場合はExecutionContext/MultipleOrderedEC/MultipleOrderedEC.dll、Pythonの場合はExecutionContext/MultipleOrderedEC-Python/MultipleOrderedEC.pyを指定します。
また別のマシン上でプロジェクトを作成したい場合、GUIを起動する側のマシンでは上記の通りツールを起動して、プロジェクトを作成する側のマシンではrtcConfSet/rtcConfSet.pyを起動してください。
そして以下のようにプロジェクトを作成する側のIPアドレスを指定することで作業ができます。
RTシステムの復元も行えるようになっていますが、通常の設定では先ほどの作業で指定したRTCとそれに接続されたRTCに関してのみ保存されるようになっています。
別プロセスでRTCを起動して、そのRTCに関しても保存したい場合はRTCのツリーから選択して外部のRTCをシステムに追加ボタンを押してください。
ツリーはRTCツリー更新ボタンを押すと表示されます。
まあこんなところか。
複合コンポーネントを作成する際にmanager_composite.mgrというマスターマネージャを指定してありますが、プロジェクト保存後に起動するとC++、もしくはPythonのrtcdで複合コンポーネントを起動するようにしています。C++のRTCが1つでも含まれているとC++のrtcdで複合コンポーネントを起動します。子RTCと同一プロセスで複合コンポーネントを起動することで子コンポーネントのコールバックを呼び出す際のオーバーヘッドを多少は軽減しています。
まだ使いづらい部分があるので改善していきたいとは思います。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
これで欲しかった機能はほぼ実装できたと思います。
これを使えば複合コンポーネントの利用が多少楽になるかもしれないです。
あらかじめ、Python2.7、pyQt4、OpenRTM-aist-Python-1.1.0-Release、rtctree、rtcprofile、rtshellをインストールしておいてください。
動作手順としては、
まずはSettingRTSystem.pyをダブルクリックして実行してください。
ツールが起動したら、新規作成ボタンを押してプロジェクトを新規作成します。
次にCPP、Pythonタブを選択→RTコンポーネントをファイルから読み込みボタンを押下して、起動したいRTCのDLL、Pythonファイルを選択します。
※この時モジュールの存在するディレクトリへのパスは相対パスで入力されるので作成したプロジェクトとモジュール、ツールを解凍したフォルダとの位置関係は変更しないでください、
今のところツールを解凍したフォルダのprojectフォルダにプロジェクトを作成してモジュールも同梱することを推奨しています。
ただし/usr/local/components/libに存在するモジュールを指定した場合のみ絶対パスで入力されるようになっています。Linuxの場合、RTCをビルド後make installと入力するとこのフォルダにモジュールがコピーされるので、それを利用させてもらっています。
次にRTCDタブに戻ってrtcd起動ボタンを押すことで選択したRTCを起動できます。
そしてRTシステムエディタでデータポート、サービスポートの接続、コンフィギュレーションパラメータの設定を行い、必要であれば複合コンポーネント作成します(必要でない場合はしなくてもかまいません)。
複合コンポーネントを起動するマネージャはツールと同時に起動したmanager_compositeをしていしてください。
そしてFile→Saveを選択して任意の場所にプロジェクトを保存してください。
すると作成したプロジェクトのフォルダ内にバッチファイルが生成されています。
この中のstart.bat(Linuxではstart.sh)を実行すると先ほど選択したRTCの起動、複合コンポーネントの起動、RTシステムの復元までを行います。
複合コンポーネント内で実行順序を設定したい場合は実行順序設定可能な実行コンテキストを指定する事もできます。
実行コンテキストタブから実行コンテキストをファイルから読み込みボタンを押下して、C++の場合はExecutionContext/MultipleOrderedEC/MultipleOrderedEC.dll、Pythonの場合はExecutionContext/MultipleOrderedEC-Python/MultipleOrderedEC.pyを指定します。
また別のマシン上でプロジェクトを作成したい場合、GUIを起動する側のマシンでは上記の通りツールを起動して、プロジェクトを作成する側のマシンではrtcConfSet/rtcConfSet.pyを起動してください。
そして以下のようにプロジェクトを作成する側のIPアドレスを指定することで作業ができます。
RTシステムの復元も行えるようになっていますが、通常の設定では先ほどの作業で指定したRTCとそれに接続されたRTCに関してのみ保存されるようになっています。
別プロセスでRTCを起動して、そのRTCに関しても保存したい場合はRTCのツリーから選択して外部のRTCをシステムに追加ボタンを押してください。
ツリーはRTCツリー更新ボタンを押すと表示されます。
まあこんなところか。
複合コンポーネントを作成する際にmanager_composite.mgrというマスターマネージャを指定してありますが、プロジェクト保存後に起動するとC++、もしくはPythonのrtcdで複合コンポーネントを起動するようにしています。C++のRTCが1つでも含まれているとC++のrtcdで複合コンポーネントを起動します。子RTCと同一プロセスで複合コンポーネントを起動することで子コンポーネントのコールバックを呼び出す際のオーバーヘッドを多少は軽減しています。
まだ使いづらい部分があるので改善していきたいとは思います。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする