OpenRTM-aist(C++版)のCMakeによるビルド手順

Windows + omniORB

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

以下からビルド済みの omniORB を入手してください。

チェックアウトしたフォルダー(OpenRTM-aist)に移動して以下のコマンドを実行してください。

 mkdir build
 cd build
 cmake -DORB_ROOT=C:/workspace/omniORB-4.2.3-win64-vc141 -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX=C:/workspace/openrtminstall ..
 cmake --build . --config Release
 cmake --build . --config Release --target install

変数名 意味 設定できる値
CORBA CORBA のライブラリー omniORB

Windows + TAO

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

以下の手順でTAOをビルドします。

チェックアウトしたフォルダー(OpenRTM-aist)に移動して以下のコマンドを実行してください。

 mkdir build
 cd build
 cmake -DORB_ROOT=C:/workspace/ACE_wrappers -DCORBA=TAO -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX=C:/workspace/openrtminstall ..
 set PATH=%PATH%;C:\workspace\ACE_wrappers\lib;
 cmake --build . --config Release
 cmake --build . --config Release --target install

Windows 10 IoT + omniORB

omniORBのWindows 10 IoT用のビルド済みバイナリファイルは現在のところ配布していないため、自力でビルドする必要があります。 Cygwinのインストールが必要です。

omniORBのソースコードを入手してください。

omniORB-4.2.2.tar.bz2を適当な場所に展開してください。

最初にARM+Windows用の修正パッチを適用します。 以下から修正パッチを入手してください。

Cygwin上で以下のコマンドを実行してください。

 patch -p1 -d omniORB-4.2.2 < omniORB-4.2.2-windows-iot.patch

omniORB-4.2.2.tar.bz2を展開したフォルダのmk/platforms/arm_win32_vs_14.mkを編集します。 使用するVisual Studioのバージョンが違う場合は合ったものを選択してください。 以下のようにPythonのディレクトリを指定します。

 PYTHON = /cygdrive/c/Python27/python

次にconfig/config.mkを編集します。 以下のように対応したmkファイルを指定します。 Visual Studioのバージョンが違う場合は適宜対応してください。

 platform = arm_win32_vs_14

クロスコンパイルを行うため、idlコンパイラなどの実行ファイルは開発環境で動作可能なものを用意します。

以下からx86用にビルドした omniORB のバイナリを入手してください。

zipファイルを展開したフォルダのbin/x86_win32の中身を、omniORB-4.2.2.tar.bz2を展開したフォルダのbin/x86_win32にコピーしてください。

omniORB-4.2.2.tar.bz2を展開したディレクトリに移動して、以下のコマンドを実行してください。

 set PATH=C:\cygwin64\bin;%PATH%;
 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_arm
 cd src
 make export

これでbin/ARM_win32に実行ファイルが、lib/ARM_win32にライブラリが生成されます。 vcvarsall.batについてはVisual Studioのバージョンにあったものを使用してください。 Visual Studio 2017の場合はC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.batとなります。

OpenRTM-aistのビルドは通常とほとんど同じです。 cmakeのオプションとしてVisual Studio 14 2015 ARMというようにARM用のコンパイラを指定してください。

 mkdir build
 cd build
 cmake -DORB_ROOT=C:/workspace/omniORB-4.2.2 -G "Visual Studio 14 2015" -A ARM -DCMAKE_INSTALL_PREFIX=C:/workspace/openrtminstall ..
 cmake --build . --config Release
 cmake --build . --config Release --target install

Visual StudioにARM用コンパイラがインストールされていないとビルドできません。 ARM用コンパイラをインストールしていない場合は、Visual Studio Installerを起動してARM用Visual Studio C++コンパイラとライブラリ'をインストールしてください。



arm1.png


Ubuntu + omniORB

 sudo apt install libomniorb4-dev omniidl omniorb-nameserver
 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist/
 mkdir build
 cd build/
 cmake -DCMAKE_BUILD_TYPE=Release ..
 cmake --build . --config Release -- -j$(nproc)
 sudo cmake --build . --config Release --target install

変数名 意味 設定できる値
CORBA CORBA のライブラリー omniORB

Ubuntu + TAO

以下の手順でTAOをビルドします。

以下のコマンドでOpenRTM-aistをビルドしてください。

 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist/
 mkdir build
 cd build
 cmake -DCORBA=TAO -DCMAKE_BUILD_TYPE=Release ..
 cmake --build . --config Release -- -j$(nproc)
 sudo cmake --build . --config Release --target install

VxWorks + omniORB

事前にWind River Workbenchのホームディレクトリを指定する必要があります。 Wind River WorkbenchをインストールしたディレクトリをWIND_HOMEという変数に設定してください。

 export WIND_HOME=/home/openrtm/WindRiver

OpenRTM-aistのビルドの前に、omniORBのビルドを行う必要があります。

omniORB

omniORBのソースコードを入手してください。

omniORBのVxWorks対応パッチを入手してください。

以下のコマンドでビルドを実行します。

 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
 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
 cd omniORB-4.2.2
 mkdir build
 cd build
 ../configure
 make
 cd ..
 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

OpenRTM-aist

以下のコマンドを入力してください。

 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist/
 mkdir build
 cd build/
 cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DVX_VERSION=${VX_VERSION} -DORB_ROOT=${ORB_ROOT} -DOMNI_VERSION=42 -DCORBA=omniORB -DVX_CPU_FAMILY=${ARCH} ..
 make

ただし、TOOLCHAIN_FILE、VX_VERSION 、ORB_ROOT、ARCHには以下の設定をしてください。

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、シミュレータ)

RTPの場合はcmakeコマンドに-DRTP=ONを追加する必要があります。

 cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DVX_VERSION=${VX_VERSION} -DORB_ROOT=${ORB_ROOT} -DOMNI_VERSION=42 -DCORBA=omniORB -DVX_CPU_FAMILY=${ARCH} -DRTP=ON ..
 cmake --build . --config Release

VxWorks + ORBexpress

※現在のところ対応環境はVxWorks 6.6、PowerPCのみです。

以下のコマンドを入力してください。

 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist/
 mkdir build
 cd build/
 cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DORB_ROOT=${ORB_ROOT} -DCORBA=ORBexpress ..
 make

TOOLCHAIN_FILE、ORB_ROOTには以下の設定をしてください。

TOOLCHAIN_FILE カーネルモジュールの場合は../Toolchain-vxworks6.6-Linux.cmake、RTPの場合は../Toolchain-vxworks6.cmake
ORB_ROOT ORBexpressのディレクトリ(例:/home/openrtm/OIS/ORBexpress/RT_2.8.4_PATCH_KC1)

QNX 6.5 + omniORB

VMWare上のQNX 6.5でビルドします。 以下のページからISOイメージを入手してください。

pkgsrc

まずはパッケージ管理システムpkgsrcをインストールします。 以下のコマンドでソースコードを入手してください。

 svn checkout --username ユーザ名 --password パスワード http://community.qnx.com/svn/repos/pkgsrc/HEAD_650/pkgsrc

ユーザー名、パスワードはQNXのアカウントのメールアドレス、パスワードを設定してください。

次に以下のコマンドでインストールします。 コマンドはsuで実行してください。

 (cd pkgsrc/bootstrap && ./bootstrap)
 (cd pkgsrc/misc/figlet && ../../bootstrap/work/bin/bmake install)

環境変数PKG_PATHを設定しておいてください。

 export PKG_PATH=ftp://ftp.netbsd.org/pub/pkgsrc/packages/QNX/i386/6.5.0_head_20110826/All/

libuuid

まずはlibuuidのビルドをします。 libuuid-1.0.3.tar.gzをダウンロードしてQNXに転送してください。

ファイルを展開してください。

 tar xf libuuid-1.0.3.tar.gz

libuuidのビルドにはsys/syscall.h、bits/syscall.h、asm/unistd.h、asm/unistd_32.h(もしくはasm/unistd_64.h)が必要になります。 ファイルを入手してlibuuid-1.0.3の下にコピーしてください。

 libuuid-1.0.3
         |-sys
         |   |-syscall.h
         |-bits
         |   |-syscall.h
         |-asm
         |   |-unistd.h
         |   |-unistd_32.h(もしくはunistd_64.h)
         |-(省略)   

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

 cd libuuid-1.0.3
 ./configure
 make
 make install
 cd ..

omniORB

まずはomniORB-4.2.3.tar.bz2を入手してQNXに転送してください。

ファイルを展開してください。

 tar xf omniORB-4.2.3.tar.bz2

以下のファイルについて変更が必要です。

  • configure
  • /beforeauto.mk.in

まずconfigureについては2箇所の変更が必要です。 以下の*-*-nto-qnx)の行を追加してください。

 case "$host" in
   *-*-linux-*)   plat_name="Linux";    plat_def="__linux__";    os_v="2";;
   *-*-nto-qnx)   plat_name="Linux";    plat_def="__linux__";    os_v="2";;

以下のx86-pc-*)の部分を追加してください。

 case "$host" in
   i?86-*)   proc_name="x86Processor";     proc_def="__x86__";;
   x86-pc-*) proc_name="x86Processor"; proc_def="__x86__";;

mk/beforeauto.mk.inは以下の部分を変更してください。

 #OMNITHREAD_LIB += -lpthread #削除
 OMNITHREAD_LIB += -lsocket #追加

以下のコマンドでビルドします。

 ./configure
 make
 make install
 cd ..

OpenRTM-aist

OpenRTM-aistのビルドにはcmake、pkg-config、Python 2.7が必要です。

 /usr/pkg/sbin/pkg_add -v pkg-config-0.25nb1
 /usr/pkg/sbin/pkg_add -v cmake-2.8.5
 /usr/pkg/sbin/pkg_add -v python27-2.7.2

環境変数PKG_CONFIG_PATHを設定してください。

 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

OpenRTM-aistのソースコードを入手してQNXに転送してください。

OpenRTM-aistのディレクトリに移動して以下のコマンドを実行します。

 mkdir build
 cd build/
 ln -s /usr/pkg/bin/python2.7 ./python
 export PATH=$PWD:$PATH
 cmake -DCORBA=omniORB ..
 cmake --build . --config Release -- -j$(nproc)
 cmake --build . --target install

QNX 7.0 + omniORB

Ubuntu上にQNX Software Development Platform 7.0をインストールしてビルドします。 まずはQNX Software Centerをインストールしてください。

 sudo apt-get install libgtk2.0-0:i386
 chmod a+x qnx-setup-201808201144-lin.run
 ./qnx-setup-201808201144-lin.run

QNX Software Centerを起動してAdd InstallationからQNX Software Development Platformをインストールしてください。

 /home/openrtm/qnx/qnxsoftwarecenter/qnxsoftwarecenter
qnx9.png

libuuid

まずはlibuuidのビルドをします。

 wget https://jaist.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz
 tar xf libuuid-1.0.3.tar.gz

libuuidのビルドにはsys/syscall.h、bits/syscall.h、asm/unistd.h、asm/unistd_32.h(もしくはasm/unistd_64.h)が必要になります。 ファイルを入手してlibuuid-1.0.3の下にコピーしてください。

 cd libuuid-1.0.3
 mkdir sys
 cp /usr/include/x86_64-linux-gnu/sys/syscall.h sys
 mkdir asm
 cp /usr/include/x86_64-linux-gnu/asm/unistd.h asm
 cp /usr/include/x86_64-linux-gnu/asm/unistd_64.h asm
 mkdir bits
 cp /usr/include/x86_64-linux-gnu/bits/syscall.h bits

QNXクロスコンパイル環境設定のためにスクリプトを実行します。

 source ~/qnx700/qnxsdp-env.sh

以下のコマンドでビルドします。 qnx700のパスは適宜変更してください。

 ./configure --prefix=/home/openrtm/qnx700/target/qnx7/usr/ CC="qcc -V5.4.0,gcc_ntox86_64_gpp" CXX="q++ -V5.4.0,gcc_ntox86_64_gpp" AR=ntox86_64-ar RANLIB=ntox86_64-ranlib --host=x86_64-unknown-linux-gnu
 make
 make install
 cd ..

omniORB

まずはomniORBのソースコードを入手してください。

 wget https://jaist.dl.sourceforge.net/project/omniorb/omniORB/omniORB-4.2.3/omniORB-4.2.3.tar.bz2
 tar xf omniORB-4.2.3.tar.bz2 
 cd omniORB-4.2.3

Ubuntu上でomniidlをビルドする必要があります。 qnxsdp-env.shを実行していない環境でomniORBのビルドを行いインストールしてください。

 ./configure
 make
 make install

QNXでビルドするために

 #OMNITHREAD_LIB += -lpthread
 OMNITHREAD_LIB += -lsocket

以下のコマンドでビルドしてください。

 make clean
 ./configure --prefix=/home/openrtm/qnx700/target/qnx7/usr/  CC="qcc -V5.4.0,gcc_ntox86_64_gpp" CXX="q++ -V5.4.0,gcc_ntox86_64_gpp" AR=ntox86_64-ar RANLIB=ntox86_64-ranlib --host=x86_64-unknown-linux-gnu
 make
 make install

OpenRTM-aist

omniORB、uuidをpkg-configで検出するために環境変数PKG_CONFIG_PATHを設定してください。

 export PKG_CONFIG_PATH=/home/openrtm/qnx700/target/qnx7/usr/lib/pkgconfig

以下のコマンドでビルドします。

 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist/
 mkdir build
 cd build
 cmake -DCORBA=omniORB -DCMAKE_TOOLCHAIN_FILE=../Toolchain-QNX7.cmake -DCMAKE_INSTALL_PREFIX=/home/openrtm/qnx700/target/qnx7/usr/ ..
 cmake --build . --config Release -- -j$(nproc)

VMWareイメージの入手

VMWare用のイメージを入手するためには、QNX Software Centerでファイルをダウンロードします。

qnx10.png

QNX Software Development Platform->Reference Images->QNX SDP 7.0 x86-64 virtual machine for VMWareをインストールしてください。

qnx.png

インストールしたQNX_SDP.vmxをVMwareで開くと仮想マシンが起動します。

CMakeのオプション一覧

オプション一覧

名前 説明 デフォルト
CORBA 利用するCORBAのライブラリの種類(omniORB、TAO、ORBexpress) omniORB
ORB_ROOT CORBAのライブラリをインストールした場所 設定しない場合、Ubuntu、omniORBの場合はFindPkgConfigで検索。それ以外はエラー
SSL_ENABLE SSLによるセキュアな通信を有効にするためのプラグインを生成するか
ON:生成する
OFF:生成しない
OFF
HTTP_ENABLE HTTP通信を有効にするためのプラグインを生成するか
ON:生成する
OFF:生成しない
OFF
OPENSSL_ROOT OpenSSLの各種ファイルを配置したディレクトリ。Windowsの場合は必須
OBSERVER_ENABLE コンポーネントオブザーバーを有効にするかどうか
ON:有効
OFF:無効
OFF
DOCUMENTS_ENABLE Doxygenでドキュメントを生成するかどうか
ON:生成する
OFF:生成しない
OFF
ROS_ENABLE ROS通信用シリアライザ、インターフェースを生成するか
ON:生成する
OFF:生成しない
OFF
FASTRTPS_ENABLE DDS(Fast-RTPS)通信用インターフェースを生成するか
ON:生成する
OFF:生成しない
OFF
ROS2_ENABLE ROS2通信用シリアライザを生成するか
ON:生成する
OFF:生成しない
OFF
EXAMPLES_ENABLE サンプルコンポーネントを生成するかどうか
ON:生成する
OFF:生成しない
ON
UTILS_ENABLE サンプルコンポーネントを生成するかどうか
ON:生成する
OFF:生成しない
ON
EXTLIB_ENABLE サンプルコンポーネントを生成するかどうか
ON:生成する
OFF:生成しない
ON
FLUENTBIT_ENABLE Fluent Bitロガープラグインを生成するかどうか
ON:生成する
OFF:生成しない
OFF
FLUENTBIT_ROOT Fluent Bitのソースコードのディレクトリ
OPENSPLICE_ENABLE DDS(OpenSplice)通信用インターフェースを生成するか
ON:生成する
OFF:生成しない
OFF
OPENSPLICE_DIR OpenSpliceをインストールしたディレクトリ
RAPIDXML_DIR rapidxmlを展開したディレクトリ

omniORBに関するオプション

名前 説明 デフォルト
OMNI_VERSION omniORBのメジャーバージョン。omniORBを手動でビルド、任意の場所にインストールした場合は必須 設定しなかった場合、LinuxでomniORBがpkg-configでインストールした場合は自動的に設定する。それ以外はエラー
OMNI_MINOR omniORBのマイナーバージョン。omniORBを手動でビルド、任意の場所にインストールした場合は必須 同上
OMNITHREAD_VERSION omniThreadのバージョン。omniORBを手動でビルド、任意の場所にインストールした場合は必須 同上

ビルドを選択可能なモジュールの依存関係

  • OBSERVER_ENABLE
  • DOCUMENTS_ENABLE
  • EXAMPLES_ENABLE
  • UTILS_ENABLE
  • EXTLIB_ENABLE

依存はlibcoil、libRTCのみ。

  • SSL_ENABLE
  • ROS_ENABLE
  • FASTRTPS_ENABLE

EXTLIB_ENABLEがONになっている必要がある。

  • ROS2_ENABLE

FASTRTPS_ENABLEがONになっている必要があるため、FastRTPSTransportのビルドは必須。

omniORBのビルド

Windows

omniORBのビルド

ビルドにはPython、Cygwinのインストールが必要です。

sslTp、httpTp機能を使う場合はOpenSSLのビルドが必要です。

Strawberry Perlをインストールして以下のコマンドを実行する。

 set OPENSSL_INSTALL_DIR=C:/work/openssl_install
 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
 perl Configure VC-WIN64A --prefix=%OPENSSL_INSTALL_DIR% no-asm shared
 nmake install

omniORBのソースコードを入手します。

mk/platforms/x86_win32_vs_16.mkでPython、OpenSSLのパスを設定します。OPEN_SSL_ROOTを設定しなかった場合でもビルドは可能ですが、sslTp、httpTp機能は使えません。

 PYTHON = /cygdrive/c/Python310/python

 OPEN_SSL_ROOT = /cygdrive/c/work/openssl_install

config/config.mkでビルドする環境を指定してください。

 platform = x86_win32_vs_16

omniORBを展開したフォルダに移動して以下のコマンドを実行してください。

 set PATH=C:\cygwin64\bin;%PATH%;
 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
 cd src
 make export

次にomniORBpyのビルドを実行します。 まずomniORBpyのソースコードを入手してください。

omniORBpyをomniORBのsrc/lib以下にコピーします。

 omniORB-4.x.y
    |--src
    |    |--lib
    |         |--omniORBpy
    |--mk
    |    |--platforms
    |            |--x86_win32_vs_16
    |--config
         |--config.mk

omniORBpyフォルダに移動してmakeコマンドを実行します。

 cd lib\omniORBpy
 make export

環境変数の設定

omniORB、omniORBpyの動作確認をするためには環境変数PATHPYTHONPATHの設定が必要です。

 set omniORB_DIR=C:/workspace/omniORB-4.3.0
 set PATH=%omniORB_DIR%\bin\x86_win32;%PATH%
 set PYTHONPATH=%omniORB_DIR%\lib\x86_win32;%omniORB_DIR%\lib\python;%PYTHONPATH%

Ubuntu

omniORBのビルド

sslTp、httpTp機能を使う場合はOpenSSLのインストールが必要です。

 sudo apt install libssl-dev

次にomniORBのソースコードを入手してビルドします。

 export PYTHON=/usr/bin/python3
 export OMNIORB_INSTALL_DIR=~/work/omniorb_install
 wget https://jaist.dl.sourceforge.net/project/omniorb/omniORB/omniORB-4.3.0/omniORB-4.3.0.tar.bz2
 tar xf omniORB-4.3.0.tar.bz2
 cd omniORB-4.3.0
 ./configure --prefix=${OMNIORB_INSTALL_DIR} --with-openssl
 make
 make install

omniORBpyのビルドを実行します。

 export PYTHON=/usr/bin/python3
 wget https://jaist.dl.sourceforge.net/project/omniorb/omniORBpy/omniORBpy-4.3.0/omniORBpy-4.3.0.tar.bz2
 tar xf omniORBpy-4.3.0.tar.bz2
 cd omniORBpy-4.3.0
 ./configure --with-omniorb=${OMNIORB_INSTALL_DIR} --prefix=${OMNIORB_INSTALL_DIR} --with-openssl
 make
 make install

環境変数の設定

omniORB、omniORBpyの動作確認をするためには環境変数PATHLD_LIBRARY_PATHPYTHONPATHの設定が必要です。

 export PATH=${OMNIORB_INSTALL_DIR}/bin:$PATH
 export LD_LIBRARY_PATH=${OMNIORB_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}
 export PYTHONPATH=${OMNIORB_INSTALL_DIR}/lib/python3.6/site-packages:$PYTHONPATH

また、pkg-configでomniORBを検出するには以下のように環境変数PKG_CONFIGを設定する。

 export PKG_CONFIG_PATH=${OMNIORB_INSTALL_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH

TAOのビルド

Windows

ACE+TAOのビルド

以下から ACE+TAO.zip をダウンロードしてください。

Visual Studio で ACE と TAO のビルドをします。

ACE+TAO.zip を展開したフォルダーの ace/config-win32.hace/config.h に変更してください。

ACE_vs2019.sln (もしくは ACE_vs2017.sln)を Visual Studio で開いてビルドしてください。 64bitの場合はソリューションプラットフォームがWin32となっている部分をx64に変更してください。

次に以下の環境変数を設定した状態でTAO_vs2019.sln (もしくは TAO_vs2017.sln)を Visual Studio で開いてビルドしてください。

環境変数 内容 設定例
ACE_ROOT ACE_wrappersを展開したフォルダのパス C:/work/ACE_wrappers

 cd TAO
 set ACE_ROOT=C:/work/ACE_wrappers
 TAO_vs2019.sln

Ubuntu

ACE+TAOのビルド

ACE+TAO.tar.gzを入手して以下のコマンドでビルドします。

 export ACE_INSTALL_DIR=~/work/ace_install
 sudo apt-get install gperf
 export ACE_ROOT=${PWD}/ACE_wrappers/build/linux
 export TAO_ROOT=${ACE_ROOT}/TAO
 export LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib
 export INSTALL_PREFIX=$ACE_INSTALL_DIR
 wget https://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-7_0_6/ACE+TAO-7.0.6.tar.gz
 tar xf ACE+TAO-7.0.6.tar.gz
 cd ACE_wrappers
 mkdir -p build/linux
 ./bin/create_ace_build build/linux
 echo '#include "ace/config-linux.h"' > build/linux/ace/config.h
 echo 'include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU' > build/linux/include/makeinclude/platform_macros.GNU
 cd build/linux
 make
 make install
 cd TAO
 make
 make install

SSLIOPを有効にする場合は、以下のようにsslオプションを有効にしてSSLIOPをビルドする必要があります。

 cd build/linux
 make ssl=1
 make install ssl=1
 cd TAO
 make SSLIOP ssl=1
 make install ssl=1

環境変数の設定

また、pkg-configでACE+TAOを検出するには以下のように環境変数PKG_CONFIGを設定する。

 export PKG_CONFIG_PATH=${ACE_INSTALL_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH

ネームサーバー起動手順(SSLIOP)

ネームサーバーをSSLIOP通信可能な状態で起動するためには以下のコマンドを実行する。

 ${ACE_INSTALL_DIR}bin/tao_cosnaming -ORBSvcConf server.conf -ORBEndpoint iiop://localhost:/ssl_port=2809

エンドポイントをssliop://localhost:2809のように設定するとcorbaloc形式でのアクセスが上手くいかないため、上記のようにiiop://localhost:/ssl_port=2809と指定する。

server.confは例えば以下のようなファイルを用意する。

 dynamic SSLIOP_Factory Service_Object *
         TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory()
         "-SSLAuthenticate SERVER_AND_CLIENT -SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem -SSLCAfile PEM:cacert.pem"
 static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory"

OpenRTM-aistのビルド、動作確認手順

Windows+omniORB

OpenRTM-aistのビルド、インストール

まず、以下の手順でomniORBをビルドしてください。

次にOpenRTM-aistをビルドします。

 set OpenRTM_INSTALL_DIR=C:/work/openrtm_install 
 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist
 mkdir build
 cd build
 cmake .. -DCMAKE_INSTALL_PREFIX=%OpenRTM_INSTALL_DIR% -DORB_ROOT=%omniORB_DIR%
 cmake --build . --config Release
 cmake --build . --config Release --target install

OpenRTM-aist-Pythonのビルド、インストール

まずは環境変数PATHPYTHONPATHを設定します。

 set OpenRTMPython_INSTALL_DIR=C:/work/python_install
 git clone https://github.com/OpenRTM/OpenRTM-aist-Python
 cd OpenRTM-aist-Python
 python setup.py build
 python setup.py install --prefix %OpenRTMPython_INSTALL_DIR%

rtshell、rtctree、rtsprofileのビルド、インストール

環境変数PATHPYTHONPATHを設定します。

 git clone https://github.com/OpenRTM/rtctree
 cd rtctree
 python setup.py build
 python setup.py install_lib --install-dir %OpenRTMPython_INSTALL_DIR%\Lib\site-packages

 git clone https://github.com/OpenRTM/rtsprofile
 cd rtsprofile
 python setup.py build
 python setup.py install_lib --install-dir %OpenRTMPython_INSTALL_DIR%\Lib\site-packages

 git clone https://github.com/OpenRTM/rtshell
 cd rtshell
 python setup.py build
 python setup.py install --prefix %OpenRTMPython_INSTALL_DIR%

インストールが完了したら環境変数の設定を行ってください。

Windows+TAO

OpenRTM-aistのビルド、インストール

まず、以下の手順でTAOをビルドしてください。

次にOpenRTM-aistをビルドします。

 set OpenRTM_INSTALL_DIR=C:/work/openrtm_install
 set PATH=%PATH%;%ACE_ROOT%\lib;
 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist
 mkdir build
 cd build
 cmake .. -DCMAKE_INSTALL_PREFIX=%OpenRTM_INSTALL_DIR% -DORB_ROOT=%ACE_ROOT%  -DCORBA=TAO
 cmake --build . --config Release
 cmake --build . --config Release --target install

インストールが完了したら環境変数の設定を行ってください。

OpenRTM-aist-Python、rtshell、rtctree、rtsprofileはTAOには対応していません。

Windows共通

環境変数の設定

OpenRTM-aist C++のRTC等を実行するためには環境変数%PATH%を設定する必要があります。

 set PATH=%OpenRTM_INSTALL_DIR%\2.0.0\bin\vc16;%OpenRTM_INSTALL_DIR%\2.0.0\omniORB\4.3.0_vc16\bin\x86_win32;%PATH%

OpenRTM-aist Python、rtctree、rtsprofileを使うためには環境変数PYTHONPATHを設定する必要があります。

 set PYTHONPATH=%OpenRTMPython_INSTALL_DIR%\Lib\site-packages;%OpenRTMPython_INSTALL_DIR%\Lib\site-packages\OpenRTM_aist;%OpenRTMPython_INSTALL_DIR%\Lib\site-packages\OpenRTM_aist\RTM_IDL;%PYTHONPATH%

rtshellを使うためには環境変数PATHの設定が必要です。

 set PATH=%OpenRTMPython_INSTALL_DIR%\Scripts;%PATH%

RTCのビルド

外部のRTCをビルドするためには、CMake実行時にOpenRTMConfig.cmakeをインストールしたパスを指定する必要があります。

 cmake .. -DOpenRTM_DIR=%OpenRTM_INSTALL_DIR%/2.0.0/cmake

環境変数設定スクリプト

OpenRTM-aist C++をインストールすると、環境変数を設定するバッチファイルがインストールされます。

 %OpenRTM_INSTALL_DIR%\2.0.0\ext\environment-setup.omniorb.vc16.bat

このバッチファイルを実行することで以下の環境変数が設定されます。

変数名 設定値 内容
OMNI_ROOT %RTM_ROOT%/omniORB/4.3.0_%RTM_VC_VERSION%/ omniORBをインストールしたフォルダ
OpenRTM_DIR %RTM_ROOT%/cmake OpenRTM-aistのCMake設定ファイルをインストールしたフォルダ
RTM_BASE %OpenRTM_INSTALL_DIR% OpenRTM-aistをインストールしたフォルダ
RTM_IDL_DIR %RTM_ROOT%/rtm/idl OpenRTM-aistのIDLファイルをインストールしたフォルダ
RTM_ROOT %OpenRTM_INSTALL_DIR%/2.0.0 OpenRTM-aistの2.0.0をインストールしたフォルダ
RTM_VC_VERSION vc** ビルドしたVisual Studioのバージョン
PATH %RTM_ROOT%/bin/%RTM_VC_VERSION%;%OMNI_ROOT%/bin/x86_win32;%PATH% PATHにOpenRTM-aist、omniORBの実行ファイルのパスを追加

OpenRTM-aist Python、rtshellの環境変数は設定されません。 Pythonのホームフォルダ(C:\Python37等)にインストールした場合は環境変数の設定は不要ですが、それ以外は手動で設定する必要があります。

Ubuntu+omniORB

まず、以下の手順でomniORBをビルドしてください。

以下の手順で環境変数PKG_CONFIGを設定します。

次にOpenRTM-aistをビルドします。

 export OPENRTM_INSTALL_DIR=$OMNIORB_INSTALL_DIR
 export PATH=$OMNIORB_INSTALL_DIR/bin:$PATH
 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist
 mkdir build
 cd build
 cmake .. -DCMAKE_INSTALL_PREFIX=$OPENRTM_INSTALL_DIR
 cmake --build . --config Release -- -j$(nproc)
 cmake --build . --config Release --target install

OpenRTM-aist-Pythonのビルド、インストール

まずは環境変数PATHLD_LIBRARY_PATHPYTHONPATHを設定します。

 export OPENRTMPYTHON_INSTALL_DIR=$OMNIORB_INSTALL_DIR
 git clone https://github.com/OpenRTM/OpenRTM-aist-Python
 cd OpenRTM-aist-Python
 python3 setup.py build
 python3 setup.py install --prefix $OPENRTMPYTHON_INSTALL_DIR

rtshell、rtctree、rtsprofileのビルド、インストール

環境変数PATHLD_LIBRARY_PATHPYTHONPATHを設定します。

 git clone https://github.com/OpenRTM/rtctree
 cd rtctree
 python3 setup.py build
 python3 setup.py install_lib --install-dir $OPENRTMPYTHON_INSTALL_DIR/lib/python3.6/site-packages

 git clone https://github.com/OpenRTM/rtsprofile
 cd rtsprofile
 python3 setup.py build
 python3 setup.py install_lib --install-dir $OPENRTMPYTHON_INSTALL_DIR/lib/python3.6/site-packages

 git clone https://github.com/OpenRTM/rtshell
 cd rtshell
 python3 setup.py build
 python3 setup.py install --prefix $OPENRTMPYTHON_INSTALL_DIR

インストールが完了したら環境変数の設定を行ってください。

Ubuntu+TAO

OpenRTM-aistのビルド、インストール

まず、以下の手順でTAOをビルドしてください。

以下の手順で環境変数PKG_CONFIGを設定します。

次にOpenRTM-aistをビルドします。

 export OPENRTM_INSTALL_DIR=$ACE_INSTALL_DIR
 export LD_LIBRARY_PATH=ACE_INSTALL_DIR/lib:$LD_LIBRARY_PATH
 git clone https://github.com/OpenRTM/OpenRTM-aist
 cd OpenRTM-aist
 mkdir build
 cd build
 cmake .. -DCMAKE_INSTALL_PREFIX=$OPENRTM_INSTALL_DIR -DCORBA=TAO
 cmake --build . --config Release -- -j$(nproc)
 cmake --build . --config Release --target install

インストールが完了したら環境変数の設定を行ってください。

OpenRTM-aist-Python、rtshell、rtctree、rtsprofileはTAOには対応していません。

Ubuntu共通

環境変数の設定

OpenRTM-aist C++のRTC等を実行するためには環境変数PATHLD_LIBRARY_PATHを設定する必要があります。

 export PATH=$OPENRTM_INSTALL_DIR/bin:$PATH
 export LD_LIBRARY_PATH=$OPENRTM_INSTALL_DIR/lib:$LD_LIBRARY_PATH

OpenRTM-aist Python、rtctree、rtsprofileを使うためには環境変数PYTHONPATHを設定する必要があります。

 export PYTHONPATH=$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages:$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages/OpenRTM_aist:$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages/OpenRTM_aist/RTM_IDL:$PYTHONPATH

rtshellを使うためには環境変数PATHの設定が必要です。

 export PATH=$OPENRTMPYTHON_INSTALL_DIR/bin:$PATH

omniORBやOpenRTM-aist等をインストールしたパスが同じ場合は以下のコマンドだけ実行します。

 export PATH=$OPENRTM_INSTALL_DIR/bin:$PATH
 export LD_LIBRARY_PATH=$OPENRTM_INSTALL_DIR/lib:$LD_LIBRARY_PATH
 export PYTHONPATH=$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages:$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages/OpenRTM_aist:$OPENRTM_INSTALL_DIR/lib/python3.6/site-packages/OpenRTM_aist/RTM_IDL:$PYTHONPATH

環境変数設定スクリプト

OpenRTM-aist C++をインストールすると、環境変数を設定するバッチファイルがインストールされます。

 source ${OpenRTM_INSTALL_DIR}/etc/environment-setup.sh

このバッチファイルを実行することで以下の環境変数が設定されます。

変数名 設定値 内容
OpenRTM_DIR ${OpenRTM_INSTALL_DIR}/lib/openrtm-2.0/cmake OpenRTM-aistのCMake設定ファイルをインストールしたフォルダ
RTM_IDL_DIR ${OpenRTM_INSTALL_DIR}/include/openrtm-2.0/rtm/idl OpenRTM-aistのIDLファイルをインストールしたフォルダ
PATH ${OpenRTM_INSTALL_DIR}/bin:$PATH PATHにOpenRTM-aist、omniORBの実行ファイルのパスを追加 ]
LD_LIBRARY_PATH ${OpenRTM_INSTALL_DIR}/lib:$LD_LIBRARY_PATH PATHにOpenRTM-aist、omniORBの実行ファイルのパスを追加

OpenRTM-aist Python、rtshellの環境変数は設定されません。 Pythonのホームフォルダ(C:\Python37等)にインストールした場合は環境変数の設定は不要ですが、それ以外は手動で設定する必要があります。

RTCのビルド

外部のRTCをビルドするためには、CMake実行時にOpenRTMConfig.cmakeをインストールしたパスを指定する必要があります。

 cmake .. -DOpenRTM_DIR=${OPENRTM_INSTALL_DIR}/lib/openrtm-2.0/cmake