rtshellには,ポートが送るデータを記録・再生できるrtlogというコマンドがある.
通常,rtlogはこのように簡単に使用できる.
$rtlog /localhost/ConsoleIn0.rtc:out.numbers |
$rtlog /localhost/ConsoleIn0.rtc:out.numbers
しかし,独自で定義したデータ型を使用している場合は,データ型が定義されたIDLのコンパイルや,rtlogを使用する際にオプションの付与が必要である.このページでは,カメラ映像のデータを記録し再生するチュートリアル形式で,この方法を説明する.
なお,このチュートリアルはrtshellの環境構築が終了していることを前提としている.
rtshellの環境構築のページ Ubuntu16.04/14.04でのrtshellの環境構築(1.1.2対応)
必要なパッケージのインストール
チュートリアルに必要なWebCameraおよびImageViewerのパッケージをインストールする.
WebCameraのインストール
$cd
$mkdir github
$git clone https://github.com/rsdlab/WebCamera.git
$cd github/WebCamera
$mkdir build
$cd build
$cmake ..
$make |
$cd
$mkdir github
$git clone https://github.com/rsdlab/WebCamera.git
$cd github/WebCamera
$mkdir build
$cd build
$cmake ..
$make
ImageViewerのインストール
$cd ~/github
$git clone https://github.com/rsdlab/ImageViewer.git
$cd github/ImageViewer
$mkdir build
$cd build
$cmake ..
$make |
$cd ~/github
$git clone https://github.com/rsdlab/ImageViewer.git
$cd github/ImageViewer
$mkdir build
$cd build
$cmake ..
$make
IDLをコンパイルする
WebCameraコンポーネントおよびImageViewrコンポーネントのデータポートには,独自のデータ型が使用されており,rtlogでデータを記録・再生するためにはデータ型が定義されたIDLをコンパイルする必要がある.
コンパイルに便利なディレクトリの作成
必要なIDLをコピー
$cd ~/github/WebCamera/idl
$cp BasicDataType.idl ~/idl/build
$cp Img.idl ~/idl/build |
$cd ~/github/WebCamera/idl
$cp BasicDataType.idl ~/idl/build
$cp Img.idl ~/idl/build
WebCameraコンポーネントおよびImageViewrコンポーネントのデータポートに使用されている独自のデータ型が定義されているのはImg.idlであるが,Img.idlはBasicDataType.idlに依存しているため,BasicDataType.idlも一緒にコピーする必要がある.
IDLのコンパイル
$cd ~/idl/build
$omniidl -I ~/idl/build -bpython Img.idl |
$cd ~/idl/build
$omniidl -I ~/idl/build -bpython Img.idl
ここまでで,rtlogを使用するための下準備が整ったことになる.
rtlogでデータを記録する
WebCameraコンポーネントを用いてデータを記録する.
コンポーネントの起動
$cd ~/github/WebCamera/build/src
$./WebCameraComp |
$cd ~/github/WebCamera/build/src
$./WebCameraComp
ワーキングディレクトリへ移動(localhostをネームサーバとしている場合)
configパラメータの設定
WebCameraコンポーネントを使うには,キャリブレーションファイルを設定する必要がある.
$rtconf WebCamera0.rtc set camera_param_filename ../../camera.yml |
$rtconf WebCamera0.rtc set camera_param_filename ../../camera.yml
コンポーネントのアクティベート
rtlogによるデータの記録
オプションの説明
-f:rtlogファイルの場所の参照および名前の指定(今回はホームディレクトリ直下に作成)
–path:コンパイルしたidlファイルがある場所を参照
$cd
$rtlog -f log.rtlog --path=~/idl/build /localhost/WebCamera0.rtc:CameraImage.numbers |
$cd
$rtlog -f log.rtlog --path=~/idl/build /localhost/WebCamera0.rtc:CameraImage.numbers
Ctrl+cでデータの記録を終了する
コンポーネントのディアクティベート
rtlogでデータを再生する
ImageViewerを用いて記録されたデータを再生する.
ImageViewerコンポーネントの起動
$cd ~/github/ImageViewer/build/src
$./ImageViewerComp |
$cd ~/github/ImageViewer/build/src
$./ImageViewerComp
ワーキングディレクトリへ移動(localhostをネームサーバとしている場合)
コンポーネントのアクティベート
rtlogによるデータの再生
オプションの説明
-f:rtlogファイルの場所の参照および名前の指定
–path:コンパイルしたidlファイルがある場所の参照
-p:rtlogを再生する
$cd
$rtlog -f log.rtlog --path=~/idl/build -p /localhost/ImageViewer0.rtc:Image.numbers |
$cd
$rtlog -f log.rtlog --path=~/idl/build -p /localhost/ImageViewer0.rtc:Image.numbers
コンポーネントのディアクティベート
$rtdeact ImageViewer0.rtc |
$rtdeact ImageViewer0.rtc