Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 154 |
RT-Middleware | 35 |
Tools | 23 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
このページではOpenRTM-aistのRTC操作関数群CORBA_RTCUtil機能の利用方法に説明します。
今回使用したソースコードは以下から入手できます。
事前準備
C++
C++の場合はOpenRTM-aistとリンクしたプログラムをビルドする環境が必要です。
以下のCMakeLists.txtを作成してください。
また、CORBA_RTCUtil_test.cppのソースファイルを作成してCMakeを実行します。 ソースコードからビルドしたOpenRTM-aistを使う場合は、environment-setup.omniorb.vc**.batを実行します。
CORBA_RTCUtil_test.cppには以下の内容を記述しておきます。
Python
Pythonの場合は以下のCORBA_RTCUtil_test.pyを用意してください。
rtc.confの作成
以下の内容のrtc.confを作成してください。
サンプルコンポーネントの起動
ConsoleIn、ConsoleOut、ConfiguSample、MyServiceProvider、MyServiceConsumerのサンプルコンポーネントを起動しておきます。
CORBA_RTCUtilの利用
ポートの操作
ポートのオブジェクトリファレンス取得
データポートの接続のために、ポートのオブジェクトリファレンスを取得するget_port_by_name関数を使用します。
またget_port_by_url関数を使用すると、rtcname形式、rtcloc形式の文字列からオブジェクトリファレンスを取得できます。
コネクタ生成
取得したデータポートをconnect関数で接続します。
コネクタ削除
コネクタ名を指定してコネクタを削除するためにはdisconnect_connector_name関数を使用します。
コネクタのURIからオブジェクトリファレンスを取得してコネクタを削除する場合はdisconnect_connector_name関数を使用します。
複数のポートを一括で接続
複数のポートを一度に接続するためにはconnect_multi関数を使用します。
すべてのコネクタを削除
対象ポートのすべてのコネクタを削除するためにはdisconnect_all関数を使います。
RTCの状態操作
アクティブ化
RTCをアクティブ化するためにはactivate関数を使用します。
RTCは状態を実行コンテキストごとに持っているため、デフォルトの実行コンテキスト(ID:0)以外で状態を変更する場合はec_idを指定します。
非アクティブ化
RTCを非アクティブ化するためにはdeactivate関数を使用します。
リセット
RTCをリセットするためにはreset関数を使用します。
RTCの状態取得
RTCの現在の状態を取得するためにはget_state関数を使用します。
また、is_in_inactive関数、is_in_active関数、is_in_error関数で現在の状態が非アクティブ状態、アクティブ状態、エラー状態かを判定できます。
if (CORBA_RTCUtil::is_in_inactive(consoleout.in()))
実行コンテキストの操作
実行周期の操作
実行コンテキストの実行周期を変更するには、set_default_rate関数を使用します。
set_default_rate関数はデフォルトの実行コンテキストの実行周期を取得しますが、指定IDの実行コンテキストから実行周期を取得するためにはset_current_rate関数を使用します。
現在の実行周期を取得するためには、get_default_rate関数を使用します。
指定IDの実行コンテキストから実行周期を取得するためにはget_current_rate関数を使用します。
実行コンテキストのアタッチ、デタッチ
通常はRTCが起動時に生成する実行コンテキストが関連付け(アタッチ)されていますが、、外部の実行コンテキストをRTCにアタッチすると、アタッチした実行コンテキストでRTCを駆動できるようになります。
実行コンテキストを指定のRTCにアタッチするためにはadd_rtc_to_default_ec関数を使用します。
アタッチした実行コンテキストの関連付け解除(デタッチ)するためにはremove_rtc_to_default_ec関数を使用します。
アタッチした外部RTCの一覧を取得するためにはget_participants_rtc関数を使用します。
コンフィギュレーションパラメータの操作
コンフィギュレーションパラメータの設定をするためにはset_active_configuration関数を使用します。 この関数では現在アクティブなコンフィギュレーションセットのパラメータが設定されます。
コンフィギュレーションセットを指定してパラメータを設定する場合はset_configuration関数を使用します。 この関数を実行すると、アクティブなコンフィギュレーションセットが変更されます。
現在アクティブなコンフィギュレーションセットの名前を取得するにはget_active_configuration_name関数を使用します。
アクティブなコンフィギュレーションセットのパラメータ一覧を取得するにはget_active_configuration関数を使用します。
コンフィギュレーションセットを指定してパラメータ一覧を取得するにはget_configuration関数を使用します。
指定のパラメータのみを取得する場合はget_parameter_by_key関数を使用します。
RTC、ポートの情報取得
RTCの情報取得
コンポーネントプロファイルを取得するにはget_component_profile関数を使用します。
ポート名取得
指定のRTCが保持しているポートの名前一覧を取得するにはget_port_names関数を使用します。
InPortの名前一覧を取得するにはget_inport_names関数、OutPortの名前一覧を取得するにはget_outport_names関数、サービスポートの名前一覧を取得するにはget_svcport_names関数を使用します。
コネクタの名前一覧取得
指定ポートのコネクタの名前一覧を取得するにはget_connector_names関数を使用します。
ポート名を指定してコネクタの名前一覧を取得することもできます。