ここでは,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 | コンポーネントをアクティベートする. |
rtdeact | コンポーネントをディアクティベートする. |
rtreset | コンポーネントをリセットして,InActive状態にする. |
rtcon | 指定したコンポーネントのポート同士を接続する. |
rtdis | 指定したコンポーネントのすべての結線を切断する. |
rtdis | 指定したコンポーネントのポート同士を切断する. |
rtcat | RT 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ベースのシステム管理にチャレンジしてみると良いと思います.