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

ここでは OpenRTM-aist (Python) の Windows へのインストール方法を説明します。

Windowsへのインストール

OpenRTM-aistのインストール

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

インストールの詳細

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

加筆をお願いします。

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

加筆をお願いします。

Ubuntu/Debianへのインストール

/ja/node/1182

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

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

加筆をお願いします。

インストールの確認

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

 $ dpkg -l 'openrtm*'
 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
 ||/ 名前           バージョン   アーキテクチ 説明
 +++-==============-============-============-=================================
 ii  openrtm-aist-p 1.2.0-0      amd64        OpenRTM-aist, RT-Middleware distr
 ii  openrtm-aist-p 1.2.0-0      amd64        OpenRTM-aist-Python examples

パッケージの詳細

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

加筆をお願いします。

Fedoraへのインストール

fedora_logo.png

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

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

加筆をお願いします。

インストールの確認

加筆をお願いします。

パッケージの詳細

加筆をお願いします。

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

Windows 上でソースパッケージからインストールしたい場合、OpenRTM-aist-Python を自分でビルドする必要があります。

ソースコード

ソースコードは以下のリポジトリから入手できます。

ビルド環境

  • Python
  • omniORBpy

Python

Python 2.7(もしくは3.6、3.7) が必要です。以下のサイトから最新のものを取得しインストールしてください。

インストーラを起動すると、ウィザードで幾つか選択する部分がありますが、 デフォルトのままでインストールしてかまいません。

omniORBpy

OpenRTM-aist-Python のビルドには omniORBpy のライブリが必要です。omniORBpy は以下のリンクから、ソースコードおよびバイナリを取得できます。

ZIPファイルを展開すると、以下の様なディレクトリツリーが展開されるはずです。 それぞれのディレクトリー下のファイルを以下の指示通りに Python のディレクトリーに配置してください。 なお、omniORBpy のバージョンを x.y, Python のバージョンを X.Y として記述しています。

 + omniPRBpy-x.y
  + bin
    + x86_win32 -> exe, dllともに C:\PythonXY 直下へ
  + doc -> 削除してもよい
  + examples -> 削除してもよい
  + idl -> 削除してもよいが C:\PythonXY\Lib\site-packages\omniORB\idl 以下においておいてもよい
  + lib
    + python -> 以下のディレクトリとファイルを丸ごと C:\PythonXY\Lib\site-packages 直下へ
    + x86_win32 -> .pyd を C:\PythonXY\Lib\site-packages 直下へ

ソースパッケージの取得

まずソースコードをダウンロードし、適当なディレクトリーに展開します。

ビルド

コマンドプロンプトを起動し、先程ソースコードを展開したフォルダーに移動後、以下のコマンドにてビルドを行います。

 > OpenRTM-aist-Python-X.X.X
 > python setup.py build

インストール

すべてが正しくビルドできたら、以下のコマンドにてインストールを完了させます。

 > python setup.py install

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

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

Linux 上でソースパッケージからインストールしたい場合、OpenRTM-aist-Python を自分でビルドする必要があります。

ソースコード

ソースコードは以下のリポジトリから入手できます。

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

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

  • Fedora
  • Debian
  • Ubuntu

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

依存ライブラリ

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

  • python: ビルドツールを利用するために必要
  • omniORBpy: OpenRTM-aist のビルド (IDL コンパイル) に必要

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

Ubuntu、Debianでは以下のコマンドでインストールできます。

 sudo apt-get install python-omniorb-omg omniidl-python

ソースのダウンロード

OpenRTM-aist-Python のソースをダウンロードします。

ソースコードの展開

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

 $ tar xvzf OpenRTM-aist-Python-X.X.X.tar.gz
 $ cd OpenRTM-aist-Python-X.X.X

ビルド

OpenRTM-aist-Python はパッケージのビルドに distutils モジュール を使用しています。 ビルドの仕方は、他の distutils を使用したパッケージと同様に行います。

 $ python setup.py build [options]

[options]で使用可能なオプションは

 $ python setup.py --help

で参照して下さい。

インストール

ビルド が正常に終了したら、Python モジュール、ユーティリティコマンド群をインストールします。

 $ sudo python setup.py install

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

動作確認 (Windows編)

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

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

  • C:\Program Files\OpenRTM-aist\1.2.0\Components\Python
  • OpenRTM-aist-Python/OpenRTM-aist/examples (ソースからビルドした場合)

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

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

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

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

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

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

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

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

Windows 10の場合は右下の「ここに入力して検索」にPython_Examplesと入力してサンプルのフォルダを開きます。

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

rtm8-2.png
サンプルコンポーネントフォルダー

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

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

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

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

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

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

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

 corba.nameservers: localhost

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

openrtm.org が提供する msi インストーラーには omniORBpy が含まれていますが、カスタムインストールを選択すると、omniORBpy をインストールせずに OpenRTM-aist-Python をインストールすることもできます。

また、手動でインストールした場合には、omniORBpy が入っていない場合も考えられますので、omniORBpy がインストールされているか確認してください。

py ファイルの関連付けが違っている

ConsoleIn、ConsoleOutを起動するファイルは、C:\Program Files\OpenRTM-aist\1.2.0\Components\Python\Examples\SimpleIO\ConsoleIn.py、ConsoleOut.py です。(64bit 版 msi でインストールした場合) このディレクトリーでコンソール画面を開き、python ConsoleIn.py を実行すると起動するが、ConsoleIn.py をダブルクリックして起動できない場合はインストールしている python を確認してください。 Python の 32bit 版、64bit 版の両方をインストールしている場合、先にインストールしたものが py ファイルに関連付けられるようなので、OpenRTM-aist-Python のインストーラーと同じアーキテクチャの Python を先にインストールすると解決するかもしれません。

その他

ホスト名やアドレスの設定の問題で、起動がうまくいかないケースがあります。 その場合、利用している PC の IP アドレスを omniNames.exe に教えてあげるとうまくいくケースがあります。 環境変数 OMNIORB_USEHOSTNAME を以下のように設定します (以下は自ホストの IPアドレスが192.168.0.11の場合の例)。

 変数名(N): OMNIORB_USEHOSTNAME
 変数値(V): 192.168.0.11

エディタへの配置

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

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

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

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

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

接続とアクティブ化

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

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

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

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

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

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

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

 Please input number: 

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

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

他のサンプル

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

付属しているコンポーネントのリストと簡単な説明を以下に示します。

ConsoleIn.py コンソールから入力された数値を OutPort から出力する。ConsoleOut.py に接続して使用する。
ConsoleOut.py InPort に入力された数値をコンソールに表示するコンポーネント。ConsoleIn.py に接続して使用する。
SeqIn.py ランダムな数値(Short、Long、Float、Double とそのシーケンス型)を出力するコンポーネント。SeqOut.py に接続して使用する。
SeqOut.py InPort に入力される数値(Short、Long、Float、Doubleとそのシーケンス型)を表示。SeqIn.py に接続して使用する。
MyServiceProvider.py MyService 型のサービスを提供するコンポーネント。MyServiceConsumer.py に接続して使用する。
MyServiceConsumer.py MyService 型のサービスを利用するコンポーネント。MyServiceProvider.py に接続して使用する。
ConfigSample.py Configuration のサンプル。RTSystemEditor から Configuration を変更して Configuration の挙動を理解するためのサンプル。
TkMobileRobotSimulator.py モバイルロボットの簡易シミュレーター。ロボットの速度を InPort で受け、移動後の位置を OutPort から出力する。
NXTRTC.py LEGO MINDSTORM にて作成したモバイルロボットを制御するためのサンプル。InPort にて速度を受け、赤外線センサーと現在位置をそれぞれ OutPort から出力する。
AutoControl.py モバイルロボット用の速度を出力する。測位センサーのデータを InPort で受け、ロボットの速度を計算して OutPort から出力する。
Composite.py Composite 用のサンプル。Motor、Controller、Sensorを包含するコンポーネント。Composite の使用方法を理解するためのサンプル。
Motor.py Composite コンポーネント用のサンプル。Composite の子要素として使用。
Controller.py Composite コンポーネント用のサンプル。Composite の子要素として使用。
Sensor.py Composite コンポーネント用のサンプル。Composite の子要素として使用。
Slider.py Tk を用いた GUI コンポーネントのサンプル。Slider で指定した値を OutPort から出力する。
TkMotorComp.py Tk を用いた GUI コンポーネントのサンプル。InPort で受け取った値を GUI で表示する。
TkLRFViewer.py Tk を用いた GUI コンポーネントのサンプル。レーザーレンジセンサーなどから出力されるデータを表示する。
TkJoystickComp.py Tk を用いた GUI コンポーネントのサンプル。簡易ジョイスティックコンポーネント。


動作確認 (Linux編)

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

  • /usr/share/openrtm-1.2/components/python

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

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

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

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

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

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

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

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

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

ConsoleIn の起動

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

 $ python /usr/share/openrtm-1.2/components/python/SimpleIO/ConsoleIn.py

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

 $ python <source_dir>/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleIn.py

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

ConsoleOut の起動

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

 $ /usr/share/openrtm-1.2/components/python/SimpleIO/ConsoleOut 

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

 $ python <source_dir>/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py

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

エディタへの配置

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

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

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

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

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

接続とアクティブ化

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

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

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

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

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

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

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

 Please input number: 

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

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