OpenRTM-aistでは、コマンドラインでRTCを操作するためのツールとしてrtshellと呼ぶツールを提供しています。rtshell は、ネームサーバー上に登録されている RTコンポーネントを管理すできるツールで, コンポーネントをactivate/deactivate/resetしたり、ポートの接続を行えます。 RTシステムの管理もできます。ここではそのインストール方法や、動作確認方法などについて説明します。なお、インストール以外の使い方などについてはrtshellを参照してください。
rtshellのインストールにはrtshellがPythonのプログラムであるため、OpenRTM-aist-Pythonのインストールが必要になります。
一括インストールスクリプトを引数無しで実行すると、rtshell も含めて、C++版、 Python版、 Java版、 OpenRTP(amd64のみ)、 JDK8 がインストールされます。
OpenRTM-aist 2.0系のインストール時は、下記をシェルプロンプトに貼り付けて実行してください。
$ bash <(curl -s https://raw.githubusercontent.com/OpenRTM/OpenRTM-aist/master/scripts/openrtm2_install_ubuntu.sh)
OpenRTM-aist 1.2系のインストール時は、下記を実行して下さい。
$ bash <(curl -s https://raw.githubusercontent.com/OpenRTM/OpenRTM-aist/master/scripts/pkg_install_ubuntu.sh)
一括インストールスクリプトをダウンロードしたディレクトリに移動し、以下のように入力します。
$ sudo sh pkg_install_raspbian.sh -l c++ -l python -l rtshell --yes $ sudo rtshell_post_install
なおRaspbianの環境では現状問題が報告されており下記の方法で対処してください。
上記の実行後、sudoをつけないで
$ rtshell_post_install
と実行し、最初の2つの問い合わせには下記のように’’n’’と答え、最後の問い合わせのみにyと答えてください。
Link man pages? n Link documentation? n Add shell support to .bashrc? y
実行を完了したら、一度ターミナルを閉じてください。
以下では、Windows 10にmsiインストーラーでOpenRTM-aistをデフォルトでインストールした環境をもとに説明します。
サンプルコンポーネントセットSimpleIOを使って、rtshellが正しくインストールされているかを確認します。
RTコンポーネントConsoleIn、ConsoleOutからなるサンプルセットを用います。ConsoleInはコンソールから入力された数値をOutPortから出力するコンポーネント、ConsoleOutはInPortに入力された数値をコンソールに表示するコンポーネントです。これらは簡単なI/O(入出力)を例示するためのサンプルです。ConsoleInのOutPortからConsoleOutのInPortへの接続をし、これらの2つのコンポーネントをアクティブ化(Activate)することで動作します。
サンプルコンポーネントを起動します。
Windows 10の場合は右下の「ここに入力して検索」にPython_Examplesと入力してサンプルコンポーネントの起動ファイルのディレクトリでエクスプローラを開きます。
コンポーネントが起動しない場合、いくつかの原因が考えられます。
rtc.confの設定に問題があり、起動できないケースがあります。上記のサンプル起動ファイルがあるディレクトリ下Examples\SimpleIO¥rtc.confファイルを開いて設定を確認してください。例えば、corba.endpoint/corba.endpointsなどの設定が現在実行中のPCのホストアドレスとミスマッチを起こしている場合などは、CORBAが異常終了します。
以下のような最低限のrtc.confに設定しなおして試してみてください。
corba.nameservers: localhost
openrtm.orgが提供するmsiインストーラーにはomniORBpyが含まれていますが、カスタムインストールを選択すると、omniORBpyをインストールせずにOpenRTM-aist-Pythonをインストールできます。また、手動でインストールした場合には、omniORBpyが入っていない場合も考えられますので、omniORBpyがインストールされているか確認してください。
ConsoleIn、ConsoleOutを起動するファイルは、
C:\Program Files\OpenRTM-aist\1.2.x\Components\Python\Examples\SimpleIO\ConsoleIn.py
C:\Program Files\OpenRTM-aist\1.2.x\Components\Python\Examples\SimpleIO\ConsoleOut.py
ですので、これらのファイルをダブルクリックしてみてください。うまく起動しないようでしたらファイルの関連付けが間違っています。
ホスト名やアドレスの設定の問題で、起動がうまくいかないケースがあります。その場合、利用しているPCのIPアドレスをomniNames.exeに教えてあげるとうまくいくケースがあります。 環境変数OMNIORB_USEHOSTNAMEを以下のように設定します(以下は自ホストのIPアドレスが192.168.0.11の場合の例)。
変数名(N): OMNIORB_USEHOSTNAME 変数値(V): 192.168.0.11
C:\Users\openrtm>rtls -R 127.0.0.1 .: ConsoleIn0.rtc ConsoleOut0.rtc
rtcon /localhost/ConsoleIn0.rtc:out /localhost/ConsoleOut0.rtc:in
rtact /localhost/ConsoleIn0.rtc /localhost/ConsoleOut0.rtc
rtdeact /localhost/ConsoleIn0.rtc /localhost/ConsoleOut0.rtc
rtexit /localhost/ConsoleIn0.rtc rtexit /localhost/ConsoleOut0.rtc
サンプルコンポーネントセットSimpleIOを使って、OpenRTM-aistが正しくビルド・インストールされているかを確認します。
RTコンポーネントConsoleIn、ConsoleOutからなるサンプルセットです。ConsoleInはコンソールから入力された数値をOutPortから出力するコンポーネント、ConsoleOutはInPortに入力された数値をコンソールに表示するコンポーネントです。これらは、単純なI/O(入出力)を例示するためのサンプルです。ConsoleInのOutPortからConsoleOutのInPortへ接続を構成し、これらの2つのコンポーネントをアクティブ化(Activate)することで動作します。
以降、サンプルは/usr/share/openrtm-1.2/components/python/SimpleIO下にあり、Python本体の実行ファイルにはサーチパスが設定されているものとして説明を記述します。
$ rtm-naming
$ python /usr/lib/python2.7/dist-packages/OpenRTM_aist/utils/rtm-naming/rtm-naming.py or $ python3 /usr/lib/python3/dist-packages/OpenRTM_aist/utils/rtm-naming/rtm-naming.py
以下のような画面が表示されます。
$ cd /usr/share/openrtm-1.2/components/python/SimpleIO
$ python ConsoleIn.py
$ python ConsoleOut.py
$ rtls -R localhost .: ConsoleIn0.rtc ConsoleOut0.rtc
rtcon /localhost/ConsoleIn0.rtc:out /localhost/ConsoleOut0.rtc:in
rtact /localhost/ConsoleIn0.rtc /localhost/ConsoleOut0.rtc
rtdeact /localhost/ConsoleIn0.rtc /localhost/ConsoleOut0.rtc
rtexit /localhost/ConsoleIn0.rtc rtexit /localhost/ConsoleOut0.rtc
以上で、コマンドラインを用いたコンポーネントの基本動作の確認は終了です。