Ubuntu16.04/14.04でのrtshellの環境構築(1.1.2対応)

ここでは,Ubuntu16.04/14.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_2/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
$sudo sh pkg_install_python_ubuntu.sh

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

必要なライブラリのインストール

rtshellの実行に必要なライブラリ,ツールのインストール

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

rtshellのインストール

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

$sudo pip install rtshell

参考ページ

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

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

$sudo rtshell_post_install

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

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

rtshellの動作確認

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

ターミナル1

RT System Editor上で,RTCの結線やコントロールができていることを確認する.
全部入りなどのパッケージをダウンロードしている場合は,適宜そちらを起動すること.
(ここではopenrtpをインストールしているものとして説明します.)

$openrtp

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

ターミナル2

python版のOpenRTMがインストールされている場合は,Python版のサンプルがあるので,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ベースのシステム管理にチャレンジしてみると良いと思います.

参考ページ