Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
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で通信ミドルウェアにTAOを使用した場合に各種通信プロトコルを使用するための設定ファイルの作成方法を説明します。 TAOではIIOP、DIOP、UIOP、HTIOP、SHMIOP、SSLIOP、SCIOP、MIOP、COIOP、ZIOP通信が使用可能です。 ただし、IIOP、SSLIOP、ZIOP通信以外は独自規格のプロトコルのため、他のCORBA実装との互換性はありません。
DIOP
DIOP(Datagram Inter-ORB Protocol)はGIOPをUDP/IP上の実装であり、IIOP(TCP/IP)と比較すると軽量ですが到達保障がない通信プロトコルです。 IIOP通信との大きな違いとしてCORBAサービスの呼び出しが一方通行であり、戻り値を取ることができません。 例えば、外部のツールからRTCのコンポーネントプロファイルを取得する場合には、DIOP通信では戻り値(コンポーネントプロファイル)を取得できないため使用できません。
OpenRTM-aistでDIOP通信を使用するために、データポートのデータ転送用に以下のoneway属性のメソッドを定義しています。
実際に使用する場合は、以下の図のようにデータポートのデータ送信にDIOP通信を用いて、それ以外はIIOP等の別の通信で接続する必要があります。
以下にrtc.confの設定例を記載します。 IIOPとDIOPのエンドポイントを設定します。
corba.args: -ORBEndpoint iiop://: -ORBEndpoint diop://: -ORBSvcConf svc.conf
svc.confはTAOの設定ファイルです。 svc.confという名前のファイルが実行パスに存在すれば自動的に読み込みますが、ORBSvcConfオプションで明示的に指定もできます。
以下にsvc.confでは以下のようにORBProtocolFactoryの設定を行います。
OpenRTM-aistでインストールされるrtc.diop.conf、svc.confを使用することもできます。
ポート接続時にInterface Typeにcorba_cdr_udpを指定して接続することでDIOP通信によりデータの転送を行います。
RT System EditorではConnector Profileで設定します。
rtc.confではinterface_typeをcorba_cdr_udpに設定して事前接続設定をします。
HTIOP
HTIOP(HTTP Tunneling Inter-ORB Protocol)はGIOPメッセージをHTTPパケットで送信する通信プロトコルです。 HTIOP通信の利点としては、ファイアーウォールやHTTPプロキシサーバを経由した通信が容易になる事や、リバースプロキシやロードバランサー等の既存の仕組みを流用しやすいという事が挙げられます。
まずはネームサーバーを起動しますが、ネームサーバーにもHTIOPのエンドポイントを設定する必要があります。 以下の内容の設定ファイルsvc.names.htiop.confを作成してください。
TAO付属のネームサーバーtao_cosnamingを起動します。 WindowsでOpenRTM-aistをビルドした場合、${RTM_ROOT}/ACE/${RTM_VC_VERSION}/bin/tao_cosnaming.exeにコピーしています。Ubuntuの場合はTAOをインストールした時に${OPENRTM_INSTALL_DIR}/binに入っているものを使用してください。
以下のように作成したsvc.names.htiop.confを指定してtao_cosnamingを起動します。
CosoleIn、ConsoleOutコンポーネントを以下の内容のrtc.confで起動します。
corba.argsオプションはTAOのORB_init関数への引数を指定します。 HTIOPのエンドポイントとTAOの設定ファイル(ext/svc.htiop.conf)を設定しています。
設定ファイルsvc.htiop.confは以下の内容で作成します。
また、接続するネームサーバーの設定を行います。 ネームサーバーはHTIOPのエンドポイント(htiop:localhost:2809)を指定します。
HTIOP通信を使用する場合、RT System EditorやrtshellではRTCを操作できません。 現在のところ、独自にプログラムを作成するか、マネージャ起動時の事前接続(preconnect)、事前アクティブ化(preactivation)の設定を行う必要があります。
HT_Config.confでプロキシサーバーの設定を行うことができます。
以下にHTIOP通信時のHTTPパケットの内容の一例を掲載します。 GETメソッド実行後にPOSTメソッドを実行します。POSTメソッドのボディにGIOPメッセージを格納して送信します。
SSLIOP
SSLIOP(Secure Sockets Layer (SSL) Inter-ORB Protocol)は、GIOPにSSL/TLSによるサーバー・クライアント認証、通信内容の暗号化を適用した通信プロトコルでセキュアな通信が可能になります。
まず、OpenRTM-aistをビルドする時にCMake実行でSSL_ENABLEオプションをオンにしてください。
OpenRTM-aistをビルド、インストール後に、まずはネームサーバーを起動します。 ネームサーバーにはSSLIOPのエンドポイントを指定するため、以下の内容の設定ファイルsvc.names.ssliop.confを作成してください。
SSLPrivateKeyオプションでは秘密鍵、SSLCertificateオプションではサーバー証明書、SSLCAfileではルート証明書を指定します。
TAO付属のネームサーバーtao_cosnamingを起動します。
以下のように作成したsvc.names.ssliop.confを指定してtao_cosnamingを起動します。
CosoleIn、ConsoleOutコンポーネントを以下の内容のrtc.confで起動します。
corba.argsオプションはTAOのORB_init関数への引数を指定します。 SSLIOPのエンドポイントとTAOの設定ファイル(ext/svc.ssliop.conf)を設定しています。
''svc.ssliop.conf'は以下の内容で作成します。
また、接続するネームサーバーの設定を行います。 ネームサーバーはSSLIOPのエンドポイント(ssliop:127.0.0.1:2809)を指定します。
SSLIOP通信はOMG CORBA Security Service仕様の規格のため、omniORBやOiL等の他の実装との通信も可能です。 このため、rtshellでポートの接続、RTCのアクティブ化の操作ができます。rtshellによるSSLIOP通信の利用方法はについては以下のページを参考にしてください。
rtc.confに記述したように、マネージャ起動時の事前接続(preconnect)、事前アクティブ化(preactivation)の設定を行う事もできます。
SHMIOP
SHMIOP(Shared Memory Inter-ORB Protocol)は共有メモリでGIOPメッセージをやり取りするための通信プロトコルです。 共有メモリの読み書きでデータを転送するためTCP/IP通信での転送と比較するとパフォーマンスの向上が期待できます。 ただし、データの転送は共有メモリですが、データ書き込みの通知にTCP/IP通信を使用しています。
簡単な動作確認
OpenRTM-aistをビルド、インストールすると、上記の通信プロトコルの簡単な動作確認用の設定ファイルがインストールされます。
DIOP
HTIOP
SSLIOP