Ubuntu14.04でのrtshellの環境構築(1.1.1対応)

ここでは,Ubuntu14.04において,rtshellを利用するための環境構築方法を述べる.
rtshellは,RTCの状態制御だけでなく,RTC同士の結線をスクリプトベースで行うことが可能なツールで有る.
小規模なシステムであればRT System Editorで問題はないが,大規模システムになるとRTCの結線だけでなく,システムの起動などの手順を極力簡略化する必要がある.
このような要求に対して,rtshellは有用である.

rtshellのインストール

rtshellを利用するためには,事前にいくつかのパッケージをインストールする必要がある.

必要なパッケージのインストール

OpenRTM-aist-pythonのインストール

rtctreeをインストールするに当たり,先にOpenRTM-aistのPython版のインストールを行う.
(Python版を用いる/用いないよりもrtctreeで必要となるパッケージが一緒にインストールされるため.)
なお,すでにインストールされている場合は,この項目は飛ばしても良い.

$cd
$cd Downloads
$wget http://svn.openrtm.org/OpenRTM-aist-Python/tags/RELEASE_1_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
$sudo sh pkg_install_python_ubuntu.sh

インストール時に何回か選択肢がでるか,問題なければすべて「y」を選択するとインストールが完了する.

sphinxのインストール

Pythonで実装されたドキュメント生成ツールであるsphinxをインストールする.

$sudo apt-get install python-sphinx

curlのインストール

このあと用いるpipをインストールするために必要なcurlをインストールする.

$sudo apt-get install curl

pipのインストール

下記のコマンドを実行して,pipのインストールを行う.

$cd
$cd Downloads
$wget https://bootstrap.pypa.io/get-pip.py
$sudo python get-pip.py

rtshellのインストール

PIPを用いて,rtcshellのインストールを行う.

$sudo pip install rtshell

2016年3月8日現在,rtconを実行する際にエラーが出ることから,下記のファイルを修正すること.

$cd /usr/local/lib/python2.7/dist-packages/rtctree
$sudo emacs utils.py

ここで,「import omniORB」と書かれている行を「import omniORB.any」と修正すること.

参考ページ

インストール後の環境設定

いくつかのインストール後の設定を行うコマンドを実行する.
インストール先のパーミッションの関係でsudoコマンドで実行する

$sudo rtshell_post_install

質問に合わせて,適宜[y]を押す.

以上で,環境構築は完了.

rtshellの動作確認

rtshellの動作確認と,使い方の例を以下に示す.
なお,ターミナルは4つ起動すること.
また,ネームサーバは起動しているものとする.

ターミナル1

RT System Editor上で,RTCの結線やコントロールができていることを確認する.
なお,ここでは,Ubuntu標準のeclipseにおいて,RT System Editorの環境設定をしていることを前提に説明を行う.
全部入りなどのパッケージをダウンロードしている場合は,適宜そちらを起動すること.

$eclipse

RTCが起動後,RT System Editorにおいて,システム・ダイアグラムを開き,RTCを配置しておくこと.

ターミナル2

python版のOpenRTMは上記の手順でインストールされていることから,Python版のサンプルを起動する.

$cd /usr/share/openrtm-1.1/example/python/SimpleIO
$python ConsoleIn.py

ターミナル3

ターミナル2と同様にPython版のサンプルを起動する.

$cd /usr/share/openrtm-1.1/example/python/SimpleIO
$python ConsoleOut.py

ここまでできたら,RT System Editorのシステムダイアグラム上にRTCを配置すること.

ターミナル4

rtshellを用いて,RTCの接続,アクティベートなどを行う.
rtshellでは,ネームサービスを仮想ファイルシステムととらえて,RTCを探していきます.
ネームサーバをTOPディレクトリと考えて,そこにぶら下がり,階層化されたRTCを閲覧・操作することができる.

rtshellのコマンドを以下に示す.

コマンド名機能
rtpwd仮想ファイルシステム(ネームサービスのツリー)上での現在のワーキングディレクトリを表示
rtls現在のワーキングディレクトリでのファイル一覧を表示
rtcwdネームサーバ上のディレクトリ(階層)を移動する.
rtact .rtcコンポーネントをアクティベートする.
rtdeact .rtcコンポーネントをディアクティベートする.
rtreset .rtcコンポーネントをリセットして,InActive状態にする.
rtcon .rtc: .rtc:指定したコンポーネントのポート同士を接続する.
rtdis .rtc指定したコンポーネントのすべての結線を切断する.
rtdis .rtc: .rtc:指定したコンポーネントのポート同士を切断する.
rtcatRT System Editorで見れるようなRTCのプロファイルを見ることができる.

ワーキングディレクトリまで移動する.(localhostをネームサーバとしている場合)

$rtcwd localhost

ConsoleInとConsoleOutのコンポーネント同士を接続する.

$rtcon ConsoleIn0.rtc:out ConsoleOut0.rtc:in

RT System Editorを見るとRTCが接続されている様子がわかる.
続いて,コンポーネントをアクティベートします.

$rtact ConsoleIn0.rtc
$rtact ConsoleOut0.rtc

続いて,ConsoleOutのみディアクティベートします.

$rtdeact ConsoleOut0.rtc

最後に,つないだ線を切ります.

$rtdis ConsoleOut0.rtc

上記の例では,RTCの接続を1個1個手打ちで行っていますが,これをシェルスクリプトでまとめると,システムの立ち上げ,停止などが効率よくできるようになります.
他にもrtshellはいろいろな事ができるので,下記のページを参考に,CUIベースのシステム管理にチャレンジしてみると良いと思います.

参考ページ