ソフトウェア関連 >> rtcmd
OpenRTM-aist用簡易コマンドプロンプト rtcmd
rtcmdは、元々、eSEATで外部のRTコンポーネントを操作するために開発されたライブラリでしたが、Cmdインターフェースを追加することで、Windows上でRTC名の補完等をおこなうためのコマンドインタプリタとして独立して実行可能になっています。
このプログラムは、rtshellの機能の一部の代替をしても利用可能ですが、rtshellで提供されている機能をすべて実装してるわけではありません。RTC開発における、簡単な操作(RTCの有効化/無効化/終了、コネクションの生成/削除、他のRTCへの簡単な入力と出力のモニタリング)を行うことができます。
また、rtcmdは、Windows上で使用することを主眼にしていますので、コマンドプロンプトでの補完機能やRTCの起動、ファイルに記載したコマンド列を逐次実行する機能などがあります。そのため、バッチファイルを書かずにある程度の自動実行を行うことができます。
rtcmdのダウンロードとセットアップ
rtcmdは、Python3を前提として実装されています。まずは、OpenRTM-aist-1.2+Pytho3 が動作する環境をセットアップしてください。
通常は、インストーラを使ってもよいのですが、OpenRTM-aist-1.2は、rptパッケージも作成していますので、rptを利用する方が便利です。
rptを利用する
rptを利用してOpenRTM-aistをインストールする場合には、vc14のパッケージをインストールするか、eSEATをインストールすれば、rtcmdも同時にインストールすることができます。
eSEATをインストールする
rptを用いてeSEATのインストールすると、Python3.7.3、OpenRTM-aist-1.2 Python版も同時にインストールされます。
C:\rpt> rpt update
C:\rpt> rpt install eSEAT
上記の例では、C:\local\Python37 と C:\local\eSEAT にインストールされます。rtcmdは、C:\local\Python37\Scripts\ にインストールされています。必要に応じてPATHを設定してください。
OpenRTM-aist-vc14をインストールする
rptを用いてOpenRTM-aist-vc14をインストールすると、C++版のOpenRTM-aist-1.2.1をインストールすることができます。
C:\rpt> rpt update
C:\rpt> rpt install OpenRTM-aist-vc14
上記の例では、C:\local\OpenRTM-aist にインストールされます。rtcmdは、C:\local\OpenRTM-aist\1.2.1\bin にインストールされています。rtcmdを使用する場合には、C:\local\OpenRTM-aist\setup.batを実行すれば、必要な環境変数が設定されます。
githubからダウンロードする
上記の例では、rptパッケージのインストールを行いましたが、rtcmdは、githubから単体をダウンロードすることができます。適当なディレクトリ(ここでは、C:\work)で、下記のコマンドを実行してください。
C:\work> git clone https://github.com/haraisao/rtcmd
ダウンロードすると rtcmd.exeという実行ファイルがありますが、これを実行するためには、OpenRTM-aist Python版をインストールし、環境変数 PYTHON_EXEにPythonの実行ファイルを設定してください。Pythonが C:\Python37にインストールされていれば、
C:\work> set PYTHON_EXE=C:\Python37\python.exe
としてください。
rtcmdの実行
rtcmdのセットアップが終了すれば、rtcmdを起動することができます。rtcmdは、OpenRTM-aistのRTCを操作しますので、ネームサーバが起動している必要があるのですが、rtcmdを起動するとomniNamesの起動状態を調査し、起動していなければ、rtm-naming.batでネームサーバを起動します。
また、rtcmdの書式は、
rtcmd [command] [arg1] [arg2] ...
となっています。rtcmdを引数なしで起動すると、コマンドプロンプト'=>'を表示し、対話モードで起動しRTCを操作するコマンドを連続的に実行することができます。また、対話モードでは、コマンド、RTCやポート名の補完機能がありますので、最小限の入力で操作可能です。
また、commandを入力した場合には、対話モードのプロンプトに答えてタイプしたかのように引数を解釈して、実行します。このモードをここではコマンドモードを表記しておきます。
コマンドモードでrtcmdを実行した場合、そのコマンドが正常に終了しかたどうかを確認するために、コマンドモードでは、最後に rtcmd._errorを表示させるようにしています。(修正可)これは、0 であれば正常終了なのですが、activate. deactivate, terminate ではエラーにならないようになっています。
rtcmdで使用できるコマンド
rtcmdでは以下のコマンドを利用することができます。
- list [-l] [-r]
- ネームサーバに登録されたRTCの一覧を表示します。 (rtlsに相当)
- get_ports RTC
- 指定したRTCのポート名を表示します。
- get_connectors Port
- 指定したポートのコネクターの一覧を表示ます。
- get_connection Port1 Port2
- 引数で指定した2つのポート間のコネクタの情報を表示します。
- connect Port1 Port2
- 引数で指定した2つのデータポート間を接続します。 (rtconに相当)
- connect_service Port1 Port2
- 引数で指定した2つのサービスポート間を接続します。 (rtconに相当)
- disconnect Port1 Port2
- 引数で指定した2つのポート間の接続を解除します。(rtdisに相当)
- activate RTC [RTC1] [RTC2]...
- 指定したRTCをアクティベートします。RTCを'all'とするとネームサーバにあるすべてのRTCをアクティベートします。(rtactに相当)
- deactivate RTC [RTC1] [RTC2]...
- 指定したRTCをデアクティベートします。RTCを'all'とするとネームサーバにあるすべてのRTCをデアクティベートします。(rtdeactに相当)
- reset RTC RTC [RTC1] [RTC2]...
- 指定したRTCをリセットします。(rtresetに相当)
- get_state RTC
- RTCの現在の状態を表示します。
- conf RTC [Option] [cmd] [args]
- RTCのコンフィグレーションパラメータの表示、修正(rtconfに相当)
- doc RTC
- RTCのプロファイルをHTMLで保存し、Webブラウザに表示します。
- graph
- 現在のRTシステム図を作成する(Graphviz及びpydot, pillowが必要)
- terminate RTC RTC [RTC1] [RTC2]...
- 指定したRTCを終了させます。 RTCを'all'とするとネームサーバにあるすべてのRTCを終了させます。(rtexitに相当)
- unbind NAME [NAME1] [NAME2]...
- NAMEで指定した名前をネームサーバーから削除します。(rtdelに相当)
- inject [option] Port [-c DATA]
- 指定したポートにデータを送信します。(rtinjectに相当)
- print [option] Port#formatter
- 指定したポートからのデータを表示ます。 (rtprintに相当)
- print_exit
- バックグラウンドモードのprintのコネクションを削除します。
- wait_for timeout [-p PATH] [-m MODULE] [-c RTC] [-f func] [-r]
- func(RTC) が真または偽の状態になるまで待ちます。funcが指定されない場合には、ネームサーバに存在するかどうかをチェックします。
- start cmdline
- 新しいコマンドプロンプトでcmdlineを実行します。
- system cmdline
- 現在のコマンドプロンプトでcmdlineを実行します。
- refresh
- ネームサーバの内容を再取得します。
- launch [-v] fname
- fnameに記載されたコマンドを実行します。
- sleep n
- n秒間スリーブします。
- bye
- rtcmdを終了します。
- start_graph
- バックグラインドで、現在のシステムのイメージを生成して、rtcmd.pngに保存します。
- stop_graph
- バックグラインドで、現在のシステムのイメージを生成を停止します。