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

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メモリーカードの準備

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

Windowsでは、Win32 Disk Imagerなどを利用して書き込みます。 LinuxやMac OSではddを以下のように利用して書き込みます。

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

OpenRTM-aistのインストールの方法には大きく分けて以下の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のインストールは、OpenRTM-Pythonのインストールが必要になります。Python

インストールの確認

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

 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へのインストール

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
でインストールできます。

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

OpenRTPのインストール

一般的なUbuntu/Debian環境での開発にはRTC BuilderやRTSystem Editorを使用しますが、その場合にはOpenRTPが必要ですので、一括インストールスクリプトを用いてOpenRTPをインストールしてください。Ubuntuでは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 -q OpenRTM-aist
 OpenRTM-aist-1.2.0-0.fcXX.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コンポーネントConsoleInComp、ConsoleOutCompからなるサンプルセットです。 ConsoleInCompはコンソールから入力された数値をOutPort から出力するコンポーネント、ConsoleOutCompはInPortに入力された数値をコンソールに表示するコンポーネントです。これらは最も Simple なI/O(入出力)を例示するためのサンプルです。 ConsoleInCompのOutPortからConsoleOutCompの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コンポーネント

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

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

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

接続とアクティブ化

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などのコンポーネント接続して使ってみると良いでしょう。


OpenRTPの起動手順(1.2系、Windows)

OpenRTPの起動

RTCの操作、RTシステムの構築を行うためのツールRTSystemEditorを起動します。 RTSystemEditorはOpenRTPというツールの中に含まれているため、まずはOpenRTPを起動する必要があります。 デスクトップのショートカットをダブルクリックするか、Windows 10の場合は左下の[ここに入力して検索]にOpenRTPと入力して検索結果に表示される[OpenRTP]をクリックして起動してください。

/ja/node/6614
デスクトップのショートカット

/ja/node/6614
ここに入力して検索

ワークスペースの選択とEclipseへようこそ

OpenRTPの最初の起動時にはワークスペースとして使用するディレクトリの場所を聞いてきます。それを設定して、今後同じ設定で使い、再度聞かれる必要がない場合は、[この設定をデフォルトとして使用し、今後この質問を表示しない(U)]のチェックボックスをクリックし、チェックの後、[起動]ボタンをクリックしてください。また最初の起動時に[eclipseへようこそ]の画面が開く場合があります。その場合は、左上部の[ようこそ]タブにある[X]ボタンをクリックして閉じてください。

RTSystemEditor(RTSE)の起動

OpenRTPの[パースペクティブを開く]ボタンをクリックしてください。

/ja/node/6614
パースペクティブを開くをクリック

パースペクティブを開くウィンドウから[RT System Editor]を選択して[開く]ボタンをクリックしてください。

/ja/node/6614
RTSystemEditorの起動

ネームサーバーの起動

まず、コンポーネントの参照を登録するためのネームサーバーを起動します。

/ja/node/6614
ネームサーバーの起動

Windows Defenderからの警告

ネームサーバーを起動しようとすると、Windows Defenderのファイアウォールにより[Windows セキュリティの重要な警告]ダイアログが表示されることがあります。[パス(H):]のところにOpenRTMのインストールパスのeclipse.exeのパス、例えばC:Program files\openrtm-aist\1.2.x\utils\openrtp\eclipse.exeが表示されていることを確認して[プライベート ネットワーク(ホームネットワークや社内ネットワークなど)(R)]にチェックを入れ[パブリックネットワーク(空港、喫茶店など)(非推奨)(U)]のチェックをはずして[アクセスを許可する(A)]をクリックしてください。この画面はWindows 10(build 1909以外だと別のダイアログが表示されることがありますし、設定によっては表示されないこともあります。表示された場合は同様の設定をしてダイアログを閉じてください。また、omniorbに対しても同様のダイアログが表示されることがありますので[アクセスを許可する(A)]をクリックしてアクセスを許可してください。

ネームサーバーの起動に成功するとネームサービスビューに[localhost]と表示されます。

/ja/node/6614
ネームサーバーの起動を確認

ネームサーバーが起動しない場合

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が設定されていることを確認してください。 システム環境変数は以下の手順で参照編集することができます。
  • 画面左下部の[ここに入力して検索](虫メガネアイコン)に「システム環境変数」と入力し、表示される[システム環境変数の編集]をクリックする。
  • [環境変数(N)...]ボタンをクリックする。

その他

ユーザー名が2バイト文字の場合、ログを出力するフォルダーを適切に設定できずにomniNames.exeの起動に失敗する場合があります。 その場合、環境変数TEMPを2バイト文字を含まない場所に設定することで改善する場合があります。 適当なテンポラリディレクトリ(以下のケースではC:\temp)を作り、そこを環境変数TEMPが指すように設定してネームサーバーを起動します。

 set TEMP=C:\temp
 cmd /c rtm-naming.bat

また、まれなケースですが、ホスト名やアドレスの設定の問題で、起動がうまくいかないケースがあります。 その場合、利用している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

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

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

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

RT System Editor、ネームサーバー起動

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

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を起動します。

エディタ画面への配置

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

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

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

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

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

接続とアクティブ化

ConsoleIn0コンポーネントの右側にはデータが出力されるOutPort  /ja/node/794 、ConsoleOut0コンポーネントの左側にはデータが入力されるInPort  /ja/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コンポーネントへデータが転送されたことがわかります。

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

OpenRTPの起動手順(1.2系、Linux)

OpenRTPの起動

RTCの操作、RTシステムの構築を行うためのツールRT System Editorを起動します。 RT System EditorはOpenRTPというツールの中に含まれているため、まずはOpenRTPを起動する必要があります。

以下のコマンドでOpenRTPを起動してください。

 $ openrtp

RT System Editor (RTSE) の起動

OpenRTPの「パースペクティブを開く」ボタンをクリックしてください。

/ja/node/6614
パースペクティブを開くをクリック

パースペクティブを開くウィンドウからRT System Editorを選択して開くボタンをクリックしてください。

/ja/node/6614
RT System Editorの起動

ネームサーバーの起動

まず、コンポーネントの参照を登録するためのネームサーバーを起動します。

/ja/node/6614
ネームサーバーの起動

ネームサーバーの起動に成功するとネームサービスビューにlocalhostと表示されます。

/ja/node/6614
ネームサーバーの起動を確認

リーモートのRTCを使う場合

raspbianのようなケースではopenrtp自体がサポートされていないので、他のホストで動いているOpenRTPにリモートで動作しているraspbian上のネームサービースに接続するか、他のOpenRTPが動作しているホストで動いているネームサービスに他のホスト上で、つまりraspbian上で動作しているRTCを登録する必要があります。以下にその手順を示します。

リモート環境で動いているネームサーバサービスを登録する方法

  • まずRTCが動いているホストマシンのコマンドラインから
     $ rtm-naming
    と入力し、ネームサービスを起動し、動作させたいRTCを起動します。
  • OpenRTPを動かすマシンで
     $ openrtp
    と入力し、OpenRTPを起動します。同一マシンでRTCを動かす手順と同様に、[RT System Editor]を選んでパースペクティブを開きます。そして[ネームサーバーを追加」ボタンをクリックします。
    rtm6-2.png
    ''ネームサーバーの追加’’’
  • ネームサーバのアドレスを聞かれますので、アドレスを指定します。デフォルト以外のポート番号を使った場合は、アドレスに<アドレス>:<ポート番号>の形でポート番号も指定してください。
    rtm6-3.png
    ネームサーバーのアドレス指定

リモートマシン上のRTCをOpenRTPが動いているネームサービスに登録する方法

  • RTCのファイルがおいてあるディレクトリ移動し、rtc.confを編集します。例えば
     sudo gedit rtc.conf
    と入力し、rtc.confの編集を開始します。
     corba.nameservers: localhost
    の行を
     corba.nameservers: <OpenRTPが動作しているホストのアドレス>
    と書き換えます これにより、ネームサービス・ビューにリモートで動作しているRTCが現れるようになります。

ソースからのビルド (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開発より入手する必要があり、図に示すように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編)