独自データ型でrtlogを使用する方法

rtshellには,ポートが送るデータを記録・再生できるrtlogというコマンドがある.
通常,rtlogはこのように簡単に使用できる.

$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

ImageViewerのインストール

$cd ~/github
$git clone https://github.com/rsdlab/ImageViewer.git
$cd github/ImageViewer
$mkdir build
$cd build
$cmake ..
$make

IDLをコンパイルする

WebCameraコンポーネントおよびImageViewrコンポーネントのデータポートには,独自のデータ型が使用されており,rtlogでデータを記録・再生するためにはデータ型が定義されたIDLをコンパイルする必要がある.

コンパイルに便利なディレクトリの作成

$cd
$mkdir -p idl/build

必要なIDLをコピー

$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

ここまでで,rtlogを使用するための下準備が整ったことになる.

rtlogでデータを記録する

WebCameraコンポーネントを用いてデータを記録する.

コンポーネントの起動

$cd ~/github/WebCamera/build/src
$./WebCameraComp

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

$rtcwd localhost

configパラメータの設定

WebCameraコンポーネントを使うには,キャリブレーションファイルを設定する必要がある.

$rtconf WebCamera0.rtc set camera_param_filename ../../camera.yml

コンポーネントのアクティベート

$rtact WebCamera0.rtc

rtlogによるデータの記録

オプションの説明
-f:rtlogファイルの場所の参照および名前の指定(今回はホームディレクトリ直下に作成)
–path:コンパイルしたidlファイルがある場所を参照

$cd
$rtlog -f log.rtlog --path=~/idl/build /localhost/WebCamera0.rtc:CameraImage.numbers

Ctrl+cでデータの記録を終了する

コンポーネントのディアクティベート

$rtdeact WebCamera0.rtc

rtlogでデータを再生する

ImageViewerを用いて記録されたデータを再生する.

ImageViewerコンポーネントの起動

$cd ~/github/ImageViewer/build/src
$./ImageViewerComp

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

$rtcwd localhost

コンポーネントのアクティベート

$rtact ImageViewer0.rtc

rtlogによるデータの再生

オプションの説明
-f:rtlogファイルの場所の参照および名前の指定
–path:コンパイルしたidlファイルがある場所の参照
-p:rtlogを再生する

$cd
$rtlog -f log.rtlog --path=~/idl/build -p /localhost/ImageViewer0.rtc:Image.numbers

コンポーネントのディアクティベート

$rtdeact ImageViewer0.rtc