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 |
ここでは OpenRTM-aist (Python) の Windows へのインストール方法を説明します。 ※以降の説明は便宜上 OpenRTM-aist-1.0.0 について書かれています。
openrtm.org では Windows 用の msi (Microsoft Windows インストーラー)パッケージを提供しています。 msi パッケージを利用することで、依存ライブラリである omniORBpy や RTSystemEditor といったツールも同時にインストールすることができます。
openrtm.org のダウンロードサイトから、msi パッケージをダウンロードします。msi パッケージには、必要な omniORBpy や RTSystemEditor といったツールは含まれていますが、Python は予めインストールしておく必要があります。
1.1.2 版からは一つの Windows 用インストーラーに3言語(C++、Java、Python)+ツール(Eclipse+rtshell)すべてが同梱されています。古いバージョンは予めアンインストールすることをお勧めします。 また、ダウンロードサイトでの赤字表記の注意書きをご覧下さい。
手順については、OpenRTM-aistを10分で始めよう! のページをご覧下さい。
インストーラーは以下の作業を行います。
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 コマンドによる Python がインストールされているディレクトリーと Program Files 下の OpenRTM-aist ディレクトリー構造をログファイルに保存しますので、詳細を確認することができます。
<python_install_dir> + omniORBのdll, 各種コマンド + rtcd, rtcprofileなどOpenRTM-aist 関連の各種コマンド | + Lib | + site-packages | + OpenRTM_aist: OpenRTM-aist の Python モジュール | + RTM_IDL: IDLファイル | | + omniORB 関連の Python モジュール
<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:
以上、インストールが終了しましたら、動作確認 へ進みましょう。
Python 版 OpenRTM-aist は Ubuntu や Debian GNU Linuxで利用可能な deb パッケージが提供されています。 対応しているディストリビューションのバージョンは、ダウンロードページから確認できます。 Ubuntu/Debian GNU Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
インストールの方法には大きく分けて以下の二種類のインストール方法があります。
好みの方法でインストールしてください。
openrtm.org が提供するインストール・スクリプト pkg_install_ubuntu.sh または pkg_install_debian.sh をダウンロードページからダウンロードし、root 権限で実行します。 このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。
OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。 オプションを指定することで、目的に合わせたパッケージをインストールできるようになったので、 初めて OpenRTM-aist をインストールしてみる方にもソースをコンパイルしてみる方にもお勧めします。
ただし、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 | trusty |
Ubuntu 16.04 | xenial |
Ubuntu 16.10 | yakkety |
Ubuntu 17.04 | zesty |
次の手順でインストールを行います。途中、いくつかの応答を求められるので、y を入力しながら完了させてください。
# apt-get update # apt-get install python # apt-get install python-omniorb-omg omniidl-python # apt-get install openrtm-aist-python openrtm-aist-python-example
なお、インストール済みの OpenRTM-aist を特定バージョンのまま保持したい場合には、/etc/apt/preferencesを編集して以下の行を追加します。 (この例では1.0系列にバージョンを固定します。)
Package: OpenRTM-aist-Python Pin: version 1.0.*
詳しくは http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-pin を参照してください。
インストールを確認します。
$ dpkg -l 'openrtm*' 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) ||/ 名前 バージョン アーキテクチャ 説明 +++-============================-===================-===================-============================================================= ii openrtm-aist-python 1.1.0-2 i386 OpenRTM-aist is a reference implementation of RT-Middleware ii openrtm-aist-python-example 1.1.0-2 i386 OpenRTM-aist-Python examples
各パッケージの内容は以下の通りです。
openrtm-aist-python には Python モジュールとコマンド群が含まれています。
/usr/bin/rtcprof_python /usr/bin/rtcd_python
/usr/etc/rtc.conf.sample
/usr/lib/python<version>/dist-packages/OpenRTM_aist/*
/usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcprof /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcd /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtc-template /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtm-naming
openrtm-aist-python-exampleには RTC のサンプルが含まれています。
/usr/share/openrtm-1.1/example/python/SimpleIO/ /usr/share/openrtm-1.1/example/python/SimpleService/ 中略
以上、インストールが終了しましたら、動作確認へ進みましょう。
Python 版 OpenRTM-aist は Fedora Linux で利用可能な RPM パッケージが提供されています。 対応している Fedora Linux のバージョンは、ダウンロードページから確認できます。 Fedora Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
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 python # yum install omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard # yum install OpenRTM-aist-Python OpenRTM-aist-Python-example
最後に以下のコマンドでインストールの確認をします。
# rpm -qa | grep OpenRTM-aist-Python OpenRTM-aist-Python-example-1.1.0-RELEASE0.fcx.i386 OpenRTM-aist-Python-1.1.0-RELEASE0.fcx.i386
各パッケージの内容は以下の通りです。
OpenRTM-aist-Python には Python モジュールとコマンド群が含まれています。
/usr/bin/rtcprof_python /usr/bin/rtcd_python
/usr/lib/python<version>/site-packages/OpenRTM_aist/*
/usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcprof /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcd /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtc-template /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtm-naming
OpenRTM-aist-Python-example には RTC のサンプルが含まれています。
/usr/share/openrtm-1.1/example/python/SimpleIO/ /usr/share/openrtm-1.1/example/python/SimpleService/ 中略
以上、インストールが終了しましたら、動作確認へ進みましょう。
Python 版 OpenRTM-aist は Vine Linux で利用可能な RPM パッケージが提供されています。 対応している Vine Linux のバージョンは、ダウンロードページから確認できます。 Vine Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。
Vine Linux へのインストールの方法には大きく分けて以下の二種類のインストール方法があります。
openrtm.org が提供するインストール・スクリプト pkg_install_python_vine.sh をダウンロードページからダウンロードし、root 権限で実行します。 このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。
OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。 初めて OpenRTM-aist をインストールしてみる方にお勧めします。 ただし、OpenRTM-aist 関係のすべてのパッケージをインストールするので、必要ないものもインストールされる可能性があります。 より詳しくわかっている人は、手動でインストールした方がよいでしょう。 以下、一括インストールスクリプトを使用したインストールの手順です。
> wget [pkg_install_python_vine.sh のダウンロード URL ] > su # sh pkg_install1_python_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 python # apt-get install omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standarda # apt-get install OpenRTM-aist-Python OpenRTM-aist-Python-example
途中、いくつかの質問を尋ねられるので、y あるいは Y を入力して完了させます。apt-get は 現在は synaptic コマンドで置き換えることが推奨されています。
インストールの確認を以下のようにして行います。
# rpm -qa | grep OpenRTM-aist-Python OpenRTM-aist-Python-example-1.0.0-RELEASE.vlXX OpenRTM-aist-Python-1.0.0-RELEASE0.vlXX
各パッケージの内容は以下の通りです
OpenRTM-aist-Python には Python モジュールとコマンド群が含まれています。
/usr/bin/rtcprof_python /usr/bin/rtcd_python
/usr/lib/python<version>/site-packages/OpenRTM_aist/examples/rtc.conf.sample
/usr/lib/python<version>/site-packages/OpenRTM_aist/*
/usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcprof /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcd /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtc-template /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtm-naming
OpenRTM-aist-Python-example には RTC のサンプルが含まれています。
/usr/share/OpenRTM-aist/examples/python/SimpleIO/ /usr/share/OpenRTM-aist/examples/python/SimpleService/ 中略
以上、インストールが終了しましたら、動作確認へ進みましょう。
Windows 上でソースパッケージからインストールしたい場合、OpenRTM-aist-Python を自分でビルドする必要があります。
Windows 用の OpenRTM-aist (Python版) ソースパッケージは Linux 用のソースとは別に配布されています。 ソースコードの内容は全く同じですが、以下の部分が異なっています。
オリジナルは subversion リポジトリのソースコードで、そのソースコードから、Linux 上では、
の2種類を、
Windows 上では、
の1種類だけを作成する構成になっています。
ビルドに必要な環境、ライブラリは以下の通りです。
Python 2.7 が必要です。以下のサイトから最新のものを取得しインストールしてください。
インストーラを起動すると、ウィザードで幾つか選択する部分がありますが、 デフォルトのままでインストールしてかまいません。
OpenRTM-aist-Python のビルドには omniORBpy のライブリが必要です。omniORBpy は以下のリンクから、ソースコードおよびバイナリを取得できます。
ZIPファイルを展開すると、以下の様なディレクトリツリーが展開されるはずです。 それぞれのディレクトリー下のファイルを以下の指示通りに Python のディレクトリーに配置してください。 なお、omniORBpy のバージョンを x.y, Python のバージョンを X.Y として記述しています。
+ omniPRBpy-x.y + bin + x86_win32 -> exe, dllともに C:\PythonXY 直下へ + doc -> 削除してもよい + examples -> 削除してもよい + idl -> 削除してもよいが C:\PythonXY\Lib\site-packages\omniORB\idl 以下においておいてもよい + lib + python -> 以下のディレクトリとファイルを丸ごと C:\PythonXY\Lib\site-packages 直下へ + x86_win32 -> .pyd を C:\PythonXY\Lib\site-packages 直下へ
まずソースコード OpenRTM-aist-Python-X.X.X.zip をダウンロードし、適当なディレクトリーに展開します。
コマンドプロンプトを起動し、先程ソースコードを展開したフォルダーに移動後、以下のコマンドにてビルドを行います。
> OpenRTM-aist-Python-X.X.X > python setup.py build
すべてが正しくビルドできたら、以下のコマンドにてインストールを完了させます。
> python setup.py install
以上で、OpenRTM-aist のインストールは終了です。
パッケージが用意されていない UNIX 環境や、クロス開発環境、OpenRTM-aist-Python 本体のソースを変更して利用したい場合には、ソースからビルドすることができます。
OpenRTM-aist (Python版) は Python の distutils モジュール を利用したビルド環境を提供しているため、様々な環境で容易にビルドできます。
OpenRTM-aist-Python は下記の OS および Linux ディストリビューションで動作することが確認されています。
これ以外の環境でも、一般的な Linux/UNIX 環境であれば、ビルドできる可能性があります。
OpenRTM-aist-Python-1.0.0 のインストールには下記の開発環境およびライブラリが必要です。
それぞれのライブラリ等のドキュメントに従いインストールを行ってください。 これらのパッケージが、標準のディレクトリー(/usr、/usr/lib/ 等)下にインストールされていると、以降の OpenRTM-aist-Python のビルド作業を比較的簡単に行うことができます。
OpenRTM-aist-Python のソースをダウンロードします。
まずソースコード OpenRTM-aist-Python-X.X.X.tar.gz を適当なディレクトリに展開します。
$ tar xvzf OpenRTM-aist-Python-X.X.X.tar.gz $ cd OpenRTM-aist-Python-X.X.X
OpenRTM-aist-Python はパッケージのビルドに distutils モジュール を使用しています。 ビルドの仕方は、他の distutils を使用したパッケージと同様に行います。
$ python setup.py build [options]
[options]で使用可能なオプションは
$ python setup.py --help
で参照して下さい。
ビルド が正常に終了したら、Python モジュール、ユーティリティコマンド群をインストールします。
$ su # python setup.py install
以上で、ソースコードからのビルドおよびインストールは終了です。
OpenRTM-aist は開発に利用している subversion リポジトリを一般に公開しています。 リポジトリからチェックアウトしたソースコードからビルドを行うこともできます。
ソースをリポジトリからチェックアウトします。
$ svn co http://svn.openrtm.org/OpenRTM-aist-Python/trunk/OpenRTM-aist-Python A OpenRTM-aist-Python/OpenRTM_aist A OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py A OpenRTM-aist-Python/OpenRTM_aist/__init__.py A OpenRTM-aist-Python/OpenRTM_aist/Guard.py A OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL A OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL/RTC.idl A OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL/Manager.idl 中略 A OpenRTM-aist-Python/installer/WixUI_es-es.wxl A OpenRTM-aist-Python/installer/WixUI_fr-fr.wxl A OpenRTM-aist-Python/installer/WixUI_de-de.wxl A OpenRTM-aist-Python/installer/WixUI_cs-cz.wxl A OpenRTM-aist-Python/installer/WixUI_da-dk.wxl リビジョン 349 をチェックアウトしました。
チェックアウトすると、OpenRTM-aist-Python というディレクトリーができているはずですので、そのディレクトリーに入ります。
$ ls OpenRTM-aist-Python $ cd OpenRTM-aist-Python $ ls MANIFEST.in OpenRTM-aist.pth README setup.py MANIFEST_examples.in OpenRTM_aist/ installer/
setup.py を使用してビルドします。
$ python setup.py build
python setup.py sdist を行うことで openrtm.org で配布しているようなソースのパッケージを作成することもできます。 ただし、パッケージの作成を行うには、doxygen や latex、qkc等、さらに追加のコマンドが必要となります。
$ python setup.py sdist
$ ls -l dist/ -rw-rw-r-- 1 openrtm openrtm 2721202 2月 24 16:43 OpenRTM-aist-Python-1.1.0.tar.gz -rw-rw-r-- 1 openrtm openrtm 4686452 2月 24 16:43 OpenRTM-aist-Python-1.1.0.zip
生成されたソースパッケージはそれぞれ以下の通りです。
インストールまたはビルドが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、通常は以下の場所にあります。
サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist が正しくビルド・インストールされているかを確認します。
RT コンポーネント ConsoleIn、ConsoleOut からなるサンプルセットです。 ConsoleIn はコンソールから入力された数値を OutPort から出力するコンポーネント、ConsoleOut は InPort に入力された数値をコンソールに表示するコンポーネントです。 これらは、最も Simple な I/O (入出力) を例示するためのサンプルです。 ConsoleIn の OutPort から ConsoleOut の InPort へ接続を構成し、これらの2つのコンポーネントをアクティブ化 (Activate) することで動作します。
以下は、msi インストーラーで OpenRTM-aist-Python をインストールした環境で、スタートメニューから各種プログラムを起動する前提で説明します。 スタートメニューから、OpenRTM-aist を右クリックし「開く」でフォルダーを開き、各プログラムへアクセスすると便利です。
まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 [OpenRTM-aist 1.1] > [Tools] にあるショートカットの [Start Python Naming Service] をクリックしネームサーバーを起動します。
起動すると、以下のようなコンソール画面が開きます。
ネームサーバーのコンソール画面が開かないケースがあります。 この場合下記のようないくつかの原因が考えられますので、原因を調査して対処してください。
openrtm.org が提供する msi インストーラーには omniORBpy が含まれていますが、カスタムインストールを選択すると、omniORBpy をインストールせずに OpenRTM-aist-Python をインストールすることもできます。
また、手動でインストールした場合には、omniORBpy が入っていない場合も考えられますので、omniORBpy がインストールされているか確認してください。
ネームサーバーを起動するファイルは、C:\Program Files (x86)\OpenRTM-aist\1.1\bin\rtm-naming.py です。(32bit 版 msi でインストールした場合)
このディレクトリーでコンソール画面を開き、python rtm-naming.py を実行するとネームサーバーは起動するが、rtm-naming.py をダブルクリックして起動できない場合はインストールしている python を確認してください。
Python の 32bit 版、64bit 版の両方をインストールしている場合、先にインストールしたものが py ファイルに関連付けられるようなので、OpenRTM-aist-Python のインストーラーと同じアーキテクチャの Python を先にインストールすると解決するかもしれません。
ホスト名やアドレスの設定の問題で、起動がうまくいかないケースがあります。 その場合、利用している PC の IP アドレスを omniNames.exe に教えてあげるとうまくいくケースがあります。 環境変数 OMNIORB_USEHOSTNAME を以下のように設定します (以下は自ホストの IPアドレスが192.168.0.11の場合の例)。
変数名(N): OMNIORB_USEHOSTNAME 変数値(V): 192.168.0.11
ネームサーバー起動後、適当なサンプルコンポーネントを起動します。 先ほど開いたスタートメニューフォルダーの、[OpenRTM-aist 1.1] > [Python] > [Components] > [Examples] を開くと、図のようにいくつかのコンポーネントがあります。
ここでは、「ConsoleIn.py」「ConsoleOut.py」をそれぞれダブルクリックして2つのコンポーネントを起動します。 起動すると、下図のような2つのコンソール画面が開きます。
コンポーネントが起動しない場合、いくつかの原因が考えられます。
rtc.conf の設定に問題があり、起動できないケースがあります。 サンプルコンポーネントのインストールフォルダー(インストール時に何も指定しなかった場合 C:\Program Files\OpenRTM-aist\1.0\examples\Python\SimpleIO) の「rtc.conf」を開いて設定を確認してください。 例えば、corba.endpoint/corba.endpoints などの設定が現在実行中の PC のホストアドレスとミスマッチを起こしている場合などは、CORBA が異常終了します。
以下のような最低限の rtc.conf に設定しなおして試してみてください。
corba.nameservers: localhost
スタートメニューフォルダーから、RTSystemEditor を起動します。 RTSystemEditorは [OpenRTM-aist] > [Tools] > [RTSystemEditorRCP] にあります。
※ RTSystemEditor (RCP 版) を動作させるために、32bit 版の Java 動作環境 (JRE) または Java 開発環境 (JDK) が必要で、1.1.0-RELEASE 版では JRE が一緒にインストールされます。
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 コンポーネントへデータが転送されたことがわかります。
以上で、コンポーネントの基本動作の確認は終了です。
インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。 これらのコンポーネントも同様に起動し、RTSystemEditor でポート同士を接続し、アクティブ化することで試すことができます。
付属しているコンポーネントのリストと簡単な説明を以下に示します。
ConsoleIn.py | コンソールから入力された数値を OutPort から出力する。ConsoleOut.py に接続して使用する。 |
ConsoleOut.py | InPort に入力された数値をコンソールに表示するコンポーネント。ConsoleIn.py に接続して使用する。 |
SeqIn.py | ランダムな数値(Short、Long、Float、Double とそのシーケンス型)を出力するコンポーネント。SeqOut.py に接続して使用する。 |
SeqOut.py | InPort に入力される数値(Short、Long、Float、Doubleとそのシーケンス型)を表示。SeqIn.py に接続して使用する。 |
MyServiceProvider.py | MyService 型のサービスを提供するコンポーネント。MyServiceConsumer.py に接続して使用する。 |
MyServiceConsumer.py | MyService 型のサービスを利用するコンポーネント。MyServiceProvider.py に接続して使用する。 |
ConfigSample.py | Configuration のサンプル。RTSystemEditor から Configuration を変更して Configuration の挙動を理解するためのサンプル。 |
TkMobileRobotSimulator.py | モバイルロボットの簡易シミュレーター。ロボットの速度を InPort で受け、移動後の位置を OutPort から出力する。 |
NXTRTC.py | LEGO MINDSTORM にて作成したモバイルロボットを制御するためのサンプル。InPort にて速度を受け、赤外線センサーと現在位置をそれぞれ OutPort から出力する。 |
AutoControl.py | モバイルロボット用の速度を出力する。測位センサーのデータを InPort で受け、ロボットの速度を計算して OutPort から出力する。 |
Composite.py | Composite 用のサンプル。Motor、Controller、Sensorを包含するコンポーネント。Composite の使用方法を理解するためのサンプル。 |
Motor.py | Composite コンポーネント用のサンプル。Composite の子要素として使用。 |
Controller.py | Composite コンポーネント用のサンプル。Composite の子要素として使用。 |
Sensor.py | Composite コンポーネント用のサンプル。Composite の子要素として使用。 |
Slider.py | Tk を用いた GUI コンポーネントのサンプル。Slider で指定した値を OutPort から出力する。 |
TkMotorComp.py | Tk を用いた GUI コンポーネントのサンプル。InPort で受け取った値を GUI で表示する。 |
TkLRFViewer.py | Tk を用いた GUI コンポーネントのサンプル。レーザーレンジセンサーなどから出力されるデータを表示する。 |
TkJoystickComp.py | Tk を用いた GUI コンポーネントのサンプル。簡易ジョイスティックコンポーネント。 |
インストールが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、通常は以下の場所にあります。
ソースからビルドした場合は、ソースディレクトリー以下の
にもあります。
サンプルコンポーネントセット 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/python 以下にあるものとして説明を記述します。
まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 Linux などのパッケージで omniORBpy をインストールした場合、すでにシステムのサービスとしてネームサーバー (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:2809 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.
rtm-naming コマンドが見つからない場合は、rtm-naming,py を実行して下さい。(例:Fedora環境)
$ python /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtm-naming/rtm-naming.py
テストのための RTC コンフィギュレーションファイル rtc.conf を作成し、配置します。まず、適当な作業ディレクトリーを作ります。 ここでは便利のため、ホームディレクトリー直下に RTCwork というディレクトリーを作業ディレクトリーとしておくことにします。 作業ディレクトリー RTCwork に、次のような内容のファイル 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 を参照させる形で ConsoleIn.py を起動します。
$ python /usr/share/openrtm-1.1/example/python/SimpleIO/ConsoleIn.py -f ~/RTCwork/rtc.conf comp_args: ConsoleIn
自分でビルド・インストールした場合は、
$ python <source_dir>/OpenRTM_aist/examples/SimpleIO/ConsoleIn.py -f ~/RTCwork/rtc.conf
などとして ConsoleIn コンポーネント を起動します。
ターミナルを起動して、同様に先ほど作成した rtc.conf を参照する形で ConsoleOut.py を起動します。
$ python /usr/share/openrtm-1.1/example/python/SimpleIO/ConsoleOut.py -f ~/RTCwork/rtc.conf comp_args: ConsoleOut
自分でビルド・インストールした場合は、同様に
$ python <source_dir>/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py -f ~/RTCwork/rtc.conf
などとして ConsoleOut コンポーネント を起動します。
RTSystemEditor を使って、RTコンポーネントの接続とアクティブ化を行います。 こちらから 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-Python が正しくインストールされていることが確認できました。
ここでは OpenRTM-aist (JAVA) のUNIX へのインストール方法を説明します。 ※以降の説明は便宜上 OpenRTM-aist-1.1.0 について書かれています。
openrtm.org では Windows 用の msi (Microsoft Windows インストーラー)パッケージを提供しています。 msi パッケージを利用することで、RTSystemEditor といったツールも同時にインストールすることができます。
openrtm.org のダウンロードサイトから、msi パッケージをダウンロードします。msi パッケージには、必要な RTSystemEditor といったツールは含まれていますが、JDK は予めインストールしておく必要があります。
1.1.2 版からは一つの Windows 用インストーラーに3言語(C++、Java、Python)+ツール(Eclipse+rtshell)すべてが同梱されています。古いバージョンは予めアンインストールすることをお勧めします。 また、ダウンロードサイトでの赤字表記の注意書きをご覧ください。
OpenRTM-aist-Java-1.1.2の動作には JDK8 を推奨しています。
ダウンロードしたファイルを実行するとインストールが開始されます。途中、使用許諾やインストール先などを聞かれますので、お使いの環境に合わせて設定してください。 下記のインストール説明画像は JDK7 のものです。
[次へ] ボタンをクリックします。
[次へ] ボタンをクリックします。
[次へ] ボタンをクリックします。
[閉じる] ボタンをクリックします。
コマンド プロンプト画面を表示( [スタート] > [プログラム] > [アクセサリ] > [コマンド プロンプト] )し、
>java -version
と入力します。インストールした Java のバージョンが表示されればインストールは完了です。
手順については、OpenRTM-aistを10分で始めよう! のページをご覧ください。
インストーラーは以下の作業を行います。
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: OpenRTM-aist と必要な jar ファイル + jre: OpenJDK JRE + omniORB + OpenCV + rtm: OpenRTM-aist ヘッダファイル + idl: OpenRTM-aist IDLファイル + util + OpenRTP: + RTSystemEditor: + rtc-template:
OpenJDK7 または oracleJDK7
各ディストリビューションについて JDK 7 のインストール方法を JDK インストールのためのヒント にまとめましたので参考にしてください。なお、Java のインストールはスーパーユーザーで実行してください。
※ Fedora でエラーになった場合は、以前の情報ですが下記が役立つかもしれません
→ ''FAQ:'' Java をインストールする際の FedoraCore での対応について
→ ''FAQ:'' Q. Fedora Core 上でRtcLink の NameService View にエラーがでるターミナルを起動し、
$ java -version
java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1) OpenJDK Client VM (build 24.75-b04, mixed mode, sharing)
こちら から「 jar ファイルおよびサンプル」をダウンロードし、zip ファイルを任意の場所に解凍します。 解凍先は任意でかまいませんが、ディレクトリー構造は変更しないでください※。 また、この解凍先に含まれる「jar」フォルダーへのパスは次に取り上げるシステム環境変数 RTM_JAVA_ROOT に設定しなければなりません。
※ 何らの事情で、解凍後のフォルダー構造を自由な配置・自由な選択としたい場合はこちら を参照してください。
参考:
→ ''FAQ:'' Q. 任意のフォルダーにクラスパスを設定して Ant ビルドを行う方法は?
例えば、ログインシェルが bash の場合で、OpenRTM-aist-Javaを/usr/lib 以下に解凍した場合を考えたとき、.bashrc(あるいは /etc/profile ※)の末尾に次の一文を追加します。
export RTM_JAVA_ROOT=/usr/lib/OpenRTM-aist/<version>
> source ~/.bashrc
※ 環境変数 RTM_JAVA_ROOTを.bashrc(bash の場合)などのユーザー設定にしたのか、あるいは、/etc/profile(bashの場合)などにシステムワイドに設定したのかで、GUI ツールである Eclipse の起動方法が変わってきます。 → Eclipse の起動方法 を参照
※※ 解凍時には「jar」ディレクトリーはクラスライブラリ「OpenRTM-aist-X.X.X.jar」(X.X.Xはバージョン)と「commons-cli-1.1.jar」の二つのファイルを含んだ状態で、「OpenRTM-aist\<version>」の直下にあります。 したがって、ディレクトリー構造を変えなければ、環境変数 RTM_JAVA_ROOT は必ずその値の末尾に「OpenRTM-aist\<version>」を持つという形になります。
すなわち、制限ユーザーがインストールする場合には「システム環境変数」の設定が追加・変更できないので、上記設定を「ユーザー環境変数」に対して行うことになります。
実行するには、ターミナルを起動し、カレントを「examples」ディレクトリーに移してから、該当するシェルスクリプトを起動してください。
+--<install_dir> +--OpenRTM-aist +--<version> +--jar +--examples +--JavaDoc +--JavaDocEn
examples/RTMExamples/SeqIO/SeqIn.class examples/RTMExamples/SeqIO/view/SeqView.class examples/RTMExamples/SeqIO/view/RootPane.class examples/RTMExamples/SeqIO/view/SeqViewApp.class 以下 省略
examples/AutoTestIn.sh examples/AutoTestOut.sh examples/Composite.sh examples/ConfigSample.sh examples/Connector.sh examples/ConsoleIn.sh examples/ConsoleOut.sh examples/ExtConnector.sh examples/ExtConsoleIn.sh examples/ExtConsoleOut.sh examples/GUIIn.sh examples/MyServiceConsumer.sh examples/MyServiceProvider.sh examples/SeqIn.sh examples/SeqOut.sh examples/SinCosOut.sh examples/rtcd_java.sh examples/start-orbd.sh
examples/RTMExamples/SeqIO/SeqInImpl.java examples/RTMExamples/SeqIO/SeqOut.java examples/RTMExamples/SeqIO/view/RootPane.java examples/RTMExamples/SeqIO/view/SeqView.java 以下 省略
日本語のクラスリファレンス(Javadoc HTML 形式)が含まれています。
英語のクラスリファレンス(Javadoc HTML 形式)が含まれています。
ここまで確認できたら動作確認(Linux 編)へ進みましょう。
OpenRTM-aist-Java 本体のソースを変更して利用したい場合には、ソースからコンパイルすることができます。
OpenRTM-aist (Java版) は Eclipse を利用したビルド環境を提供しています。
OpenRTM-aist のビルドには下記の開発環境およびライブラリが必要です。
それぞれのライブラリ等のドキュメントに従いインストールを行ってください。
OpenRTM-aist-Java のソースをダウンロードします。
$ tar xvzf OpenRTM-aist-Java-X.X.X.tar.gz
ビルド方法を説明します。(図は Windows 版の Eclipse3.4.2 です。) Eclipse を起動し、プロジェクトをワークスペースへインポートします。 [ファイル] > [インポート] を選択します。
インポートの「選択」ウィンドウが開きます。ここで、[一般] > [既存プロジェクトをワークスペースへ] を選択して [次へ] ボタンをクリックします。
「プロジェクトのインポート」ウィンドウが開きます。「ルート・ディレクトリーの選択」へ展開したディレクトリーを指定して [完了] ボタンをクリックします。
これで、プロジェクトをワークスペースへインポートできます。
パッケージ・エクスプローラーから build.xml を右クリックして [デバッグ] > -[2 Antビルド...] を選択します。
構成編集のウィンドウが表示さます。ここで、buildAllLinux を選択して [デバッグ] ボタンをクリックします。
ビルドが始まります。
コンソールウィンドウに以上の表示がでれば完了です。
日本語が文字化けしている場合は、メニューの「実行」→「外部ツール」→「外部ツールの構成」で共通タブを開き、文字コードを MS932 に変更(その他の欄に入力)します。
OpenRTM-aist は開発に利用している subversion リポジトリを一般に公開しています。 リポジトリからチェックアウトしたソースコードからビルドを行うこともできます。
ソースのチェックアウト方法を説明します。(図は Windows 版の Eclipse3.4.2 です。) Eclipse でソースをチェックアウトして、ワークスペースへインポートします。 [ファイル] > [インポート] でインポートの「選択」ウィンドウが開きます。ここで、[その他] > [SVNからプロジェクトをチェックアウト] を選択して [次へ] ボタンをクリックすると「SVNからチェックアウト」ウィンドウが開きます。 「新規リポジトリー・ロケーションを生成」を選択して「プロジェクトのインポート」[次へ] ボタンをクリックします。「Url」に http://svn.openrtm.org/OpenRTM-aist-Java/trunk/ と入力し [次へ] ボタンをクリックします。 「フォルダの選択」ウィンドウが開きますので、「jp.go.aist.rtm.RTC」を選択して [完了] ボタンをクリックします。
初回のみ(http://svn.openrtm.org/OpenRTM-aist-Java/trunk)からスクリプトファイルまたはバッチファイルをダウンロードして実行してください。
これらのファイル Subclipse ではチェックアウトできません。
idl ファイルから必要な java ソースファイルが生成されます。
現状の trunk には不備があり、TEST ファイル等の一部でエラーが出るほか、Windows では msi ファイルが生成されません。
ビルド方法を説明します。(図は Windows 版の Eclipse 3.4.2です。) パッケージ・エクスプローラーから build.xml を右クリックして [デバッグ] > [2 Antビルド...] を選択します。
構成編集のウィンドウが表示さます。 ここで、buildAllLinux を選択して [デバッグ] ボタンをクリックします。
ビルドが始まります。
コンソールウィンドウに以上の表示がでれば完了です。
インストールまたはビルドが正常に終了したら、付属のサンプルで動作テスト をします。サンプルは、通常は以下の場所にあります。
サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist-Java が正しくビルド・インストールされているかを確認します。
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 Java Naming Service」をクリックしネームサーバーを起動します。
起動すると、以下のようなコンソール画面が開きます。
ネームサーバーのコンソール画面が開かないケースがあります。この場合下記のようないくつかの原因が考えられますので、原因を調査して対処してください。
「Start Java Naming Service」は %RTM_ROOT%\bin\rtm-naming.bat にあるバッチファイルからネームサーバー (omniNames.exe) を起動します。 この際、omniNames.exe を参照するために環境変数 OMNI_NAMES を利用しています。 通常インストーラーで OpenRTM-aist をインストールした場合には、OMNI_ROOT 環境変数が自動で設定されますが、何らかの理由で環境変数が無効になっていたり、手動でインストールした場合などは、環境変数が設定されていないことがあります。
ネームサーバー起動後、適当なサンプルコンポーネントを起動します。先ほど開いたスタートメニューフォルダーの、[OpenRTM-aist 1.1] > [Java] > [Components] > [Examples] を開くと、図のようにいくつかのコンポーネントがあります。
ここでは、「ConsoleInComp.bat」「ConsoleOutComp.bat」をそれぞれダブルクリックして2つのコンポーネントを起動します。 起動すると、下図のような2つのコンソール画面が開きます。
コンポーネントが起動しない場合、いくつかの原因が考えられます。
rtc.conf の設定に問題があり、起動できないケースがあります。上記スタートメニューフォルダーの「rtc.conf for examples」を開いて設定を確認してください。 例えば、corba.endpoint/corba.endpoints などの設定が現在実行中の PC のホストアドレスとミスマッチを起こしている場合などは、CORBA が異常終了します。
以下のような最低限の rtc.conf に設定しなおして試してみてください。
corba.nameservers: localhost
スタートメニューフォルダーから、RTSystemEditor を起動します。 RTSystemEditorは [OpenRTM-aist] > [Tools] > [RTSystemEditorRCP] にあります。
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 コンポーネントへデータが転送されたことがわかります。
以上で、コンポーネントの基本動作の確認は終了です。
インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。 これらのコンポーネントも同様に起動し、RTSystemEditor でポート同士を接続し、アクティブ化することで試すことができます。
付属しているコンポーネントのリストと簡単な説明を以下に示します。
ConsoleInComp.bat | コンソールから入力された数値を OutPort から出力する。ConsoleOutComp.exe に接続して使用する。 |
ConsoleOutComp.bat | InPort に入力された数値をコンソールに表示するコンポーネント。ConsoleInComp.exe に接続して使用する。 |
SeqInComp.bat | ランダムな数値(Short、Long、Float、Double とそのシーケンス型)を出力するコンポーネント。SequenceOutComp.bat に接続して使用する。 |
SeqOutComp.bat | InPort に入力される数値(Short、Long、Float、Double とそのシーケンス型)を表示。SequenceInComp.exe に接続して使用する。 |
MyServiceProviderComp.bat | MyService 型のサービスを提供するコンポーネント。MyServiceConsumerComp.exe に接続して使用する。 |
MyServiceConsumerComp.bat | MyService 型のサービスを提供するコンポーネント。MyServiceProviderComp.exe に接続して使用する。 |
ConfigSampleComp.bat | Configuration のサンプル。RtcLink から Configuration を変更して Configuration の挙動を理解するためのサンプル。 |
インストールが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、zip ファイルを展開したディレクト配下の以下の場所にあります。
ソースからビルドした場合は、プロジェクトディレクトリー配下の以下の場所にあります。
サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist-Java が正しくビルド・インストールされているかを確認します。
RTコンポーネント ConsoleInComp、ConsoleOutComp からなるサンプルセットです。 ConsoleInComp はコンソールから入力された数値を OutPort から出力するコンポーネント、ConsoleOutComp は InPort に入力された数値をコンソールに表示するコンポーネントです。 これらは、最も Simple な I/O (入出力) を例示するためのサンプルです。 ConsoleInComp の OutPort から ConsoleOutComp のInPort へ接続を構成し、これらの2つのコンポーネントをアクティブ化 (Activate) することで動作します。
以降、説明を簡単にするため OpenRTM-aist-Java が /home/openrtm/OpenRTM-aist/ にインストール(展開)されているとします。
まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 OpenRTM-aist-Javaでは、orbd(Java CORBA naming servic)の起動用シェルスクリプトを準備しています。 Linux などのパッケージで omniORB をインストールした場合、すでにシステムのサービスとしてネームサーバー (omniNames) が起動している場合があります。 orbd の代わりに 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
ネームサーバーが起動していない場合、 start-orbd.sh コマンドでネームサーバーを起動します。 start-orbd.shは、/home/openrtm/OpenRTM-aist/1.1/examples に格納されています。
$ sh /home/openrtm/OpenRTM-aist/1.1/examples/start-orbd.sh Starting Java CORBA naming service (orbd).
oebd はブロックします。
システムで IPv6 が設定されている場合、localhost というホスト名が正しく機能しない場合があります。 その場合、localhost の代わりに127.0.0.1に置き換えてください。
ターミナルを起動して ConsoleInComp を起動します。
$ sh /home/openrtm/OpenRTM-aist/1.1/examples/ConsoleIn.sh 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): ConsoleIn0.out ------------------------------------------------- - properties - port.port_type:DataOutPort dataport.data_type:TimedLong dataport.subscription_type:new, flush, periodic dataport.dataflow_type:push,pull dataport.interface_type:corba_cdr -------------------------------------------------
ターミナルを起動して、同様に ConsoleOutComp を起動します。
$ sh /home/openrtm/OpenRTM-aist/1.1/examples/ConsoleOut.sh Creating a component: "ConsoleOut".... succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleOut0 Implementation: ConsoleOut Description: Console output component Version: 1.0 Maker: Noriaki Ando, AIST Category: example Other properties ================================================= ================================================= Port0 (name): ConsoleOut0.in ------------------------------------------------- - properties - port.port_type:DataInPort dataport.data_type:TimedLong dataport.subscription_type:Any dataport.dataflow_type:push,pull dataport.interface_type:corba_cdr -------------------------------------------------
RTSystemEditor を使って、RTコンポーネントの接続とアクティブ化を行います。 こちらから Eclipse 全部入りパッケージをダウンロードし解凍してください。
RTSystemEditor は Java Development Kit7 を使用します。以下のマニュアルを参考にインストールしてください。 また、Ubuntu 等では、デフォルトの Java 環境は OpenJDK が推奨されています。そうした場合、OpenJDK でも利用することは可能です。
こちらのページを参考にRTSystemEditorの起動してください。
ネームサーバーへ接続し登録内容を確認します。 ネームサーバーへの接続は、左側の Name Service View のコンセント型アイコンのボタンをクリックし、ダイアログで
localhost または localhost:2809
と入力します。(orbd のデフォルトのポート番号は2809です。)
ネームサーバに登録された RTコンポーネントをシステムエディタに配置します。 左の Name Service View のConsoleOut0 および ConsoleIn0 を中央のエディタ上にドラッグアンドドロップします。 次に、コンポーネントの右端、左端に出ている突起上のアイコンを、片方からもう片方でドラッグアンドドロップします。 接続ダイアログが表示されますが、すべてデフォルトのままで結構ですので [OK] をクリックすると接続は完了します。
メニューの下の緑色の [再生] ボタンをクリックすると、エディタ上のすべてのコンポーネントがアクティブ化されます。
ConsoleInComp と ConsoleOutComp のポートを接続したら、
Please input number:
というプロンプトが表示されるので、そこに数字を入力します。入力する数字は、short int に収まる範囲の数値を入力してください。
ConsoleInComp 側のターミナルに数字を打ち込むと、ConsoleOutComp 側のターミナルに、入力した数値が表示されます。 以上で、OpenRTM-aist-Java が正しくインストールされていることが確認できました。
apt-getでインストールできます。
$ sudo apt-get install openjdk-7-jdk
JDKの確認
$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
ここでバージョンが、「1.6.0_xx」という用に表示されたら、JDK7 を使用するように変更します。この切替えは、update-alternatives コマンドで行います。
$ sudo update-alternatives --config java alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------------------------------- * 0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 自動モード 1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 手動モード 2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2
リポジトリを追加して、oracleJDK7をインストールします。
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-jdk7-installer
JDKの確認
$ java -version java version "1.7.0_76" Java(TM) SE Runtime Environment (build 1.7.0_76-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
OpenJDKもインストールしている場合は、選択状況を下記で確認できます。
$ update-alternatives --config java alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------------------------------- * 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 自動モード 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 手動モード 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:
手順は上記の Ubuntu14.04 を参照して下さい。同じ手順で設定できます。
右記の手順に従ってインストールします。 https://wiki.debian.org/JavaPackage
/etc/apt/sources.listの末尾に次の一文を追加します。
deb http://http.debian.net/debian/ wheezy main contrib
JDKをインストールするために必要な java-package をインストールします。
# apt-get update # apt-get install java-package
oracleのサイトからJDK (ここではjdk-7u75-linux-x64.tar.gz) をダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
debパッケージを生成してインストールします。
$ make-jpkg jdk-7u75-linux-x64.tar.gz $ ls oracle-j2sdk1.7_1.7.0+update75_amd64.deb # dpkg -i oracle-j2sdk1.7_1.7.0+update75_amd64.deb
oracleJDKを選択します。
# update-alternatives --config java alternative java (/usr/bin/java を提供) には 3 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------------------------------- 0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 自動モード 1 /usr/lib/jvm/j2sdk1.7-oracle/jre/bin/java 317 手動モード 2 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 手動モード * 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 1
JDKの確認
$ java -version java version "1.7.0_75" Java(TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
/etc/apt/sources.list の最後にwheezyリポジトリを追加します。
# vi /etc/apt/sources.list deb http://ftp.jp.debian.org/debian/ wheezy main
openjdk7 のインストールのためだけに追加したので、優先されるのはsqeezeバージョンということで、/etc/apt/apt.conf.d にlocalファイルを新設して以下を記述します。
# vi /etc/apt/apt.conf.d/local APT::Default-Release "squeeze";
一方、wheezyに含まれるパッケージのプライオリティは最小にしておきます。squeeze環境で、主要なライブラリが不要にもアップグレードされてしまうことは避けたいためです。
/etc/apt/preferences.d にwheezyファイルを新設し、以下を記述します。
# vi /etc/apt/preferences.d/wheezy Package: * Pin: release n=wheezy Pin-Priority: 10
priorityは、インストールしているパッケージには100、インストールしていないパッケージには500が割り当てられるので、100より小さい値を指定しておきます。
# apt-get update # apt-get install -t wheezy openjdk-7-jdk
OpenJDK7を選択します。
# update-alternatives --config java alternative java (/usr/bin/java を提供) には 3 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------------------------------- * 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自動モード 1 /usr/bin/gij-4.7 1047 手動モード 2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動モード 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 3
JDKの確認
# java -version java version "1.7.0_03" OpenJDK Runtime Environment (IcedTea7 2.1.7) (7u3-2.1.7-1) OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode)
Debian6.0 では java-package がサポートされていないので、update-alternatives でインストールします。
oracleのサイトからJDK (ここではjdk-7u75-linux-x64.tar.gz) をダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
解凍し、生成されたディレクトリjdk1.7.0_75を /usr/lib に移動させます。
# tar xvzf jdk-7u75-linux-x64.tar.gz # mv jdk1.7.0_75 /usr/lib/jvm/jdk1.7.0-oracle
update-alternatives コマンドでインストールします。この時、優先度を指定しますが、ここでは1としています。
# update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0-oracle/bin/java" 1 # update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0-oracle/bin/javac" 1
oracleJDKを選択します。
# update-alternatives --config java alternative java (/usr/bin/java を提供) には 4 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------------------------------- 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自動モード 1 /usr/bin/gij-4.7 1047 手動モード 2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動モード * 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 手動モード 4 /usr/lib/jvm/jdk1.7.0-oracle/bin/java 1 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 4
JDKの確認
$ java -version java version "1.7.0_75" Java(TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
既にインストールされています。
$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (fedora-2.5.4.2.fc20-x86_64 u75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
oracleのサイトからJDK(ここではjdk-7u75-linux-x64.rpm)をダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
インストール
# rpm -ivh jdk-7u75-linux-x64.rpm
インストール先の確認
# ls -l /usr/java/ lrwxrwxrwx. 1 root root 16 3月 17 10:47 default -> /usr/java/latest drwxr-xr-x. 8 root root 4096 3月 17 10:46 jdk1.7.0_75 lrwxrwxrwx. 1 root root 21 3月 17 10:47 latest -> /usr/java/jdk1.7.0_75
oracleJDKをalternativesへ登録します。この時、上のインストール先から /usr/java/latest のパスを使っていればJDKのバージョン番号に依存せずに済むことが分かります。
登録前に、Javaの設定を確認しておきます。
# update-alternatives --display java java - ステータスは手動です。 リンクは現在 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/java を指しています。 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/java - 優先項目 170075 スレーブ keytool: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/keytool スレーブ orbd: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/orbd スレーブ pack200: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/pack200 スレーブ rmid: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/rmid スレーブ rmiregistry: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/rmiregistry スレーブ servertool: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/servertool スレーブ tnameserv: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/tnameserv スレーブ unpack200: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/unpack200 スレーブ jre_exports: /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64 スレーブ jre: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre スレーブ java.1.gz: /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ keytool.1.gz: /usr/share/man/man1/keytool-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ orbd.1.gz: /usr/share/man/man1/orbd-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ pack200.1.gz: /usr/share/man/man1/pack200-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ rmid.1.gz: /usr/share/man/man1/rmid-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ servertool.1.gz: /usr/share/man/man1/servertool-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz スレーブ unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.1.gz
上記の結果で、orbd がスレーブとして登録されていることが分かります。ネームサーバを起動する際、orbd にパスが通っている必要があります。update-alternatives --install でインストールしたjavaと一緒に切り替えたいものをスレーブで指定しています。よって、oracleJDK を alternatives へ登録する際も --slave オプションで指定することにします。
また、優先項目 170075 とは優先度のことです。update-alternatives --install 実行時に優先度を指定します。今回、OpenJDK7 と orcleJDK7 のバージョンが同じなので、oracleJDK7 を登録する際の優先度も 170075 を指定することにします。
これらのことから、次の設定で登録します。
# update-alternatives --install /usr/bin/java java /usr/java/latest/bin/java 170075 --slave /usr/bin/javac javac /usr/java/latest/bin/javac --slave /usr/bin/javaws javaws /usr/java/latest/bin/javaws --slave /usr/bin/keytool keytool /usr/java/latest/bin/keytool --slave /usr/bin/orbd orbd /usr/java/latest/bin/orbd --slave /usr/bin/pack200 pack200 /usr/java/latest/bin/pack200 --slave /usr/bin/rmid rmid /usr/java/latest/bin/rmid --slave /usr/bin/rmiregistry rmiregistry /usr/java/latest/bin/rmiregistry --slave /usr/bin/servertool servertool /usr/java/latest/bin/servertool --slave /usr/bin/tnameserv tnameserv /usr/java/latest/bin/tnameserv --slave /usr/bin/unpack200 unpack200 /usr/java/latest/bin/unpack200
oracleJDKを選択します。
# update-alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64/jre/bin/java 2 /usr/java/latest/bin/java Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
JDKの確認
# java -version java version "1.7.0_75" Java(TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
RTC の開発を支援するために、RTCBuilder と RTSystemEditor を提供しております。 RTCBuilder と RTSystemEditor は、Eclipse 統合開発環境のプラグインとして作成された開発ツールです。 そのため、RTCBuilder と RTSystemEditor を使用するには、Eclipse と Java の開発環境をインストールする必要があります。
ここでは、それらのインストール方法について説明します。こちら に UNIX用 と Windows用 のインストールパッケージを用意しました。 RTSystemEditor と RTCBuilder を含め、全て( Eclipse4.4.2 + 日本語化 + RTSystemEditor + GEF + EMF + XSD + RTCBuilder )が入った UNIX用と Windows用のパッケージを用意しました。とても簡単にインストールできますので、とりいそぎ動かしてみたい方はぜひご利用ください。
Java Development Kit 7(JDK)が必要ですので、事前にインストールしてください。 Eclipse のアーカイブ(圧縮された状態のパッケージファイル)は100MB以上あります。 ダウンロードしたら、アーカイブをインストールしたいディレクトリーに展開してください。 Eclipse には特にインストーラーは無く、アーカイブを展開するだけでそのまま使用できます。
等が挙げられます。 こうした Eclipse の特徴が、ロボット用統合開発環境を構築する上で有用であると判断し、Eclipse を RTミドルウエアのツールのためのプラットフォームとして選択しました。
RTCBuilder と RTSystemEditor を利用するには Eclipse をインストールする必要があります。 Eclipse のインストール方法に関しては、などが参考になります。
ダウンロード後はインストーラーの指示に従ってインストールしてください。
JDK インストール:
⇒ Java Development Kit 7
参考: → cool! UNIX系環境で簡易に Oracle の Java(JRE) を Eclipse に適用する方法
Eclipse のダウンロードサイト からそれぞれのプラットフォームに対応した Eclipse のアーカイブをダウンロード、インストールしてください。 なお、RTCBuilder と RTSystemEditor の推奨環境は Eclipse3.4.2 です。
参考:
$ su # vi /etc/apt/source.list 1行追加 → deb http://jp.archive.ubuntu.com/ubuntu/ jaunty main restricted # apt-get update # apt-get install xulrunner-1.9 # dpkg -l |grep xulrunner-1.9 ii xulrunner-1.9 1.9.0.8+nobinonly-0ubuntu2 XUL + XPCOM application runner ii xulrunner-1.9.1 1.9.1.7+nobinonly-0ubuntu0.9.10.1 XUL + XPCOM application runner ii xulrunner-1.9.1-gnome-support 1.9.1.7+nobinonly-0ubuntu0.9.10.1 Support for GNOME in xulrunner-1.9.1 applica 一応、1.9.1と1.9 が共存 # exit $ export GDK_NATIVE_WINDOWS=1 $ ./eclipse
#/bin/sh export GDK_NATIVE_WINDOWS=1 ./eclipse -vmargs -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.1.8/xulrunner
簡単な手順は, 以下の通りです.
以下の手順で、これらのプラグインをインストールしてください。
インストール後 Eclipse を一旦終了します。
提供される機能の一覧は以下のとおりです。
№ | 画面要素名 | 説明 |
1 | RTC プロファイルエディタ | RTコンポーネントの仕様であるプロファイル、データポート定義、サービスポート定義、コンフィギュレーション定義、その他拡張プロファイルを編集します。 |
2 | ビルドビュー | 編集中の RTコンポーネントおよびデータポート、サービスポート、サービスインターフェースをアイコンでグラフィカルに表示します。 |
3 | リポジトリビュー | 選択した RTリポジトリの情報を表示します。 |
RTCBuilderの動作に必要な環境は以下のとおりです。
№ | 環境 | 備考 |
1 | Java Development Kit 6 | 注意:Java1.5(5.0) では動作しません。 |
2 | Eclipse 3.4.2以上 http://www.eclipse.org/downloads/index.php http://archive.eclipse.org/eclipse/downloads/index.php |
Eclipse本体 |
3 | Eclipse EMF 2.2以上(SDO,XSD含む) | RTCBuilderが依存するEclipseプラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
4 | Eclipse GEF 3.2以上(Draw2D含む) | RTCBuilderが依存する Eclipse プラグイン ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
5 | Eclipse Java development tools(JDT) | ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
また以下の開発を行う言語によっては以下の環境をインストールしておくと便利です。
№ | 環境 | 備考 |
1 | Eclipse CDT | C++用の開発環境 |
2 | Pydev for Eclipse | python用の開発環境 |
バイナリ(日本語版 jar ファイル(RTSE+RTCB)) をダウンロードして、 Eclipse の plugin ディレクトリ(eclipse ディレクトリー以下の plugin というディレクトリー)にダウンロードした jar ファイルをそのままコピーします。
Eclipse を起動し、メニューから [ウインドウ] > [パースペクティブを開く] > [その他] を選択すると、 次のようなパースペクティブ選択画面が表示されます。RTSystemEditor は、OpenRTM-aist に含まれる開発ツールの1つであり、RTC をリアルタイムにグラフィカル操作する機能を持っています。また、Eclipse 統合開発環境のプラグインとして作成されており、Eclipse 上にて既存のプラグインとシームレスに操作を行うことができます。
RTSystemEditorは、RTC をリアルタイムにグラフィカル操作する機能を持っています。提供される機能の一覧は以下のとおりです。
№ | 機能名称 | 機能概要 |
1 | コンポーネントコンフィグレーション表示/編集機能 | 選択したコンポーネントのコンフィギュレーションプロファイル情報をコンフィグレーションビューに表示し編集する。 |
2 | コンポーネント動作変更機能 | 選択したコンポーネントの動作を変更する。 |
3 | コンポーネント組み立て機能 | システムエディタ上でシステムの組み立てやリポジトリおよびファイルシステムのコンポーネント仕様の編集を行う。 |
4 | システムセーブ/オープン機能 | システムエディタの内容をセーブ/オープンする。 |
5 | システム復元機能 | 保存したシステムエディタの内容をシステムに復元する。 |
RTSystemEditor の動作に必要な環境は以下のとおりです。
№ | 環境 | 備考 |
1 | Java Development Kit 6 | 注意:Java1.5(5.0)では動作しません。 |
2 | Eclipse 3.4.2以上 http://www.eclipse.org/downloads/index.php http://archive.eclipse.org/eclipse/downloads/index.php |
Eclipse 本体 |
3 | Eclipse EMF 2.2.4 EMF+SDO Runtime および XSD Runtime | RT System Editor が依存する Eclipse プラグイン |
4 | Eclipse GEF 3.2.2 | RT System Editor が依存する Eclipse プラグイン |
5 | Eclipse Java development tools(JDT) | ※ご使用になられる Eclipse のバージョンに合ったものをご使用ください。 |
バイナリ(日本語版 jar ファイル(RTSE+RTCB)) をダウンロードして、 Eclipse の plugin ディレクトリー( Eclipse のアーカイブを展開すると通常 eclipse というディレクトリーが作成されますが、 その中の plugin というディレクトリー)にダウンロードした jar ファイルをそのままコピーします。
Eclipse を起動し、 メニューから [ウインドウ] > [パースペクティブを開く] > [その他] を選択すると、 次のようなパースペクティブ選択画面が表示されます。RTSystemEditor の起動が確認できましたら、一旦、Eclipse を終了してください。再度、同じワークスペースを指定して Eclipse を起動すると、RTSystemEditor が起動された状態から始まります。
このページではRTSystemEditor、RTCBuilderのデバッグの手順を説明します。
RTSystemEditor、RTCBuilderはeclipseのプラグインとして動作します。 以下のサイトからから、eclipseをダウンロードしてください。 その際にパッケージはUltimateのFull Edisionを選択してください。 Standard Editionだとプラグイン開発環境を手動でインストールする必要があります。
JRE 1.8以上が必要なため、以下から最新版のJDKのインストーラーを入手してインストールしてください。
以下からTortoiseSVN等によりチェックアウトしてください。
eclipse.exeを実行してください。
使用するJREを設定します。
「ウインドウ」→「設定」→「Java」→「インストール済みのJRE」で、「追加」→「標準 VM」を選択後にJREのパス(例:C:\Program Files (x86)\Java\jdk1.8.0_131\jre)を追加後にチェックを入れる
初期の状態でコンパイラー準拠レベルが1.6に設定されている場合があるようなので、「ウインドウ」→「設定」→「Java」→「コンパイラー」でコンパイラー準拠レベルを1.8に設定してください。
RT System Editor、RTC Builderを開発環境のeclipseにインポートします。 「ファイル」→「インポート」→「プラグイン開発」→「プラグインおよびフラグメント」を選択後「次へ」を押してください。
「インポート先」の「ディレクトリー」をオンにして、rtmtoolsをチェックアウトしたディレクトリを設定して次へ進んでください。
全て追加を選択して、完了ボタンを押してください。
IDLファイルのコンパイルを行います。 パッケージエクスプローラーでjp.go.aist.rtm.toolscommonプロジェクトの「buildForCliant」を右クリックして「実行」→「Antビルド」を選択すれば開始します。
Antビルドで文字化けする場合は、「実行」→「外部ツール」→「外部ツールの構成」→「Antビルド」をダブルクリックして、「共通」タブ→「エンコード」でその他「MS932」に設定してください。
環境によってはクラスパスが正しく設定されない場合があります。 その場合はデバッグ時にClassNotFoundExceptionの例外が発生するため、rtmtoolsに存在するplugin.xml全てを修正してください。 パッケージエクスプローラーでplugin.xmlをダブルクリックして、「ランタイム」タブから「クラスパス」に「.」を追加してください。(「MANIFEST.MF」の「Bundle-ClassPath」に追加しても可)
これで準備完了です。
上部の虫のマークのボタンから、「デバッグ」→「Eclipse アプリケーション」でデバッグが開始します。