OpenRTM-aist (C++版) 1.1系のインストール

C++言語版の OpenRTM-aist は、パッケージやインストーラーが用意されており、多くの OS やディストリビューションで手軽にインストールすることができます。また、ソースをダウンロードして、自分の環境に合わせてビルドすることもできます。 ここでは、C++言語版 OpenRTM-aist のそれぞれの方法でのインストールの仕方について説明します。

Windowsへのインストール

windows_logo.png

openrtm.org では Windows 用の msi (Microsoft Windows インストーラー)パッケージを提供しています。 msi パッケージを利用することで、依存ライブラリである omniORB や、RTSystemEditor といったツールも同時にインストールすることができます。

msi パッケージによるインストール

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) のページをご覧ください。

インストールの詳細

インストーラーの作業内容

インストーラーは以下の作業を行います。

  • インストールディレクトリー (デフォルトは C:\Program Files) 以下に各種ファイルをコピー
  • スタートメニュー以下に OpenRTM-aist フォルダーを作成し各種ショートカットを設定
  • 環境変数の設定
    • 32bit 用 msi 利用時の設定
 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\
  • PATH への追加設定
    • 32bit 用 msi 利用時の設定

 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:

Ubuntu/Debianへのインストール

ubuntu_logo2.png

C++版の OpenRTM-aist は、Ubuntu や Debian GNU Linux で利用可能な deb パッケージが提供されています。 対応しているディストリビューションのバージョンは、ダウンロードページから確認できます。 Ubuntu/Debian GNU Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。

インストールの方法には大きく分けて以下の2種類のインストール方法があります。

  • openrtm.org が提供する一括インストールスクリプトを使用
  • apt-get や synaptic パッケージマネージャを仕様

好みの方法でインストールしてください。

一括インストール・スクリプトを使う方法

openrtm.org が提供するインストール・スクリプト pkg_install_ubuntu.sh または pkg_install_debian.sh をダウンロードページからダウンロードし、root 権限で実行します。このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。

オプションを指定することで、目的に合わせたパッケージをインストールできるようになったので、 初めて OpenRTM-aist をインストールしてみる方にもソースをコンパイルしてみる方にもお勧めします。

一括インストールスクリプトのダウンロード、及び、詳しいインストール方法や、オプション・パッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください。

apt-get を使う方法

source.list の編集

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 から確認できます。

apt-get によるインストール

次の手順でインストールを行います。途中、いくつかの応答を求められるので、 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/PPA のパッケージ

Launchpad_logo.png

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 パッケージのインストール

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リポジトリ構成

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

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
    • 1.1.1版では、Debian は7.0以降、Ubuntu は12.04以降において、32/64bit のパスはそれぞれ以下のようになっています。
       ***** 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

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
    • 1.1.1版 では、Debian は 7.0以降、Ubuntu は 12.04以降において、32/64bit のパスはそれぞれ以下のようになっています。
       ***** 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

openrtm-aist-example にはスタンドアロン RTC、ローダブル 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
  • サンプル(ローダブルRTC)
     /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

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
  • IDL リファレンス
     /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
  • IDL リファレンス(英語)
     /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

履歴

  • 2010-07-26 23:24:55 +0900: 初期バージョン
  • 2012-07-06 01:34:30 +0900: PPAを利用したインストールについて追加
  • 2015-02-20 17:00:00 +0900: 1.1.1版リリースに合わせて修正

Raspberry Pi (Rasbian) へのインストール

Raspberry_Pi_Logo.svg_.png

C++版 OpenRTM-aist は Raspberry Pi 用 Raspbian の armhf、armel用 deb パッケージが提供されています。 Raspberry Pi でセルフコンパイルを行うと約3時間くらいかかりますので、パッケージが利用できる場合はこれを利用することをお勧めします。 ただし、Raspbian への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。

はじめに

対応バージョン

現在のところパッケージが用意されている Raspbian のバージョンは

  • Raspbian "wheezy" (armhf アーキテクチャ)
  • Soft-float Debian "wheezy" (armel アーキテクチャ)

です。

SDメモリーカードの準備

以下のページからイメージをダウンロードして、SDメモリーカードに書き込みます。SDメモリーカードは 4GB 以上はあったほうがよいでしょう。 SDメモリーカードへの書き込み方法については RPi SD Card Setup を参照してください。

Windowsでは、Win32DiskImager などを利用して書き込みます。 Linux や Mac OS では dd を利用して書き込みます。

 $ sudo dd if=/dev/<SDメモリーカードのデバイスファイル> of=<ダウンロード・解凍したイメージファイル> bs=1m

OpenRTM-aist のインストール

OpenRTM-aist のインストールの方法には大きく分けて以下の2種類のインストール方法があります。

  • openrtm.org が提供する一括インストールスクリプトを使用
  • apt-get や synaptic パッケージマネージャを仕様

好みの方法でインストールしてください。

一括インストール・スクリプトを使う方法

openrtm.org が提供するインストール・スクリプト pkg_install_raspbian.shをダウンロードページからダウンロードし、root 権限で実行します。このスクリプトは、必要なパッケージを順次 apt-get でインストールしていきます。

OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。初めて OpenRTM-aist をインストールしてみる方やソースをコンパイルしてみる方にもお勧めします。

詳しいインストール方法や、オプション・パッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください。

apt-get を使う方法

source.list の編集

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 から確認できます。

apt-get によるインストール

次の手順でインストールを行います。途中、いくつかの応答を求められるので、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

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

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

openrtm-aist-example にはスタンドアロンRTC、ローダブル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
  • サンプル(ローダブルRTC)
     /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

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
  • IDLリファレンス
     /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
  • IDLリファレンス(英語)
     /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

履歴

  • 2015-02-17 15:43:30 +0900: 「パッケージの詳細」のディレクトリーの修正
  • 2012-12-26 15:43:30 +0900: Raspberry Pi (Raspbian) へのインストール、新規作成

Fedoraへのインストール

fedora_logo.png

C++版 OpenRTM-aist は Fedora Linux で利用可能な RPM パッケージが提供されています。 対応している Fedora Linux のバージョンは、ダウンロードページから確認できます。 Fedora Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。

※ OpenRTM-aist 1.2.0版以降、一括インストール・スクリプト対応予定です。

Fedora Linux へのインストールの方法には大きく分けて以下の二種類のインストール方法があります。
  • openrtm.org が提供する一括インストールスクリプトを使用
  • yum パッケージマネージャを使用

一括インストール・スクリプト

openrtm.org が提供するインストール・スクリプト pkg_install_fedora.sh をダウンロードページからダウンロードし、root 権限で実行します。 このスクリプトは、必要なパッケージを順次 yum でインストールしていきます。

OpenRTM-aist を開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。 オプションを指定することで、目的に合わせたパッケージをインストールできるようになったので、 初めて OpenRTM-aist をインストールしてみる方にもソースをコンパイルしてみる方にもお勧めします。

ただし、OpenRTM-aist 関係のすべてのパッケージをインストールするので、必要ないものもインストールされる可能性があります。 詳しく理解している人は、手動でインストールした方がよいでしょう。

詳しいオプションやパッケージの種類につきましては、「一括インストール・スクリプト」のページをご確認ください

yum を使う方法

/etc/yum.repos.d/openrtm.repoの作成

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
/etc/yum.repos.d/openrtm.repo

yum によるインストール

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

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-devel

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
  • IDL およびスタブ・スケルトン
     /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

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
  • IDL リファレンス
     /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
  • IDL リファレンス(英語)
     /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

openrtm-aist-example にはスタンドアロン RTC、ローダブル 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
  • サンプル(ローダブル RTC)
     /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

Vine Linuxへのインストール

vine_logo.png

C++版 OpenRTM-aist は Vine Linux で利用可能な RPM パッケージが提供されています。 対応している Vine Linux のバージョンは、ダウンロードページから確認できます。 Vine Linux への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。

Vine Linux へのインストールの方法には大きく分けて以下の二種類のインストール方法があります。

  • openrtm.org が提供する一括インストールスクリプトを使用
  • apt-get や synaptic パッケージマネージャを使用

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'' を入力しながら完了させる。

apt-get を使う方法

sources.list の修正

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.x5.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

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-devel

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
  • IDL およびスタブ・スケルトン
     /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

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
  • IDL リファレンス
     /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
  • IDL リファレンス(英語)
     /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

openrtm-aist-example にはスタンドアロン RTC、ローダブル 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
  • サンプル(ローダブルRTC)
     /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 へのインストール

qnx_logo.png

QNX

QNX(キューエヌエックス、またはキューニックス)は主に組み込みシステム向けに販売されている、商用リアルタイム OS です。 POSIX 準拠の UNIX系 OSで、組込み用 OS でありながら一般的な UNIX 同様プロセス型のオペレーティング・システムです。 カーネルはマイクロカーネルであり、様々な機能はサーバとしてモジュール化され、用途に応じて必要なサーバのみを動作させるため、コンパクトなシステムを構成することができます。 x86ファミリ、MIPS、PowerPC、SH-4、ARM、StrongARM、XScale など様々な CPU 上で動作可能であり、さらに機能安全規格 IEC61508 に準拠し認証を取得しているため、安全認証が必要な安全関連系にも利用することができます。

QNX には教育機関向けの無償ライセンスプログラムもあり、大学などでは比較的気軽に利用することができます。

pkgsrc

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上で利用できます。

pkgsrc for QNX

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

OpenRTM-aist の pkgsrc によるインストール

pkgsrc は、バイナリパッケージによるインストールと、ソースからビルドしてインストールする方法があります。 すべてのパッケージがバイナリで提供されているわけではないので、必要に応じてソースからビルドする必要があります。

OpenRTM.org の pkgsrc リポジトリ

OpenRTM-aist は、openrtm.org の以下の URL においてバイナリパッケージを提供しています。

OpenRTM-aist で必要な omniORB も上述の配布サイトにはバイナリパッケージが無いため、openrtm.org で提供されています。

インストール

インストール方法は以下のとおりです。

  • 環境変数 PKG_PATH に http://www.openrtm.org/pub/pkgsrc/packages/QNX/i386/6.5.0/All をセット
    • 6.5.0 は QNX のバージョンですので適宜読み替えてください
  • pkg_add -v OpenRTM-aist-1.1.0-RELESE で OpenRTM-aist をインストール
    • omniORB も同時にインストールされます

 # 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

まず、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
 -------------------------------------------------

ConsoleIn

 # 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_test.png
QNX上で動作する ConsoleIn と ConsoleOut コンポーネント

QNXでのビルド手順(OpenRTM-aist 1.2)

このページでは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

Mac OS X への MacPorts によるインストール

osx_logo2.png

C++版 OpenRTM-aist は Mac OS X 用のパッケージ管理ステム MacPorts で利用可能な ports が提供されています。 MacPorts への対応およびそのバージョンは、予告なしに変更または停止されることがありますので、予めご了承ください。

MacPorts

MacPorts は Mac OS X 上で利用可能なオープンソースのパッケージ管理システムです。 MacPorts は FreeBSD の ports というパッケージ管理システムと同様に、ports と呼ばれるパッケージをビルドするためのレシピに基づき、自動でソースのダウンロード、パッチの適用、コンパイル、インストールまでを行ってくれるシステムです。 Mac OS X 用のパッケージ管理システムとしては他に Fink があります。

MacPorts のインストール

MacPorts を利用するには、Apple の Xcodeおよび、X11 環境を予めインストールする必要があります。 Xcode および X11 は Mac OS X のインストールCD からインストールすることもできます。 詳細は、上記 MacPorts の Webページを参照してください。

MacPorts 自体は dmg パッケージ形式になっており、自分の Mac の OS のバージョンに合わせた dmg パッケージをダウンロード、インストールすることで簡単にインストールすることができます。 dmg パケージは MacPorts の Webページ、または下記リンクからダウンロードできます。

OpenRTM-aist ports によるインストール

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 に書いてあります。インストール手順は、おおよそ以下のようになっています。

  • Portfile をダウンロードする
  • Portfile を展開する
  • sources.conf に展開した Portfile の場所を追記する
  • port コマンドでビルド・インストールする

MacPorts では、port コマンドでインストールするよう指定されたパッケージを、設定ファイル sources.conf に記載されている特定の場所以下から探し出して、Porrtfile に従いソースをダウンロードしビルドを行います。

VxWorksへのインストール

VxWorks

VxWorksはウインドリバー社が開発している組込みシステム向けリアルタイムOSです。 規模の大きな商用リアルタイムOSで最も普及しているOSであり、比較的大型の機器で使用されています。 x86、PowerPC、SH-4、ARM、MIPS、SPARC等の様々なCPU上で動作可能です。 DO-178B規格とIEC61508規格に準拠しており、航空・宇宙等の幅広い分野で使われています。

Wind River Workbench

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

  • tclsh
  • cmake
  • subversion

以下のコマンドでインストールしてください。

 sudo apt-get install tclsh cmake subversion

ORBexpressを使用する場合のみ必要です。

ビルド

ビルドはコマンドラインの操作により実行します。

Workbenchから、Project Exploreを右クリックしてOpen Development Shellからコマンドラインシェルを起動してください。


command-line.png


通常の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を使用しない場合は、次の手順に進んでください。

ソースコード入手

以下のコマンドで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コンパイラなどのビルド

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のビルドも行ってください。

OpenRTM-aistのビルド

ソースコードの入手

以下のコマンドでソースコードを入手してください。

 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.6vxworks-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を追加する必要があります。

動作確認

ビルドが完了したら以下の手順で動作確認を行ってください。

OpenRTM-aist動作確認(VxWorks、カーネルモジュール、シミュレータ利用の場合)

このページでは、Workbenchのシミュレータを用いてVxWorks用にビルドしたRTCのカーネルモジュールの動作確認を行う手順を説明します。

シミュレータの設定

以下の手順でシミュレータの設定を行ってください。

シミュレータの接続

WorkbenchのRemote Systemでシミュレータを選択後にconnect 'xxxxx'ボタンを押すとシミュレータと接続します。


sim5.png


カーネルモジュールのロード

WorkbenchのRemote Systemでシミュレータを右クリックして、DownloadVxWorks Kernel Taskを選択してください。


load_module.png


Download ConfigurationsウインドウのLaunch Contextタブから、ダウンロードするシステムにシミュレータを選択してください。


Launch_context.png


Downloadsタブからダウンロードするモジュールを設定します。 Addボタンをクリックしてください。


downloads.png


Addウインドウでrtcd.outのパスを設定後、OKボタンをクリックしてください。 rtcd.outはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。

  • 例:/home/openrtm/OpenRTM-aist/build_vxworks/utils/rtcd/rtcd.out


downloads2.png


Downloadボタンをクリックするとダウンロードを開始します。


download.png


起動するRTCのカーネルモジュールについても同様の手順でダウンロードしてください。

  • 例(ConsoleIn):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleIn.out
  • 例(ConsoleOut):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleOut.out

RTC実行

ネームサーバー起動

VxWorksシミュレータ上にネームサーバーを起動します。 ネームサーバーはリアルタイムプロセス(RTP)として起動するため、Remote Systemsからシミュレータを右クリックしてRunVxWorks Real Time Processをクリックしてください。


rtp.png


Run ConfigurationsウインドウのLaunch Contextタブから各種設定を行ってください。

  • 実行するシステムをシミュレータに設定
  • omniNames.outのパス設定
  • コマンドライン引数の設定

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を登録するようにしてください。

  • 例:/home/openrtm/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9/omniNames.out

Argumentsにはネームサーバーのポート番号を指定します。

  • 例:-start 2809

設定が完了後にRunボタンをクリックするとネームサーバーが起動します。


nameserver.png


マネージャ起動

WorkbenchのRemote Systemでシミュレータを右クリックして、RunVxWorks Kernel Taskを選択してください。


run_task.png


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アドレスは適宜確認してください。


run_task2.png


RTCの起動

マネージャの起動と同様の手順で起動します。 Entry PointにはRTCを起動する関数を指定します。

  • 例(ConsoleIn):consolein_main
  • 例(ConsoleOut):consoleout_main

Argumentsには何も入力しなくても大丈夫です。

Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。 VxWorksのネームサーバーにはネームサービス接続ボタンをクリック後、表示されたウインドウでIPアドレスを指定してOKをクリックすると接続します。


ns1.png



ns2.png


起動したRTCが登録されているかを確認してください。


ns3.png


RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。

コマンドラインによる操作について

シミュレータ接続後にTarget Consoleウインドウからコマンド入力ができます。


sim6.png


以下のコマンドで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

OpenRTM-aist動作確認(VxWorks、RTP、シミュレータ利用の場合)

このページでは、Workbenchのシミュレータを用いてVxWorks用にビルドしたRTCのリアルタイムプロセス(RTP)の動作確認を行う手順を説明します。

シミュレータの設定

以下の手順でシミュレータの設定を行ってください。

シミュレータの接続

WorkbenchのRemote Systemでシミュレータを選択後にconnect 'xxxxx'ボタンを押すとシミュレータと接続します。


 /ja/node/6374


RTC実行

ネームサーバー起動

VxWorksシミュレータ上にネームサーバーを起動します。 ネームサーバーはリアルタイムプロセス(RTP)として起動するため、Remote Systemsからシミュレータを右クリックしてRunVxWorks Real Time Processをクリックしてください。


 /ja/node/6374


Run ConfigurationsウインドウのLaunch Contextタブから各種設定を行ってください。

  • 実行するシステムをシミュレータに設定
  • omniNames.outのパス設定
  • コマンドライン引数の設定

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を登録するようにしてください。

  • 例:/home/openrtm/omniORB-4.2.2/bin/simpentium_vxWorks_RTP_6.9/omniNames.out

Argumentsにはネームサーバーのポート番号を指定します。

  • 例:-start 2809

設定が完了後にRunボタンをクリックするとネームサーバーが起動します。


 /ja/node/6374


RTCの起動

ネームサーバーの起動と同じ手順でrtcd.vxeを実行します。 rtcd.vxeはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。

  • 例(ConsoleIn):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleIn.vxe
  • 例(ConsoleOut):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleOut.vxe

Argumentsには何も入力しなくても大丈夫ですが、Ubuntu側のネームサーバーを起動する場合は、Argumentsに-o corba.nameservers:192.168.200.254を追加してください。 Ubuntuのtap0インターフェースのIPアドレスは適宜確認してください。

Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。 VxWorksのネームサーバーにはネームサービス接続ボタンをクリック後、表示されたウインドウでIPアドレスを指定してOKをクリックすると接続します。


 /ja/node/6374



 /ja/node/6374


起動したRTCが登録されているかを確認してください。


 /ja/node/6374


RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。

コマンドラインによる操作について

シミュレータ接続後にTarget Consoleウインドウからコマンド入力ができます。


 /ja/node/6374


以下のコマンドで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"

OpenRTM-aist動作確認(VxWorks、カーネルモジュール、PowerPC搭載ボード利用の場合)

このページでは、PowerPCボード上でVxWorks用にビルドしたRTCのカーネルモジュールの動作確認を行う手順を説明します。

WorkbenchとVxWorksとの接続

以下の手順でWorkbenchとVxWorksの接続を生成してください。

WorkbenchのRemote Systemでターゲットサーバを選択後にconnect 'xxxxx'ボタンを押すとVxWorksと接続します。


target02.png


カーネルモジュールのロード

WorkbenchのRemote Systemでターゲットサーバを右クリックして、DownloadVxWorks Kernel Taskを選択してください。


server1.png


Download ConfigurationsウインドウのLaunch Contextタブから、ダウンロードするシステムにターゲットサーバを選択してください。


server5.png


Downloadsタブからダウンロードするモジュールを設定します。 Addボタンをクリックしてください。


server6.png


Addウインドウでrtcd.outのパスを設定後、OKボタンをクリックしてください。 rtcd.outはOpenRTM-aistのビルドディレクトリのutils/rtcd以下に生成されています。

  • 例:/home/openrtm/OpenRTM-aist/build_vxworks/utils/rtcd/rtcd.out


server3.png


Downloadボタンをクリックするとダウンロードを開始します。


 /ja/node/6374


起動するRTCのカーネルモジュールについても同様の手順でダウンロードしてください。

  • 例(ConsoleIn):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleIn.out
  • 例(ConsoleOut):/home/openrtm/OpenRTM-aist/build_vxworks/examples/SimpleIO/ConsoleOut.out

RTC実行

マネージャ起動

WorkbenchのRemote Systemでターゲットサーバを右クリックして、RunVxWorks Kernel Taskを選択してください。


server2.png


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アドレスは適宜変更してください。


server4.png


RTCの起動

マネージャの起動と同様の手順で起動します。 Entry PointにはRTCを起動する関数を指定します。

  • 例(ConsoleIn):consolein_main
  • 例(ConsoleOut):consoleout_main

Argumentsには何も入力しなくても大丈夫です。

Ubuntuで起動したRTシステムエディタでRTCが起動したかを確認してください。

起動したRTCが登録されているかを確認してください。


 /ja/node/6374


RTCの接続、アクティブ化等の手順はUbuntuで動作確認する場合と同じです。

ただしORBexpressを使用した場合にはデータポートのコネクタ接続時にエンディアンをbigに設定する必要があります。

コマンドラインによる操作について

ターゲットサーバ接続後にWTX Consoleウインドウからコマンド入力ができます。


target03.png


以下のコマンドで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動作確認(VxWorks、RTP、PowerPC搭載ボード利用の場合)

ソースからのビルド (Windows編)

OpenRTM-aist 本体に手を加えたうえで Windows 上で利用したい場合は、Windows 用ソースパッケージを自分でビルドするができます。 ここでは、ダウンロードページやリポジトリからソースを取得し Windows 上で OpenRTM-aist をビルドする方法を解説します。

Windows 上での OpenRTM-aist のビルドは、環境の整備やインストーラの作成など、Windows 上での様々な知識が必要となります。 本ドキュメントは、Windows 上でのプログラム開発やバッチファイル等の基本的な知識がある方を対象としています。

Windows 用ソースコード

Windows 用の OpenRTM-aist (C++版) ソースパッケージは Linux 用のソースとは別に配布されています。 ソースコードの内容は全く同じですが、以下の部分が異なっています。

  • 文字コード (Windows: Shift-JIS、Linux: EUC)
  • Visual Studio のソリューションを含む
  • Visual C++ のプロジェクトファイルを含む
  • msi インストーラ作成環境を含む

ソースコードの構成

図に示すように、オリジナルは subversion リポジトリのソースコードで、そのソースコードから、Linux上で、

  • Linux/Unix 用ソースコード配布パッケージ
  • Windows 用ソースコード配布パッケージ

の2種類を作成する構成になっています。

openrtm_src_dist_ja.png
OpenRTM-aist のソースの構成

リポジトリから取得した最新のソースコードを Windows で利用する場合は、一旦 Linux で Windows 用のソースコードを生成する必要があります。

ビルド環境

ビルドに必要な環境、ライブラリは以下の通りです。

  • Visual C++
    • Visual C++ Express Edition でも利用可能です
  • omniORB

Visual C++/Visual Studio

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 を取得してライセンス(無料)を取得してください。

omniORB

OpenRTM-aist のビルドには omniORB 4.1.7(2015/03/31現在)のライブリが必要です。 openrtm.org が提供するビルド済みバイナリパッケージを下記リンク先に用意してあります。 環境に合わせて適切なものをダウンロードし、適当な場所 (以下では C:\distribution\omniORB を仮定) に展開してください。

環境変数: OMNI_ROOT

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

WiX

1.1.1-RELEASE 版ではソースに含まれているインストーラー作成コードのメンテナンスは行っておりません。

WiX (Windows Installer XML) は Windows の msi インストーラをコマンドラインベースのツール群で作成することを目指しているオープンソースのプロジェクトです。

OpenRTM-aist は Windows 用のインストーラーを WiX を利用して作成しています。 インストーラーまで作成する場合には、WiX を予めインストールしておいてください。

Python

ビルドの途中でいくつかの 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 をダブルクリックし、起動すれば自動でビルドが始まります。

インストール

すべてが正しくビルドできたら次のことを行い、インストールを完了させます。

  • 環境変数 RTM_ROOT を設定: OpenRTM-aist のディレクトリーを環境変数 RTM_ROOT に設定してください。
  • DLL へのパスを通す: DLL をパスの通った場所にコピーする、あるいは、環境変数 PATHに%RTM_ROOT%\bin を追加します。
  • 環境変数 PATH の設定: 環境変数 PATHに%RTM_ROOT%\binだけでなく%RTM_ROOT%\utils\rtc-templateも登録することをお勧めします。

以上で、OpenRTM-aist のインストールは終了です。

ソースからのビルド (Linux編)

パッケージが用意されていない UNIX 環境や、クロス開発環境、OpenRTM-aist 本体のソースを変更して利用したい場合には、ソースからコンパイルすることができます。 ここでは、ダウンロードページやリポジトリからソースを取得し Linux 上 で OpenRTM-aist をビルドする方法を解説します。

配布ソースのビルド

OpenRTM-aist (C++版) は autotools を利用したビルド環境を提供しているため、様々な環境で容易にビルドできます。

対応 OS およびディストリビューション

OpenRTM-aist は下記の OS および Linux ディストリビューションで動作することが確認されています。

  • FreeBSD
  • Vine Linux
  • Fedora
  • Debian
  • Ubuntu

これ以外の環境でも、一般的 Linux/UNIX 環境であれば、ビルドできる可能性があります。

依存ライブラリ

OpenRTM-aist-1.0.0 のインストールには下記の開発環境およびライブラリが必要です。

  • gcc/g++ version3 以降: コンパイルに必要
  • omniORB-4.x 以上: OpenRTM-aist のビルドに必要
    • omniORB-4.0.6 にはバグがありますので利用しないでください
  • uuid ライブラリ: libuuid (Linux等デフォルトで uuid 生成関数を提供していない環境のみ)
  • python: ビルドツールを利用するために必要
    • PyYAML
  • boost: 拡張モジュールをコンパイルする際に必要になる場合がある

それぞれのライブラリ等のドキュメントに従いインストールを行ってください。 これらのパッケージが、標準のディレクトリー(/usr、/usr/local 等)下にインストールされていると、以降の OpenRTM-aist のコンパイル作業を比較的簡単に行うことができます。

UbuntuやFedora等特定のディストリビューション向けには、以下のリポジトリに ''pkg_install_OS名.sh’’という依存ライブラリやOpenRTMのパッケージをインストールするスクリプトが用意されています。

これらのインストールスクリプトの使い方については、「一括インストール・スクリプト」のページをご覧ください。

ソースのダウンロード

OpenRTM-aist のソースをダウンロードします。 ソースコードは、http://www.openrtm.org/pub/OpenRTM-aist/cxx/ の下のバージョン番号フォルダ以下からダウンロードできます。 バージョン1.1.2のソースコードは以下の場所にあります。

ソースコードの展開

まずソースコード 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

で参照してください。

make

configure が正常に終了したことを確認してください。正常に終了したら make します。

 $ make

ビルドが正常に終了したら、ヘッダファイル、ライブラリ、ユーティリティコマンド群をインストールします。

 $  su
 # make install

以上で、ソースコードからのビルドおよびインストールは終了です。

リポジトリのソースのビルド

OpenRTM-aist は開発に利用している subversion リポジトリを一般に公開しています。 リポジトリからチェックアウトしたソースコードからビルドを行うこともできます。

必要なツール

リポジトリからチェックアウトしたソースは configure スクリプトや Makefile.in が含まれていません。これらを生成するには、

  • automake
  • libtool
  • autoconf

等のツールが必要ですので予めインストールしておきます。 これらの必要なツールをインストールする際、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.

autogen.shの実行

チェックアウトすると、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
 $

configure & ビルド

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

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
 $

生成されたソースパッケージはそれぞれ以下の通りです。

  • OpenRTM-aist-1.0.0-win32.zip: Windows 用ソース
  • OpenRTM-aist-1.0.0.tar.gz: 汎用ソース (gzip 圧縮)
  • OpenRTM-aist-1.0.0.tar.bz2: 汎用ソース (bzip 圧縮)

ソースからのビルド (Windows編、ランタイムライブラリ/MT・/MTd指定)

Visual Studio でランタイムライブラリにマルチスレッド(/MT)、マルチスレッドデバッグ(/MTd)を指定した RTC を開発する場合、/MT、/MTdの実行ファイルが他の DLL にリンクして処理を行うとヒープ破壊等で異常終了することがあります。 マルチスレッド(/MT)、マルチスレッドデバッグ(/MTd)を指定したい場合は以下の手順で OpenRTM-aist の静的ライブラリを作成してください。

※動作確認はほとんどしていないため、以下の作業は全て自己責任で行ってください。

OpenRTM-aist のビルド

OpenRTM-aist のソースコードの入手

以下より OpenRTM-aist のソースコードを入手してください。

ダウンロードしたら適当な場所に展開してください。 この例では以下の位置に配置します。

 C:\openrtm_work\OpenRTM-aist

omniORBの入手

以下より omniORB のバイナリパッケージを入手してください。 Visual Studioのバージョンにあったものを選んでください。

ダウンロードしたら、OpenRTM-aist フォルダー内に omniORB という名前のフォルダーを作成して展開してください。

 C:\openrtm_work\OpenRTM-aist\omniORB

各種ファイルの編集

/MT、/MTd でビルドするために各種ファイルの編集を行います。

build.bat

以下の 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_vc**.vcxproj、libcoil_vc**.vcxproj、libRTCSkel_vc**.vcxproj

以下のlibRTC_vc12.vcxproj、libcoil_vc12.vcxproj、libRTCSkel_vc12.vcxprojというプロジェクトファイルを編集します。 Visual Studio のバージョンに合わせて libRTC_vc11.vcxproj、libcoil_vc11.vcxproj、libRTCSkel_vc11.vcxproj 等を編集するようにしてください。

  • C:\openrtm_work\OpenRTM-aist\rtm\libRTC_vc12.vcxproj
  • C:\openrtm_work\OpenRTM-aist\rtm\libcoil_vc12.vcxproj
  • C:\openrtm_work\OpenRTM-aist\rtm\idl\libRTCSkel_vc12.vcxproj

まずはランタイムライブラリを変更します。 以下のように MultiThreadedDebugDLL と記載してある箇所を MultiThreadedDebug に変更します。 32bitか64bit かによって編集する箇所が違うのですが、両方変更しても問題ありません。

 <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
arrow.png
 <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

同様にMultiThreadedDLLもMultiThreadedに変更します。

 <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
arrow.png
 <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

次に動的ライブラリではなく静的ライブラリを生成するように変更します。 ※libRTCSkel_vc12.vcxproj は元々静的ライブラリを生成するので変更の必要はありません。

DynamicLibraryをStaticLibrary に変更してください。

 <ConfigurationType>DynamicLibrary</ConfigurationType>
arrow.png
 <ConfigurationType>StaticLibrary</ConfigurationType>

それに合わせて出力ファイル名も変更します。

 <OutputFile>$(OutDir)\RTC$(rtm_dllver).dll</OutputFile>
arrow.png
 <OutputFile>$(OutDir)\RTC$(rtm_dllver).lib</OutputFile>

 <OutputFile>$(OutDir)\RTC$(rtm_dllver)d.dll</OutputFile>
arrow.png
 <OutputFile>$(OutDir)\RTC$(rtm_dllver)d.lib</OutputFile>

 <OutputFile>$(OutDir)\coil$(coil_dllver).dll</OutputFile>
arrow.png
 <OutputFile>$(OutDir)\coil$(coil_dllver).dll</OutputFile>

 <OutputFile>$(OutDir)\coil$(coil_dllver)d.dll</OutputFile>
arrow.png
 <OutputFile>$(OutDir)\coil$(coil_dllver)d.dll</OutputFile>

また、ファイルをコピーするコマンドも変更します。

 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\RTC$(rtm_dllver)d.lib&quot;&#x0D;&#x0A;copy &quot;$(OutDir)\\RTC$(rtm_dllver)d.dll&quot; &quot;$(SolutionDir)bin\\&quot;&#x0D;&#x0A;</Command>
arrow.png
 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\RTC$(rtm_dllver)d.lib&quot;&#x0D;&#x0A;</Command>

 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\RTC$(rtm_dllver).lib&quot;&#x0D;&#x0A;copy &quot;$(OutDir)\\RTC$(rtm_dllver).dll&quot; &quot;$(SolutionDir)bin\\&quot;&#x0D;&#x0A;</Command>
arrow.png
 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\RTC$(rtm_dllver).lib&quot;&#x0D;&#x0A;;</Command>

 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\coil$(coil_dllver)d.lib&quot;&#x0D;&#x0A;copy &quot;$(OutDir)\\coil$(coil_dllver)d.dll&quot; &quot;$(SolutionDir)bin\\&quot;&#x0D;&#x0A;</Command>
arrow.png
 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\coil$(coil_dllver)d.lib&quot;&#x0D;&#x0A;</Command>

 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\coil$(coil_dllver).lib&quot;&#x0D;&#x0A;copy &quot;$(OutDir)\\coil$(coil_dllver).dll&quot; &quot;$(SolutionDir)bin\\&quot;&#x0D;&#x0A;</Command>
arrow.png
 <Command>copy &quot;$(OutDir)\\$(TargetName).lib&quot; &quot;$(SolutionDir)bin\\coil$(coil_dllver).lib&quot;&#x0D;&#x0A;</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>
arrow.png
 <PreprocessorDefinitions>LIBRARY_EXPORTS;WIN32;_DEBUG;_WINDOWS;_USRDLL;__WIN32__;__NT__;__OSVERSION__=4;__x86__;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;RTM_OMNIORB_41;%(PreprocessorDefinitions)</PreprocessorDefinitions>

rtm_config.props

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>
arrow.png
 <omni_lib>omniORB4.lib;omniDynamic4.lib;omnithread.lib</omni_lib>
 <omni_libd>omniORB4d.lib;omniDynamic4d.lib;omnithreadd.lib</omni_libd>

ビルド

build.bat を起動したらビルドを開始します。 終了したら、binフォルダーに以下のファイルが生成されているかを確認してください。

  • libRTCSkel.lib
  • libRTCSkeld.lib
  • coil112_vc12.lib
  • coil112_vc12d.lib
  • RTC112_vc12.lib
  • RTC112_vc12d.lib

※サンプルコンポーネントや rtcd、rtcprof のコンパイルで大量にエラーが出ますが、自分の RTC をビルドするだけならば必要ないので無視してください。

OpenRTMConfig.cmakeの編集

omniORB のリンクするライブラリ名が変わったのと、新たにリンクするライブラリを追加する必要があるため以下のファイルを編集します。

  • C:\openrtm_work\OpenRTM-aist\cmake\OpenRTMConfig.cmake

 set(OMNIORB_LIBRARIES optimized;omniORB417_rt;
                       optimized;omniDynamic417_rt;
                       optimized;omnithread34_rt;
                       debug;omniORB417_rtd;
                       debug;omniDynamic417_rtd;
                       debug;omnithread34_rtd)
arrow.png
 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)
arrow.png
 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 をビルドすると上書きするので注意してください。

RTCのビルド

次に/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側で開放したりすると発生します。

  • DLL側

  1. __declspec(dllexport) void deleteData(char* v)
  2. {
  3. delete v;
  4. }

  • 実行ファイル側

  1. void deleteData(char* v);
  2.  
  3. int main(void)
  4. {
  5. char *v = new char[1000];
  6. deleteData(v);
  7. }

これはランタイムライブラリに /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)を使用しているため、ここで何が起こるかは分かりません。

動作確認 (Windows編)

サンプルコンポーネントの場所

インストールまたはビルドが正常に終了したら、付属のサンプルで動作テストをします。 サンプルは、通常は以下の場所にあります。

  • スタートメニュー: [スタート] > [OpenRTM-aist] > [C++] > [components] > [examples]
  • C:\Program Files\OpenRTM-aist\1.0\examples\C++
  • OpenRTM-aist/examples (ソースからビルドした場合)

サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist が正しくビルド・インストールされているかを確認します。

サンプル (SimpleIO) を使用したテスト

RT コンポーネント ConsoleInComp、ConsoleOutComp からなるサンプルセットです。 ConsoleInComp はコンソールから入力された数値を OutPort から出力するコンポーネント、ConsoleOutComp は InPort に入力された数値をコンソールに表示するコンポーネントです。 これらは、最も Simple な I/O (入出力) を例示するためのサンプルです。 ConsoleInComp の OutPort から ConsoleOutComp の InPort へ接続を構成し、これらの2つのコンポーネントをアクティブ化 (Activate) することで動作します。

以下は、msi インストーラーで OpenRTM-aist をインストールした環境で、スタートメニューから各種プログラムを起動する前提で説明します。 スタートメニューから、OpenRTM-aist を右クリックし「開く」でフォルダーを開き、各プログラムへアクセスすると便利です。

win_start_menu_open_ja.png
スタートメニューの OpenRTM-aist を開く

ネームサーバーの起動

まず、コンポーネントの参照を登録するためのネームサーバーを起動します。 [OpenRTM-aist 1.1] > [Tools] にあるショートカットの「Start C++ Naming Service」をダブルクリックしネームサーバーを起動します。

win_start_tool_ja.png
ネームサーバーへのショートカット

起動すると、以下のようなコンソール画面が開きます。

win_naming_service_ja.png
ネームサーバーの起動

コンソール画面が開かない

ネームサーバーのコンソール画面が開かないケースがあります。 この場合下記のようないくつかの原因が考えられますので、原因を調査して対処してくださ。

omniORB がインストールされていない。

openrtm.org が提供する msi インストーラーには omniORB が含まれていますが、手動でインストールした場合には、omniORB が入っていない場合も考えられますので、omniORB がインストールされているか確認してください。

環境変数 OMNI_ROOT が設定されていない

「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] を開くと、図のようにいくつかのコンポーネントがあります。

win_start_menu_comps_ja.png
サンプルコンポーネントフォルダー

ここでは、「ConsoleInComp.exe」「ConsoleOutComp.exe」をそれぞれダブルクリックして2つのコンポーネントを起動します。 起動すると、下図のような2つのコンソール画面が開きます。

win_consoleinout_window_ja.png
ConsoleIn コンポーネントと ConsoleOut コンポーネント

コンポーネントが起動しない場合

コンポーネントが起動しない場合、いくつかの原因が考えられます。

コンソール画面が開いてすぐに消える

rtc.conf の設定に問題があり、起動できないケースがあります。上記スタートメニューフォルダーの [rtc.conf for examples] を開いて設定を確認してください。 例えば、corba.endpoint/corba.endpoints などの設定が現在実行中の PC のホストアドレスとミスマッチを起こしている場合などは、CORBA が異常終了します。

以下のような最低限の rtc.conf に設定しなおして試してみてください。

 corba.nameservers: localhost

ランタイムエラーが出て終了する
ライブラリ等が適切にインストールされていない・設定されていない等の原因でラインタイムエラーが出る場合があります。
  • 再起動してみる
  • OpenRTM-aist をすべてアンインストールし、再度インストールすることで改善される場合があります。

RTSystemEditorRCP (RTSE) の起動

スタートメニューフォルダーから、RTSystemEditorRCP を起動します。 RTSystemEditorは [OpenRTM-aist] > [Tools] > [RTSystemEditorRCP] にあります。

rtse_start_ja.png
RTSystemEditor の起動

※ RTSystemEditor (RCP 版 ) を動作させるために、32bit 版の Java 動作環境 (JRE) または Java 開発環境 (JDK) が必要となります。
インストーラーのオプションで JRE を yes で選択していればインストールされています。

ネームサーバーへの接続

RTSE が起動したらまずネームサーバーへ接続します。左ペインの上部にある、rtse_connect_ns_icon.pngのアイコンをクリックして接続ダイアログを開きます。 接続ダイアログのホスト名の部分に先ほど起動したネームサーバーのアドレス (この場合同一ホストですので localhost) を指定します。 ポート番号も指定できますが、通常デフォルトの2809番を使用する場合は何も指定しません。

rtse_connect_dialog_ja.png
ネームサーバーへの接続ダイアログ

接続すると、ネームサービスビューに localhost が現れます。ツリー表示の [+] をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります。

rtse_ns_connected_ja.png
ネームサーバーに登録されたコンポーネント

エディタへの配置

システムを編集するエディタを開きます。上部のエディタを [開く] ボタンrtse_open_editor_icon_ja.png をクリックすると、中央のペインにエディタが開きます。

左側のネームサービスビューに rtse_rtc_icon.png のアイコンで表示されているコンポーネント (2つ) を中央のエディタにドラッグアンドドロップします。

rtse_dnd_rtcs_ja.png
コンポーネントをエディタに配置

接続とアクティブ化

ConsoleIn0 コンポーネントの右側にはデータが出力される OutPort rtse_outport_icon.png 、ConsoleOut0 コンポーネントの左側にはデータが入力される InPort rtse_inport_icon.png がそれぞれついています。

これら InPort/OutPort (まとめてデータポートと呼びます) を接続します。 OutPort から InPort (または InPort から OutPort) へドラッグランドドロップすると、図のようなダイアログが現れますので、デフォルト設定のまま [OK] ボタンをクリックします。

rtse_portconnect_ja.png
データポートの接続

rtse_portconnect_dialog_ja.png
データポート接続ダイアログ

2つのコンポーネントの間に接続線が現れます。次に、エディタ上部メニューの [All Activate] ボタン rtse_all_actevate_icon.png をクリックし、これらのコンポーネントをアクティブ化します。 アクティブ化されると、コンポーネントが緑色に変化します。

rtse_actevated_all_ja.png
アクティブ化されたコンポーネント

コンポーネントがアクティブ化されると ConsoleIn コンポーネント側では

 Please input number: 

というプロンプト表示に変わりますので、適当な数値 (short int の範囲内:32767以下) を入力し Enter キーを押します。 すると、ConsoleOut 側では、入力した数値が表示され、ConsoleIn コンポーネントから ConsoleOut コンポーネントへデータが転送されたことがわかります。

以上で、コンポーネントの基本動作の確認は終了です。

RTSystemEditorRCP (RTSE) の起動が起動しない場合

以下のメッセージが出て RTSystemEditorRCP (RTSE) が起動しない場合は、32bit 版の Java 動作環境 (JRE) または Java 開発環境 (JDK) をインストールする必要があります。 変更インストールで JRE を選択すればインストールされます。手順は、コントロールパネルの「プログラムのアンインストールまたは変更」を開き、OpenRTM-aist の右クリックして「変更」を選択します。 インストーラー画面での JRE 選択については、OpenRTM-aistを10分で始めよう! のページをご覧ください。

Clipboard01.jpg
RTSystemEditorRCP(RTSE) の起動時のエラー

他のサンプル

インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。 これらのコンポーネントも同様に起動し、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 に接続して使用する。


動作確認 (Linux編)

インストールが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、通常は以下の場所にあります。

  • /usr/share/openrtm-1.1/example
  • /usr/local/share/openrtm-1.1/example (ソースからビルドしてインストールした場合)
  • /opt/local/share/openrtm-1.1/examples (Mac OS X に MacPorts でインストールした場合)

ソースからビルドした場合は、ソースディレクトリー以下の

  • OpenRTM-aist/examples/<サンプルコンポーネントセット名>

にもあります。

サンプルコンポーネントセット SimpleIO を使って、OpenRTM-aist が正しくビルド・インストールされているかを確認します。

サンプルコンポーネントセット SimpleIO

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.conf の作成

テストのための 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
rtc.conf

システムで IPv6 が設定されている場合、localhostというホスト名が正しく機能しない場合があります。 その場合、localhost の代わりに127.0.0.1に置き換えてください。

ConsoleInComp の起動

ターミナルを起動して、次のように前節で作成した 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 を起動します。

ConsoleOutComp の起動

ターミナルを起動して、同様に先ほど作成した 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 の起動

RTSystemEditor を使って、RTコンポーネントの接続とアクティブ化を行います。RTSystemEditor はツール OpenRTP に含まれておりますので、こちらから Eclipse 全部入りパッケージをダウンロードし解凍してください。

RTSystemEditor は Java Development Kit7 を使用します。以下のマニュアルを参考にインストールしてください。また、Ubuntu 等では、デフォルトの Java 環境は OpenJDK が推奨されています。そうした場合、OpenJDK でも利用することは可能です。

こちらのページを参考に RTSystemEditor の起動してください。

ネームサーバーの参照と確認

ネームサーバーへ接続し登録内容を確認します。 ネームサーバーへの接続は、左側の Name Service View のコンセント型アイコンのボタンをクリックし、ダイアログで

 localhost
 または
 localhost:2809

と入力します。(omniNamesのデフォルトのポート番号は2809です。)

c_unix100_NameServer.png
ネームサーバーへの接続

ネームサーバーに登録された RTコンポーネントをシステムエディタに配置します。 左の Name Service View の ConsoleOut0 および ConsoleIn0 を中央のエディタ上にドラッグアンドドロップします。次に、コンポーネントの右端、左端に出ている突起上のアイコンを、片方からもう片方でドラッグアンドドロップします。 接続ダイアログが表示されますが、すべてデフォルトのままで結構ですので [OK] をクリックして接続は完了します。

c_unix100_oneditor.png
RTSystemEditorによるシステムの編集

メニューの下の緑色の [再生] ボタンをクリックすると、エディタ上のすべてのコンポーネントがアクティブ化されます。

数値入力と出力の確認

ConsoleInComp と ConsoleOutComp のポートを接続したら、

 Please input number: 

というプロンプトが現れるので、そこに数字を入力します。入力する数字は、short int に収まる範囲の数値を入力してください。

ConsoleInComp 側のターミナルに数字を打ち込むと、ConsoleOutComp 側のターミナルに、入力した数値が現れます。 以上で、OpenRTM-aist が正しくインストールされていることが確認できました。

システム環境変数設定ツールの使い方

VCVerChanger

概要

本ツールは、OpenRTM-aist 1.2.0 版以降のインストーラーに含まれており、下記のケースに対応しています。
  • OpenRTM-aist で使用する Visual Studio のバージョンを変更したい
  • OpenRTM-aist の32bit 版、64bit 版を両方インストールしているが、切り替えて使いたい。

OpenRTM-aistは、32bit 版も64bit 版も同じ名前のシステム環境を利用しています。またパスを通すために PATH にも追加しています。 このため、32bit 版、64bit 版の両方をインストールしたり、一方をアンインストールしたりすると、システム環境変数の書き換えが必要となる場合があります。

このような場合に本ツールを起動して [確認] ボタンをクリックすると、正しいシステム環境変数に修正します。

本ツールのログを、起動画面に示している先に出力しています。毎回上書きしているので直前の実行内容だけですが確認することができます。

インストールおよび起動

インストール後にスタートメニューから起動できます。VCVerChanger で検索しての起動もできます。

VCVerChanger_01.png
VCVerChanger_02.png
スタートから OpenRTM-aist xxx(1.2.0以降) VCVerChanger

Visual Studio のバージョン更新手順

本ツールを起動し、[確認] ボタンをクリックします。ここで示している画像は、OpenRTM-aist の 32bit 版だけをインストールしている環境での結果です。

VCVerChanger_03.jpg


現在のシステム環境変数の設定が表示されます。一番上の Visual Studio Version がインストールしているバージョンと一致しているか確認します。 一致していて変更する必要がない場合でも、インストール直後であれば、[更新] ボタンをクリックして下さい。 この操作により、システム環境変数の値が確実に反映されます。

VCVerChanger_04.jpg


変更する場合は、下記のようにリストから選択し、[更新] ボタンをクリックします。

VCVerChanger_05.jpg


変更後の設定が表示されますので、指定した RTM_VC_VERSION の値がパスに反映されていることを確認し、[終了] ボタンをクリックします。

VCVerChanger_06.jpg


OpenRTM-aist の 32bit、64bit パスの切替手順

32bit 版と 64bit 版を続けてインストールした場合、本ツールを起動して [確認] ボタンをクリックします。 現在のシステム環境変数の設定が表示され、PATH に両方の設定が混ざって追加されていることを確認できます。

VCVerChanger_07.jpg


32bit、64bit のどちらかを選択し、[切替] ボタンをクリックします。

VCVerChanger_08.jpg


切り替え後の設定が表示されますので、パスを確認し [終了] ボタンをクリックします。

VCVerChanger_09.jpg


OpenRTM-aist 1.1.2版用のツール OpenRTMEnvTool

ダウンロード

本ツールの実行には、mfc の dll が必要です。この dll を別途インストールせずともツールを実行するために、2種類の実行ファイルを用意しています。 ご使用の Visual Studio のバージョンに合わせてダウンロードしてください。

Visual Studio 2008,2010,2012 向け OpenRTMEnvTool_vc10.exe
Visual Studio 2013,2015 向け OpenRTMEnvTool_vc12.exe

使い方

ダウンロードした exe ファイルを実行すると以下の画面が表示されるので、[確認] ボタンをクリックします。

RTMEnvTool_01.jpg


現在のシステム環境変数の設定が表示されるので、一番上の「RTM_VC_VERSION」の設定がインストールしている Visual Studio のバージョンと一致しているか確認します。

RTMEnvTool_02.jpg


「RTM_VC_VERSION」の設定を vc14 (vc2015用)に変更する場合は、下記のように指定し、[更新] ボタンをクリックします。

RTMEnvTool_03.jpg


変更後の設定が表示されますので、指定した RTM_VC_VERSION の値がパスに反映されていることを確認し、[終了] ボタンをクリックします。

RTMEnvTool_04.jpg