C++言語版のOpenRTM-aistは、インストールパッケージやインストーラーが用意されており、多くのOSやディストリビューションで手軽にインストールできます。また、ソースをダウンロードして、自分の環境に合わせてビルドできます。 ここでは、C++言語版OpenRTM-aistのそれぞれの環境でのインストール方法や動作確認方法などについて説明します。
現状、ほとんどのWindowsは64bit版が利用されていますので、基本的には以下は 64bit を前提として説明します。 インストールしているWindowsが32bit版の場合は、OpenRTM-aistやその他のソフトウェアは32bit版をインストールする必要があります。
NOTE: 基本的にすべて64bit版のソフトウェアを使用してください。
OpenRTM-aistを利用するには、Python、CMake、Doxygen、Visual Studio等のソフトウェアのインストールが必要です。
C++版の開発だけでなく、Python版、Java版のRTCを作成した際に、インストーラをビルドするのにも必要です。 以下のCommunity版(無料)をインストールするか、別途Visual Studio 2010/2012/2013/2015/2017/2019を入手してインストールしてください。
NOTE: Python2.7は2020年4月にサポートが終了しました。使用は推奨されていません。 OpenRTM-aist-1.2.2でもPython2.7は一応利用することはできます。
PythonはPython言語版のRTCの開発だけでなく、OpenRTM-aistの様々なツールでも使用していますので必ずインストールする必要があります。 2020年11月現在、サポートが提供されているPythonは 3.6, 3.8, 3.7, 3.9 (2020年10月リリース) ですが、OpenRTM-aistがサポートしているのは 3.6~3.8 までです。 最新版をインストールすることをお勧めします。
CMakeはWindowsやLinux等様々な環境でビルドに必要なファイル(Visual Studioのプロジェクトファイル、Linux上のMakefile等)を自動生成するために必要です。
Doxygenは、ソースコード等のコメントからドキュメントを自動生成するツールです。 Graphvizは、Doxygenでドキュメントを生成する際に、クラス図等の図を生成するために必要とされるツールです。 OpenRTM-aistでは、RTCBuilderでRTCの設計時に様々な設計情報を記入することができ、それらはソースコードのコメントとして出力されます。 これをDoxygenで処理することで、RTCのキレイなドキュメントを生成することができます。
インストールの途中で[Install Options]としてsystem PATHをどうするかを聞かれますが、Add CMake to the system PATH for all usersを選択することを推奨します。 上記WebページからWindows版のバイナリ実行形式ファイルをダウンロードして実行してインストールしてください。
インストール後、コマンドプロンプトで dot -v を実行してプラグイン情報が表示されることを確認して下さい。
>dot -v dot - graphviz version 2.44.1 (20200629.0846) libdir = "C:\Program Files\Graphviz 2.44.1\bin" Activated plugin library: gvplugin_dot_layout.dll Using layout: dot:dot_layout Activated plugin library: gvplugin_core.dll Using render: dot:core Using device: dot:dot:core The plugin configuration file: C:\Program Files\Graphviz 2.44.1\bin\config6 was successfully loaded. render : cairo dot dot_json fig gdiplus json json0 map mp pic ps svg tk vml xdot xdot_json layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi textlayout : textlayout device : bmp canon cmap cmapx cmapx_np dot dot_json emf emfplus eps fig gif gv imap imap_np ismap jpe jpeg jpg json json0 metafile mp pdf pic plain plain-ext png ps ps2 svg tif tiff tk vml xdot xdot1.2 xdot1.4 xdot_json loadimage : (lib) bmp eps gif jpe jpeg jpg png ps svg
下記のように表示された場合、管理者でコマンドプロンプトを開き、dot -c を実行後に dot -v を実行すると上記のように表示されます。
>dot -v dot - graphviz version 2.44.1 (20200629.0846) There is no layout engine support for "dot" Perhaps "dot -c" needs to be run (with installer's privileges) to register the plugins?
管理者でコマンドプロンプトを開く方法は、Windows10の検索窓に cmd と入力し、検索結果の「コマンドプロンプト」を右クリックして「管理者として実行」を選択します。
上記のソフトウェアのインストールが完了したら、OpenRTM-aistのインストールを行います。
OpenRTM-aistのWindows版のインストーラ(msi形式)を以下のページからダウンロードします。
このインストーラには、以下の内容が含まれています。
したがって、ファイルサイズが1GB近くあり、ダウンロードに多少時間がかかります。ご注意ください。
msiファイルが正しくダウンロードされたら、ファイルをダブルクリックしてインストールを開始してください。 以下のようなインストーラが起動しますので 「次へ」 をクリックして進みます。
使用許諾契約書が表示されますので、ソフトウェアライセンス条項に同意します にチェックを入れます。 なお、OpenRTM-aist は LGPLv3、OpenRTPはEPL v1.0 ライセンスです。
ユーザアカウントごとにインストールするか、すべてのユーザが使えるようにインストールするか選択します。 現在インストールを行っているアカウントが管理者権限があれば、「すべてのユーザにインストール」 を推奨します。
使用しているVisual Studioのバージョンを選択します。
セットアップの種類を選択します。「標準」と「完全」は同じで、すべての項目をインストールします。通常か 「標準」 を選択します。
「カスタム」 をクリックすると、インストールする項目を選択できます。特定の言語のみインストールしたい場合などはこちらを選択します。
インストールを開始すると、以下のようなダイアログが出ます。「はい」 をクリックして先へ進んでください。
すべてインストールが完了すると以下の画面となります。「完了」 を押してウインドウを閉じてください。 以上でインストールは完了です。正しくインストールされているかどうかは、「OpenRTMを10分で始めよう・サンプルコンポーネント」 などを見ながらサンプルコンポーネントを実行するなどして確認してください。
インストーラーは以下の作業内容に従ってファイルのコピー、システム設定を行います。 インストール、アンインストールが正しく行われているかの確認する際の参考のために以下に記しておきます。
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\
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\
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\
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 Community 2022のインストーラーを入手してください
[Community]とラベルされた下の[無料ダウンロード]ボタンをクリックするとインストーラーのダウンロードが始まります。
ダウンロードが終了したら、ダウンロードしたファイルを開いて実行してください。指示にしたがってクリックしていくと以下の画面が表示されるので、[C++によるデスクトップ開発]にチェックを入れて[インストール]ボタンをクリックしてください。
インストールが完了するとサインインを求める画面が表示されるため、Microsoftアカウントでサインインしてください。サインインしなくても30日間は使用できます。 Microsoftアカウントの手順は以下を参考にしてください。
C++によるデスクトップ開発機能がインストールされているかを必ず確認してください。
Visual C++のプロジェクトを作成できれば問題ありません。 まず、[新しいプロジェクトの作成]をクリックしてください。
この時、
[空のプロジェクト
Windows用にC++で最初から始めます。開始ファイルは提供しません]
などが選択肢にあればインストールに問題ありません。
インストールされていない場合は、
[探しているものが見つからない場合
さらにツールと機能をインストールする]
をクリックするとインストーラーが起動するので、[’’C++によるデスクトップ開発機能’’]をインストールしてください。
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を用いてインストールしていきます。
オプションを指定することで、目的に合わせたパッケージをインストールすることが可能です。
一括インストールスクリプトのダウンロードや詳しいインストール方法、指定可能なオプションの種類につきましては、「一括インストールスクリプト」のページをご確認ください。
※最新バージョンが「1.2.2」である場合は、オプション指定で「1.2.1」のインストール、「1.2.2」から「1.2.1」へのダウングレードができます。
一括インストールスクリプトは、ダウンロードした後、ダウンロード先ディレクトリに移動し、
Ubuntuの場合は
$ sudo sh pkg_install_ubuntu.sh -l c++ --yes
Debianの場合はsuでroot権限を得た後に
# sh pkg_install_debian.sh -l c++ --yes
でインストールできます。
一般的な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をインストールできます。
インストールを確認します。
$ 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 にはランタイムライブラリとコマンド群が含まれています。
/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
/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
/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には、開発に必要なコマンド群とヘッダが含まれています。
/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
/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
/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 にはスタンドアロン 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
/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 には、日本語と英語のクラスリファレンス、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
/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
/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
/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では大量のファイルがインストールされるため、ここではリストしません。必要に応じて
$ dpkg -L openrtp
C++版OpenRTM-aistはRaspberry Pi用Raspbianl用debパッケージが提供されています。 Raspbianへの対応およびそのバージョンは、予告なしに変更または停止されることがありますので、あらかじめご了承ください。
現在パッケージが用意されているRaspbianのバージョンは
です。
SDカードへの書き込み方法については RPi Easy SD Card Setup を参照してください。
このリンクではいくつかの方法が説明されています。そのうちのいくつかの概要を示すと:
Windowsを用いる方法の方がLinuxやMac OSを用いるより簡単なので、初心者にはWindowsを用いる方法を推奨します。
$ sudo dd of=/dev/<SDカードのデバイスファイル> if=<ダウンロード・解凍したイメージファイル> bs=4M status=progress $ sudo sync
上記コマンドによるSDカードへの書き込みはかなり長い時間を必要とします。(数分から10数分)。また、SDカードのデバイスファイル名を見つけるには
$ df -h
$ umount /dev/sdf5 $ umount /dev/sdf6 $ umount /dev/sdf7
その後、上記のddコマンドを実行しますが、この例でのデバイスファイル名は/dev/sdfになります。
OpenRTM-aist (C++)のインストールの方法には大きく分けて以下の2種類のインストール方法があります。
好みの方法でインストールしてください。
openrtm.orgが提供するインストールスクリプトpkg_install_raspbian.shをダウンロードページからダウンロードし、root権限で実行します。このスクリプトは、必要なパッケージを順次apt-getでインストールしていきます。
OpenRTM-aistを開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。初めてOpenRTM-aistをインストールしてみる方に推奨します。
一括インストール・スクリプトをダウンロードした後、ダウンロードしたディレクトリに移動して
$ sudo sh pkg_install_raspbian.sh -l c++ --yes
でインストールできます。
一括インストールスクリプトのダウンロードや詳しいインストール方法、指定可能なオプションの種類につきましては、「一括インストールスクリプト」のページをご確認ください。
openrtm.orgではapt-getから利用可能なパッケージリポジトリを提供しています。ただし、デフォルトのパッケージリポジトリには含まれていませんので、apt-getの設定を変更する必要があります。そのためには/etc/apt/sources.listを編集して以下の行を追加します。
deb http://www.openrtm.org/pub/Linux/raspbian/ buster main
次の手順でインストールを行います。途中、いくつかの応答を求められるので、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は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にはランタイムライブラリとコマンド群が含まれています。
/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には、開発に必要なコマンド群とヘッダが含まれています。
/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
/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
/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にはスタンドアロン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
/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
/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には、日本語と英語のクラスリファレンス、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
/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
/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
現在、1.2系のOpenRTM-aistはFedoraの対応が不完全です。よって、本ページの情報はあくまでも参考情報として使用してください。
C++版OpenRTM-aistはFedora Linuxで利用可能なRPMパッケージが提供されています。 対応しているFedora Linuxのバージョンは、ダウンロードページから確認できます。 Fedora Linuxへの対応およびそのバージョンは、予告なしに変更または停止されることがありますので、あらかじめご了承ください。
Fedora Linuxへのインストールの方法には大きく分けて以下の二種類のインストール方法があります。openrtm.orgが提供するインストール・スクリプトpkg_install_fedora.shをダウンロードページからダウンロードし、root権限で実行します。このスクリプトは、必要なパッケージを順次yumを用いてインストールしていきます。
OpenRTM-aistを開発・実行するために必要なパッケージをもれなくインストールしてくれるので大変便利です。オプションを指定することで、目的に合わせたパッケージをインストールできるので、初めてOpenRTM-aistをインストールしてみる方にもソースをコンパイルしてみる方にも推奨します。
一括インストールスクリプトは、ダウンロードした後、ダウンロード先ディレクトリに移動し、
$ sudo sh pkg_install_fedora.sh -l c++ --yes
一括インストールスクリプトのダウンロードや詳しいインストール方法、指定可能なオプションの種類につきましては、一括インストールスクリプトのページをご確認ください。//英語版は/node/6990
一般的なFedora環境での開発にはRTC BuilderやRTSystem Editorを使用しますが、その場合にはOpenRTPが必要ですので、一括インストールスクリプトを用いてOpenRTPをインストールしてください。Fedoraではpkg_install_fedora.shが置いてあるディレクトリで
$ sudo sh pkg_install_fedora.sh -l openrtp --yes
openrtm.orgではyumから利用可能なパッケージリポジトリを提供しています。 ただし、デフォルトのパッケージリポジトリには含まれていませんので、yumの設定を変更する必要があります。
以下のような設定を記録したファイル/etc/yum.repos.d/openrtm.repoを作成しておきます。作成には通常root権限が必要です。
[openrtm] name=Fedora $releasever - $basearch failovermethod=priority baseurl=http://openrtm.org/pub/Linux/Fedora/releases/$releasever/Fedora/$basearch/os/Packages enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
openrtm.repoを作成したら、次の手順でインストールを行います。 途中、いくつかの応答を求められるので、yを入力しながら完了させます。
$ 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にはランタイムライブラリとコマンド群が含まれています。
/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-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
/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には、日本語と英語のクラスリファレンス、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
/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
/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にはスタンドアロン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
/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では大量のファイルがインストールされるため、ここではリストしません。必要に応じて
$ rpm -ql OpenRTP
インストールまたはビルドが正常に終了したら、付属のサンプルで動作テストをします。 サンプルは、64bit版の場合、通常は以下の場所にあります。
以下の手順で、サンプルコンポーネントセットSimpleIOを使用して、OpenRTM-aistが正しくビルド/インストールされているかを確認します。
RTコンポーネントConsoleIn、ConsoleOutからなるサンプルセットです。 ConsoleInはコンソールから入力された数値をOutPort から出力するコンポーネント、ConsoleOutはInPortに入力された数値をコンソールに表示するコンポーネントです。これらは簡単なI/O(入出力)を例示するためのサンプルです。 ConsoleInのOutPortからConsoleOutのInPortへ接続し、これらの2つのコンポーネントをアクティブ化(Activate)することで動作します。
以下は、MSIインストーラーでOpenRTM-aistをインストールした環境で、スタートメニューから各種プログラムを起動する前提で説明します。
以下の手順に従ってRTSystemEditor、ネームサーバーを起動してください。
ネームサーバー起動後、適当なサンプルコンポーネントを起動します。
Windows 10の場合は右下の[ここに入力して検索]にC++_Examplesと入力して、サンプルのディレクトリを開きます。
「ConsoleIn.bat」「ConsoleOut.bat」をそれぞれダブルクリックして2つのコンポーネントを起動します。
サンプルコンポーネントを起動しようとすると、Windows Defenderのファイアウォールにより[Windows セキュリティの重要な警告]ダイアログが表示されることがあります。[プライベート ネットワーク(ホームネットワークや社内ネットワークなど)(R)]にチェックを入れ[パブリックネットワーク(空港、喫茶店など)(非推奨)(U)]のチェックをはずしてアクセスを許可する(A)]をクリックしてください。このダイアログはWindows 10(build 1903)以外だと別のダイアログが表示されることがありますし、設定によっては表示されないこともあります。表示された場合は同様の設定をしてダイアログを閉じてください。
起動後数秒で下図のような2つのコンソール画面が開きます。
コンポーネントが起動しない場合、いくつかの原因が考えられます。
環境変数RTM_VC_VERSION、OMNI_ROOT、RTM_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
RTSystemEditorのツリー表示内の[localhost]‘の横の[>]をクリックし、そしてアイコンの横の[>]をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります。
システムを編集するエディタ(System Diagram)を開きます。上部の[Open New System Editor]ボタン をクリックすると、中央のペインにエディタ(System Diagram)画面が開きます。
左側のネームサービスビューからのアイコンで表示されているコンポーネント(2つ)を中央のエディタ・エリアにドラッグアンドドロップします。
ConsoleIn0コンポーネントの右側にはデータが出力されるOutPort が、ConsoleOut0コンポーネントの左側にはデータが入力されるInPort
が、それぞれ配置されています。
これら InPort/OutPort(まとめてデータポートと呼びます)を接続します。OutPortからInPort(またはInPortからOutPort)へドラッグランドドロップすると、図のようなダイアログが現れますので、デフォルト設定のまま[OK]ボタンをクリックします。
2つのコンポーネントの間に接続線が現れます。次に、エディタ上部メニューの[All Activate]ボタン をクリックし、これらのコンポーネントをアクティブ化します。アクティブ化されると、コンポーネントが緑色に変化します。
コンポーネントがアクティブ化されるとConsoleInコンポーネント側のコンソール上の表示が
Please input number:
というプロンプト表示に変わりますので、適当な数値(short int の範囲内:32767以下)を入力しEnterキーを押してください。 すると、ConsoleOut側のコンソール画面にも入力した数値が表示され、ConsoleInコンポーネントからConsoleOutコンポーネントへデータが転送されたことがわかります。
以上で、コンポーネントの基本動作の確認は終了です。
インストーラーには、このほかにもいくつかのサンプルコンポーネントが付属しています。これらのコンポーネントも同様に、ダブルクリックで起動、そしてRTSystemEditorを用いてポート間を接続し、アクティブ化することで試すことができます。
付属しているコンポーネント起動用バッチファイルのリストと簡単な説明を以下に示します。
ConsoleIn.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などのコンポーネント接続して使ってみると良いでしょう。 |
インストールが正常に終了したら、付属のサンプルで動作テストをします。サンプルは、通常は以下の場所にあります。
ソースからビルドした場合は、ソースディレクトリ以下の
サンプルコンポーネントセットSimpleIO(ソースからビルドした場合は、このコンポネントセット名のディレクトリ下にコンポーネントが実行可能なものと存在していますが、一括インストールスクリプトでインストールした場合は、上記のexamplesディレクトリ上に他のサンプルコンポーネント一と一緒に置かれていて特にSimpleIOというセット名に沿って別ディレクトリなどにまとめられてはいませんので、そのケースではコンポーネントセットとはConsoleInCompとConsoleOutCompの2つコンポーネントのセットだと理解してください)を使って、OpenRTM-aistが正しくインストール/ビルドされているかを確認します。
RTコンポーネントConsoleInComp、ConsoleOutCompからなるサンプルセットです。 ConsoleInCompはコンソールから入力された数値をOutPortから出力するコンポーネント、ConsoleOutCompはInPortに入力された数値をコンソールに表示するコンポーネントです。 これらは、基本的なI/O(入出力)を例示するためのサンプルです。 ConsoleInCompのOutPortからConsoleOutCompのInPortへ接続を構成し、これらの2つのコンポーネントをアクティブ化(Activate)することで動作します。
以降、簡単のためサンプルは/usr/share/openrtm-1.2/components/c++/examples以下にあるものとして説明を記述します。
以下の手順に従ってRTSystemEditor、ネームサーバーを起動してください。
ターミナルを起動してConsoleInCompを起動します。
$ /usr/share/openrtm-1.2/components/c++/examples/ConsoleInComp
自分でビルド・インストールした場合は、
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleInComp
などとしてConsoleInCompを起動します。
別のターミナルを起動してConsoleOutCompを起動します。
$ /usr/share/openrtm-1.2/components/c++/examples/ConsoleOutComp
自分でビルド/インストールした場合は、同様に
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleOutComp
などとしてConsoleOutCompを起動します。
RTSystemEditorのツリー表示の[localhost]の横の[>]をクリックし、そしてアイコンの横の[>]をクリックすると、先ほど起動した2つのコンポーネントが登録されていることがわかります
システムを編集するエディタを開きます。上部の[Open New System Editor]ボタン をクリックすると、中央のペインにエディタ画面が表示されます。
左側のネームサービスビューに のアイコンで表示されているコンポーネント(2つ)を中央のエディタ画面にドラッグアンドドロップします。
ConsoleIn0コンポーネントの右側にはデータが出力されるOutPort 、ConsoleOut0コンポーネントの左側にはデータが入力されるInPort
がそれぞれ配置されています。
これらInPort/OutPort(まとめてデータポートと呼びます)を接続します。
OutPortからInPort(またはInPortからOutPort)へドラッグランドドロップすると、図のようなダイアログが現れますので、デフォルト設定のまま[OK]ボタンをクリックします。
2つのコンポーネントの間に接続線が現れます。次に、エディタ上部メニューの[All Activate]ボタン をクリックし、これらのコンポーネントをアクティブ化します。 アクティブ化されると、コンポーネントが緑色に変化します。
コンポーネントがアクティブ化されるとConsoleInコンポーネント側では
Please input number:
というプロンプト表示に変わりますので、適当な数値(short intの範囲内:32767以下)を入力しEnterキーを押します。 すると、ConsoleOut側では、入力した数値が表示され、ConsoleInコンポーネントからConsoleOutコンポーネントへデータが転送されたことがわかります。
以上で、コンポーネントの基本動作の確認は終了です。
OpenRTM-aist本体に改修を加えてWindows上利用したい場合は、OpenRTM-aist本体のWindows用ソースパッケージを自分でビルドできます。 ここでは、ダウンロードページやリポジトリからソースコードを取得しWindows環境でOpenRTM-aistをビルドする方法を説明します。
Windows環境でのOpenRTM-aistのビルドにおいては、ビルド環境の構築やインストーラの作成など、Windows環境上でのソフトウエア開発についてのさまざまな知識が必要です。 以下の説明では、Windows環境上のプログラム開発やバッチファイル作成などの基本的な知識があることを前提にしています。
Windows用のOpenRTM-aist(C++版)ソースパッケージはLinux 用のソースパッケージとは別個に配布されています。 ソースコードの基本的内容は同じですが、ビルド環境に依存するファイルは異なっています(例えばWindows環境におけるVisual StudioのプロジェクトファイルはWindows用ソースパッケージの中にしか存在しません)。
Windows用ソースコードのパッケージは 下記に示すリンクより入手できますが、最新の開発中のソースコードを入手する場合はGitHubのOpenRTM/OpenRTM-aist projectより入手する必要があり、図に示すようにLinux上で、
を作るようになっています。
ビルドに必要な環境、ライブラリは以下の通りです。
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"を選択してインストールをおこなってください。
OpenRTM-aistのビルドにはomniORB 4.2.3(2019/05/17現在)のライブラリが必要です。 openrtm.org が提供するビルド済みバイナリパッケージを下記リンク先に用意してあります。 環境に合わせて適切なものをダウンロードし、適当な場所(以下の説明ではC:\workspace\omniORBとしています)に展開してください。
OMNI_ROOT に設定したディレクトリ以下は以下のような構造になっている必要があります。
<OMNI_ROOT> + bin | + scripts | + x86_win32 + idl | + COS + include | + COS | + omniORB4 | | + internal | + omnithread | + omniVms + lib | + python | | + omniidl | | + omniidl_be | | + cxx | | + dynskel | | + header | | + impl | | + skel | + x86_win32 + include | + COS | + omniORB4 | + omnithread | + omniVms
OpenRTM-aistのビルドにはOpenSSL 1.1.0(2019/05/17現在)のライブラリが必要です。 openrtm.orgが提供するビルド済みバイナリパッケージを下記リンク先に用意してあります。 環境に合わせて適切なものをダウンロードし、適当な場所 (以下の説明ではC:\workspace\OpenSSLとしています)に展開してください。
SSL_ROOT に設定したディレクトリ以下は以下のような構造になっている必要があります。
<SSL_ROOT> + bin | + scripts | + x86_win32 + lib | + engines-1_1 + include | + openssl
ビルドの途中でいくつかのPythonスクリプトを利用するので Python 2.7か3.6、または3.7 が必要です。(現状2.7が必要で、3.7ではエラーが起きます) 以下のサイトから最新のバージョンを取得しインストールしてください。
インストーラーを起動すると、そのインストール過程で選択項目がでてきますが、デフォルトの項目を選択してインストールしてください。(デフォルト以外の選択も可能ですが、その場合は十分な理解の元で選択してください。)
まずソースコード OpenRTM-aist-1.2.X-win32.zip をダウンロードし、適当なディレクトリに展開します。
build.batを実行するとビルドが始まりますが、その前にバッチファイルの環境変数"OMNI_ROOT、SSL_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を実行すれば自動でビルドが始まります。
すべてが正しくビルドできたら次のことを行い、インストールを完了させます。
以上で、OpenRTM-aistのインストールは終了です。
パッケージが用意されていないUNIX系の環境や、クロス開発環境などで、OpenRTM-aist本体のソースを変更したり再ビルドて、OpenRTM-aistを利用したい場合には、ソースからビルド可能です。ここでは、ダウンロードページやリポジトリからソースを取得しLinux上でOpenRTM-aist をビルドする方法を説明します。
OpenRTM-aist(C++版)はautotoolsを利用したビルド環境を提供しているため、さまざまな環境でビルドできます。
OpenRTM-aistは下記のLinuxディストリビューションでビルドできることが確認されています。
これ以外の環境でも、一般的Linux/UNIX環境であれば、ビルドできる可能性があります。
OpenRTM-aist-1.2.xをソースからビルドするには下記の開発用ツールおよびライブラリが必要です。
それぞれのライブラリなどのドキュメントに従いインストールを行ってください。これらが標準のディレクトリ(/usr、/usr/localなど)下にインストールされていると、以降のOpenRTM-aistのコンパイル作業を比較的簡単に行うことができます。
UbuntuやFedoraなどの特定のディストリビューション向けには、一括インストール・スクリプト ''pkg_install_OS名.sh’’という依存ライブラリやOpenRTMのパッケージをインストールするスクリプトが用意されていて、それにより必要なツールをインストールすることができます。下記のリンクに入手方法やコマンドラインオプションなどが説明されています。
このスクリプトを-cオプションを用いて実行することにより、コア(OpenRTM-aist自体の)開発用のツールをインストールすることができます。それを実行するか、別個に必要なツールをインストールしておいてください。
まずソースコード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
で参照してください。
configureが正常に終了したことを確認してください。正常に終了したらmake します。
$ make
ビルドが正常に終了したら、ヘッダファイル、ライブラリ、ユーティリティコマンド群をインストールします。
$ sudo make install
以上で、ソースコードからのビルドおよびインストールは終了です。
OpenRTM-aistは開発に利用しているgithubリポジトリを一般に公開しています。リポジトリからクローンしたソースコードを用いてもビルド可能です。
リポジトリからチェックアウトしたソースはconfigureスクリプトやMakefile.inが含まれていません。これらを生成するには、
などのツールが必要ですのであらかじめインストールしておきます。これらの必要なツールやOmniORBなどのライブラリをインストールするのにあたって、Ubuntuなどでは上記で説明した一括インストール・スクリプトを利用可能です。このスクリプトをあらかじめ実行しておくことを推奨します。
Ubuntuでは上記で推奨した一括インストールスクリプトpkg_install_ubuntu.shを以下のように実行することで、OpenRTM-aist本体の開発(ここで行うソースからのビルドも含みます)のためのツール(automakeなどを含む)などをまとめてインストール可能です。
# sudo sh pkg_install_ubuntu.sh -l c++ -c
ソースをリポジトリからクローンします。
$ 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.
クローンすると、OpenRTM-aistというディレクトリができているはずですので、そのディレクトリに入ります。
$ ls OpenRTM-aist $ cd OpenRTM-aist $ ls AUTHORS Makefile.am acinclude.m4 examples/ win32/ COPYING.LIB NEWS build/ include/ COPYRIGHT* README configure.ac openrtm.m4 ChangeLog README.jp docs/ src/ INSTALL.jp TUTORIAL.jp etc/ utils/
buildディレクトリの下にautogenというシェルスクリプトがあることを確認し、このスクリプトを実行します。実行には、数分程度の時間がかかることがあります。
$ls build/autogen build/autogen* $ sh build/autogen Setting up environment to generate configure script. ------------------------------------------------------------ Searching Autotools ------------------------------------------------------------ autoconf was found in /usr/local/bin/autoconf. autoheader was found in /usr/local/bin/autoheader. autom4te was found in /usr/local/bin/autom4te. autoreconf was found in /usr/local/bin/autoreconf. autoupdate was found in /usr/local/bin/autoupdates. automake was found in /usr/local/bin/automake-1.9. aclocal was found in /usr/local/bin/aclocal-1.9. libtool was found in /usr/local/bin/libtool. libtoolize was found in /usr/local/bin/libtoolize. ------------------------------------------------------------ Searching libtool.m4 ------------------------------------------------------------ file was found: /usr/local/share/aclocal/libtool.m4 Copying libtool.m4 from /usr/local/share/aclocal/libtool.m4 ------------------------------------------------------------ Doing autoreconf ------------------------------------------------------------ autoreconf-2.62: Entering directory `.' autoreconf-2.62: configure.ac: not using Gettext autoreconf-2.62: running: /usr/local/bin/aclocal-1.9 --force autoreconf-2.62: configure.ac: tracing autoreconf-2.62: configure.ac: adding subdirectory src/lib/coil to autoreconf autoreconf-2.62: Entering directory `src/lib/coil' autoreconf-2.62: running: /usr/local/bin/libtoolize --copy --force You should update your `aclocal.m4' by running aclocal. autoreconf-2.62: running: /usr/local/bin/autoconf --force autoreconf-2.62: running: /usr/local/bin/autoheader --force autoreconf-2.62: running: /usr/local/bin/automake-1.9 --add-missing --copy --force-missing configure.ac: installing `./install-sh' configure.ac: installing `./missing' ace/coil/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `src/lib/coil' You should update your `aclocal.m4' by running aclocal. configure.ac: installing `./install-sh' configure.ac: installing `./missing' examples/AutoTest/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `.' done $
autogenの実行により、configureがOpenRTM-aistディレクトリ内にできているはずですので、以降は通常のソースからのビルドと同様に、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を行うことで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 $
生成されるソースパッケージはそれぞれ以下の通りです。