ダウンロード
最新バージョン : 2.1.0-RELESE
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM@Github
OpenRTM-aist GitHubサイト
ROS
Robot Operating System
Choreonoid
モーションエディタ/シミュレータ
DAQ-Middleware
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM-aist GitHubサイト
Robot Operating System
モーションエディタ/シミュレータ
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
UNIX系システムでのビルドとインストール
対応OSおよびディストリビューション
OpenRTM-aist-0.4.0 は下記の OS および Linux ディストリビューションで動作 することが確認されています。
動作条件
OpenRTM-aist-0.4.0 のインストールには下記のパッケージが必要です。
なお、下記の OS 及び Linux ディストリビューションについては、これらのパッケージをインストールするためのスクリプトが build ディレクトリの下にあります。
※ FreeBSD, Debian, Ubuntu Linux は、ACE および omniORB が OS 標準のパッケージとして提供されていますので、各 OS 付属のパッケージインストールツールを用いて手動でインストールすることもできます。
上記以外のOSにおいては、それぞれのパッケージのドキュメントに従いインストールを行ってください。これらのパッケージが、標準のディレクトリ(/usr, /usr/local 等)下にインストールされていると、以降の OpenRTM-aist のコンパイル作業を比較的簡単に行うことができます。
ソースコードの展開
まずソースコード OpenRTM-aist-0.4.0.tar.gz を適当なディレクトリに展開します。
ビルド
OpenRTM-aist はパッケージのビルドに autoconf, automake を使用しています。ビルドの仕方は、他の autoconf, automake を使用したパッケージと同様に行います。
./configureに与えることのできるオプションの一部を以下に示します。
使用するORB
※現在はomniORBしかサポートされていません。他のオプションは将来のために予約され ています。
生成するラッパーモジュールの種類の指定(現在無効)
OpenRTM-aist-0.4.0 でサポートされていたPython用のラッパーモジュールは、 OpenRTM-aist-0.4.0 ではサポートされなくなりました。
gcc3.x以前のコンパイラ(gcc2.95.x等)を使用する場合
バージョン3未満のgccではテンプレートのコンパイルで不具合が生じますので、 gcc2.95.xなどのコンパイラを使用する場合は、以下のオプションを指定してください。
ACE include パス, lib パス
ACE が標準的なディレクトリにインスト一ルされていない場合以下のオプションでへッダ とライブラリのディレクトリを指定して下さい。
ACE_wrppersが仮に "/tmp/src/ACE_wrappers" 以下にインストールされている場合
のように指定します。
その他
その他使用可能なオプションは
で参照して下さい。
make
configure が正常に終了したことを確認して下さい。正常に終了したらmakeします。
インストールするためには少なくとも
以下のディレクトリが正常にビルドされている必要があります。ビルドが正常に終了し たら、ヘッダファイル、ライブラリ、ユーティリティコマンド群をインストールします。
サンプルのテスト
インストールが正常に終了したら、example/SimpleIO 以下のサンプルでテストします。
はじめにターミナル画面が2つ開き、数秒後にもうひとつ開きます。 3つ目のターミナル画面が開くまで、必ず待ってください。 ウインドウタイトルに ConsoleIn とある方で数字を打ち込みます。入力する数字は、 short int に収まる範囲の数値を入力してください。数字を打ち込むと、ConsoleOut とウインドウタイトルのある方から、入力したのと同じ数字と時刻 (sec:nsecのフォー マットになっている)が現れます。 ここまでできれば、ライブラリ (libRTC.so) が正しくビルドされていることがわかりま す。
コンポーネントテンプレートのテスト
次に、コンポーネントのテンプレートジェネレータを使用して、簡単なコンポーネントを作成するテストを行います。テンプレートジェネレータ (rtc-template) を使用します。コンポーネントを作成するデイレクトリ(任意のディレクトリで結構です。)を作成して、そこでコンポーネントを作成しコンパイルしてみます。
まずはhelpを見てみます。
> rtc-template --help Usage: rtc-template [OPTIONS] Options: [-h] Print short help. [--help] Print details help. [--backend[=backend] or -b] Specify template code generator. [--module-name[=name]] Your module name. [--module-desc[=description]] Module description. [--module-version[=version]] Module version. [--module-vendor[=vendor]] Module vendor. [--module-category[=category]] Module category. [--module-comp-type[=component_type]] Component type. [--module-act-type[=activity_type]] Component's activity type. [--module-max-inst[=max_instance]] Number of maximum instance. [--module-lang[=language]] Language. [--config[=ParamName:Type:Default]] Configuration variable. [--inport[=PortName:Type]] InPort's name and type. [--outport[=PortName:Type]] OutPort's name and type [--service[=PortName:Name:Type]] Service Provider Port [--service-idl[=IDL_file]] IDL file name for service [--consumer[=PortName:Name:Type]] Service Consumer Port [--consumer-idl[=IDL_file]] IDL file name for consumer [--idl-include=[path]] Search path for IDL compile : 中略 : Example: rtc-template -bcxx --module-name=Sample --module-desc='Sample component' --module-version=0.1 --module-vendor=AIST --module-category=Generic --module-comp-type=DataFlowComponent --module-act-type=SPORADIC --module-max-inst=10 --config=int_param0:int:0 --config=int_param1:int:1 --config=double_param0:double:3.14 --config=double_param1:double:9.99 --config="str_param0:std::string:hoge" --config="str_param1:std::string:foo" --inport=Ref:TimedFloat --inport=Sens:TimedFloat --outport=Ctrl:TimedDouble --outport=Monitor:TimedShort --service=MySvcPort:myservice0:MyService --consumer=YourSvcPort:yourservice0:YourService --service-idl=MyService.idl --consumer-idl=YourService.idlrtc-template に対して作成したいコンポーネントの設定を引数として渡すと、 コンポーネントの雛形を作成します。ここでは、help の表示の最後に表示されたExample: 以下をコピーして試してみます。
Example の例では、サービスプロバイダとして MyService、サービスコンシューマとして YourService を利用するオプションが与えられており、そのためのIDLファイルをカレントディレクトリにおいておく必要があります。 ここでは、簡単なIDLファイルを以下のように作成しておきます。
interface MyService { void echo(); };interface YourService { void echo(); };これらのファイルを作成したら、"Example" の例をコピー&ペーストするなどして、 コマンドとして入力します。
このように、コンポーネントのC++のコード、サービスの実装コード、およびMakefileが作成されます。ここで、
として make します。
> make -f Makefile.Sample : 中略 : c++ -o SampleComp Sample.o MyServiceSkel.o YourServiceStub.o MyServiceSVC_impl.o SampleComp.o `rtm-config --libs` > ls Makefile.Sample MyServiceSkel.o SampleComp.o MyService.hh MyServiceStub.cpp YourService.hh MyService.idl MyServiceStub.h YourService.idl MyServiceDynSK.cc README.Sample YourServiceDynSK.cc MyServiceSK.cc Sample.cpp YourServiceSK.cc MyServiceSVC_impl.cpp Sample.h YourServiceSkel.cpp MyServiceSVC_impl.h Sample.o YourServiceSkel.h MyServiceSVC_impl.o Sample.so* YourServiceStub.cpp MyServiceSkel.cpp SampleComp* YourServiceStub.h MyServiceSkel.h SampleComp.cpp YourServiceStub.oこれで、ローダブルモジュール版のコンポーネント(Sample.so)と実行形式のコンポーネント(SampleComp)が作成されました。 ここで、実行形式のコンポーネントを実行してみます。 コンポーネントの実行にはコンフィギュレーションファイル(通常は rtc.conf という名前)が必要です。 ここでは、簡易版のものをカレントディレクトリに作成します。
ここで、仮にホスト名:rtm.or.jp ポート番号はデフォルトとします。
次に、CORBA のネーミングサービスを起動します。CORBAのネーミングサービスは、
で起動できますので、先ほどrtc.conf で指定したポート番号を指定して起動して ください。何も指定しなければデフォルトポートを使用します。
次に、コンポーネントを起動します。
具体的なコンポーネントの作成の仕方は、マニュアルを参照してください。
Windows系システムでのビルドとインストール
今後リリースされる予定。