C++言語版の OpenRTM-aist は、パッケージやインストーラーが用意されており、多くの OS やディストリビューションで手軽にインストールすることができます。また、ソースをダウンロードして、自分の環境に合わせてビルドすることもできます。 ここでは、C++言語版 OpenRTM-aist のそれぞれの方法でのインストールの仕方について説明します。
openrtm.org のダウンロードサイトから、msi パッケージをダウンロードします。Python、PyYAML、CMake、Doxygen も必要ですのでインストールしてください。
コンポーネントの開発を行う場合は、Visual Studio が必要です。こちらのページ から無償版をダウンロードできます。
1.1.2 版からは一つの Windows 用インストーラーに3言語(C++、Java、Python)+ツール(Eclipse+rtshell)すべてが同梱されています。古いバージョンは予めアンインストールすることをお勧めします。 また、ダウンロードサイトでの赤字表記の注意書きをご覧ください。
手順については、1.1.2 版用の OpenRTM-aistを10分で始めよう! のページをご覧ください。
1.1.1 版をご利用の場合は、OpenRTM-aistを10分で始めよう!(OpenRTM-aist 1.1.1) のページをご覧ください。
1.0.0 版をご利用の場合は、OpenRTM-aistを10分で始めよう!(OpenRTM-aist 1.0.0) のページをご覧ください。
インストーラーは以下の作業を行います。
RTM_BASE=C:\Program Files (x86)\OpenRTM-aist\ RTM_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1.2\ RTM_VC_VERSION=vc12 RTM_JAVA_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1.2\ OMNI_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1.2\omniORB\4.2.1_vc12\ OpenCV_DIR=C:\Program Files (x86)\OpenRTM-aist\1.1.2\OpenCV2.4.11\ OpenRTM_DIR=C:\Program Files (x86)\OpenRTM-aist\1.1.2\cmake\
C:\Program Files (x86)\OpenRTM-aist\1.1.2\bin\vc12\ C:\Program Files (x86)\OpenRTM-aist\1.1.2\omniORB\4.2.1_vc12\bin\x86_win32\ C:\Program Files (x86)\OpenRTM-aist\1.1.2\OpenCV2.4.11\x86\vc12\bin\
インストール環境の設定を確認するスクリプトを提供しています。スクリプトの使い方、確認できる内容について下記ページで解説しています。
ファイルは以下のような構造でインストールされます。
上記のインストール環境の設定を確認するスクリプトを実行すると、tree コマンドによる OpenRTM-aist 下のディレクトリー構造をログファイルに保存しますので、詳細を確認することができます。
<install_dir> + OpenRTM-aist + 1.x.x :旧バージョンのランタイム + <version> + bin: dll, lib, 各種コマンド + cmake: OpenRTMConfig.cmake + coil: coil ヘッダファイル + Components + CXX: + Examples: C++ サンプルコンポーネント + OpenCV: OpenCVのC++ サンプルコンポーネント + Java: Java サンプルコンポーネント + Python: Python サンプルコンポーネント + etc: rtc.confサンプル + ext: ComponentObserverConsumer + jar: + jre: OpenJDK JRE + omniORB + OpenCV + rtm: OpenRTM-aist ヘッダファイル + idl: OpenRTM-aist IDLファイル + util + OpenRTP: + RTSystemEditor: + rtc-template:
C++版の OpenRTM-aist は、Ubuntu や Debian GNU Linux で利用可能な deb パッケージが提供されています。 対応しているディストリビューションのバージョンは、ダウンロードページから確認できます。 Ubuntu/Debian GNU Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
インストールの方法には大きく分けて以下の2種類のインストール方法があります。
好みの方法でインストールしてください。
openrtm.org が提供するインストール・スクリプト pkg_install_ubuntu.sh または pkg_install_debian.sh をダウンロードページからダウンロードし、root 権限で実行します。このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。
オプションを指定することで、目的に合わせたパッケージをインストールできるようになったので、 初めて OpenRTM-aist をインストールしてみる方にもソースをコンパイルしてみる方にもお勧めします。
一括インストールスクリプトのダウンロード、及び、詳しいインストール方法や、オプション・パッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください。
openrtm.org では apt-get から利用可能なパッケージリポジトリを提供しています。ただし、デフォルトのパッケージリポジトリには含まれていませんので、apt-get の設定を変更する必要があります。
/etc/apt/sources.list に以下の行を追加します。
> su # vi /etc/apt/sources.list # "sources.list" を編集
deb http://openrtm.org/pub/Linux/ubuntu/ (code name) main または deb http://openrtm.org/pub/Linux/debian/ (code name) main
の1行を追加。"(code name)" の部分には以下の debian/ubuntu のバージョンに対応したコードネームを指定します。
バージョン | code name |
Debian GNU Linux | |
Debian 7.0 | wheezy |
Debian 8.0 | jessie |
Debian 9.0 | stretch |
Ubuntu | |
Ubuntu 14.04 LTS | trusty |
Ubuntu 16.04 LTS | xenial |
Ubuntu 16.10 | yakkety |
Ubuntu 17.04 | zesty |
Ubuntun の過去・現在のバージョン/コードネームは、https://wiki.ubuntu.com/Releases から確認できます。
次の手順でインストールを行います。途中、いくつかの応答を求められるので、 y を入力しながら完了させてください。
# apt-get update # apt-get install gcc g++ make uuid-dev # apt-get install libomniorb4-dev omniidl # apt-get install openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example
なお、インストール済みの OpenRTM-aist を特定バージョンのまま保持したい場合には、/etc/apt/preferencesを編集して以下の行を追加します。(この例では1.0系列にバージョンを固定します。)
Package: OpenRTM-aist Pin: version 1.0.*
詳しくは http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-pin を参照してください。
Launchpad は Canonical Ltd. により開発・管理されている、オープンソースソフトウエア開発のためのウェブアプリケーション及びウェブサイト( https://launchpad.net/ )です。 Launchpad サイト内には有志による Ubuntu のパッケージリポジトリ: PPA (Private Package Archive)があり、誰でも自分のソフトウエアのパッケージを公開することができます。
OpenRTM-aist も PPA で Ubuntu 用のパッケージを公開しており、自由に利用することができます。 PPA 上の OpenRTM-aist パッケージを利用する利点は、自分が作成した RTC を PPA 上で公開する場合、依存関係に PPA上の OpenRTM-aist のパッケージを含めることができ、また第3者がその RTC をインストールする際には PPA 上でパッケージの依存関係を完結させることができる点です。
以下、PPA上 の OpenRTM-aist のパッケージをインストールする手順を説明します。
PPA のパッケージインストールする方法は非常に簡単です。
まず、パッケージリポジトリに OpenRTM-aist の PPA のを追加します。OpenRTM-aist の PPAリポジトリ名は openrtm/stable です。
$ sudo add-apt-repository ppa:openrtm/stable
パッケージデータベースをアップデート。
$ sudo aptitude update
パッケージのインストールを行います。パッケージは、openrtm-aist(ランタイム)、openrtm-aist-dev(開発用ヘッダ)、openrtm-aist-doc(ドキュメント)、openrtm-aist-example(サンプル) の4種類の中から必要なものを選択しインストールします。
$ sudo aptitude install openrtm-aist1.1 openrtm-aist1.1-dev openrtm-aist1.1-example
以上です。
OpenRTM-aist の PPAリポジトリは以下の3種類から構成されています。
リポジトリ名 | 概要 |
ppa:openrtm/stable | 基本リポジトリ。通常インストールするパッケージ。命名規則は openrtm-aist[-]{dev,doc,example}: 最新版パッケージ openrtm-aistX.Y[-]{dev,doc,example}: マイナーバージョン別パッケージ |
ppa:openrtm/archives | アーカイブリポジトリ。過去のすべてのバージョンのパッケージ。命名規則は openrtm-aistX.Y.Z[-]{dev,doc,example}: リビジョン別パッケージ |
ppa:openrtm/unstable | 不安定版リポジトリ。RC 版、ベータ版等のパッケージ。 命名規則は openrtm-aistX.Y.ZrcW[-]{dev,doc,example}: リビジョン・RC番号別パッケージ |
インストールを確認します。
$ dpkg -l 'openrtm*' Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii openrtm-aist 1.0.0-0 OpenRTM-aist runtime libraries and configura ii openrtm-aist-d 1.0.0-0 Header files for OpenRTM-aist development pn openrtm-aist-d <none> (no description available) ii openrtm-aist-e 1.0.0-0 OpenRTM-aist examples
各パッケージの内容は以下の通りです。
openrtm-aist にはランタイムライブラリとコマンド群が含まれています。
/usr/bin/rtcd /usr/bin/rtm-naming
/usr/share/doc/openrtm-aist/changelog.gz /usr/share/doc/openrtm-aist/README.Debian /usr/share/doc/openrtm-aist/README /usr/share/doc/openrtm-aist/README.jp /usr/share/doc/openrtm-aist/NEWS.gz /usr/share/doc/openrtm-aist/copyright /usr/share/doc/openrtm-aist/changelog.Debian.gz
/usr/etc/rtc.conf.sample
/usr/lib/libRTC-X.X.X.so.X.X.X /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libRTC-X.X.X.so.X
***** 32bit /usr/lib/i386-linux-gnu/libRTC-X.X.X.so.X.X.X /usr/lib/i386-linux-gnu/libRTC.a /usr/lib/i386-linux-gnu/libRTC.la ***** 64bit /usr/lib/x86_64-linux-gnu/libRTC-X.X.X.so.X.X.X /usr/lib/x86_64-linux-gnu/libRTC.a /usr/lib/x86_64-linux-gnu/libRTC.la
openrtm-aist-devには、開発に必要なコマンド群とヘッダが含まれています。
/usr/bin/rtc-template /usr/bin/rtm-config /usr/bin/rtm-skelwrapper
/usr/share/doc/openrtm-aist-dev/changelog.gz /usr/share/doc/openrtm-aist-dev/copyright /usr/share/doc/openrtm-aist-dev/changelog.Debian.gz
/usr/include/rtm/DefaultPeriodicTask.h /usr/include/rtm/OutPortPullConnector.h 中略 /usr/include/rtm/ExecutionContextBase.h /usr/include/rtm/Manager.h /usr/include/coil/OS.h /usr/include/coil/UUID.h 中略 /usr/include/coil/Properties.h
/usr/lib/openrtm-1.1/py_helper/cxx_svc_impl.py /usr/lib/openrtm-1.1/py_helper/profile_gen.py 中略 /usr/lib/openrtm-1.1/py_helper/gen_base.py /usr/lib/openrtm-1.1/py_helper/yat.py /usr/lib/pkgconfig/libcoil.pc
***** 32bit /usr/lib/i386-linux-gnu/openrtm-1.1/py_helper/cxx_svc_impl.py /usr/lib/i386-linux-gnu/pkgconfig/libcoil.pc ***** 64bit /usr/lib/x86_64-linux-gnu/openrtm-1.1/py_helper/cxx_svc_impl.py /usr/lib/x86_64-linux-gnu/pkgconfig/libcoil.pc
openrtm-aist-example にはスタンドアロン RTC、ローダブル RTC それぞれのサンプルと、サンプル RTC のソースが含まれています。
/usr/share/openrtm-1.1/examples/ConsoleOutComp /usr/share/openrtm-1.1/examples/ConsoleInComp 中略
/usr/share/openrtm-1.1/examples/src/Composite/README.Motor /usr/share/openrtm-1.1/examples/src/Composite/Makefile.Sensor /usr/share/openrtm-1.1/examples/src/Composite/Motor.cpp 中略 /usr/share/openrtm-1.1/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/openrtm-1.1/examples/src/SimpleService/rtc.conf
/usr/share/openrtm-1.1/examples/rtc/MyServiceConsumer.so.0.0.0 /usr/share/openrtm-1.1/examples/rtc/SeqIn.so.0.0.0 中略 /usr/share/openrtm-1.1/examples/rtc/ConfigSample.so.0.0.0 /usr/share/openrtm-1.1/examples/rtc/ConsoleOut.so.0.0.0
/usr/share/doc/openrtm-aist-example/changelog.gz /usr/share/doc/openrtm-aist-example/copyright /usr/share/doc/openrtm-aist-example/changelog.Debian.gz
openrtm-aist-doc には、日本語と英語のクラスリファレンス、IDL インターフェース定義リファレンスが含まれています。
/usr/share/openrtm-1.1/doc/ClassReference/html/ConnectorBase_8h-source.html /usr/share/openrtm-1.1/doc/ClassReference/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/doc/ClassReference/html/FactoryInit_8h-source.html
/usr/share/openrtm-1.1/doc/IDLReference/html/BasicDataType_8idl-source.html 中略 /usr/share/openrtm-1.1/doc/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/openrtm-1.1/doc/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/openrtm-1.1/doc/ClassReference-en/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/doc/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/openrtm-1.1/doc/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/openrtm-1.1/doc/IDLReference-en/html/structRTC_1_1FsmProfile.html 中略 /usr/share/openrtm-1.1/doc/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/doc/openrtm-aist-doc/changelog.gz /usr/share/doc/openrtm-aist-doc/copyright /usr/share/doc/openrtm-aist-doc/changelog.Debian.gz
C++版 OpenRTM-aist は Raspberry Pi 用 Raspbian の armhf、armel用 deb パッケージが提供されています。 Raspberry Pi でセルフコンパイルを行うと約3時間くらいかかりますので、パッケージが利用できる場合はこれを利用することをお勧めします。 ただし、Raspbian への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
現在のところパッケージが用意されている Raspbian のバージョンは
です。
以下のページからイメージをダウンロードして、SDメモリーカードに書き込みます。SDメモリーカードは 4GB 以上はあったほうがよいでしょう。 SDメモリーカードへの書き込み方法については RPi SD Card Setup を参照してください。
Windowsでは、Win32DiskImager などを利用して書き込みます。 Linux や Mac OS では dd を利用して書き込みます。
$ sudo dd if=/dev/<SDメモリーカードのデバイスファイル> of=<ダウンロード・解凍したイメージファイル> bs=1m
OpenRTM-aist のインストールの方法には大きく分けて以下の2種類のインストール方法があります。
好みの方法でインストールしてください。
openrtm.org が提供するインストール・スクリプト pkg_install_raspbian.shをダウンロードページからダウンロードし、root 権限で実行します。このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。
OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。初めて OpenRTM-aist をインストールしてみる方やソースをコンパイルしてみる方にもお勧めします。
詳しいインストール方法や、オプション・パッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください。
openrtm.org では apt-get から利用可能なパッケージリポジトリを提供してい ます。ただし、デフォルトのパッケージリポジトリには含まれていませんので、 apt-get の設定を変更する必要があります。
/etc/apt/sources.list に以下の行を追加します。
> su # vi /etc/apt/sources.list # "sources.list" を編集
deb http://www.openrtm.org/pub/Linux/raspbian/ (code name) main
の1行を追加。"(code name)" の部分には以下の raspbian のバージョンに対応したコードネームを指定します。
バージョン | code name |
Debian GNU Linux | |
Debian 7.0 | wheezy |
Raspbianの過去・現在のバージョン/コードネームは、http://www.raspberrypi.org/downloads から確認できます。
次の手順でインストールを行います。途中、いくつかの応答を求められるので、y を入力しながら完了させてください。
# apt-get update # apt-get install gcc g++ make uuid-dev # apt-get install libomniorb4-1 libomniorb4-dev omniidl omniorb-nameserver # apt-get install openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example
なお、インストール済みの OpenRTM-aist を特定バージョンのまま保持したい場合には、/etc/apt/preferencesを編集して以下の行を追加します。(この例では1.1系列にバージョンを固定します。)
Package: OpenRTM-aist Pin: version 1.1.*
詳しくは http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-pin を参照してください。
インストールを確認します。
pi@raspberrypi ~ $ dpkg -l 'openrtm*' 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) ||/ 名前 バージョン アーキテクチャ 説明 +++-=====================-===============-===============-=============================================== ii openrtm-aist 1.1.0-0 armhf OpenRTM-aist, RT-Middleware distributed by AIST ii openrtm-aist-dev 1.1.0-0 armhf OpenRTM-aist headers for development ii openrtm-aist-doc 1.1.0-0 all Documentation for openrtm-aist ii openrtm-aist-example 1.1.0-0 armhf OpenRTM-aist examples
各パッケージの内容は以下の通りです。
openrtm-aist にはランタイムライブラリとコマンド群が含まれています。
/usr/bin/rtcd /usr/bin/rtm-naming
/usr/share/doc/openrtm-aist/changelog.gz /usr/share/doc/openrtm-aist/README.Debian /usr/share/doc/openrtm-aist/README /usr/share/doc/openrtm-aist/README.jp /usr/share/doc/openrtm-aist/NEWS.gz /usr/share/doc/openrtm-aist/copyright /usr/share/doc/openrtm-aist/changelog.Debian.gz
/usr/etc/rtc.conf.sample
/usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libRTC-X.X.X.so.X /usr/lib/libRTC-X.X.X.so
openrtm-aist-dev には、開発に必要なコマンド群とヘッダが含まれています。
/usr/bin/rtc-template /usr/bin/rtm-config /usr/bin/rtm-skelwrapper
/usr/share/doc/openrtm-aist-dev/changelog.gz /usr/share/doc/openrtm-aist-dev/copyright /usr/share/doc/openrtm-aist-dev/changelog.Debian.gz
/usr/include/openrtm-1.1/rtm/DefaultPeriodicTask.h /usr/include/openrtm-1.1/rtm/OutPortPullConnector.h 中略 /usr/include/openrtm-1.1/rtm/ExecutionContextBase.h /usr/include/openrtm-1.1/rtm/Manager.h /usr/include/coil-1.1/coil/OS.h /usr/include/coil-1.1/coil/UUID.h 中略 /usr/include/coil-1.1/coil/Properties.h
/usr/lib/openrtm-1.1/py_helper/cxx_svc_impl.py /usr/lib/openrtm-1.1/py_helper/profile_gen.py 中略 /usr/lib/openrtm-1.1/py_helper/gen_base.py /usr/lib/openrtm-1.1/py_helper/yat.py /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/libRTM.pc
openrtm-aist-example にはスタンドアロンRTC、ローダブルRTC それぞれのサンプルと、サンプルRTC のソースが含まれています。
/usr/share/openrtm-1.1/examples/ConsoleOutComp /usr/share/openrtm-1.1/examples/ConsoleInComp 中略
/usr/share/openrtm-1.1/examples/src/Composite/README.Motor /usr/share/openrtm-1.1/examples/src/Composite/Makefile.Sensor /usr/share/openrtm-1.1/examples/src/Composite/Motor.cpp 中略 /usr/share/openrtm-1.1/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/openrtm-1.1/examples/src/SimpleService/rtc.conf
/usr/share/openrtm-1.1/example/rtc/MyServiceConsumer.so.0.0.0 /usr/share/openrtm-1.1/example/rtc/SeqIn.so.0.0.0 中略 /usr/share/openrtm-1.1/example/rtc/ConfigSample.so.0.0.0 /usr/share/openrtm-1.1/example/rtc/ConsoleOut.so.0.0.0
/usr/share/doc/openrtm-aist-example/changelog.gz /usr/share/doc/openrtm-aist-example/copyright /usr/share/doc/openrtm-aist-example/changelog.Debian.gz
openrtm-aist-doc には、日本語と英語のクラスリファレンス、IDLインターフェース定義リファレンスが含まれています。
/usr/share/openrtm-1.1/doc/ClassReference/html/ConnectorBase_8h_source.html /usr/share/openrtm-1.1/doc/ClassReference/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/doc/ClassReference/html/FactoryInit_8h_source.html
/usr/share/openrtm-1.1/doc/IDLReference/html/BasicDataType_8idl_source.html 中略 /usr/share/openrtm-1.1/doc/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/openrtm-1.1/doc/ClassReference-en/html/ConnectorBase_8h_source.html /usr/share/openrtm-1.1/doc/ClassReference-en/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/doc/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/openrtm-1.1/doc/IDLReference-en/html/BasicDataType_8idl_source.html /usr/share/openrtm-1.1/doc/IDLReference-en/html/structRTC_1_1FsmProfile.html 中略 /usr/share/openrtm-1.1/doc/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/doc/openrtm-aist-doc/changelog.gz /usr/share/doc/openrtm-aist-doc/copyright /usr/share/doc/openrtm-aist-doc/changelog.Debian.gz
C++版 OpenRTM-aist は Fedora Linux で利用可能な RPM パッケージが提供されています。 対応している Fedora Linux のバージョンは、ダウンロードページから確認できます。 Fedora Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
※ OpenRTM-aist 1.2.0版以降、一括インストール・スクリプト対応予定です。
Fedora Linux へのインストールの方法には大きく分けて以下の二種類のインストール方法があります。openrtm.org が提供するインストール・スクリプト pkg_install_fedora.sh をダウンロードページからダウンロードし、root 権限で実行します。 このスクリプトは、必要なパッケージを順次 yum でインストールしていきます。
OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。 オプションを指定することで、目的に合わせたパッケージをインストールできるようになったので、 初めて OpenRTM-aist をインストールしてみる方にもソースをコンパイルしてみる方にもお勧めします。
ただし、OpenRTM-aist 関係のすべてのパッケージをインストールするので、必要ないものもインストールされる可能性があります。 詳しく理解している人は、手動でインストールした方がよいでしょう。
詳しいオプションやパッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください
openrtm.org では yum から利用可能なパッケージリポジトリを提供しています。 ただし、デフォルトのパッケージリポジトリには含まれていませんので、yum の設定を変更する必要があります。
以下のような設定を記録したファイル /etc/yum.repos.d/openrtm.repo を作成しておきます。作成には通常 root 権限が必要です。
[openrtm] name=Fedora $releasever - $basearch failovermethod=priority baseurl=http://openrtm.org/pub/Linux/Fedora/releases/$releasever/Fedora/$basearch/os/Packages enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
openrtm.repo を作成したら、次の手順でインストールを行います。 途中、いくつかの応答を求められるので、y を入力しながら完了させます。
> su # yum install gcc-c++ python # yum install omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils # yum install OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example
最後に以下のコマンドでインストールの確認をします。
# rpm -q OpenRTM-aist OpenRTM-aist-1.0.0-0.fcX
各パッケージの内容は以下の通りです
openrtm-aist にはランタイムライブラリとコマンド群が含まれています。
/etc/rtc.conf.sample
/usr/lib/libRTC-1.0.0.so.0 /usr/lib/libRTC-1.0.0.so.0.0.4 /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libcoil.a /usr/lib/libcoil.la /usr/lib/libcoil.so /usr/lib/libcoil.so.0 /usr/lib/libcoil.so.0.0.0
openrtm-aist-dev には、開発に必要なコマンド群とヘッダが含まれています。
/usr/bin/coil-config /usr/bin/rtc-template /usr/bin/rtcd /usr/bin/rtcprof /usr/bin/rtm-config /usr/bin/rtm-naming /usr/bin/rtm-skelwrapper
/usr/include/coil/Allocator.h /usr/include/coil/Async.h 中略 /usr/include/coil/memory.h /usr/include/coil/stringutil.h 中略 /usr/include/rtm/BufferBase.h /usr/include/rtm/BufferStatus.h 中略 /usr/include/rtm/Typename.h /usr/include/rtm/config_rtc.h
/usr/include/rtm/idl/BasicDataType.hh /usr/include/rtm/idl/BasicDataType.idl 中略 /usr/include/rtm/idl/device_interfaces/RFID.idl /usr/include/rtm/idl/device_interfaces/Ranger.idl
/usr/lib/openrtm-1.1/py_helper/README_gen.py /usr/lib/openrtm-1.1/py_helper/README_gen.pyc 中略 /usr/lib/openrtm-1.1/py_helper/yat.pyc /usr/lib/openrtm-1.1/py_helper/yat.pyo /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/openrtm-aist.pc
openrtm-aist-doc には、日本語と英語のクラスリファレンス、IDL インターフェース定義リファレンスが含まれています。
/usr/share/openrtm-1.1/docs/ClassReference/html/ConnectorBase_8h-source.html /usr/share/openrtm-1.1/docs/ClassReference/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/docs/ClassReference/html/FactoryInit_8h-source.html
/usr/share/openrtm-1.1/docs/IDLReference/html/BasicDataType_8idl-source.html 中略 /usr/share/openrtm-1.1/docs/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/openrtm-1.1/docs/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/openrtm-1.1/docs/ClassReference-en/html/RTC_8h.html 中略 /usr/share/openrtm-1.1/docs/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/openrtm-1.1/docs/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/openrtm-1.1/docs/IDLReference-en/html/structRTC_1_1FsmProfile.html 中略 /usr/share/openrtm-1.1/docs/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
openrtm-aist-example にはスタンドアロン RTC、ローダブル RTC それぞれのサンプルと、サンプル RTC のソースが含まれています。
/usr/share/openrtm-1.1/examples/ConsoleOutComp /usr/share/openrtm-1.1/examples/ConsoleInComp 中略
/usr/share/openrtm-1.1/examples/src/Composite/README.Motor /usr/share/openrtm-1.1/examples/src/Composite/Makefile.Sensor /usr/share/openrtm-1.1/examples/src/Composite/Motor.cpp 中略 /usr/share/openrtm-1.1/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/openrtm-1.1/examples/src/SimpleService/rtc.conf
/usr/share/openrtm-1.1/examples/rtc/MyServiceConsumer.so.0.0.0 /usr/share/openrtm-1.1/examples/rtc/SeqIn.so.0.0.0 中略 /usr/share/openrtm-1.1/examples/rtc/ConfigSample.so.0.0.0 /usr/share/openrtm-1.1/examples/rtc/ConsoleOut.so.0.0.0
C++版 OpenRTM-aist は Vine Linux で利用可能な RPM パッケージが提供されています。 対応している Vine Linux のバージョンは、ダウンロードページから確認できます。 Vine Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
Vine Linux へのインストールの方法には大きく分けて以下の二種類のインストール方法があります。
openrtm.org が提供するインストール・スクリプト pkg_install[バージョン番号]_vine.sh をダウンロードページからダウンロードし、root 権限で実行します。 このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。
OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。 初めて OpenRTM-aist をインストールしてみる方にお勧めします。 ただし、OpenRTM-aist 関係のすべてのパッケージをインストールするので、必要ないものもインストールされる可能性があります。 より詳しくわかっている人は、手動でインストールした方がよいでしょう。 以下、一括インストールスクリプトを使用したインストールの手順です。
> wget [pkg_installXXX.sh のダウンロードURL] > su # sh pkg_install1XX_vine.sh //途中、いくつかの質問をたずねられるので、''y'' あるいは ''Y'' を入力しながら完了させる。
openrtm.org では apt-get から利用可能なパッケージリポジトリを提供しています。 ただし、デフォルトのパッケージリポジトリには含まれていませんので、apt-get の設定を変更する必要があります。 まず、/etc/apt/sources.list の末尾に次の一文を追記します。このとき root 権限が必要ですので注意してください。
rpm http://www.openrtm.org/pub/Linux/Vine/apt x.x/$(ARCH) main
ここで、x.x の部分はバージョン番号です。例えば、Vine5.0 なら x.x を 5.0 と置き換えます。
rpm http://www.openrtm.org/pub/Linux/Vine/apt 5.0/$(ARCH) main
sources.list を書き変えたら、次の手順でインストールを行います。
> su # apt-get update # apt-get install gcc-c++ python # apt-get install omniORB omniORB-devel omniORB-servers omniORB-doc # apt-get install e2fsprogs e2fsprogs-devel # apt-get install OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example
途中、いくつかの質問を尋ねられるので、y あるいは Y を入力して完了させます。apt-get は 現在は synaptic コマンドで置き換えることが推奨されています。
インストールの確認を以下のようにして行います。
# rpm -q OpenRTM-aist OpenRTM-aist-1.0.0-0.vl50
openrtm-aist にはランタイムライブラリとコマンド群が含まれています。
/etc/rtc.conf.sample
/usr/lib/libRTC-1.0.0.so.0 /usr/lib/libRTC-1.0.0.so.0.0.4 /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libcoil.a /usr/lib/libcoil.la /usr/lib/libcoil.so /usr/lib/libcoil.so.0 /usr/lib/libcoil.so.0.0.0
openrtm-aist-dev には、開発に必要なコマンド群とヘッダが含まれています。
/usr/bin/coil-config /usr/bin/rtc-template /usr/bin/rtcd /usr/bin/rtcprof /usr/bin/rtm-config /usr/bin/rtm-naming /usr/bin/rtm-skelwrapper
/usr/include/coil/Allocator.h /usr/include/coil/Async.h 中略 /usr/include/coil/memory.h /usr/include/coil/stringutil.h 中略 /usr/include/rtm/BufferBase.h /usr/include/rtm/BufferStatus.h 中略 /usr/include/rtm/Typename.h /usr/include/rtm/config_rtc.h
/usr/include/rtm/idl/BasicDataType.hh /usr/include/rtm/idl/BasicDataType.idl 中略 /usr/include/rtm/idl/device_interfaces/RFID.idl /usr/include/rtm/idl/device_interfaces/Ranger.idl
/usr/lib/OpenRTM-aist/py_helper/README_gen.py /usr/lib/OpenRTM-aist/py_helper/README_gen.pyc 中略 /usr/lib/OpenRTM-aist/py_helper/yat.pyc /usr/lib/OpenRTM-aist/py_helper/yat.pyo /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/openrtm-aist.pc
openrtm-aist-doc には、日本語と英語のクラスリファレンス、IDL インターフェース定義リファレンスが含まれています。
/usr/share/OpenRTM-aist/docs/ClassReference/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference/html/RTC_8h.html 中略 /usr/share/OpenRTM-aist/docs/ClassReference/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference/html/BasicDataType_8idl-source.html 中略 /usr/share/OpenRTM-aist/docs/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/OpenRTM-aist/docs/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference-en/html/RTC_8h.html 中略 /usr/share/OpenRTM-aist/docs/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/OpenRTM-aist/docs/IDLReference-en/html/structRTC_1_1FsmProfile.html 中略 /usr/share/OpenRTM-aist/docs/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
openrtm-aist-example にはスタンドアロン RTC、ローダブル RTC それぞれのサンプルと、サンプル RTC のソースが含まれています。
/usr/share/OpenRTM-aist/examples/ConsoleOutComp /usr/share/OpenRTM-aist/examples/ConsoleInComp 中略
/usr/share/OpenRTM-aist/examples/src/Composite/README.Motor /usr/share/OpenRTM-aist/examples/src/Composite/Makefile.Sensor /usr/share/OpenRTM-aist/examples/src/Composite/Motor.cpp 中略 /usr/share/OpenRTM-aist/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/OpenRTM-aist/examples/src/SimpleService/rtc.conf
/usr/share/OpenRTM-aist/examples/rtcs/MyServiceConsumer.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/SeqIn.so.0.0.0 中略 /usr/share/OpenRTM-aist/examples/rtcs/ConfigSample.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/ConsoleOut.so.0.0.0
QNX(キューエヌエックス、またはキューニックス)は主に組み込みシステム向けに販売されている、商用リアルタイム OS です。 POSIX 準拠の UNIX系 OSで、組込み用 OS でありながら一般的な UNIX 同様プロセス型のオペレーティング・システムです。 カーネルはマイクロカーネルであり、様々な機能はサーバとしてモジュール化され、用途に応じて必要なサーバのみを動作させるため、コンパクトなシステムを構成することができます。 x86ファミリ、MIPS、PowerPC、SH-4、ARM、StrongARM、XScale など様々な CPU 上で動作可能であり、さらに機能安全規格 IEC61508 に準拠し認証を取得しているため、安全認証が必要な安全関連系にも利用することができます。
QNX には教育機関向けの無償ライセンスプログラムもあり、大学などでは比較的気軽に利用することができます。
pkgsrc は、UNIX 用のパッケージマネジメントシステムの一つであり、FreeBSD の ports collection から派生し、現在は NetBSD のパッケージマネジメント・システムとして利用されています。 pkgsrc自体は、特定の OS に依存するものではなく、NetBSD、Solaris、Linux、Mac OS X、FreeBSD、OpenBSD、IRIX, BSD/OS、AIX、Interix、DragonFlyBSD、OSF/1、HP-UX、QNX、Haiku、MINIX 3、Illumosといった UNIX系の様々な OS上で利用できます。
QNX にはパッケージ管理システムはなく、QNX のユーザーフォーラムにおいて QNX 用の pkgsrc がメンテナンスされています。
OS をインストール後、pkgsrc をリポジトリからチェックアウトするなどして、システムに配置します。(リポジトリへのアクセスには、QNX forum のアカウントが必要になります。) svnリポジトリからのチェックアウトは大変時間がかかるので、pkgsrc_HEAD650_r396.tgz をダウンロードして利用することもできますが、事前に pkgsrc の最新バージョンをチェックすることをおすすめします。
# cd /usr/ # svn checkout --username <username> http://community.qnx.com/svn/repos/pkgsrc/HEAD_650/pkgsrc # (cd pkgsrc/bootstrap && ./bootstrap) # (cd pkgsrc/misc/figlet && bmake install) # pkg_info または # cd /usr # tar xvzf <somewhere>/pkgsrc_HEAD650_r396.tgz # (cd pkgsrc/bootstrap && ./bootstrap) # (cd pkgsrc/misc/figlet && bmake install) # pkg_info
pkgsrc は、バイナリパッケージによるインストールと、ソースからビルドしてインストールする方法があります。 すべてのパッケージがバイナリで提供されているわけではないので、必要に応じてソースからビルドする必要があります。
OpenRTM-aist は、openrtm.org の以下の URL においてバイナリパッケージを提供しています。
OpenRTM-aist で必要な omniORB も上述の配布サイトにはバイナリパッケージが無いため、openrtm.org で提供されています。
インストール方法は以下のとおりです。
# export PKG_PATH=http://www.openrtm.org/pub/pkgsrc/packages/QNX/i386/6.5.0/All # pkg_add -v OpenRTM-aist-1.1.0-RELESE 1.1.0-RELESE の部分は適宜インストールするバージョンに置き換えてください。 Running install with PRE-INSTALL for omniORB-4.1.6. bin/omkdepend bin/omnicpp : omniORB のインストールが始まる man/man1/omniidl.1 Running install with PRE-INSTALL for omniORB-4.1.6. Package omniORB-4.1.6 registered in /var/db/pkg/omniORB-4.1.6 : OpenRTM-aist のインストールが始まる lib/libcoil.so lib/libcoil.la lib/libcoil-1.1.0.so : share/openrtm-1.1/doc/IDLReference-en/html/unionSDOPackage_1_1Numeric.html etc/rtc.conf.sample Package OpenRTM-aist-1.1.0-RELEASE registered in /var/db/pkg/OpenRTM-aist-1.1.0-RELEASE # # pkg_info|grep OpenRTM OpenRTM-aist-1.1.0-RELEASE RT-Middleware and OMG RTC framework
以上でインストールは終了です。
/usr/pkg/share/openrtm-1.1/examples の下にサンプルプログラムがインストールされています。 これを利用して OpenRTM-aist の動作確認を行います。
まず、ネームサーバーを起動します。
# rtm-naming あるいは # cp /usr/pkg/share/examples/rc.d/omninames /etc/rc.d/ # chmod 755 /etc/rc.d/omninames # /etc/rc.d/omninames
後者では、omninames の起動スクリプトを rc ディレクトリー (/etc/rc.d) にコピーしてからそれを起動しています。 なお、このスクリプトはネームサーバーの停止を行うこともできます。
# /etc/rc.d/omninames stop
まず、ConsoleOut コンポーネントを起動してみます。 下の例ではホームディレクトリーに tmp ディレクトリーを作り、そこにコピーしてから実行しています。
# cd ; mkdir tmp ; cd tmp # cp -r /usr/pkg/share/openrtm-1.1/example . # cd example # ./ConsoleOutComp succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleOut0 Implementation: ConsoleOut Description: Console output component : ================================================= Port0 (name): ConsoleOut0.in ------------------------------------------------- - properties - port.port_type: DataInPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.subscription_type: Any dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr -------------------------------------------------
# cd ; cd tmp/example # ./ConsoleInComp Creating a component: "ConsoleIn"....succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleIn0 Implementation: ConsoleIn Description: Console input component : ================================================= Port0 (name): ConsoleIn0.out ------------------------------------------------- - properties - port.port_type: DataOutPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.subscription_type: flush,new,periodic dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr ------------------------------------------------- : Please input number:
ここで、別の PC 上で RTSystemEditor を起動し、ポートを接続、アクティベートします。 ConsoleIn のプロンプトに対して数字を入力すると、ConsoleOut から出力されます。
このページではQNX 6.5でOpenRTM-aist 1.2をビルドする手順を説明します。 以下からソースコードを入手してください。
pkg_src、omniORB、libuuidのビルド手順については以下のページを参考にしてください。
OpenRTM-aistのビルドのために以下のソフトウェアをインストールします。
/usr/pkg/sbin/pkg_add -v autoconf-2.68 /usr/pkg/sbin/pkg_add -v automake-1.11.1nb1 /usr/pkg/sbin/pkg_add -v libtool-2.2.6b
configure.ac、src/ext/Makefile.am、src/ext/local_service/Makefile.amを編集します。
configure.acから-lomnisslTP4を削除してください。
#LIBS="$LIBS -lomniORB4 -lomnithread -lomniDynamic4 -lomnisslTP4" <-削除 #LDSOLIBS="$LDSOLIBS -lomniORB4 -lomnithread -lomniDynamic4 -lomnisslTP4" <-削除 LIBS="$LIBS -lomniORB4 -lomnithread -lomniDynamic4" <-追加 LDSOLIBS="$LDSOLIBS -lomniORB4 -lomnithread -lomniDynamic4" <-追加
src/ext/Makefile.amは以下のようにsslを削除します。
#SUBDIRS = local_service ec sdo <-削除 #DIST_SUBDIRS = local_service ec sdo logger <-削除 SUBDIRS = local_service ec sdo ssl <-追加 DIST_SUBDIRS = local_service ec sdo logger ssl <-追加
src/ext/local_service/Makefile.amは以下のようにサブディレクトリの設定を削除します。
#SUBDIRS = nameservice_file <-削除
以下のコマンドでビルドします。
./autogen.sh ./configure --without-doxygen make make install
C++版 OpenRTM-aist は Mac OS X 用のパッケージ管理ステム MacPorts で利用可能な ports が提供されています。 MacPorts への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
MacPorts は Mac OS X 上で利用可能なオープンソースのパッケージ管理システムです。 MacPorts は FreeBSD の ports というパッケージ管理システムと同様に、ports と呼ばれるパッケージをビルドするためのレシピに基づき、自動でソースのダウンロード、パッチの適用、コンパイル、インストールまでを行ってくれるシステムです。 Mac OS X 用のパッケージ管理システムとしては他に Fink があります。
MacPorts を利用するには、Apple の Xcodeおよび、X11 環境を予めインストールする必要があります。 Xcode および X11 は Mac OS X のインストールCD からインストールすることもできます。 詳細は、上記 MacPorts の Webページを参照してください。
MacPorts 自体は dmg パッケージ形式になっており、自分の Mac の OS のバージョンに合わせた dmg パッケージをダウンロード、インストールすることで簡単にインストールすることができます。 dmg パケージは MacPorts の Webページ、または下記リンクからダウンロードできます。
Portfile のダウンロード、展開、ビルドを一括でおこなうスクリプトが以下に用意されています。
適当なディレクトリーで、以下のようにスクリプトを実行します。実行は一般ユーザーで構いません。ただし、途中で当該ユーザーのパスワードを聞かれることがあります。
$ sh port_install100_mac.sh sh port_install.sh file:///Users/n-ando/ports/ Getting Portfile from: http://www.openrtm.org/pub/MacOSX/macports//ports.tgz --2010-07-27 23:21:06-- http://www.openrtm.org/pub/MacOSX/macports//ports.tgz Resolving www.openrtm.org (www.openrtm.org)... 182.48.18.55 Connecting to www.openrtm.org (www.openrtm.org)|182.48.18.55|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3600 (3.5K) [application/x-gzip] Saving to: `ports.tgz.1' 100%[================================================>] 3,600 --.-K/s in 0.002s 2010-07-27 23:21:06 (2.02 MB/s) - `ports.tgz' saved [3600/3600] x ports/ x ports/devel/ x ports/PortIndex x ports/PortIndex.quick x ports/devel/OpenRTM-aist/ x ports/devel/OpenRTM-aist/Portfile x ports/devel/OpenRTM-aist/files/ x ports/devel/OpenRTM-aist/Portfile~ x ports/devel/OpenRTM-aist/files/patch-src-lib-rtm-InPortConsumer.h x ports/devel/OpenRTM-aist/files/patch-src-lib-coil-posix-coil-UUID.cpp x ports/devel/OpenRTM-aist/files/patch-src-lib-coil-posix-coil-Routing.cpp x ports/devel/OpenRTM-aist/files/patch-examples-SimpleService-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-Composite-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-ConfigSample-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-SeqIO-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-SimpleIO-Makefile.in x ports/devel/OpenRTM-aist/files/patch-src-lib-rtm-idl-Makefile.in Creating port index in /Users/n-ando/ports Adding port devel/OpenRTM-aist Total number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0 Up-to-date ports skipped: 0 Adding local ports repository entry to sources.conf # A password may be required for sudo. Input your password. Password: Installing OpemRTM-aist...it may take several minutes. # A password may be required for sudo. Input your password. ---> Computing dependencies for OpenRTM-aist ---> Fetching OpenRTM-aist ---> Verifying checksum(s) for OpenRTM-aist ---> Extracting OpenRTM-aist ---> Applying patches to OpenRTM-aist ---> Configuring OpenRTM-aist ---> Building OpenRTM-aist ---> Staging OpenRTM-aist into destroot ---> Installing OpenRTM-aist @1.0.0_2 ---> Activating OpenRTM-aist @1.0.0_2 ---> Cleaning OpenRTM-aist Cleaning local ports repository entry in sources.conf # A password may be required for sudo. Input your password. Password: $
ports は、依存関係を自動的に解決し、ビルドに必要なパッケージが入っていない場合には自動でそのパッケージのビルドも行いますので、多少時間がかかる場合があります。
詳細は一括インストールシェルスクリプト port_installXXX_mac.sh に書いてあります。インストール手順は、おおよそ以下のようになっています。
MacPorts では、port コマンドでインストールするよう指定されたパッケージを、設定ファイル sources.conf に記載されている特定の場所以下から探し出して、Porrtfile に従いソースをダウンロードしビルドを行います。
VxWorksはウインドリバー社が開発している組込みシステム向けリアルタイムOSです。 規模の大きな商用リアルタイムOSで最も普及しているOSであり、比較的大型の機器で使用されています。 x86、PowerPC、SH-4、ARM、MIPS、SPARC等の様々なCPU上で動作可能です。 DO-178B規格とIEC61508規格に準拠しており、航空・宇宙等の幅広い分野で使われています。
Wind River WorkbenchはVxWorksのコンパイル、デバッグ等をGUIで実行する統合開発環境です。
このページではVxWorksにOpenRTM-aist(C++版)を導入する手順を説明します。
ホストPCはUbuntu 14.04(もしくは16.04)を想定しています。 Windowsには今後対応する予定です。
ホストPCに以下のソフトウェアをインストールしてください。
ウインドリバー社から購入してインストールしてください。
Workbenchは32bit環境で動作するため、64bitのUbuntuの場合はi386版libc6パッケージをインストールしてください。
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
以下のコマンドでインストールしてください。
sudo apt-get install tclsh cmake subversion
ORBexpressを使用する場合のみ必要です。
ビルドはコマンドラインの操作により実行します。
Workbenchから、Project Exploreを右クリックしてOpen Development Shellからコマンドラインシェルを起動してください。
通常のUbuntuのターミナル上でビルドする場合は、以下の手順で環境変数を設定してください。 Workbenchで起動したコマンドラインシェルを用いる場合は環境変数は設定済みのため、次の手順に進んでください。
以下の環境変数を設定してください。
変数名 | 例 |
WIND_HOME | /home/openrtm/WindRiver |
WIND_USR | ${WIND_HOME}/vxworks-6.9/target/usr |
WRVX_COMPBASE | ${WIND_HOME}/components |
WIND_BASE | ${WIND_HOME}/vxworks-6.9 |
WIND_HOST_TYPE | x86-linux2 |
WIND_GNU_BASE | ${WIND_HOME}/gnu/4.3.3-vxworks-6.9/${WIND_HOST_TYPE} |
WIND_FOUNDATION_PATH | ${WIND_HOME}/workbench-3.3/foundation |
WIND_HOMEはWorkbenchをインストールしたディレクトリにより適宜変更してください。
export WIND_HOME=/home/openrtm/WindRiver export WIND_USR=${WIND_HOME}/vxworks-6.9/target/usr export WRVX_COMPBASE=${WIND_HOME}/components export WIND_BASE=${WIND_HOME}/vxworks-6.9 export WIND_HOST_TYPE=x86-linux2 export WIND_GNU_BASE=${WIND_HOME}/gnu/4.3.3-vxworks-6.9/${WIND_HOST_TYPE} export WIND_FOUNDATION_PATH=${WIND_HOME}/workbench-3.3/foundation
コンパイラの実行のために共有ライブラリパスの設定を行ってください。
export LD_LIBRARY_PATH=${WIND_HOME}/lmapi-5.0/x86-linux2/lib:${WIND_FOUNDATION_PATH}/${WIND_HOST_TYPE}/lib:${LD_LIBRARY_PATH}
omniORBを使用する場合は、omniORBのソースコードのビルドが必要になります。 omniORBを使用しない場合は、次の手順に進んでください。
以下のコマンドでomniORBのソースコードを入手してください。
wget https://jaist.dl.sourceforge.net/project/omniorb/omniORB/omniORB-4.2.2/omniORB-4.2.2.tar.bz2 tar xf omniORB-4.2.2.tar.bz2
VxWorks 6.6、6.9対応の修正パッチを適用します。
wget http://svn.openrtm.org/omniORB/trunk/vxworks/omniORB-4.2.2-vxworks.patch patch -p1 -d omniORB-4.2.2 < omniORB-4.2.2-vxworks.patch
IDLコンパイラなどはUbuntu上で動作する必要があります。 以下の手順でUbuntu用にomniORBをビルドしてください。
cd omniORB-4.2.2 mkdir build cd build ../configure make cd ..
VxWorks用にomniORBをビルドします。
sed -i '1s/^/platform = ${VXWORKS_PLATFORM}\n/' config/config.mk cd src make export
ただし、VXWORKS_PLATFORMには動作環境に合ったものを入力するようにしてください。
VXWORKS_PLATFORM | CPU | VxWorksのバージョン | 実装方法 |
powerpc_vxWorks_kernel_6.6 | PowerPC | 6.6 | カーネルモジュール |
powerpc_vxWorks_RTP_6.6 | PowerPC | 6.6 | RTP |
powerpc_vxWorks_kernel_6.9 | PowerPC | 6.9 | カーネルモジュール |
powerpc_vxWorks_RTP_6.9 | PowerPC | 6.9 | RTP |
simlinux_vxWorks_kernel_6.6 | Linux上のシミュレータ | 6.6 | カーネルモジュール |
simpentium_vxWorks_RTP_6.6 | Linux上のシミュレータ | 6.6 | RTP |
simlinux_vxWorks_kernel_6.9 | Linux上のシミュレータ | 6.9 | カーネルモジュール |
simpentium_vxWorks_RTP_6.9 | Linux上のシミュレータ | 6.9 | RTP |
※カーネルモジュールのビルドの場合にはネームサーバー等は生成しません。VxWorksでネームサーバーを起動する場合はRTPのビルドも行ってください。
以下のコマンドでソースコードを入手してください。
svn co http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/
以下のコマンドでコンパイルを開始します。
cd OpenRTM-aist/ python convert_character_code.py ./ vxworks euc_jp mkdir src/lib/coil/common/coil cp src/lib/coil/common/*.* src/lib/coil/common/coil/ cp build/yat.py utils/rtm-skelwrapper/ mkdir build_vxworks cd build_vxworks/ cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DVX_VERSION=${VX_VERSION} -DORB_ROOT=${ORB_ROOT} -DOMNI_VERSION=${OMNI_VERSION} -DCORBA=${CORBA} -DVX_CPU_FAMILY=${ARCH} .. make
CMakeのオプションには以下を指定してください。
TOOLCHAIN_FILE | VxWorks 6.6(カーネルモジュール、PowerPC)の場合は../Toolchain-vxworks6.6-Linux.cmake、それ以外の場合は../Toolchain-vxworks6.cmake |
VX_VERSION | vxworks-6.6かvxworks-6.9 |
ORB_ROOT | omniORBのディレクトリ(例:/home/openrtm/omniORB-4.2.2) |
VX_CPU_FAMILY | ppc(PowerPC)、simlinux(カーネルモジュール、シミュレータ)、simpentium(RTP、シミュレータ) |
OMNI_VERSION | omniORBのバージョン(40、41、42)、omniORBを使用しない場合は不要 |
CORBA | omniORB、もしくはORBexpress |
※RTPの場合はcmakeコマンドに-DRTP=ONを追加する必要があります。
ビルドが完了したら以下の手順で動作確認を行ってください。
このページでは、Workbenchのシミュレータを用いてVxWorks用にビルドしたRTCのカーネルモジュールの動作確認を行う手順を説明します。
以下の手順でシミュレータの設定を行ってください。
WorkbenchのRemote Systemでシミュレータを選択後にconnect 'xxxxx'ボタンを押すとシミュレータと接続します。
WorkbenchのRemote Systemでシミュレータを右クリックして、Download→VxWorks Kernel Taskを選択してください。
Download ConfigurationsウインドウのLaunch Contextタブから、ダウンロードするシステムにシミュレータを選択してください。
Downloadsタブからダウンロードするモジュールを設定します。 Addボタンをクリックしてください。
Addウインドウでrtcd.outのパスを設定後、OKボタンをクリックしてください。 rtcd.outはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。
Downloadボタンをクリックするとダウンロードを開始します。
起動するRTCのカーネルモジュールについても同様の手順でダウンロードしてください。
VxWorksシミュレータ上にネームサーバーを起動します。 ネームサーバーはリアルタイムプロセス(RTP)として起動するため、Remote Systemsからシミュレータを右クリックしてRun→VxWorks Real Time Processをクリックしてください。
Run ConfigurationsウインドウのLaunch Contextタブから各種設定を行ってください。
omniNames.outはomniORBのRTPのビルドディレクトリに生成されています。 カーネルモジュールのビルドディレクトリには生成されないため、omniORBはRTPについてもビルドを行ってください。 共有ライブラリのパスにlibc.so.1が無い場合はエラーとなるため、WorkbenchからomniNames.outのディレクトリにコピーしてください。
cp $WIND_BASE/target/lib/usr/root/SIMPENTIUMgnu/bin/libc.so.1 /home/openrtm/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9/
RTPについてビルドできない場合は、VxWorksでネームサーバーは起動せずにUbuntu上のネームサーバーにRTCを登録するようにしてください。
Argumentsにはネームサーバーのポート番号を指定します。
設定が完了後にRunボタンをクリックするとネームサーバーが起動します。
WorkbenchのRemote Systemでシミュレータを右クリックして、Run→VxWorks Kernel Taskを選択してください。
Run Configurationsウインドウで各種設定を行います。 Entry Pointにはrtcd_mainと入力してください。 Argumentsには"-o manager.shutdown_on_nortcs:NO -o manager.shutdown_auto:NO"を設定してください。 Runボタンを押すとマネージャが起動します。
※Ubuntu側のネームサーバーを起動する場合は、Argumentsに-o corba.nameservers:192.168.200.254を追加してください。 Ubuntuのtap0インターフェースのIPアドレスは適宜確認してください。
マネージャの起動と同様の手順で起動します。 Entry PointにはRTCを起動する関数を指定します。
Argumentsには何も入力しなくても大丈夫です。
Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。 VxWorksのネームサーバーにはネームサービス接続ボタンをクリック後、表示されたウインドウでIPアドレスを指定してOKをクリックすると接続します。
起動したRTCが登録されているかを確認してください。
RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。
シミュレータ接続後にTarget Consoleウインドウからコマンド入力ができます。
以下のコマンドでRTCの動作確認ができます。 Workbench、omniORB、openRTM-aistのパスは適宜変更してください。
cd "/home/openrtm/openrtm-build/omniORB/omniORB_69_rtp_sim/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9" cp "/home/openrtm/WindRiver/vxworks-6.9/target/lib/usr/root/SIMPENTIUMgnu/bin/libc.so.1","./" rtpSp "./omniNames.out -start 2809" cd "/home/openrtm/openrtm-build/OpenRTM/OpenRTM_69_kernel_sim/OpenRTM-aist/build_vxworks/utils/rtcd" ld<rtcd.out cd "/home/openrtm/openrtm-build/OpenRTM/OpenRTM_69_kernel_sim/OpenRTM-aist/build_vxworks/examples/SimpleIO" ld<ConsoleIn.out taskSpawn "rtcd_main",100,67108864,1000000,rtcd_main,"-o","manager.shutdown_on_nortcs:NO","-o","manager.shutdown_auto:NO" taskSpawn "consolein_main",100,0,1000000,consolein_main
このページでは、Workbenchのシミュレータを用いてVxWorks用にビルドしたRTCのリアルタイムプロセス(RTP)の動作確認を行う手順を説明します。
以下の手順でシミュレータの設定を行ってください。
WorkbenchのRemote Systemでシミュレータを選択後にconnect 'xxxxx'ボタンを押すとシミュレータと接続します。
VxWorksシミュレータ上にネームサーバーを起動します。 ネームサーバーはリアルタイムプロセス(RTP)として起動するため、Remote Systemsからシミュレータを右クリックしてRun→VxWorks Real Time Processをクリックしてください。
Run ConfigurationsウインドウのLaunch Contextタブから各種設定を行ってください。
omniNames.outはomniORBのビルドディレクトリに生成されています。 共有ライブラリのパスにlibc.so.1が無い場合はエラーとなるため、WorkbenchからomniNames.outのディレクトリにコピーしてください。
cp $WIND_BASE/target/lib/usr/root/SIMPENTIUMgnu/bin/libc.so.1 /home/openrtm/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9/
RTPについてビルドできない場合は、VxWorksでネームサーバーは起動せずにUbuntu上のネームサーバーにRTCを登録するようにしてください。
Argumentsにはネームサーバーのポート番号を指定します。
設定が完了後にRunボタンをクリックするとネームサーバーが起動します。
ネームサーバーの起動と同じ手順でrtcd.vxeを実行します。 rtcd.vxeはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。
Argumentsには何も入力しなくても大丈夫ですが、Ubuntu側のネームサーバーを起動する場合は、Argumentsに-o corba.nameservers:192.168.200.254を追加してください。 Ubuntuのtap0インターフェースのIPアドレスは適宜確認してください。
Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。 VxWorksのネームサーバーにはネームサービス接続ボタンをクリック後、表示されたウインドウでIPアドレスを指定してOKをクリックすると接続します。
起動したRTCが登録されているかを確認してください。
RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。
シミュレータ接続後にTarget Consoleウインドウからコマンド入力ができます。
以下のコマンドでRTCの動作確認ができます。 Workbench、omniORB、openRTM-aistのパスは適宜変更してください。
cd "/home/openrtm/openrtm-build/omniORB/omniORB_69_rtp_sim/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9" cp "/home/openrtm/WindRiver/vxworks-6.9/target/lib/usr/root/SIMPENTIUMgnu/bin/libc.so.1","./" rtpSp "./omniNames.out -start 2809" cd "/home/openrtm/openrtm-build/OpenRTM/OpenRTM_69_rtp_sim/OpenRTM-aist/build_vxworks/examples/SimpleIO" cp "/home/openrtm/WindRiver/vxworks-6.9/target/lib/usr/root/SIMPENTIUMgnu/bin/libc.so.1","./" rtpSp "./ConsoleOutComp.vxe"
このページでは、PowerPCボード上でVxWorks用にビルドしたRTCのカーネルモジュールの動作確認を行う手順を説明します。
以下の手順でWorkbenchとVxWorksの接続を生成してください。
WorkbenchのRemote Systemでターゲットサーバを選択後にconnect 'xxxxx'ボタンを押すとVxWorksと接続します。
WorkbenchのRemote Systemでターゲットサーバを右クリックして、Download→VxWorks Kernel Taskを選択してください。
Download ConfigurationsウインドウのLaunch Contextタブから、ダウンロードするシステムにターゲットサーバを選択してください。
Downloadsタブからダウンロードするモジュールを設定します。 Addボタンをクリックしてください。
Addウインドウでrtcd.outのパスを設定後、OKボタンをクリックしてください。 rtcd.outはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。
Downloadボタンをクリックするとダウンロードを開始します。
起動するRTCのカーネルモジュールについても同様の手順でダウンロードしてください。
WorkbenchのRemote Systemでターゲットサーバを右クリックして、Run→VxWorks Kernel Taskを選択してください。
Run Configurationsウインドウで各種設定を行います。 Entry Pointにはrtcd_mainと入力してください。 Argumentsには"-o manager.shutdown_on_nortcs:NO -o manager.shutdown_auto:NO -o corba.nameservers:172.30.1.1"を設定してください。ネームサーバーはVxWorksでは起動しないため、Ubuntu上のネームサーバーにRTCを登録します。 ※ORBexpressを使用する場合はエンドポイントの設定corba.endpoints:172.30.1.20:1234も追加してください。 Runボタンを押すとマネージャが起動します。 IPアドレスは適宜変更してください。
マネージャの起動と同様の手順で起動します。 Entry PointにはRTCを起動する関数を指定します。
Argumentsには何も入力しなくても大丈夫です。
Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。
起動したRTCが登録されているかを確認してください。
RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。
ただしORBexpressを使用した場合にはデータポートのコネクタ接続時にエンディアンをbigに設定する必要があります。
ターゲットサーバ接続後にWTX Consoleウインドウからコマンド入力ができます。
以下のコマンドでRTCの動作確認ができます。 Workbench、omniORB、openRTM-aistのパス、UbuntuのIPアドレスは適宜変更してください。
cd "/home/openrtm/openrtm-build/OpenRTM/OpenRTM_69_kernel_sim/OpenRTM-aist/build_vxworks/utils/rtcd" ld<rtcd.out cd "/home/openrtm/openrtm-build/OpenRTM/OpenRTM_69_kernel_sim/OpenRTM-aist/build_vxworks/examples/SimpleIO" ld<ConsoleIn.out taskSpawn "rtcd_main",100,67108864,1000000,rtcd_main,"-o","manager.shutdown_on_nortcs:NO","-o","manager.shutdown_auto:NO","-o","corba.nameservers:172.30.1.1" taskSpawn "consolein_main",100,0,1000000,consolein_main
OpenRTM-aist 本体に手を加えたうえで Windows 上で利用したい場合は、Windows 用ソースパッケージを自分でビルドするができます。 ここでは、ダウンロードページやリポジトリからソースを取得し Windows 上で OpenRTM-aist をビルドする方法を解説します。
Windows 上での OpenRTM-aist のビルドは、環境の整備やインストーラの作成など、Windows 上での様々な知識が必要となります。 本ドキュメントは、Windows 上でのプログラム開発やバッチファイル等の基本的な知識がある方を対象としています。
Windows 用の OpenRTM-aist (C++版) ソースパッケージは Linux 用のソースとは別に配布されています。 ソースコードの内容は全く同じですが、以下の部分が異なっています。
図に示すように、オリジナルは subversion リポジトリのソースコードで、そのソースコードから、Linux上で、
の2種類を作成する構成になっています。
リポジトリから取得した最新のソースコードを Windows で利用する場合は、一旦 Linux で Windows 用のソースコードを生成する必要があります。
ビルドに必要な環境、ライブラリは以下の通りです。
Windows 用のバイナリをビルドするためには、Visual C++ 開発環境が必要です。 現在対応している Visual C++ は Visual C++ 2008、2010、2012、2013 です。
Visual C++ Express Edition は Microsoft が無償で提供する C++ の開発環境で、MFC や ATL などは利用できませんが、Windows アプリケーション (Win32アプリケーション) を開発することができます。 OpenRTM-aist を利用したコンポーネント開発でも、MFC や ATLなどを利用しないコンポーネントは Visual C++ Express Edition のみで開発することができます。 下記リンクから ISO イメージをダウンロードしてインストールした上で、Microsoft Live ID を取得してライセンス(無料)を取得してください。
OpenRTM-aist のビルドには omniORB 4.1.7(2015/03/31現在)のライブリが必要です。 openrtm.org が提供するビルド済みバイナリパッケージを下記リンク先に用意してあります。 環境に合わせて適切なものをダウンロードし、適当な場所 (以下では C:\distribution\omniORB を仮定) に展開してください。
OMNI_ROOT に設定したディレクトリー以下は以下のような構造になっている必要があります。
<OMNI_ROOT> + bin | + scripts | + x86_win32 + idl | + COS + include | + COS | + omniORB4 | | + internal | + omnithread | + omniVms + lib | + python | | + omniidl | | + omniidl_be | | + cxx | | + dynskel | | + header | | + impl | | + skel | + x86_win32
1.1.1-RELEASE 版ではソースに含まれているインストーラー作成コードのメンテナンスは行っておりません。
WiX (Windows Installer XML) は Windows の msi インストーラをコマンドラインベースのツール群で作成することを目指しているオープンソースのプロジェクトです。
OpenRTM-aist は Windows 用のインストーラーを WiX を利用して作成しています。 インストーラーまで作成する場合には、WiX を予めインストールしておいてください。
ビルドの途中でいくつかの Python スクリプトを利用するので Python 2.7 が必要になります。 以下のサイトから最新のものを取得しインストールしてください。
インストーラーを起動すると、ウィザードで幾つか選択する部分がありますが、 デフォルトのままでインストールしてかまいません。
まずソースコード OpenRTM-aist-1.1.1-win32.zip をダウンロードし、適当なディレクトリーに展開します。
build.bat の先頭に以下のような部分があります。これらが、それぞれ適切な値に設定されているかを確認してください。
ARCH、VC_VERSION の設定については、このバッチファイルに記述されている説明をご覧ください。
set RTM_ROOT=%~dp0 set COIL_ROOT=%RTM_ROOT%\coil set OMNI_ROOT=C:\distribution\omniORB-4.1.7-win64-vc12 if not DEFINED ARCH set ARCH=x86_64 if not DEFINED VC_VERSION set VC_VERSION=12 if not DEFINED PYTHON_DIR set PYTHON_DIR=C:\Python27_x64
以上の準備が完了したら、ビルドを行います。build.bat をダブルクリックし、起動すれば自動でビルドが始まります。
すべてが正しくビルドできたら次のことを行い、インストールを完了させます。
以上で、OpenRTM-aist のインストールは終了です。
パッケージが用意されていない UNIX 環境や、クロス開発環境、OpenRTM-aist 本体のソースを変更して利用したい場合には、ソースからコンパイルすることができます。 ここでは、ダウンロードページやリポジトリからソースを取得し Linux 上 で OpenRTM-aist をビルドする方法を解説します。
OpenRTM-aist (C++版) は autotools を利用したビルド環境を提供しているため、様々な環境で容易にビルドできます。
OpenRTM-aist は下記の OS および Linux ディストリビューションで動作することが確認されています。
これ以外の環境でも、一般的 Linux/UNIX 環境であれば、ビルドできる可能性があります。
OpenRTM-aist-1.0.0 のインストールには下記の開発環境およびライブラリが必要です。
それぞれのライブラリ等のドキュメントに従いインストールを行ってください。 これらのパッケージが、標準のディレクトリー(/usr、/usr/local 等)下にインストールされていると、以降の OpenRTM-aist のコンパイル作業を比較的簡単に行うことができます。
UbuntuやFedora等特定のディストリビューション向けには、以下のリポジトリに ''pkg_install_OS名.sh’’という依存ライブラリやOpenRTMのパッケージをインストールするスクリプトが用意されています。
これらのインストールスクリプトの使い方については、「一括インストール・スクリプト」のページをご覧ください。
まずソースコード OpenRTM-aist-X.X.X.tar.gz を適当なディレクトリーに展開します。
$ tar xvzf OpenRTM-aist-X.X.X.tar.gz $ cd OpenRTM-aist-X.X.X
OpenRTM-aist はパッケージのビルドに autoconf、automake を使用しています。 ビルドの仕方は、他の autoconf、automake を使用したパッケージと同様に行います。
$ ./configure --prefix=/usr [options]
[options]で使用可能なオプションは
$ ./configure --help
で参照してください。
configure が正常に終了したことを確認してください。正常に終了したら make します。
$ make
ビルドが正常に終了したら、ヘッダファイル、ライブラリ、ユーティリティコマンド群をインストールします。
$ su # make install
以上で、ソースコードからのビルドおよびインストールは終了です。
OpenRTM-aist は開発に利用している subversion リポジトリを一般に公開しています。 リポジトリからチェックアウトしたソースコードからビルドを行うこともできます。
リポジトリからチェックアウトしたソースは configure スクリプトや Makefile.in が含まれていません。これらを生成するには、
等のツールが必要ですので予めインストールしておきます。 これらの必要なツールをインストールする際、Ubuntuなどでは上で紹介した「一括インストール・スクリプト」を利用することもできます。
Ubuntuではpkg_install_ubuntu.shを以下のように実行することで、OpenRTM-aist 本体の開発を行う開発者向けのツール(automake等含む)などもまとめてインストールすることができます。
# pkg_install_ubuntu.sh -l c++ -c
ソースをリポジトリからチェックアウトします。
$ svn co http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist A OpenRTM-aist/include A OpenRTM-aist/include/rtm A OpenRTM-aist/AUTHORS A OpenRTM-aist/src A OpenRTM-aist/src/ext A OpenRTM-aist/src/ext/artlinux 中略 A OpenRTM-aist/examples/Templates/PanTilt.xml A OpenRTM-aist/INSTALL.jp U OpenRTM-aist Checked out revision 2009.
チェックアウトすると、OpenRTM-aist というディレクトリーができているはずですので、そのディレクトリーに入ります。
$ ls OpenRTM-aist $ cd OpenRTM-aist $ ls AUTHORS Makefile.am acinclude.m4 examples/ win32/ COPYING.LIB NEWS build/ include/ COPYRIGHT* README configure.ac openrtm.m4 ChangeLog README.jp docs/ src/ INSTALL.jp TUTORIAL.jp etc/ utils/
build ディレクトリーの下に autogen というシェルスクリプトがあることを確認し、このスクリプトを実行します。 実行には、数分程度の時間がかかることがあります。
$ls build/autogen build/autogen* $ sh build/autogen Setting up environment to generate configure script. ------------------------------------------------------------ Searching Autotools ------------------------------------------------------------ autoconf was found in /usr/local/bin/autoconf. autoheader was found in /usr/local/bin/autoheader. autom4te was found in /usr/local/bin/autom4te. autoreconf was found in /usr/local/bin/autoreconf. autoupdate was found in /usr/local/bin/autoupdates. automake was found in /usr/local/bin/automake-1.9. aclocal was found in /usr/local/bin/aclocal-1.9. libtool was found in /usr/local/bin/libtool. libtoolize was found in /usr/local/bin/libtoolize. ------------------------------------------------------------ Searching libtool.m4 ------------------------------------------------------------ file was found: /usr/local/share/aclocal/libtool.m4 Copying libtool.m4 from /usr/local/share/aclocal/libtool.m4 ------------------------------------------------------------ Doing autoreconf ------------------------------------------------------------ autoreconf-2.62: Entering directory `.' autoreconf-2.62: configure.ac: not using Gettext autoreconf-2.62: running: /usr/local/bin/aclocal-1.9 --force autoreconf-2.62: configure.ac: tracing autoreconf-2.62: configure.ac: adding subdirectory src/lib/coil to autoreconf autoreconf-2.62: Entering directory `src/lib/coil' autoreconf-2.62: running: /usr/local/bin/libtoolize --copy --force You should update your `aclocal.m4' by running aclocal. autoreconf-2.62: running: /usr/local/bin/autoconf --force autoreconf-2.62: running: /usr/local/bin/autoheader --force autoreconf-2.62: running: /usr/local/bin/automake-1.9 --add-missing --copy --force-missing configure.ac: installing `./install-sh' configure.ac: installing `./missing' ace/coil/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `src/lib/coil' You should update your `aclocal.m4' by running aclocal. configure.ac: installing `./install-sh' configure.ac: installing `./missing' examples/AutoTest/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `.' done $
autogen の実行により、configure が OpenRTM-aist ディレクトリー内にできているはずですので、以降は通常のソースからのビルドと同様に、configur & make でビルドします。
$ ls -l configure -rwxr-xr-x 1 n-ando n-ando 812893 Jul 6 05:56 configure* $ ./configure --prefix=/usr $ make
make dist を行うことで openrtm.org で配布しているようなソースのパッケージを作成することもできます。 また、make dist では Windows 上でビルド可能なソースコードのパッケージも同時に作成します。 ただし、make dist を行うには、doxygen や latex、qkc等、さらに追加のコマンドが必要となります。
$ make dist 数分程度かかる $ ls -l OpenRTM-aist* -rw-r--r-- 1 n-ando n-ando 9266837 Apr 7 09:53 OpenRTM-aist-1.0.0-win32.zip -rw-r--r-- 1 n-ando n-ando 4831099 Apr 7 09:53 OpenRTM-aist-1.0.0.tar.bz2 -rw-r--r-- 1 n-ando n-ando 7258796 Apr 7 09:53 OpenRTM-aist-1.0.0.tar.gz $
生成されたソースパッケージはそれぞれ以下の通りです。
Visual Studio でランタイムライブラリにマルチスレッド(/MT)、マルチスレッドデバッグ(/MTd)を指定した RTC を開発する場合、/MT、/MTdの実行ファイルが他の DLL にリンクして処理を行うとヒープ破壊等で異常終了することがあります。 マルチスレッド(/MT)、マルチスレッドデバッグ(/MTd)を指定したい場合は以下の手順で OpenRTM-aist の静的ライブラリを作成してください。
※動作確認はほとんどしていないため、以下の作業は全て自己責任で行ってください。
以下より OpenRTM-aist のソースコードを入手してください。
ダウンロードしたら適当な場所に展開してください。 この例では以下の位置に配置します。
C:\openrtm_work\OpenRTM-aist
以下より omniORB のバイナリパッケージを入手してください。 Visual Studioのバージョンにあったものを選んでください。
ダウンロードしたら、OpenRTM-aist フォルダー内に omniORB という名前のフォルダーを作成して展開してください。
C:\openrtm_work\OpenRTM-aist\omniORB
/MT、/MTd でビルドするために各種ファイルの編集を行います。
以下の build.bat というバッチファイルを編集します。
C:\openrtm_work\OpenRTM-aist\build.bat
環境によって以下の箇所を適宜変更してください。
set RTM_ROOT=%~dp0 set COIL_ROOT=%RTM_ROOT%\coil set OMNI_ROOT=%RTM_ROOT%\omniORB if not DEFINED ARCH set ARCH=x86 if not DEFINED VC_VERSION set VC_VERSION=12 if not DEFINED PYTHON_DIR set PYTHON_DIR=c:\python27 if not DEFINED RTM_VERSION set RTM_VERSION=1.1.2 if not DEFINED OMNI_VERSION set OMNI_VERSION=4.1.7 if not DEFINED OMNITHREAD_VERSION set OMNITHREAD_VERSION=3.4
以下のlibRTC_vc12.vcxproj、libcoil_vc12.vcxproj、libRTCSkel_vc12.vcxprojというプロジェクトファイルを編集します。 Visual Studio のバージョンに合わせて libRTC_vc11.vcxproj、libcoil_vc11.vcxproj、libRTCSkel_vc11.vcxproj 等を編集するようにしてください。
まずはランタイムライブラリを変更します。 以下のように MultiThreadedDebugDLL と記載してある箇所を MultiThreadedDebug に変更します。 32bitか64bit かによって編集する箇所が違うのですが、両方変更しても問題ありません。
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
同様にMultiThreadedDLLもMultiThreadedに変更します。
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
次に動的ライブラリではなく静的ライブラリを生成するように変更します。 ※libRTCSkel_vc12.vcxproj は元々静的ライブラリを生成するので変更の必要はありません。
DynamicLibraryをStaticLibrary に変更してください。
<ConfigurationType>DynamicLibrary</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
それに合わせて出力ファイル名も変更します。
<OutputFile>$(OutDir)\RTC$(rtm_dllver).dll</OutputFile>
<OutputFile>$(OutDir)\RTC$(rtm_dllver).lib</OutputFile>
<OutputFile>$(OutDir)\RTC$(rtm_dllver)d.dll</OutputFile>
<OutputFile>$(OutDir)\RTC$(rtm_dllver)d.lib</OutputFile>
<OutputFile>$(OutDir)\coil$(coil_dllver).dll</OutputFile>
<OutputFile>$(OutDir)\coil$(coil_dllver).dll</OutputFile>
<OutputFile>$(OutDir)\coil$(coil_dllver)d.dll</OutputFile>
<OutputFile>$(OutDir)\coil$(coil_dllver)d.dll</OutputFile>
また、ファイルをコピーするコマンドも変更します。
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\RTC$(rtm_dllver)d.lib"
copy "$(OutDir)\\RTC$(rtm_dllver)d.dll" "$(SolutionDir)bin\\"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\RTC$(rtm_dllver)d.lib"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\RTC$(rtm_dllver).lib"
copy "$(OutDir)\\RTC$(rtm_dllver).dll" "$(SolutionDir)bin\\"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\RTC$(rtm_dllver).lib"
;</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\coil$(coil_dllver)d.lib"
copy "$(OutDir)\\coil$(coil_dllver)d.dll" "$(SolutionDir)bin\\"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\coil$(coil_dllver)d.lib"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\coil$(coil_dllver).lib"
copy "$(OutDir)\\coil$(coil_dllver).dll" "$(SolutionDir)bin\\"
</Command>
<Command>copy "$(OutDir)\\$(TargetName).lib" "$(SolutionDir)bin\\coil$(coil_dllver).lib"
</Command>
OpenRTM-aist-1.1.2、omniORB-4.1.7 でエラーが発生するので、libRTC_vc12.vcxproj の PreprocessorDefinitionsにRTM_OMNIORB_41 を追加してください。OpenRTM-aist-1.2.0、もしくは omniORB-4.2.1 の場合は不要です。
<PreprocessorDefinitions>LIBRARY_EXPORTS;WIN32;_DEBUG;_WINDOWS;_USRDLL;__WIN32__;__NT__;__OSVERSION__=4;__x86__;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>LIBRARY_EXPORTS;WIN32;_DEBUG;_WINDOWS;_USRDLL;__WIN32__;__NT__;__OSVERSION__=4;__x86__;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;RTM_OMNIORB_41;%(PreprocessorDefinitions)</PreprocessorDefinitions>
omniORB のリンクするライブラリを変更します。 以下の rtm_config.props というファイルを編集してください。
C:\openrtm_work\OpenRTM-aist\rtm_config.props
以下の箇所を変更します。
<omni_lib>omniORB$(omni_dllver)_rt.lib;omniDynamic$(omni_dllver)_rt.lib;omnithread$(omnithread_dllver)_rt.lib</omni_lib> <omni_libd>omniORB$(omni_dllver)_rtd.lib;omniDynamic$(omni_dllver)_rtd.lib;omnithread$(omnithread_dllver)_rtd.lib</omni_libd>
<omni_lib>omniORB4.lib;omniDynamic4.lib;omnithread.lib</omni_lib> <omni_libd>omniORB4d.lib;omniDynamic4d.lib;omnithreadd.lib</omni_libd>
build.bat を起動したらビルドを開始します。 終了したら、binフォルダーに以下のファイルが生成されているかを確認してください。
※サンプルコンポーネントや rtcd、rtcprof のコンパイルで大量にエラーが出ますが、自分の RTC をビルドするだけならば必要ないので無視してください。
omniORB のリンクするライブラリ名が変わったのと、新たにリンクするライブラリを追加する必要があるため以下のファイルを編集します。
set(OMNIORB_LIBRARIES optimized;omniORB417_rt; optimized;omniDynamic417_rt; optimized;omnithread34_rt; debug;omniORB417_rtd; debug;omniDynamic417_rtd; debug;omnithread34_rtd)
set(OMNIORB_LIBRARIES optimized;omniORB4; optimized;omniDynamic4; optimized;omnithread; debug;omniORB4d; debug;omniDynamic4d; debug;omnithreadd)
set(OPENRTM_LIBRARIES optimized;RTC112_vc12; optimized;coil112_vc12; optimized;omniORB4_rt; optimized;omniDynamic4_rt; optimized;omnithread4_rt; optimized;advapi32; optimized;ws2_32; optimized;mswsock; debug;RTC112_vc12d; debug;coil112_vc12d; debug;omniORB4_rtd; debug;omniDynamic4_rtd; debug;omnithread4_rtd; debug;advapi32; debug;ws2_32; debug;mswsock)
set(OPENRTM_LIBRARIES optimized;RTC112_vc12; optimized;coil112_vc12; optimized;omniORB4; optimized;omniDynamic4; optimized;omnithread; optimized;advapi32; optimized;ws2_32; optimized;mswsock; optimized;libRTCSkel; optimized;rpcrt4; debug;RTC112_vc12d; debug;coil112_vc12d; debug;omniORB4d; debug;omniDynamic4d; debug;omnithreadd; debug;advapi32; debug;ws2_32; debug;mswsock; debug;libRTCSkeld; debug;rpcrt4)
※このファイルは再度 OpenRTM-aist をビルドすると上書きするので注意してください。
次に/MT、/MTd を設定してビルドしたいRTCのファイルを編集します。 srcフォルダーの CMakeLists.txt を編集します。 以下の記述を追加することで、ランタイムライブラリを/MT、/MTdに設定します。
set(CMAKE_CXX_FLAGS_RELEASE "/MT") set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
次にビルドに使用する OpenRTM-aist、omniORB を先ほどビルドしたものに設定して RTC のビルドを行います。 コマンドプロンプトより、以下のコマンドを入力して変数を設定してください。
set RTM_ROOT=C:\openrtm_work\OpenRTM-aist set VC_VERSION=12 set OMNI_ROOT=C:\openrtm_work\OpenRTM-aist\omniORB set OpenRTM_DIR=C:\openrtm_work\OpenRTM-aist\cmake
Visual Studio のバージョンなどによって適宜変更してください。
最後に以下のコマンドでビルドすれば完了です。
cmake . cmake --build . --config Debug
/MTの実行ファイルが何らかのDLLとリンクした状態で動作すると以下のエラーメッセージが表示されることがあります。
Expression: _pFirstBlock == pHead
実行ファイル側で確保したメモリをDLL側で開放したりすると発生します。
__declspec(dllexport) void deleteData(char* v) { delete v; }
void deleteData(char* v); int main(void) { char *v = new char[1000]; deleteData(v); }
これはランタイムライブラリに /MT、/MTd を指定した場合、ヒープ領域が実行ファイルと DLL で別に作成されるためヒープ破壊が発生することがあるようです。 ただし確実に発生するわけではなく、例えば deleteData 関数実行前に print文を入れると何故か発生しなかったりします。 この場合、後になって全然関係ない箇所で落ちたりするので原因特定が非常に難しくなります。
一方、ランタイムライブラリに /MD、/MDd を指定した場合、ヒープ領域は共有するためこのような問題は発生しません。
OpenRTM-aist、あるいは omniORB のどこで異常が発生しているのかを調べて修正するのは無理だと思うので、基本的にはランタイムライブラリには /MD、/MDd を使うようにしてください。
どうしてもランタイムライブラリに /MT、/MTd を設定したい場合は、上記の方法で静的ライブラリを作成してください。
上記の方法で /MT、/MTd 指定の RTC が一応動作できるようにはなりますが、omniORB と coil が advapi32.dll という名前のライブラリにリンクしており、advapi32.dll が /MD のランタイムライブラリ(MSVCRT)を使用しているため、ここで何が起こるかは分かりません。
インストールまたはビルドが正常に終了したら、付属のサンプルで動作テストをします。 サンプルは、通常は以下の場所にあります。
サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist が正しくビルド・インストールされているかを確認します。
RT コンポーネント ConsoleInComp、ConsoleOutComp からなるサンプルセットです。 ConsoleInComp はコンソールから入力された数値を OutPort から出力するコンポーネント、ConsoleOutComp は InPort に入力された数値をコンソールに表示するコンポーネントです。 これらは、最も Simple な I/O (入出力) を例示するためのサンプルです。 ConsoleInComp の OutPort から ConsoleOutComp の InPort へ接続を構成し、これらの2つのコンポーネントをアクティブ化 (Activate) することで動作します。
以下は、msi インストーラーで OpenRTM-aist をインストールした環境で、スタートメニューから各種プログラムを起動する前提で説明します。 スタートメニューから、OpenRTM-aist を右クリックし「開く」でフォルダーを開き、各プログラムへアクセスすると便利です。
まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 [OpenRTM-aist 1.1] > [Tools] にあるショートカットの「Start C++ Naming Service」をダブルクリックしネームサーバーを起動します。
起動すると、以下のようなコンソール画面が開きます。
ネームサーバーのコンソール画面が開かないケースがあります。 この場合下記のようないくつかの原因が考えられますので、原因を調査して対処してくださ。
openrtm.org が提供する msi インストーラーには omniORB が含まれていますが、手動でインストールした場合には、omniORB が入っていない場合も考えられますので、omniORB がインストールされているか確認してください。
「Start Naming Service」は %RTM_ROOT%\bin\rtm-naming.bat にあるバッチファイルからネームサーバー (omniNames.exe) を起動します。 この際、omniNames.exe を参照するために環境変数 OMNI_NAMES を利用しています。 通常インストーラーで OpenRTM-aist をインストールした場合には、OMNI_ROOT 環境変数が自動で設定されますが、何らかの理由で環境変数が無効になっていたり、手動でインストールした場合などは、環境変数が設定されていないことがあります。
環境変数 OMNI_ROOT が設定されていることを確認してください。 環境変数は、ユーザー名が2バイト文字の場合、ログを出力するフォルダーを適切に設定できずに omniNames.exe の起動に失敗する場合があります。 その場合、環境変数 TEMP を2バイト文字を含まない場所に設定することで改善する場合があります。 適当なテンポラリディレクトリー (以下のケースでは C:\temp) を作成し、そこを環境変数 TEMP が指すように、rtm-naming.bat の先頭部分で以下のように設定します。
set cosnames="omninames" set orb="omniORB" set port=%1 rem set OMNIORB_USEHOSTNAME=localhost set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32 set TEMP=C:\temp
また、稀なケースですが、ホスト名やアドレスの設定の問題で、起動がうまくいかないケースがあります。 その場合、利用している PC の IPアドレス を omniNames.exe に教えてあげるとうまくいくケースがります。 環境変数 OMNIORB_USEHOSTNAME を以下のように設定します (以下は自ホストの IPアドレスが 192.168.0.11 の場合の例)。
set cosnames="omninames" set orb="omniORB" set port=%1 set OMNIORB_USEHOSTNAME=192.168.0.11 set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32
ネームサーバー起動後、適当なサンプルコンポーネントを起動します。 先ほど開いたスタートメニューフォルダーの、[OpenRTM-aist] > [C++] > [components] > [examples] を開くと、図のようにいくつかのコンポーネントがあります。
ここでは、「ConsoleInComp.exe」「ConsoleOutComp.exe」をそれぞれダブルクリックして2つのコンポーネントを起動します。 起動すると、下図のような2つのコンソール画面が開きます。
コンポーネントが起動しない場合、いくつかの原因が考えられます。
rtc.conf の設定に問題があり、起動できないケースがあります。上記スタートメニューフォルダーの [rtc.conf for examples] を開いて設定を確認してください。 例えば、corba.endpoint/corba.endpoints などの設定が現在実行中の PC のホストアドレスとミスマッチを起こしている場合などは、CORBA が異常終了します。
以下のような最低限の rtc.conf に設定しなおして試してみてください。
corba.nameservers: localhost
スタートメニューフォルダーから、RTSystemEditorRCP を起動します。 RTSystemEditorは [OpenRTM-aist] > [Tools] > [RTSystemEditorRCP] にあります。
※ RTSystemEditor (RCP 版 ) を動作させるために、32bit 版の Java 動作環境 (JRE) または Java 開発環境 (JDK) が必要となります。
インストーラーのオプションで JRE を yes で選択していればインストールされています。
RTSE が起動したらまずネームサーバーへ接続します。左ペインの上部にある、のアイコンをクリックして接続ダイアログを開きます。 接続ダイアログのホスト名の部分に先ほど起動したネームサーバーのアドレス (この場合同一ホストですので localhost) を指定します。 ポート番号も指定できますが、通常デフォルトの2809番を使用する場合は何も指定しません。
接続すると、ネームサービスビューに localhost が現れます。ツリー表示の [+] をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります。
システムを編集するエディタを開きます。上部のエディタを [開く] ボタン をクリックすると、中央のペインにエディタが開きます。
左側のネームサービスビューに のアイコンで表示されているコンポーネント (2つ) を中央のエディタにドラッグアンドドロップします。
ConsoleIn0 コンポーネントの右側にはデータが出力される OutPort 、ConsoleOut0 コンポーネントの左側にはデータが入力される InPort がそれぞれついています。
これら InPort/OutPort (まとめてデータポートと呼びます) を接続します。 OutPort から InPort (または InPort から OutPort) へドラッグランドドロップすると、図のようなダイアログが現れますので、デフォルト設定のまま [OK] ボタンをクリックします。
2つのコンポーネントの間に接続線が現れます。次に、エディタ上部メニューの [All Activate] ボタン をクリックし、これらのコンポーネントをアクティブ化します。 アクティブ化されると、コンポーネントが緑色に変化します。
コンポーネントがアクティブ化されると ConsoleIn コンポーネント側では
Please input number:
というプロンプト表示に変わりますので、適当な数値 (short int の範囲内:32767以下) を入力し Enter キーを押します。 すると、ConsoleOut 側では、入力した数値が表示され、ConsoleIn コンポーネントから ConsoleOut コンポーネントへデータが転送されたことがわかります。
以上で、コンポーネントの基本動作の確認は終了です。
以下のメッセージが出て RTSystemEditorRCP (RTSE) が起動しない場合は、32bit 版の Java 動作環境 (JRE) または Java 開発環境 (JDK) をインストールする必要があります。 変更インストールで JRE を選択すればインストールされます。手順は、コントロールパネルの「プログラムのアンインストールまたは変更」を開き、OpenRTM-aist の右クリックして「変更」を選択します。 インストーラー画面での JRE 選択については、OpenRTM-aistを10分で始めよう! のページをご覧ください。
インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。 これらのコンポーネントも同様に起動し、RTSystemEditor でポート同士を接続し、アクティブ化することで試すことができます。
付属しているコンポーネントのリストと簡単な説明を以下に示します。
ConsoleInComp.exe | コンソールから入力された数値を OutPort から出力する。ConsoleOutComp.exe に接続して使用する。 |
ConsoleOutComp.exe | InPort に入力された数値をコンソールに表示するコンポーネント。ConsoleInComp.exe に接続して使用する。 |
SequenceInComp.exe | ランダムな数値(Short、Long、Float、Double とそのシーケンス型)を出力するコンポーネント。SequenceOutComp.exe に接続して使用する。 |
SequenceOutComp.exe | InPort に入力される数値(Short、Long、Float、Double とそのシーケンス型)を表示。SequenceInComp.exe に接続して使用する。 |
MyServiceProviderComp.exe | MyService 型のサービスを提供するコンポーネント。MyServiceConsumerComp.exe に接続して使用する。 |
MyServiceConsumerComp.exe | MyService 型のサービスを提供するコンポーネント。MyServiceProviderComp.exe に接続して使用する。 |
ConfigSampleComp.exe | Configuration のサンプル。RtcLink から Configuration を変更して Configuration の挙動を理解するためのサンプル。 |
USBCameraAcquireComp.exe | USBカメラから画像を取得して OutPort から出力するコンポーネント。USBCameraMonitor.exe に接続して使用する。 |
USBCameraMonitor.exe | InPort に入力される画像を画面に表示するコンポーネント。USBCameraAquire.exe に接続して使用する。 |
インストールが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、通常は以下の場所にあります。
ソースからビルドした場合は、ソースディレクトリー以下の
にもあります。
サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist が正しくビルド・インストールされているかを確認します。
RT コンポーネント ConsoleInComp、ConsoleOutComp からなるサンプルセットです。 ConsoleInComp はコンソールから入力された数値を OutPort から出力するコンポーネント、ConsoleOutComp は InPort に入力された数値をコンソールに表示するコンポーネントです。 これらは、最も Simple な I/O (入出力) を例示するためのサンプルです。 ConsoleInComp の OutPort から ConsoleOutComp の InPort へ接続を構成し、これらの2つのコンポーネントをアクティブ化 (Activate) することで動作します。
以降、簡単のためサンプルは /usr/share/openrtm-1.1/example 以下にあるものとして説明を記述します。
まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 Linux などのパッケージで omniORB をインストールした場合、すでにシステムのサービスとしてネームサーバー (omniNames) が起動している場合があります。
すでに omniNames が起動している場合、このようになります。
$ ps ax | grep omni 1550 ? Sl 0:00 /usr/bin/omniNames -errlog /var/log/omniorb4-nameserver.log 18418 pts/2 S+ 0:00 grep --color=auto omni
omniNames が起動していない場合はこのようになります。、
$ ps ax | grep omni 18418 pts/2 S+ 0:00 grep --color=auto omni
omniNames が起動していない場合、rtm-naming コマンドでネームサーバーを起動します。
$ rtm-naming Starting omniORB omniNames: ubuntu910:9876 Thu Dec 3 18:52:14 2009: Starting omniNames for the first time. Wrote initial log file. Read log file successfully. Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3130302e31323500942600000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000004e8a174b01000fef Checkpointing Phase 1: Prepare. Checkpointing Phase 2: Commit. Checkpointing completed.
テストのための RTC コンフィギュレーションファイル rtc.conf を作成し、配置します。 まず、適当な作業ディレクトリーを作ります。ここでは便利のため、ホームディレクトリー直下に RTCwork というディレクトリーを作業ディレクトリーとしておくことにします。 作業ディレクトリー RTCwork に、次のような内容のファイル rtc.conf を作成し配置します。
/usr/share/OpenRTM-aist/examples の下にある rtc.conf はこの例では使えませんので、~/RTCWork/rtc.conf として新たに作成してください。
$ cd ~/RTCwork $ vi rtc.conf
作成するファイルの内容は以下のようになります。
corba.nameservers: localhost naming.formats: %h.host_cxt/%n.rtc logger.enable: NO example.ConsoleOut.config_file: consout.conf example.ConsoleIn.config_file: consin.conf
システムで IPv6 が設定されている場合、localhostというホスト名が正しく機能しない場合があります。 その場合、localhost の代わりに127.0.0.1に置き換えてください。
ターミナルを起動して、次のように前節で作成した rtc.conf を参照させる形で ConsoleInComp を起動します。
$ /usr/share/openrtm-1.1/example/ConsoleInComp -f rtc.conf Creating a component: "ConsoleIn"....succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleIn0 Implementation: ConsoleIn Description: Console input component Version: 1.0 Maker: Noriaki Ando, AIST Category: example Other properties ================================================= ================================================= Port0 (name): out ------------------------------------------------- - properties - port.port_type: DataOutPort dataport.data_type: TimedLong dataport.subscription_type: flush,new,periodic dataport.dataflow_type: push dataport.interface_type: corba_cdr -------------------------------------------------
自分でビルド・インストールした場合は、
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleInComp -f ~rtc.conf
などとして ConsoleInComp を起動します。
ターミナルを起動して、同様に先ほど作成した rtc.conf を参照する形で ConsoleOutComp を起動します。
$ /usr/share/openrtm-1.1/example/ConsoleOutComp -f rtc.conf succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleOut0 Implementation: ConsoleOut Description: Console output component Version: 1.0 Maker: Noriaki Ando, AIST Category: example Other properties ================================================= ================================================= Port0 (name): in ------------------------------------------------- - properties - port.port_type: DataInPort dataport.data_type: TimedLong dataport.subscription_type: Any dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr -------------------------------------------------
自分でビルド・インストールした場合は、同様に
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleOutComp -f ~rtc.conf
などとして ConsoleOutComp を起動します。
RTSystemEditor を使って、RTコンポーネントの接続とアクティブ化を行います。RTSystemEditor はツール OpenRTP に含まれておりますので、こちらから Eclipse 全部入りパッケージをダウンロードし解凍してください。
RTSystemEditor は Java Development Kit7 を使用します。以下のマニュアルを参考にインストールしてください。また、Ubuntu 等では、デフォルトの Java 環境は OpenJDK が推奨されています。そうした場合、OpenJDK でも利用することは可能です。
こちらのページを参考に RTSystemEditor の起動してください。
ネームサーバーへ接続し登録内容を確認します。 ネームサーバーへの接続は、左側の Name Service View のコンセント型アイコンのボタンをクリックし、ダイアログで
localhost または localhost:2809
と入力します。(omniNamesのデフォルトのポート番号は2809です。)
ネームサーバーに登録された RTコンポーネントをシステムエディタに配置します。 左の Name Service View の ConsoleOut0 および ConsoleIn0 を中央のエディタ上にドラッグアンドドロップします。次に、コンポーネントの右端、左端に出ている突起上のアイコンを、片方からもう片方でドラッグアンドドロップします。 接続ダイアログが表示されますが、すべてデフォルトのままで結構ですので [OK] をクリックして接続は完了します。
メニューの下の緑色の [再生] ボタンをクリックすると、エディタ上のすべてのコンポーネントがアクティブ化されます。
ConsoleInComp と ConsoleOutComp のポートを接続したら、
Please input number:
というプロンプトが現れるので、そこに数字を入力します。入力する数字は、short int に収まる範囲の数値を入力してください。
ConsoleInComp 側のターミナルに数字を打ち込むと、ConsoleOutComp 側のターミナルに、入力した数値が現れます。 以上で、OpenRTM-aist が正しくインストールされていることが確認できました。
OpenRTM-aistは、32bit 版も64bit 版も同じ名前のシステム環境を利用しています。またパスを通すために PATH にも追加しています。 このため、32bit 版、64bit 版の両方をインストールしたり、一方をアンインストールしたりすると、システム環境変数の書き換えが必要となる場合があります。
このような場合に本ツールを起動して [確認] ボタンをクリックすると、正しいシステム環境変数に修正します。
本ツールのログを、起動画面に示している先に出力しています。毎回上書きしているので直前の実行内容だけですが確認することができます。
インストール後にスタートメニューから起動できます。VCVerChanger で検索しての起動もできます。
スタートから OpenRTM-aist xxx(1.2.0以降) | VCVerChanger |
本ツールの実行には、mfc の dll が必要です。この dll を別途インストールせずともツールを実行するために、2種類の実行ファイルを用意しています。 ご使用の Visual Studio のバージョンに合わせてダウンロードしてください。
Visual Studio 2008,2010,2012 向け | OpenRTMEnvTool_vc10.exe |
Visual Studio 2013,2015 向け | OpenRTMEnvTool_vc12.exe |