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

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

Windowsへのインストール

OpenRTM-aistのインストール

MSIインストーラーによるOpenRTM-aistのインストール手順については下記のページに記載。

開発に必要なソフトウエアのインストール

RTCの開発にはCMake、Doxygen、Visual Studioのインストールが必要です。

  • CMake(3.11以上推奨) インストールの途中で[Install Options]としてsystem PATHをどうするかを聞かれますが、Add CMake to the system PATH for all usersを選択することを推奨します。(チェックはそれで行っています。)
  • Doxygen のWebページからWindows版のバイナリ実行形式ファイルをダウンロードして実行してインストールしてください。
  • Visual Studio からダウンロード版をインストールするか、別途Visual Studio 2010/2012/2013/2015/2017/2019を入手してインストールしてください。

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

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

  • インストールディレクトリ(デフォルトはC:\Program Files)下に各種ファイルをコピー
  • スタートメニュー以下にOpenRTM-aistフォルダーを作成し各種ショートカットを設定
  • 環境変数の設定
    • 64bit用MSI利用時の設定
 RTM_BASE=C:\Program Files\OpenRTM-aist\
 RTM_ROOT=C:\Program Files\OpenRTM-aist\1.2.1\
 RTM_VC_VERSION= //ここにはユーザーが指定したVisual StudioにのっとったVCのバージョンを指定するテキストが入ります
 RTM_JAVA_ROOT=C:\Program Files\OpenRTM-aist\1.2.1\
 OMNI_ROOT=C:\Program Files\OpenRTM-aist\1.2.1\omniORB\4.2.3_%RTM_VC_VERSION%\
 OpenCV_DIR=C:\Program Files\OpenRTM-aist\1.2.1\OpenCV3.4\
 OpenRTM_DIR=C:\Program Files\OpenRTM-aist\1.2.1\cmake\
      • PATHへの追加設定(64bit用MSI利用時の設定)
 C:\Program Files\OpenRTM-aist\1.2.1\bin\%RTM_VC_VERSION%\
 C:\Program Files\OpenRTM-aist\1.2.1\omniORB\4.2.1_%RTM_VC_VERSION%\bin\x86_win32\
 C:\Program Files\OpenRTM-aist\1.2.1\OpenCV3.4\%RTM_VC_VERSION%\bin\
    • 32bit用MSI利用時の設定
 RTM_BASE=C:\Program Files (x86)\OpenRTM-aist\
 RTM_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.2.1\
 RTM_VC_VERSION= //ここにはユーザーが指定したVisual StudioにのっとったVCのバージョンを指定するテキストが入ります
 RTM_JAVA_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.2.1\
 OMNI_ROOT=C:\Program Files\OpenRTM-aist\1.2.1\omniORB\4.2.3_%RTM_VC_VERSION%\
 OpenCV_DIR=C:\Program Files\OpenRTM-aist\1.2.1\OpenCV3.4\
 OpenRTM_DIR=C:\Program Files\OpenRTM-aist\1.2.1\cmake\
      • PATHへの追加設定
 C:\Program Files (x86)\OpenRTM-aist\1.2.1\bin\%RTM_VC_VERSION%\
 C:\Program Files(x86)\OpenRTM-aist\1.2.1\omniORB\4.2.3_%RTM_VC_VERSION%\bin\x86_win32\
 C:\Program Files(x86)\OpenRTM-aist\1.2.1\OpenCV3.4\x86\%RTM_VC_VERSION%\bin\

インストールされるファイル

ファイルは以下のような構造でインストールされます。

 <install_dir>
   + OpenRTM-aist
      + 1.x.x  :旧バージョンのランタイム
      + 1.2.1
         + bin: dll、lib各種コマンド
         + cmake: OpenRTMConfig.cmake
         + coil: coilヘッダファイル
         + Components
            + C++
               + Examples: C++サンプルコンポーネント
               + OpenCV: OpenCVのC++サンプルコンポーネント
            + Java: Java サンプルコンポーネント
            + Python: Python サンプルコンポーネント
         + etc: rtc.confサンプル
         + jar: jarファイル
         + jre: OpenJDK JRE
         + omniORB
         + OpenCV3.4
         + rtm: OpenRTM-aistヘッダファイル
            + ext: 拡張モジュール用ファイル 
            + idl: OpenRTM-aistIDLファイル
         + util
            + ExcelControlpy: PythonベースのMicrosoft Office用RTC
            + OpenRTP: RTCBuilderとRTSystemEditorツール
            + PowerPointControlpy: Microsoft Office PowerPoint用RTC
            + python_dist: pythonベースツール共通ライブラリ
            + RTCDT: PythonベースRTCの開発を支援するツール
            + rtc-template: RTCBuilderと似た機能を提供する古いツール
            + RTSystemEditor: RTSystem Editorのみのファイル
            + VCVerChanger: 使用しているVisual Studioのバージョンを指定するツール
            + WordContrlpy: PythonベースMicrosoft Office Word用RTC

Visual Studioのインストール

Visual Studio Community 2019のインストール

インストーラーの入手

以下のページからVisual Studio Community 2019のインストーラーを入手してください

[Community]とラベルされた下の[無料ダウンロード]ボタンをクリックするとインストーラーのダウンロードが始まります。

vs_install1.png

インストーラーの実行

ダウンロードが終了したら、ダウンロードしたファイルを開いて実行してください。指示にしたがってクリックしていくと以下の画面が表示されるので、[C++によるデスクトップ開発]にチェックを入れて[インストール]ボタンをクリックしてください。

vs_install2.png

インストールの確認

vs_install3.png
インストールが完了するとサインインを求める画面が表示されるため、Microsoftアカウントでサインインしてください。サインインしなくても30日間は使用できます。 Microsoftアカウントの手順は以下を参考にしてください。

新しいMicrosoftアカウントを作成する方法

C++コンパイラがインストールされているかの確認

C++によるデスクトップ開発機能がインストールされているかを必ず確認してください。

Visual C++のプロジェクトを作成できれば問題ありません。 まず、[新しいプロジェクトの作成]をクリックしてください。

vs_install4.png

この時、
[空のプロジェクト
Windows用にC++で最初から始めます。開始ファイルは提供しません]
などが選択肢にあればインストールに問題ありません。

new_project.png

インストールされていない場合は、
[探しているものが見つからない場合
さらにツールと機能をインストールする]
をクリックするとインストーラーが起動するので、[’’C++によるデスクトップ開発機能’’]をインストールしてください。

vs_install5.png

Ubuntu/Debianへのインストール

ubuntu_logo2.png

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

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

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

オプションを指定することで、目的に合わせたパッケージをインストールすることが可能です。

一括インストールスクリプトは、ダウンロードした後、ダウンロード先ディレクトリに移動し、

Ubuntuの場合は

 $ sudo sh pkg_install_ubuntu.sh -l c++ --yes

Debianの場合はsuでroot権限を得た後に

 # sh pkg_install_debian.sh -l c++ --yes

でインストールできます。

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

OpenRTPのインストール

一般的なUbuntu/Debian環境での開発にはRTC BuilderやRTSystem Editorを使用しますが、その場合にはOpenRTPが必要ですので、一括インストールスクリプトを用いてOpenRTPをインストールしてください。Ubuntuではpkg_install_ubuntu.shが置いてあるディレクトリで

Ubuntuは:

 $ sudo sh pkg_install_ubuntu.sh -l openrtp --yes

Debianはsuでroot権限を得た後に:

 # sh pkg_install_debian.sh -l openrtp --yes

と入力するとOpenRTPをインストールできます。

JDK8のインストール

OpenRTP(RTSystem EditorやRTC Builderなど)の実行にはJDK8相当のJava環境が必要です。(デフォルトの環境でJDK8がインストールされている場合もありますが、Ubuntu 18.04ではJDK11がインストールされているため、JDK8のインストールが必要です。) JDK8の入手やインストールについては以下を参照してください。

インストールの確認

インストールを確認します。

 $ dpkg -l 'openrt*'
 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
 ||/ 名前                     バージョン        アーキテクチャ    説明
 +++-========================-=================-+++-======================-================- 
 ii  openrtm-aist:amd64     1.2.1-0          amd64            OpenRTM-aist, RT-Middleware distributed by AIST
 ii  openrtm-aist-dev:amd64 1.2.1-0          amd64            OpenRTM-aist headers for development
 ii  openrtm-aist-doc       1.2.1-0          all              Documentation for openrtm-aist
 ii  openrtm-aist-example:a 1.2.1-0          amd64            OpenRTM-aist examples
 ii  openrtm-aist-idl:amd64 1.2.1-0          amd64            OpenRTM-aist idls for development
 ii  openrtp:amd64          1.2.1-0          amd64            OpenRTP, Open RT Platform distributed by AIST

パッケージの詳細

各パッケージの内容は以下の通りです。

openrtm-aist

openrtm-aist にはランタイムライブラリとコマンド群が含まれています。

  • コマンド
     /usr/bin/fluent-bit
     /usr/bin/rtcd
     /usr/bin/rtcprof
     /usr/bin/rtm-config
     /usr/bin/rtm-naming
  • ライセンスなど
     /usr/share/doc/openrtm-aist/README
     /usr/share/doc/openrtm-aist/README.Debian
     /usr/share/doc/openrtm-aist/README.jp
     /usr/share/doc/openrtm-aist/changelog.Debian.gz
     /usr/share/doc/openrtm-aist/changelog.gz
     /usr/share/doc/openrtm-aist/copyright
  • 設定ファイルサンプル
     /usr/etc/fluent-bit/fluent-bit.conf
     /usr/etc/fluent-bit/parsers.conf
     /usr/etc/rtc.conf.sample
     /usr/lib/x86_64-linux-gnu/pkgconfig/openrtm-aist.pc
  • ヘッダなど
     /usr/include/fluent-bit.h
     /usr/include/fluent-bit/flb_api.h
     /usr/include/fluent-bit/flb_bits.h
     中略
     /usr/include/fluent-bit/flb_worker.h
  • ライブラリなど
     /lib/systemd/system/fluent-bit.service
     /usr/lib/libfluent-bit.so
    • 32bit
       /usr/lib/i386-linux-gnu/libRTC-1.2.1.so
       /usr/lib/i386-linux-gnu/libRTC.a
       中略
       /usr/lib/i386-linux-gnu/librtmManipulator.so.0.0.0
       /usr/lib/i386-linux-gnu/openrtm-1.2/ec/FileNameservice.la
       /usr/lib/i386-linux-gnu/openrtm-1.2/ec/FileNameservice.so
       中略
        /usr/lib/i386-linux-gnu/openrtm-1.2/ec/RTPreemptEC.so.0.0.0
       /usr/lib/i386-linux-gnu/openrtm-1.2/logger/FluentBit.la
       中略
       /usr/lib/i386-linux-gnu/openrtm-1.2/logger/FluentBit.so.0.0.0
       /usr/lib/i386-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.a
       /usr/lib/i386-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.la
       中略
       /usr/lib/i386-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.so.0.0.0
       /usr/lib/i386-linux-gnu/libRTC-X.X.X.so
       /usr/lib/i386-linux-gnu/libRTC.a
       中略
       /usr/lib/i386-linux-gnu/librtmManipulator.so.X.X.X
  • 64 bit
     /usr/lib/x86_64-linux-gnu/libRTC-1.2.1.so
     /usr/lib/x86_64-linux-gnu/libRTC.a
     中略
     /usr/lib/x86_64-linux-gnu/librtmManipulator.so.0.0.0
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/ec/FileNameservice.la
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/ec/FileNameservice.so
     中略
      /usr/lib/x86_64-linux-gnu/openrtm-1.2/ec/RTPreemptEC.so.0.0.0
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/logger/FluentBit.la
     中略
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/logger/FluentBit.so.0.0.0
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.a
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.la
     中略
     /usr/lib/x86_64-linux-gnu/openrtm-1.2/sdo/LoggerConsumer.so.0.0.0
     /usr/lib/x86_64-linux-gnu/libRTC-X.X.X.so
     /usr/lib/x86_64-linux-gnu/libRTC.a
     中略
     /usr/lib/x86_64-linux-gnu/librtmManipulator.so.X.X.X

openrtm-aist-dev

openrtm-aist-devには、開発に必要なコマンド群とヘッダが含まれています。

  • コマンド
     /usr/bin/coil-config
     /usr/bin/rtc-template
     /usr/bin/rtm-skelwrapper
  • ライセンスなど
     /usr/share/doc/openrtm-aist-dev/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-dev/changelog.gz
     /usr/share/doc/openrtm-aist-dev/copyright
  • ヘッダなど
     /usr/include/coil-1.2/coil/Affinity.h
     /usr/include/coil-1.2/coil/Allocator.h
     中略
     /usr/include/coil-1.2/coil/stringutil.h
     /usr/include/openrtm-1.2/rtm/BufferBase.h
     /usr/include/openrtm-1.2/rtm/BufferStatus.h
     中略
     /usr/include/openrtm-1.2/rtm/config_rtc.h
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.hh
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterfaceDynSK.cc
     中略
     /usr/include/openrtm-1.2/rtm/ext/ManipulatorCommonInterface_MiddleStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/ArtExecutionContext.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredECStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.hh
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.idl
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/RTPreemptEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file/FileNameservice.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/FluentBit.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/fluentbit.conf
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/LoggerStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverConsumer.h
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverSK.cc
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.hh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataTypeDynSK.cc
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemoryStub.h
     /usr/include/openrtm-1.2/rtm/version.h
     /usr/include/openrtm-1.2/rtm/version.txt
     /usr/include/coil-1.2/coil/Affinity.h
     /usr/include/coil-1.2/coil/Allocator.h
     中略
     /usr/include/coil-1.2/coil/stringutil.h
     /usr/include/openrtm-1.2/rtm/BufferBase.h
     /usr/include/openrtm-1.2/rtm/BufferStatus.h
     中略
     /usr/include/openrtm-1.2/rtm/config_rtc.h
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.hh
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ManipulatorCommonInterface_MiddleStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/ArtExecutionContext.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredECStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.hh
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.idl
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/RTPreemptEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file/FileNameservice.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/FluentBit.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/fluentbit.conf
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/LoggerStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverConsumer.h
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverSK.cc
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.hh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/device_interfaces/Ranger.idl
     /usr/include/openrtm-1.2/rtm/version.h
     /usr/include/openrtm-1.2/rtm/version.txt
  • ライブラリ・その他
    • 32bit
       /usr/lib/i386-linux-gnu/openrtm-1.2/cmake/OpenRTMConfig.cmake
       /usr/lib/i386-linux-gnu/openrtm-1.2/py_helper/README_gen.py
       /usr/lib/i386-linux-gnu/openrtm-1.2/py_helpver/cxx_gen.py
       中略
       /usr/lib/i386-linux-gnu/openrtm-1.2/py_helpver/yat.py
       /usr/lib/i386-linux-gnu/pkgconfig/libcoil.pc
       
    • 64bit
       /usr/lib/x86_64-linux-gnu/openrtm-1.2/cmake/OpenRTMConfig.cmake
       /usr/lib/x86_64-linux-gnu/openrtm-1.2/py_helper/README_gen.py
       /usr/lib/x86_64-linux-gnu/openrtm-1.2/py_helper/cxx_gen.py
       中略
       /usr/lib/x86_64-linux-gnu/openrtm-1.2/py_helper/yat.py
       /usr/lib/x86_64-linux-gnu/pkgconfig/libcoil.pc

openrtm-aist-example

openrtm-aist-example にはスタンドアロン RTC、ローダブル RTC それぞれのサンプルと、サンプル RTC のソースが含まれています。

  • サンプル(スタンドアロンRTC)
     /usr/share/openrtm-1.2/components/c++/examples/Composite
     /usr/share/openrtm-1.2/components/c++/examples/ConfigSampleComp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/rtc.conf
  • サンプル(ローダブルRTC)
     /usr/share/openrtm-1.2/Components/C++/examples/rtc/ConfigSample.a
     /usr/share/openrtm-1.2/Components/C++/examples/rtc/ConfigSample.la
     中略
     /usr/share/openrtm-1.2/Components/C++/examples/rtc/Throughput.so.X.X.X
  • サンプル(ソース)
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Composite.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Controller.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/ConfigSample.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/ConfigSample.h
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/ConnectorComp.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/ConsoleIn.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/run.sh
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/Makefile.SeqIn
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/Makefile.SeqOut
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/ConnectorComp.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/ConsoleIn.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/run.sh
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/Makefile.MyServiceConsumer
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/Makefile.MyServiceProvider 
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/CMakeLists.txt
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/Throughput.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/run.sh
     /usr/share/openrtm-1.2/components/c++/examples/templates/AIO.xml
     /usr/share/openrtm-1.2/components/c++/examples/templates/ActArray.xml
     中略 
     /usr/share/openrtm-1.2/components/c++/examples/templates/VelocityControl3D.xml
  • ライセンスなど
     /usr/share/doc/openrtm-aist-example/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-example/changelog.gz
     /usr/share/doc/openrtm-aist-example/copyright

openrtm-aist-doc

openrtm-aist-doc には、日本語と英語のクラスリファレンス、IDL インターフェース定義リファレンスが含まれています。

  • クラスリファレンス
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/Affinity_8h.html
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/Affinity_8h_dep_incl.map
     中略
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/version_8h_source.html
  • IDL リファレンス
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl_dep_incl.map
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/unionSDOPackage_1_1Numeric.html
  • クラスリファレンス(英語)
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/Affinity_8h.html
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/Affinity_8h_dep_incl.map
     中略
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/version_8h_source.html
  • IDL リファレンス(英語)
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl_dep_incl.map
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/unionSDOPackage_1_1Numeric.html
  • ライセンスなど
     /usr/share/doc/openrtm-aist-doc/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-doc/changelog.gz
     /usr/share/doc/openrtm-aist-doc/copyright

openrtm-aist-idl

  • idlファイルなど
     /etc/profile.d/openrtm-aist-idl.sh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.idl
     /usr/include/openrtm-1.2/rtm/idl/CameraCommonInterface.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemory.idl
     /usr/share/openrtm-1.2/idl/BasicDataType.idl
     /usr/share/openrtm-1.2/idl/CameraCommonInterface.idl
     中略
     /usr/share/openrtm-1.2/idl/SharedMemory.idl
  • ライセンスなど
     /usr/share/doc/openrtm-aist-idl/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-idl/changelog.gz
     /usr/share/doc/openrtm-aist-idl/copyright

openrtp

openrtpでは大量のファイルがインストールされるため、ここではリストしません。必要に応じて

 $ dpkg -L openrtp
と入力して各自での確認をしてください。

Raspbianへのインストール

Raspberry_Pi_Logo.svg_.png

C++版OpenRTM-aistはRaspberry Pi用Raspbianl用debパッケージが提供されています。 Raspbianへの対応およびそのバージョンは、予告なしに変更または停止されることがありますので、あらかじめご了承ください。

対応バージョン

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

  • Buster

です。

SDカードの準備

OSイメージのダウンロード

以下のリンクからRasbianのイメージ(「Raspbian Buster with desktop and recommended software」のイメージを推奨しますが、必要に応じて他のイメージを選択してもかまいません)をダウンロードし、解凍し、SDカードに書き込みます。SDカードの容量は4GB以上はあったほうがよいでしょう。

SDカードへの書き込み

SDカードへの書き込み方法については RPi Easy SD Card Setup を参照してください。

このリンクではいくつかの方法が説明されています。そのうちのいくつかの概要を示すと:

Windowsの場合

Windowsを用いる方法の方がLinuxやMac OSを用いるより簡単なので、初心者にはWindowsを用いる方法を推奨します。

LinuxやMac OSの場合

  • ddコマンドを以下のように利用して書き込みます。

 $ sudo dd of=/dev/<SDカードのデバイスファイル> if=<ダウンロード・解凍したイメージファイル> bs=4M status=progress
 $ sudo sync

上記コマンドによるSDカードへの書き込みはかなり長い時間を必要とします。(数分から10数分)。また、SDカードのデバイスファイル名を見つけるには

 $ df -h
と入力し、表示されるデバイスのサイズからどのデバイスがSDカードかを見つけます。例えば、現在Rasbianがインストールされている16GBのSDカードを用いている場合、あるデバイスが14GBのデバイスとして表示され、そのデバイスが/dev/sdf7と表示されます。他にも/dev/sdf5、/dev/sdf6などの後尾の数字だけが違うデバイスが表示されます。これらがSDカードで使われているデバイス名です。これらのデバイス全て以下のようにumountしてください。
 $ umount /dev/sdf5
 $ umount /dev/sdf6
 $ umount /dev/sdf7

その後、上記のddコマンドを実行しますが、この例でのデバイスファイル名は/dev/sdfになります。

OpenRTM-aist (C++)インストール

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

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

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

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

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

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

一括インストール・スクリプトをダウンロードした後、ダウンロードしたディレクトリに移動して

  $ sudo sh pkg_install_raspbian.sh -l c++ --yes

でインストールできます。

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

apt-getを使う方法

source.listの編集

openrtm.orgではapt-getから利用可能なパッケージリポジトリを提供しています。ただし、デフォルトのパッケージリポジトリには含まれていませんので、apt-getの設定を変更する必要があります。そのためには/etc/apt/sources.listを編集して以下の行を追加します。

  deb http://www.openrtm.org/pub/Linux/raspbian/ buster main

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 を参照してください。

rtshellのインストール

rtshellはPythonのプログラムのため、OpenRTM-Pythonのインストールが必要です。OpenRTM-aist(Python版)のインストールでのRaspbianへのインストールのページの手順を実行してください。

インストールの確認

インストールを確認します。

 pi@raspberrypi ~ $ dpkg -l 'openrt*'
 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) 
 ||/ 名前                       バージョン   アーキテクチ 説明
 +++-==========================-============-============-===============================================
 ii  openrtm-aist:armhf         1.2.1-0      armhf        OpenRTM-aist, RT-Middleware distributed by AIST
 ii  openrtm-aist-dev:armhf     1.2.1-0      armhf        OpenRTM-aist headers for development
 ii  openrtm-aist-doc           1.2.1-0      all          Documentation for openrtm-aist
 ii  openrtm-aist-example:armhf 1.2.1-0      armhf        OpenRTM-aist examples
 ii  openrtm-aist-idl:armhf     1.2.1-0      armhf        OpenRTM-aist idls for development

パッケージの詳細

各パッケージの内容は以下の通りです。

openrtm-aist

openrtm-aistにはランタイムライブラリとコマンド群が含まれています。

  • コマンド
     /usr/bin/rtcd
     /usr/bin/rtcprof
     /usr/bin/rtm-config
     /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/copyright
     /usr/share/doc/openrtm-aist/changelog.Debian.gz
  • 設定ファイルサンプル
     /usr/etc/rtc.conf.sample
     /usr/lib/arm-linux-gnueabihf/pkgconfig/openrtm-aist.pc
     /usr/etc/fluent-bit/fluent-bit.conf
     /usr/etc/fluent-bit/parsers.conf
  • ライブラリ
     /usr/lib/arm-linux-gnueabihf/libRTC-1.2.1.so
     /usr/lib/arm-linux-gnueabihf/libRTC.a
     中略
     /usr/lib/arm-linux-gnueabihf/librtmManipulator.so.0.0.0
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/ec/FileNameservice.la
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/ec/FileNameservice.so
     中略
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/ec/RTPreemptEC.so.0.0.0
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/logger/FluentBit.la
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/logger/FluentBit.so
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/logger/FluentBit.so.0
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/logger/FluentBit.so.0.0.0
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/sdo/LoggerConsumer.a
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/sdo/LoggerConsumer.la
     中略
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/sdo/LoggerConsumer.so.0.0.0
     /usr/lib/libfluent-bit.so
  • ヘッダ
     /usr/include/fluent-bit/flb_api.h
     /usr/include/fluent-bit/flb_bits.h
     中略
     /usr/include/fluent-bit/flb_worker.h
     /usr/include/fluent-bit.h

openrtm-aist-dev

openrtm-aist-devには、開発に必要なコマンド群とヘッダが含まれています。

  • コマンド
     /usr/bin/coil-config
     /usr/bin/rtc-template
     /usr/bin/rtm-skelwrapper
  • ライセンスなど
     /usr/share/doc/README
     /usr/share/doc/README.Debian
     /usr/share/doc/README.jp
     /usr/share/doc/openrtm-aist-dev/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-dev/changelog.gz
     /usr/share/doc/openrtm-aist-dev/copyright
  • ヘッダ
     /usr/include/coil-1.2/coil/Affinity.h
     /usr/include/coil-1.2/coil/Allocator.h
     中略
     /usr/include/coil-1.2/coil/stringutil.h
     /usr/include/openrtm-1.2/rtm/BufferBase.h
     /usr/include/openrtm-1.2/rtm/BufferStatus.h
     中略
     /usr/include/openrtm-1.2/rtm/config_rtc.h
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.hh
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterfaceDynSK.cc
     中略
     /usr/include/openrtm-1.2/rtm/ext/ManipulatorCommonInterface_MiddleStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/ArtExecutionContext.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredECStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.hh
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.idl
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/RTPreemptEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file/FileNameservice.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/FluentBit.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/fluentbit.conf
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/LoggerStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverConsumer.h
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverStub.h
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverSK.cc
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.hh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataTypeDynSK.cc
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemoryStub.h
     /usr/include/openrtm-1.2/rtm/version.h
     /usr/include/openrtm-1.2/rtm/version.txt
  • ライブラリ・その他
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/cmake/OpenRTMConfig.cmake
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/py_helper/README_gen.py
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/py_helpver/cxx_gen.py
     中略
     /usr/lib/arm-linux-gnueabihf/openrtm-1.2/py_helpver/yat.py
     /usr/lib/arm-linux-gnueabihf/pkgconfig/libcoil.pc

openrtm-aist-idl

  • スクリプトファイル
     /etc/profile.d/openrtm-aist-idl.sh
  • ライセンスなど
     /usr/share/doc/openrtm-aist-idl/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-idl/changelog.gz
     /usr/share/doc/openrtm-aist-idl/copyright
  • idlファイル
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.idl
     /usr/include/openrtm-1.2/rtm/idl/CameraCommonInterface.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemory.idl
     /usr/share/openrtm-1.2/idl/BasicDataType.idl
     /usr/share/openrtm-1.2/idl/CameraCommonInterface.idl
     /usr/share/openrtm-1.2/idl/DataPort.idl
     中略
     /usr/share/openrtm-1.2/idl/SharedMemory.idl

openrtm-aist-example

openrtm-aist-exampleにはスタンドアロンRTC、ローダブルRTCそれぞれのサンプルと、サンプルRTCのソースが含まれています。

  • サンプル(スタンドアロンRTC)
     /usr/share/openrtm-1.2/components/c++/examples/ConsoleOutComp
     /usr/share/openrtm-1.2/components/c++/examples/ConsoleInComp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/consout.conf
     /usr/share/openrtm-1.2/components/c++/examples/rtc.composite.linux.conf
     /usr/share/openrtm-1.2/components/c++/examples/rtc.conf
  • サンプル(ソース)
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/README.Motor
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Makefile.Sensor
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Motor.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/rtc.conf
     /usr/share/openrtm-1.2/Components/c++/examples/src/Throughput/run.sh
     /usr/share/openrtm-1.2/Componnets/c++/examples/templates/AIO.xml
     /usr/share/openrtm-1.2/Components/c++/examples/templates/ActArray.xml
     中略
     /usr/share/openrtm-1.2/Components/c++/examples/templates/VelocityControl3D.xml
     
  • サンプル(ローダブルRTC)
     /usr/share/openrtm-1.2/components/c++/examples/rtc/ConfigSample.a
     /usr/share/openrtm-1.2/components/c++/examples/rtc/ConfigSample.la
     中略
     /usr/share/openrtm-1.2/components/c++/examples/rtc/Throughput.so.X.X.X
     /usr/share/openrtm-1.2/components/c++/examples/rtc/Cofig.sample.so
     /usr/share/openrtm-1.2/components/c++/examples/rtc/Cofig.sample.so.X
     中略
     /usr/share/openrtm-1.2/components/c++/examples/rtc/Troughput.so.X
  • ライセンスなど
     /usr/share/doc/openrtm-aist-example/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-example/changelog.gz
     /usr/share/doc/openrtm-aist-example/copyright

openrtm-aist-idl

  • idlファイルなど
     /etc/profile.d/openrtm-aist-idl.sh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.idl
     /usr/include/openrtm-1.2/rtm/idl/CameraCommonInterface.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemory.idl
     /usr/share/openrtm-1.2/idl/BasicDataType.idl
     /usr/share/openrtm-1.2/idl/CameraCommonInterface.idl
     中略
     /usr/share/openrtm-1.2/idl/SharedMemory.idl
  • ライセンスなど
     /usr/share/doc/openrtm-aist-idl/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-idl/changelog.gz
     /usr/share/doc/openrtm-aist-idl/copyright

openrtm-aist-doc

openrtm-aist-docには、日本語と英語のクラスリファレンス、IDLインターフェース定義リファレンスが含まれています。

  • クラスリファレンス
     /usr/share/openrtm-1.2/doc/c++/ClassReference/html/Affinity_8h.html
     /usr/share/openrtm-1.2/doc/c++/ClassReference/html/Affinity_8h__dep__incl.dot
     中略
     /usr/share/openrtm-1.2/doc/c++/ClassReference/html/version_8h_source.html
  • IDLリファレンス
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl__dep__incl.dot
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/unionSDOPackage_1_1Numeric.html
  • クラスリファレンス(英語)
     /usr/share/openrtm-1.2/doc/c++/ClassReference-en/html/Affinity_8h.html
     /usr/share/openrtm-1.2/doc/c++/ClassReference-en/html/Affinity_8h__dep__incl.dot
     中略
     /usr/share/openrtm-1.2/doc/c++/ClassReference-en/html/version_8h_source.html
  • IDLリファレンス(英語)
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl__dep__incl.dot
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/unionSDOPackage_1_1Numeric.html
  • ライセンスなど
     /usr/share/doc/openrtm-aist-doc/changelog.Debian.gz
     /usr/share/doc/openrtm-aist-doc/changelog.gz
     /usr/share/doc/openrtm-aist-doc/copyright

Fedoraへのインストール

現在、1.2系のOpenRTM-aistはFedoraの対応が不完全です。よって、本ページの情報はあくまでも参考情報として使用してください。

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

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

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

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

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

一括インストールスクリプトは、ダウンロードした後、ダウンロード先ディレクトリに移動し、

 $ sudo sh pkg_install_fedora.sh -l c++ --yes
でインストールできます。

一括インストールスクリプトのダウンロードや詳しいインストール方法、指定可能なオプションの種類につきましては、一括インストールスクリプトのページをご確認ください。//英語版は/node/6990

OpenRTPのインストール

一般的なFedora環境での開発にはRTC BuilderやRTSystem Editorを使用しますが、その場合にはOpenRTPが必要ですので、一括インストールスクリプトを用いてOpenRTPをインストールしてください。Fedoraではpkg_install_fedora.shが置いてあるディレクトリで

 $ sudo sh pkg_install_fedora.sh -l openrtp --yes
と入力するとOpenRTPをインストールできます。

JDK8のインストール

OpenRTP(RTSystem EditorやRTC Builderなど)の実行にはJDK8相当のJava環境が必要です。現時点でFedoraの環境では、一括インストールスクリプトがFedoraのrpmリポジトリよりOpenJDK8をインストールします。他のJDK8をインストールしたい場合は下記のリンクを参照してください。

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

 $ sudo yum install gcc-c++ python
 $ sudo yum install omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils
 $ sudo yum install OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example OpenRTP

インストールの確認

最後に以下のコマンドでインストールの確認をします。

 $ rpm -qa|grep OpenRT*
 OpenRTM-aist-1.2.0-0.fc29.x86_64
 OpenRTM-aist-devel-1.2.0-0.fc29.x86_64
 OpenRTM-aist-example-1.2.0-0.fc29.x86_64
 OpenRTM-aist-doc-1.2.0-0.fc29.x86_64
 OpenRTP-1.2.0-1.fc29.x86_64

パッケージの詳細

各パッケージの内容は以下の通りです(64bit版Fedoraの場合)

OpenRTM-aist

openrtm-aistにはランタイムライブラリとコマンド群が含まれています。

  • サンプル設定ファイル
     /etc/rtc.conf.sample
  • コマンド
     /usr/bin/rtcd
     /usr/bin/rtcprof
     /usr/bin/rtm-config
     /usr/bin/rtm-naming
  • ライブラリ
     /usr/lib64/libRTC-1.2.0.so
     /usr/lib64/libRTC.a
     /usr/lib64/libRTC.la
     中略
     /usr/lib64/librtmManipulator.so.0.0.0
     /usr/lib64/openrtm-1.2/ec/FileNameservice.la
     /usr/lib64/openrtm-1.2/ec/FileNameservice.so
     中略
     /usr/lib64/openrtm-1.2/ec/RTPreemptEC.so.0.0.0
     /usr/lib64/openrtm-1.2/sdo/LoggerConsumer.a
     /usr/lib64/openrtm-1.2/sdo/LoggerConsumer.la
     中略
     /usr/lib64/openrtm-1.2/sdo/LoggerConsumer.so.0.0.0
     /usr/lib64/openrtm-1.2/ssl/SSLTransport.la
     /usr/lib64/openrtm-1.2/ssl/SSLTransport.so
     /usr/lib64/openrtm-1.2/ssl/SSLTransport.so.0
     /usr/lib64/openrtm-1.2/ssl/SSLTransport.so.0.0.0

OpenRTM-aist-devel

openrtm-aist-devには、開発に必要なコマンド群とヘッダが含まれています。

  • コマンド
     /usr/bin/coil-config
     /usr/bin/rtc-template
     /usr/bin/rtm-skelwrapper
  • ヘッダ
     /usr/include/coil-1.2/coil/Affinity.h
     /usr/include/coil-1.2/coil/Allocator.h
     中略
     /usr/include/coil-1.2/coil/stringutil.h
     /usr/include/openrtm-1.2/rtm/BufferBase.h
     /usr/include/openrtm-1.2/rtm/BufferStatus.h
     中略
     /usr/include/openrtm-1.2/rtm/version.txt
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.hh
     /usr/include/openrtm-1.2/rtm/ext/CameraCommonInterface.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ManipulatorCommonInterface_MiddleStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/ArtExecutionContext.h
     /usr/include/openrtm-1.2/rtm/ext/ec/artlinux/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredEC.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/LogicalTimeTriggeredECStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/RTPreemptEC.h
     /usr/include/openrtm-1.2/rtm/ext/ec/rtpreempt/rtc.conf.sample
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file
     /usr/include/openrtm-1.2/rtm/ext/local_service/nameservice_file/FileNameservice.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/FluentBit.h
     /usr/include/openrtm-1.2/rtm/ext/logger/fluentbit_stream/fluentbit.conf
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/Logger.idl
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/logger/LoggerStub.h
  • IDL およびスタブ・スケルトン
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverConsumer.h
     中略
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/ComponentObserverStub.h
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.hh
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredEC.idl
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/ec/logical_time/idl/LogicalTimeTriggeredECSK.cc
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.hh
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserver.idl
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverDynSK.cc
     /usr/include/openrtm-1.2/rtm/ext/sdo/observer/idl/ComponentObserverSK.cc
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.hh
     /usr/include/openrtm-1.2/rtm/idl/BasicDataType.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/SharedMemoryStub.h
     /usr/include/openrtm-1.2/rtm/idl/device_interfaces/AIO.idl
     /usr/include/openrtm-1.2/rtm/idl/device_interfaces/ActArray.idl
     中略
     /usr/include/openrtm-1.2/rtm/idl/device_interfaces/Ranger.idl
     
  • ライブラリなど
     /usr/lib64/openrtm-1.2/cmake/OpenRTMConfig.cmake
     /usr/lib64/openrtm-1.2/py_helper/README_gen.py
     /usr/lib64/openrtm-1.2/py_helper/cxx_gen.py
     中略
     /usr/lib64/openrtm-1.2/py_helper/yat.py
     /usr/lib64/pkgconfig/libcoil.pc
     /usr/lib64/pkgconfig/openrtm-aist.pc

OpenRTM-aist-doc

openrtm-aist-docには、日本語と英語のクラスリファレンス、IDLインターフェース定義リファレンスが含まれています。

  • クラスリファレンス
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/Affinity-8h.html
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/Affinity_8h__dep__incl.map
     中略
     /usr/share/openrtm-1.2/doc/C++/ClassReference/html/version_8h_source.html
  • IDL リファレンス
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/BasicDataType_8idl__dep__incl.map
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference/html/unionSDOPackage_1_1Numeric.html
  • クラスリファレンス(英語)
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/Affinity-8h.html
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/Affinity_8h__dep__incl.map
     中略
     /usr/share/openrtm-1.2/doc/C++/ClassReference-en/html/version_8h_source.html
  • IDL リファレンス(英語)
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl.html
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/BasicDataType_8idl__dep__incl.map
     中略
     /usr/share/openrtm-1.2/doc/idl/IDLReference-en/html/unionSDOPackage_1_1Numeric.html

OpenRTM-aist-example

openrtm-aist-exampleにはスタンドアロンRTC、ローダブルRTCそれぞれのサンプルと、サンプルRTCのソースが含まれています。

  • サンプル(スタンドアロンRTC)
     /usr/share/openrtm-1.2/components/c++/examples/Composite
     /usr/share/openrtm-1.2/components/c++/examples/ConfigSampleComp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/ThroughputComp
     /usr/share/openrtm-1.2/components/c++/examples/component.conf
     /usr/share/openrtm-1.2/components/c++/examples/composite.conf
     中略
     /usr/share/openrtm-1.2/components/c++/examples/rtc.conf
  • サンプル(ローダブルRTC)
     /usr/share/openrtm-1.2/components/c++/examples/rtc/ConfigSample.a
     /usr/share/openrtm-1.2/components/c++/examples/rtc/ConfigSample.la
     /usr/share/openrtm-1.2/components/c++/examples/rtc/Throughput.so.0.0.0
  • ソース
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Composite.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/Controller.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/Composite/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/ConfigSample.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/ConfigSample.h
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/ConfigSample/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/ConnectorComp.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/ConsoleIn.cpp
     中略k
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/ExtTrigger/run.sh
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/Makefile.SeqIn
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/Makefile.SeqOut
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SeqIO/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/ConnectorComp.cpp
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/ConsoleIn.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleIO/run.sh
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/Makefile.MyServiceConsumer
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/Makefile.MyServiceProvider 
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/SimpleService/rtc.conf
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/CMakeLists.txt
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/Throughput.cpp
     中略
     /usr/share/openrtm-1.2/components/c++/examples/src/Throughput/run.sh
  • テンプレート
     /usr/share/openrtm-1.2/components/c++/examples/templates/AIO.xml
     /usr/share/openrtm-1.2/components/c++/examples/templates/ActArray.xml
     中略
     /usr/share/openrtm-1.2/components/c++/examples/templates/VelocityControl3D.xml

OpenRTP

OpenRtpでは大量のファイルがインストールされるため、ここではリストしません。必要に応じて

 $ rpm -ql  OpenRTP
と入力して各自での確認をしてください。

動作確認(Windows編)

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

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

  • C:\Program Files\OpenRTM-aist\1.2.x\Components\C++\Examples
  • OpenRTM-aist\examples (ソースからビルドした場合)

以下の手順で、サンプルコンポーネントセットSimpleIOを使用して、OpenRTM-aistが正しくビルド/インストールされているかを確認します。

サンプル (SimpleIO)を使用した確認

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

以下は、MSIインストーラーでOpenRTM-aistをインストールした環境で、スタートメニューから各種プログラムを起動する前提で説明します。

RTSystemEditor、ネームサーバーの起動

以下の手順に従ってRTSystemEditor、ネームサーバーを起動してください。

サンプルコンポーネントの起動

ネームサーバー起動後、適当なサンプルコンポーネントを起動します。

Windows 10の場合は右下の[ここに入力して検索]にC++_Examplesと入力して、サンプルのディレクトリを開きます。

rtm7.png
ネームサーバーの起動を確認

rtm8.png
サンプルコンポーネントディレクトリ

「ConsoleIn.bat」「ConsoleOut.bat」をそれぞれダブルクリックして2つのコンポーネントを起動します。

Windows Defenderからの警告

サンプルコンポーネントを起動しようとすると、Windows Defenderのファイアウォールにより[Windows セキュリティの重要な警告]ダイアログが表示されることがあります。[プライベート ネットワーク(ホームネットワークや社内ネットワークなど)(R)]にチェックを入れ[パブリックネットワーク(空港、喫茶店など)(非推奨)(U)]のチェックをはずしてアクセスを許可する(A)]をクリックしてください。このダイアログはWindows 10(build 1903)以外だと別のダイアログが表示されることがありますし、設定によっては表示されないこともあります。表示された場合は同様の設定をしてダイアログを閉じてください。

サンプルコンポーネント起動後の画面

起動後数秒で下図のような2つのコンソール画面が開きます。

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

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

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

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

環境変数RTM_VC_VERSIONOMNI_ROOTRTM_ROOTが設定されていないとRTCの起動に失敗します。 MSIインストーラーでインストールした場合はOSを再起動すると解決する場合があります。

また、rtc.confの設定に問題があり、起動できないケースがあります。上記のC++_Exampleを用いて検索したフォルダー下のVCxx(Visual Studio 2019使用時はVC14)にある[rtc.conf]を開いて設定を確認してください。 例えば、corba.endpoint/corba.endpointsなどの設定が現在実行中のPCホストのIPアドレスとミスマッチを起こしている場合などは、CORBAが異常終了します。

以下のような内容(最低限の設定)にrtc.confを書きなおして試してみてください。

 corba.nameservers: localhost

ランタイムエラーが出て終了する
ライブラリなどが適切にインストールされていなかったり、設定されていないなどの原因でラインタイムエラーが発生する場合があります。その場合は下記の方法を試してみてください。
  • 再起動してみる
  • OpenRTM-aistをすべてアンインストールし、再度インストールすることで改善される場合があります。

RTSystemEditorでのエディタ画面への配置

RTSystemEditorのツリー表示内の[localhost]‘の横の[>]をクリックし、そしてicon_db.pngアイコンの横の[>]をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります。

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

システムを編集するエディタ(System Diagram)を開きます。上部の[Open New System Editor]ボタンicon_open_editor_ja.png をクリックすると、中央のペインにエディタ(System Diagram)画面が開きます。

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

rtm11.png
コンポーネントをSystem Diagramに配置

接続とアクティブ化

ConsoleIn0コンポーネントの右側にはデータが出力されるOutPort  /ja/node/794 が、ConsoleOut0コンポーネントの左側にはデータが入力されるInPort  /ja/node/794が、それぞれ配置されています。

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

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

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

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

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

コンポーネントがアクティブ化されるとConsoleInコンポーネント側のコンソール上の表示が

 Please input number: 

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

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

他のサンプル

インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。これらのコンポーネントも同様に、ダブルクリックで起動、そしてRTSystemEditorを用いてポート間を接続し、アクティブ化することで試すことができます。

付属しているコンポーネント起動用バッチファイルのリストと簡単な説明を以下に示します。

ConsoleIn.bat コンソールから入力された数値をOutPortから出力するConsoleInコンポーネント を起動します。ConsoleOutに接続して使用します。
ConsoleOut.bat InPortに入力された数値をコンソールに表示するConsoleOutコンポーネント を起動します。ConsoleInに接続して使用します。
SeqIn.bat ランダムな数値(Short、Long、Float、Doubleとそのシーケンス型)を出力するSequenceInComponentコンポーネントを起動します。SequenceOutComponentに接続して使用する。
SeqOut.bat InPortに入力される数値(Short、Long、Float、Doubleとそのシーケンス型)を表示するSequenceOutComponentを起動します。SequenceInComponentに接続して使用します。
MyServiceProviderComp.bat MyService型のサービスを提供するMyServiceProviderコンポーネント を起動します。MyServiceConsumerに接続して使用します。
MyServiceConsumerComp.bat MyService型のサービスを提供するMyServiceConsumerコンポーネント を起動します。MyServiceProviderに接続して使用します。
ConfigSample.bat Configuration機能の使用例のサンプルConfigSampleコンポーネント を起動します。RtcLinkからConfigurationを変更してConfigurationの挙動を理解するためのサンプルです。
Composite.bat 複合コンポーネント作成サンプルPeriodicECSharedComponentコンポーネント を起動します。Sensor、Controller、Motorの3つサブ・コンポネントを複合しています。 ConsoleInなどのコンポーネント接続して使ってみると良いでしょう。

動作確認(Linux編)

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

  • /usr/share/openrtm-1.2/components/c++/examples

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

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

サンプルコンポーネントセットSimpleIO(ソースからビルドした場合は、このコンポネントセット名のディレクトリ下にコンポーネントが実行可能なものと存在していますが、一括インストールスクリプトでインストールした場合は、上記のexamplesディレクトリ上に他のサンプルコンポーネント一と一緒に置かれていて特にSimpleIOというセット名に沿って別ディレクトリなどにまとめられてはいませんので、そのケースではコンポーネントセットとはConsoleInCompとConsoleOutCompの2つコンポーネントのセットだと理解してください)を使って、OpenRTM-aistが正しくインストール/ビルドされているかを確認します。

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

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

以降、簡単のためサンプルは/usr/share/openrtm-1.2/components/c++/examples以下にあるものとして説明を記述します。

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

RTSystemEditor、ネームサーバー起動

以下の手順に従ってRTSystemEditor、ネームサーバーを起動してください。

ConsoleInCompの起動

ターミナルを起動してConsoleInCompを起動します。

 $ /usr/share/openrtm-1.2/components/c++/examples/ConsoleInComp

自分でビルド・インストールした場合は、

 $ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleInComp

などとしてConsoleInCompを起動します。

ConsoleOutCompの起動

別のターミナルを起動してConsoleOutCompを起動します。

 $ /usr/share/openrtm-1.2/components/c++/examples/ConsoleOutComp 

自分でビルド/インストールした場合は、同様に

 $ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleOutComp

などとしてConsoleOutCompを起動します。

エディタ画面への配置

RTSystemEditorのツリー表示の[localhost]の横の[>]をクリックし、そしてicon_db.pngアイコンの横の[>]をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります

/ja/node/6614
ConsoleInコンポーネントとConsoleOutコンポーネント

システムを編集するエディタを開きます。上部の[Open New System Editor]ボタンicon_open_editor.png をクリックすると、中央のペインにエディタ画面が表示されます。

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

/ja/node/6614
コンポーネントをエディタに配置

接続とアクティブ化

ConsoleIn0コンポーネントの右側にはデータが出力されるOutPort /node/794 、ConsoleOut0コンポーネントの左側にはデータが入力されるInPort /node/794 がそれぞれ配置されています。

これらInPort/OutPort(まとめてデータポートと呼びます)を接続します。

/ja/node/6614
データポートの接続

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

/ja/node/6614
データポート接続ダイアログ

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

/ja/node/6614
アクティブ化されたコンポーネント

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

 Please input number: 

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

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

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

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

Windows環境でのOpenRTM-aistのビルドにおいては、ビルド環境の構築やインストーラの作成など、Windows環境上でのソフトウエア開発についてのさまざまな知識が必要です。 以下の説明では、Windows環境上のプログラム開発やバッチファイル作成などの基本的な知識があることを前提にしています。

Windows用ソースコード

Windows用のOpenRTM-aist(C++版)ソースパッケージはLinux 用のソースパッケージとは別個に配布されています。 ソースコードの基本的内容は同じですが、ビルド環境に依存するファイルは異なっています(例えばWindows環境におけるVisual StudioのプロジェクトファイルはWindows用ソースパッケージの中にしか存在しません)。

ソースパッケージの生成

Windows用ソースコードのパッケージは 下記に示すリンクより入手できますが、最新の開発中のソースコードを入手する場合はGitHubのOpenRTM/OpenRTM-aist projectより入手する必要があり、図に示すようにLinux上で、

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

を作るようになっています。

/ja/node/793
OpenRTM-aist のソースパッケージの生成

ビルド環境

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

  • Visual C++/Visual Studio
  • omniORB

Visual C++/Visual Studio

Windows 用のバイナリをビルドするためには、Visual Studio(C++)開発環境が必要です。 現在対応している Visual Studio は Visual Studio 2010、2012、2013、2015、2017、2019 です。(現状では2019のビルド対応はまだできていません。)

Visual Studio CommunityはMicrosoftが無償で提供する統合開発環境で、C++、C#、F#、Java、Pythonなどいろいろな言語を用いたソフトウエア開発に対応しています。 Community版は有償のProfessional版とほぼ同等の機能ですが、個人開発者、大学関係者、非営利団体従事者、オープンソース開発者、および、開発者5名以下の営利企業でしか使用できません。ライセンス条件の詳細についてはマイクロソフト社のドキュメントを参照してください。

以下よりVisual Studio 2019は入手できます。

なお、Visual Studio 2017をインストールする場合は"C++によるデスクトップ開発"を選択し、さらに"インストール詳細"のところで"Windows 8.1 SDK と UCRT SDK"を選択してインストールをおこなってください。

omniORB

OpenRTM-aistのビルドにはomniORB 4.2.3(2019/05/17現在)のライブラリが必要です。 openrtm.org が提供するビルド済みバイナリパッケージを下記リンク先に用意してあります。 環境に合わせて適切なものをダウンロードし、適当な場所(以下の説明ではC:\workspace\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
  + include
  |  + COS
  |  + omniORB4
  |  + omnithread
  |  + omniVms

OpenSSL

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

環境変数: SSL_ROOT

SSL_ROOT に設定したディレクトリ以下は以下のような構造になっている必要があります。

 <SSL_ROOT>
  + bin
  |  + scripts
  |  + x86_win32
  + lib
  |  + engines-1_1
  + include
  |  + openssl

Python

ビルドの途中でいくつかのPythonスクリプトを利用するので Python 2.7か3.6、または3.7 が必要です。(現状2.7が必要で、3.7ではエラーが起きます) 以下のサイトから最新のバージョンを取得しインストールしてください。

インストーラーを起動すると、そのインストール過程で選択項目がでてきますが、デフォルトの項目を選択してインストールしてください。(デフォルト以外の選択も可能ですが、その場合は十分な理解の元で選択してください。)

ソースパッケージの取得

まずソースコード OpenRTM-aist-1.2.X-win32.zip をダウンロードし、適当なディレクトリに展開します。

バッチファイルの修正

build.batを実行するとビルドが始まりますが、その前にバッチファイルの環境変数"OMNI_ROOTSSL_ROOT''をする部分を環境に合わせて変更してください。

 set OMNI_ROOT=C:\workspace\omniORB-4.2.3-win64-vc141
 set SSL_ROOT=C:\workspace\OpenSSL\build

さらに、以下の環境変数も環境にあわせて設定するようにパッチファイル内に記述してください。

 set VC_VERSION=141  
 set ARCH=x86_64
 set PYTHON_DIR=C:\python27
 set OMNI_VERSION=4.2.3
 set OMNITHREAD_VERSION=4.1

上記の設定値は64ビット版OpenRTM-aistの設定用でVisual Studio 2017 とPython 2.7、OmniORB 4.2.3を使った場合の例です。 ここで、VC_VERSIONは対応するVisual C++のバージョンを指定します。(以下を参照してください。)

Visual Studio 2010 10
Visual Studio 2012 11
Visual Studio 2013 12
Visual Studio 2015 14
Visual Studio 2017 141
Visual Stuido 2019 142

ARCHには32bitバイナリを作成する場合はx86、64bitバイナリを作成する場合はx86_64を指定してください。 PYTHON_DIRにはPythonをインストールしたパスを指定してください。

OMNI_VERSION、OMNITHREAD_VERSIONには対応するomniORB、omniThreadのバージョンを設定してください。OmniThreadのバージョンはエキスプローラでomnithreadXXXX.dllのファイルを右クリックしプロパティを選び、詳細タブをクリックするとファイルバージョンとして確認できます。そのうち最初ピリオドの右側の数字は次のピリオドの前までの数字を設定してください。(例えば4.1.24.1.0と表示されたら、4.1としてください。)

またCommunity版以外のVisual Studioを使用する場合は前もってvcvarsall.batを実行する必要があります。

Visual Studio 2017で、64ビットのインテルないしはAMDプロセッサ用のコードを作成する場合は

 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64

と実行してください。

ビルド

以上の準備が完了したら、ビルドを行います。build.batを実行すれば自動でビルドが始まります。

インストール

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

  • 環境変数RTM_ROOTを設定: ビルド後に作成されたOpenRTM-aistのファイルが置かれたディレクトリを環境変数RTM_ROOTに設定してください。
  • DLL へのパスを通す: DLL をパスの通った場所にコピーするか、環境変数 PATHに%RTM_ROOT%\bin を追加します。

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

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

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

配布ソースのビルド

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

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

OpenRTM-aistは下記のLinuxディストリビューションでビルドできることが確認されています。

  • Fedora(限定されたバージョンのみ)
  • Debian(限定されたバージョンのみ)
  • Ubuntu
  • Raspbian(未確認)

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

必要ツールとライブラリ

OpenRTM-aist-1.2.xをソースからビルドするには下記の開発用ツールおよびライブラリが必要です。

  • gcc/g++ version3以降: コンパイルに必要
  • omniORB-4.x以上: OpenRTM-aistのビルドに必要
  • uuidライブラリ: libuuid (Linux環境ではデフォルトでuuid生成関数を提供していないため)
  • python: ビルドツールを利用するために必要
  • boost: 拡張モジュールをコンパイルする際に必要になる場合がある
  • openssl: OpenSSLによるセキュアな通信機能を使用するために必要

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

UbuntuやFedoraなどの特定のディストリビューション向けには、一括インストール・スクリプト ''pkg_install_OS名.sh’’という依存ライブラリやOpenRTMのパッケージをインストールするスクリプトが用意されていて、それにより必要なツールをインストールすることができます。下記のリンクに入手方法やコマンドラインオプションなどが説明されています。

このスクリプトを-cオプションを用いて実行することにより、コア(OpenRTM-aist自体の)開発用のツールをインストールすることができます。それを実行するか、別個に必要なツールをインストールしておいてください。

ソースのダウンロード

OpenRTM-aistのソースをダウンロードします。 ソースコードは、https://github.com/OpenRTM/OpenRTM-aist/releases のバージョン番号のタグからダウンロードできます。バージョン1.2.1のソースコードは以下の場所にあります。

ソースコードの展開

まずソースコードOpenRTM-aist-X.X.X.tar.gzを適当なディレクトリに展開します。

 $ wget https://github.com/OpenRTM/OpenRTM-aist/releases/tag/v1.2.1/OpenRTM-aist-1.2.1.tar.gz
 $ tar xvzf OpenRTM-aist-1.2.1.tar.gz
 $ cd OpenRTM-aist-1.2.1

ビルド

OpenRTM-aistはパッケージのビルドにautoconf、automakeを使用しています。上記の方法でダウンロードできるソースコードのパッケージは、あらかじめそれらのツールを使用して構成されているものです。

 $  ./configure --prefix=/usr --enable-fluentd=no --enable-observer=yes --enable-ssl=yes [options]

基本的には[options]の指定はいりませんが、特別な設定をしたい場合の[options]で使用可能なオプションは

 $ ./configure --help

で参照してください。

make

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

 $ make

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

 $  sudo make install

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

GitHubリポジトリ上のソースを用いたビルド

OpenRTM-aistは開発に利用しているgithubリポジトリを一般に公開しています。リポジトリからクローンしたソースコードを用いてもビルド可能です。

必要なツール

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

  • automake
  • libtool
  • atoconf

などのツールが必要ですのであらかじめインストールしておきます。これらの必要なツールやOmniORBなどのライブラリをインストールするのにあたって、Ubuntuなどでは上記で説明した一括インストール・スクリプトを利用可能です。このスクリプトをあらかじめ実行しておくことを推奨します。

Ubuntuでは上記で推奨した一括インストールスクリプトpkg_install_ubuntu.shを以下のように実行することで、OpenRTM-aist本体の開発(ここで行うソースからのビルドも含みます)のためのツール(automakeなどを含む)などをまとめてインストール可能です。

 # sudo sh pkg_install_ubuntu.sh -l c++ -c 

GitHubリポジトリからのソースのクローン

ソースをリポジトリからクローンします。

 $ git clone -b svn/RELENG_1_2 https://github.com/OpenRTM/OpenRTM-aist
 Cloning into 'OpenRTM-aist'...
 remote: Enumerating objects: 24, done.
 remote: Counting objects: 100% (24/24), done.
 remote: Compressing objects: 100% (24/24), done.
 remote: Total 42092 (delta 14), reused 2 (delta 0), pack-reused 42068
 Receiving objects: 100% (42092/42092), 10.41 MiB | 8.36 MiB/s, done.
 Resolving deltas: 100% (31578/31578), done.

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ディレクトリ内にできているはずですので、以降は通常のソースからのビルドと同様に、configure & makeでビルドします。

 $ ls -l configure
 -rwxr-xr-x  1 n-ando  n-ando  812893 Jul  6 05:56 configure*
 $  ./configure --prefix=/usr --enable-fluentd=no --enable-observer=yes --enable-ssl=yes
 $ 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.2.1-win32.zip
 -rw-r--r--  1 n-ando  n-ando  4831099 Apr  7 09:53 OpenRTM-aist-1.2.1.tar.bz2
 -rw-r--r--  1 n-ando  n-ando  7258796 Apr  7 09:53 OpenRTM-aist-1.2.1.tar.gz
 $

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

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