OpenRTM付属のサンプルについて

OpenRTM-aist にはいくつかのサンプルコンポーネントが同梱されており、簡単に試用することができます。(USBCameraMonitor/USBCameraAcquire コンポーネントには OpenCV が必要です。) サンプルコンポーネントのソースコードも付属していますので、開発にお役立てください。

本章では、OpenRTM-aist に付属のサンプルについて説明します。
サンプルを試用する場合は、各サンプル・コンポーネントを起動する前にインストールしたネーム・サービスを起動しておいてください。
    • Start Naming Service.bat (C++)
    • rtc-naming.py (Python)
    • start-orbd.vbs (Java)

Windows でネーム・サーバーを実行するには、該当するファイルをダブルクリックしてください。インストーラーを用いてインストールした場合は、[スタートメニュー] > [OpenRTM-aist] > [Tools] から実行することもできます。 なお、本章では RTSystemEditor がインストールされた環境であることを想定して説明しています。 RTSystemEditor のインストールについての詳細は、OpenRTM Eclipse tools のインストールを参照してください(一部のサンプルは RTSystemEditor がなくても動作します)。

SimpleIO

このサンプルは、OpenRTM-aist の C++版、Python版、Java版 に同梱されています。

概要

InPort、OutPort の使用方法を示したサンプルです.ConsoleIn コンポーネントと ConsoleOut コンポーネントを起動させます。 Port 間を接続すると、ConsoleIn 側で入力した数字が、ConsoleOut 側に表示されます.Port 間は RTSystemEditor を用いる他に、Connector を実行することで接続することができます。

起動画面

SimpleIO_example_rtse_ja.png
SimpleIO 実行例 (RTSystemEditor 接続画面)



open_consolein_out.png
ConsoleIn コンポーネントと ConsoleOut コンポーネントの実行例

使い方

SimpleIO のサンプルは、ConsoleIn で入力された数字をデータポートから ConsoleOut へ送って、ConsoleOut 側にも同じ数字を表示させるサンプルです。 ConsoleIn の画面から数字を入力してください。そうすると ConsoleOut で入力した数字が出力されます。

    • Eclipse を起動し、RTSystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • ConsoleIn と ConsoleOut の両コンポーネントを起動します。 コンポーネントの起動は OS や OpenRTM-aist の言語によってことなりますので、以下の表を参考に起動します。
Windows の場合 Linux の場合
ConsoleIn コンポーネント ConsoleOut コンポーネント ConsoleIn コンポーネント ConsoleOut コンポーネント
C++版 ConsoleInComp.exe ConsoleOutComp.exe ConsoleInComp ConsoleOutComp
Python版 ConsoleIn.py ConsoleOut.py ConsoleIn.py ConsoleOut.py
Java版 ConsoleIn.bat ConsoleOut.bat ConsoleIn.sh ConsoleOut.sh
    • RTSystemEditor の NameServiceView に両コンポーネントが現れるので、それらを SystemEditor 上にドラッグします。
    • 両コンポーネントのポートを結びます。(上図 SimpleIO 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。
    • ConsoleIn の画面に「Please input number:」とプロンプトされるので、数字を入力します。
    • ConsoleOut の画面にその数字が表示されます。


SeqIO

このサンプルは、OpenRTM-aist の C++版、Python版、Java版 に同梱されています。

概要

InPort、OutPort の使用方法を示したサンプルです。SeqIn コンポーネントと SeqOut コンポーネントを起動すると GUI 画面が表示されます。 SeqIn、SeqOut ともに以下の型の DataPort を保持しています。 TimedShort、TimedLong、TimedFLoat、TimedDouble、TimedShortSeq、TimedLongSeq、TimedFLoatSeq、TimedDoubleSeq、各Port の出力は乱数で決定しており、各Port 間を接続すると SeqOut側の出力値、SeqIn側の入力値がそれぞれの GUI 画面に表示されます。(Port間の接続には RTSystemEditor をご利用ください。)



起動画面

SeqIO_example_rtse_ja.png
SeqIO 実行例(RTSystemEditor 接続画面)



SeqIO_example_cpp.png
SeqIn コンポーネントと SeqOut コンポーネントの実行例(C++版)


SeqIO_example_python.png
SeqIn コンポーネントと SeqOut コンポーネントの実行例(Python版)


SeqIO_example_java.png
SeqIn コンポーネントと SeqOut コンポーネントの実行例(Java版)



使い方

SeqIO のサンプルは、SeqOut から連続して出力される数値データをデータポートから SeqIn へ送り、GUI 上に表示させるサンプルです。 SeqOut と SeqIn の対応するポートを RTSystemEditor 上で接続してください。両コンポーネントをアクティベートすると SeqOut だけでなく SeqIn の GUI 上の数値も連続的に変化し、データポートの入出力が観察できます。
  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • SeqOutとSeqInの両コンポーネントを起動します。コンポーネントの起動は OS や OpenRTM-aist の言語によってことなりますので、以下の表を参考に起動します。
Windows の場合 Linux の場合
SeqIn コンポーネント SeqOut コンポーネント SeqIn コンポーネント SeqOut コンポーネント
C++版 SeqInComp.exe SeqOutComp.exe SeqInComp SeqOutComp
Python版 SeqIn.py SeqOut.py SeqIn.py SeqOut.py
Java版 SeqIn.bat SeqOut.bat SeqIn.sh SeqOut.sh
    • RTSystemEditor の NameServiceView に両コンポーネントが現れるので、それらを SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 SeqIO 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。

Composite

このサンプルは、OpenRTM-aist の C++版、Python版、Java版 に同梱されています。

概要

複合コンポーネント Composite の使用方法を示したサンプルです。 複合コンポーネントを Activate する前に、複合コンポーネントを構成している子のコンポーネント間を接続する必要があります。
Composite コンポーネントは、Sensor、Controller、Motor の3つのコンポーネントを子に持っています。 Composite コンポーネントの動作は、ConsoleIn / ConsoleOut コンポーネントと接続して確認できます。


起動画面

Composite コンポーネントを実行すると、Name Service View に4つのコンポーネント名が表示されます。 Controller、Motor、Sensor の3つを復号化したコンポーネントが PeriodicECShareComposite ですので、これを System Diagram にドラッグ&ドロップします。

composite_001.jpg
Composite 実行例(複合コンポーネントをドラッグ&ドロップ)


複合コンポーネント内を表示させるため、PeriodicECShareComposite をダブルクリックすると、別のエディタに表示されますので、コンポーネント間を接続します。

composite_002.jpg
Composite 実行例(複合コンポーネントの子コンポーネント間を接続する)


ここでは ConsoleIn / ConsoleOut コンポーネントと接続した場合の動作例を示します。

composite_003.jpg
Composite 実行例(RTSystemEditor 接続画面)


ConsoleIn で「111」と入力した場合、ConsoleOut で「888」と表示されれば正しい動作です。 複合コンポーネントを構成している子コンポーネントは、入力値(コンソール画面に表示されている値)を2倍して出力しています。


composite_004.jpg composite_005.jpg
Composite 実行例(左:複合コンポーネント画面、 右:ConsoleOut 画面)


使い方

Composite のサンプルは、入力データポートから受け取った値を、3つの子コンポーネントがそれぞれ2倍の値にして出力しているので、最終的に Composite の出力データポートから8倍の値が出力されるサンプルです。

  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • Composite コンポーネントを起動します。コンポーネントの起動は OS や OpenRTM-aist の言語によってことなりますので、以下の表を参考に起動します。
Windows の場合 Linux の場合
C++版 Composite.exe Composite
Python版 Composite.py Composite.py
Java版 Composite.bat Composite.sh
    • RTSystemEditor の NameServiceView に PeriodicECShareComposite が現れるので、それらを SystemEditor 上にドラッグします。
    • PeriodicECShareComposite をダブルクリックし、子コンポーネント間のポートを結びます
    • ConsoleInとConsoleOut の両コンポーネントを起動し、PeriodicECShareComposite と対応ポートを結びます。(上図 Composite 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。

SimpleService

このサンプルは、OpenRTM-aist の C++版、Python版、Java版 に同梱されています。

概要

ServicePort の使用方法を示したサンプルです。以下に示す IDL を使用してサービスを定義しています。

 typedef sequence<string> EchoList;
 typedef sequence<float> ValueList;
 
 interface MyService
 {
   string echo(in string msg);
   EchoList get_echo_history();
   void set_value(in float value);
   float get_value();
   ValueList get_value_history();
 };

MyServiceConsumer コンポーネントと MyServiceProvider コンポーネントを起動します。 Consumer側コンポーネントを Activate すると、コンソールに利用可能なコマンドリストが表示されますので、各コマンドをお試しください。(Port間の接続には RTSystemEditor をご利用ください。)



起動画面

SimpleService_example_rtse_ja.png
SimpleService 実行例(RTSystemEditor 接続画面)


MyService_example.png
MyServiceConsumer コンポーネントと MyServiceProvider コンポーネントの実行例


使い方

SimpleService は、MyServiceConsumer からコマンドを送り、MyServiceProvider でそれを処理させるというサンプルです(※正確には、コマンドの解釈は Consumer側であり、Provider側の関数を呼び出す形で実装されています)。 MyServiceConsumer と MyServiceProvider の対応するポートを RTSystemEditor 上で接続してください。 両コンポーネントをアクティベートします(Activate するのは Consumer側コンポーネントだけでもよい)と Consumer側プロンプトにコマンド一覧が表示されるので、適宜コマンドを入力してください。Provider側の応答がプロンプト上で観察できます。
  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • MyServiceConsumer と MyServiceProvider の両コンポーネントを起動します。 コンポーネントの起動は OS や OpenRTM-aist の言語によってことなりますので、以下の表を参考に起動します。
Windows の場合 Linux の場合
MyServiceConsumer コンポーネント MyServiceProvider コンポーネント MyServiceConsumer コンポーネント MyServiceProvider コンポーネント
C++版 MyServiceConsumerComp.exe MyServiceProviderComp.exe MyServiceConsumerComp MyServiceProviderComp
Python版 MyServiceConsumer.py MyServiceProvider.py MyServiceConsumer.py MyServiceProvider.py
Java版 MyServiceConsumer.bat MyServiceProvider.bat MyServiceConsumer.sh MyServiceProvider.sh
    • RtcLinkのNameServiceView に両コンポーネントが現れるので、それらを SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 SimpleService 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。(この場合は、Consumer側コンポーネントを Activate するだけでも動作します。)
    • Consumer側プロンプトにコマンドを入力します。
  • コマンド
    • echo <message>:任意の<message>をエコー
    • set_value <value>:任意の<value>を Provider側にセット
    • get_value:現在 Provider側にセットされている値を取得して表示
    • get_echo_history:今までのエコーメッセージの履歴を Provider側から取得
    • get_value_history:今までにセットしてきた値の履歴を Provider側から取得

ExtTrigger


ExtTrigger

概要

RTコンポーネント外部からの入力(イベント)により処理を実行する ExecutionContext のサンプルです。 ExtConsoleIn.bat と ExtConsoleOut.bat を実行することでサンプル・コンポーネントが起動します。 両コンポーネントを起動、ExtConnector.bat を実行して両コンポーネントのPort間を接続してください。

起動画面

java_exttrigsample0.png
ExtTrigger 実行例(ExtConsoleIn)


java_exttrigsample1.png
ExtTrigger 実行例(ExtConsoleOut)


java_exttrigsample2.png
ExtTrigger 実行例(ExtConnector)


Port間の接続が成功すると、ExtConnector を実行したコンソールにどのコンポーネントの処理を進めるか選択するメニューが表示されます。 各コンポーネントはこのコンソールに入力された値に応じて処理1周期づつ進めていきます。

ConfigSample

このサンプルは、OpenRTM-aist の C++版、Python版、Java版 に同梱されています。

概要

RTコンポーネントのコンフィギュレーションセットの使用方法を示したサンプルです。 ConfigSample コンポーネントを起動します。コンポーネントが正常に起動されると、コンフィギュレーション・セットが予め設定された状態となっております。 RTSystemEditor を利用してコンフィギュレーション・セットを確認してみてください。


※コンポーネント起動時に「指定されたパスが見つかりません。」というエラーが発生してしまう場合は、

RTMExamples/ConfigSample ディレクトリー内にある rtc.conf ファイル内の「example.ConfigSample.config_file」を次のように修正してください。

  • 次に示すパスに置き換えます。

   .\\RTMExamples\\ConfigSample\\configsample.conf

   (フォルダーとフォルダーの間の文字は'\'ではなく、'\\'とします)

  • あるいは、「configsample.conf」へのフルパスに書き換えます。この場合も、上記と同様にフォルダーとフォルダーの間の文字に'\\'を使用します。

起動画面

ConfigSample_example_rtse_ja.png
ConfigSample 実行例




使い方

RTSystemEditor の ConfigrationView で選択・設定した ConfigrationSet に従ったデータセットをプロンプト上に表示し、絶えず表示更新をし続けます。
  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • ConfigSample コンポーネントを起動します。コンポーネントの起動は OS や OpenRTM-aist の言語によってことなりますので、以下の表を参考に起動します。
Windows の場合 Linux の場合
C++版 ConfigSampleComp.exe ConfigSampleComp
Python版 ConfigSample.py ConfigSample.py
Java版 ConfigSample.bat ConfigSample.sh
    • RTSystemEditor の NameServiceView にこのコンポーネントが表示されるので、SystemEditor 上にドラッグします。

  • 操作
    • RtcLink の ConfigrationView から適当な ConfigrationSet(default、mode0、mode1)を選びます。
    • 必要があれば、value を変更します。
    • 「Apply」ボタンをクリックします。

GUIIn

このサンプルは、OpenRTM-aist の Java版 に同梱されています。 C++版、Python版 には同梱されていませんのでご注意ください。

概要・起動画面

GUI 画面を持ったRTコンポーネントのサンプルです。Windows の場合は GUIIn.bat、Linux の場合は GUIIn.sh を実行することでサンプル・コンポーネントが起動します。


GUIIn_example.png
GUIIn 実行例(GUIIn)



GUIIn_example_rtse_ja.png
GUIIn 実行例(RTSystemEditor 接続画面)


各GUI要素と Port間の関係は以下のとおりです。
  • スライダ(上): TimedLong型OutPort
  • テキスト・ボックス(中): TimedString型OutPort
  • スピナ(下): TimedDouble型OutPort
各Portは該当する Port間を接続後、GUI要素横のチェックボックスを ON にすることで、入力データを送信します。(Port間の接続には RTSystemEditor をご利用ください。出力データの確認には SeqIn などの他サンプルをご利用ください。)

使い方

GUIIn コンポーネントの GUI画面でチェックを入れたコントロール(スライダー、スピナ)を操作すると、その値の変化にしたがって SeqIn の GUI画面上の値も変化します。
  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditorの使用方法の詳細については RTSystemEditor を参照
    • GUIIn と SeqIn の両コンポーネントを起動します。 コンポーネントの起動は OS によってことなります。Windows の場合は GUIIn.bat、Linux の場合は GUIIn.sh を起動します。
    • RTSystemEditor の NameServiceView にこれらのコンポーネントが現れるので、二つとも SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 GUIIn 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。

OpenCVCameraComp

このサンプルは、OpenRTM-aist の C++版 Windowsインストーラーに同梱されています。 OpenRTM-aist の C++版 Linuxパッケージ、Python版、Java版 には同梱されていませんのでご注意ください。


概要

OpenCVCameraComp、CameraViewerComp を起動することで、USBカメラの画像をモニタに表示します。画像処理を行う OpenCV サンプルRTCコンポーネントを接続し、エフェクトをかけられます。



起動画面


new_00.png
OpenCVCameraComp コンポーネントと CameraViewerComp コンポーネントの実行例


new_01.png
OpenCVCameraComp 実行例(RTSystemEditor)


new_02.png
CameraViewerComp 実行例(モニタ)



使い方

OpenCVCameraComp は USBCameraAqcuireComp コンポーネントで USBカメラの画像データを取得し、CameraViewerComp コンポーネントでモニタ上に表示するサンプルです。 OpenCV の RTサンプルコンポーネントを間に接続し、画像データにエフェクトをかけることもできます。


  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細については RTSystemEditor を参照
    • OpenCVCameraCompとCameraViewerCompの両コンポーネントを起動します。
      • OpenCV サンプルRTコンポーネントを使用する場合は、インストール後、スタート > OpenRTM-aist 1.1.2 > C++ > Components > OpenCV-Example から起動してください。
    • RTSystemEditorのNameServiceView にこれらのコンポーネントが現れるので、二つとも SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 RTSystemEditor 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。
  • OpenCV の FlipComp を使用する
    • FlipComp コンポーネントをスタート > OpenRTM-aist 1.1.2 > C++ > Components > OpenCV-Example から起動してください。
    • SystemEditor 上にドラッグして表示し、OpenCVCameraComp と CameraViewerCompの両コンポーネントと接続し「Activate」します。(下図 FlipComp 実行例を参照)
    • FlipComp は Configure「flip_mode」の値を変更する事で、出力データを変更することも可能です。(下図 flip_mode の変更を参照)
      • FlipComp の詳しい使い方・解説はこちら をご確認ください。
        new_05.png
        FlipComp 実行例(RTSystemEditor)


new_03_04.png
flip_mode の変更(RTSystemEditorとモニタ)


TkJoyStick・MobileRobotSimulator

TkJoyStick

このサンプルは、OpenRTM-aist の Python版 に同梱されています。 C++版、Java版 には同梱されていませんのでご注意ください。


概要

GUI 画面を持った RTコンポーネントのサンプルです。TkJoyStickComp.py を実行することでサンプル・コンポーネントが起動します。

GUI のスティックをドラッグで移動した値 (x、y) を出力します。



起動画面

TkJoystick.png
TkJoyStick 実行例



使い方

 ※MobileRobotSimulator、又はNXTRTCの使い方をご覧ください。


MobileRobotSimulator

このサンプルは、OpenRTM-aist の Python版 に同梱されています。 C++版、Java版 には同梱されていませんのでご注意ください。

概要

GUI 画面を持った RTコンポーネントのサンプルです。TkMobileRobotSimulator.py を実行することでサンプル・コンポーネントが起動します。

起動画面


TkMobileRobotSimulator.png
TkMobileRobotSimulator実行例



使い方

TkJoystickComp.py (入力デバイス)・TkMotorComp.py (出力デバイス)などと接続し、GUI でモーターで動くロボットのシミュレーションをします。


  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→ RTSystemEditor の使用方法の詳細についてはRTSystemEditor を参照
    • TkJoyStickComp.py、TkMobileRobotSimulator.py、両コンポーネントを起動します。
    • TkMobileRobotSimulator.py の GUI の [Create] ボタンを1回クリックします。
    • RTSystemEditor の NameServiceView に両コンポーネントが表示されるので、それらを SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 SystemEditor 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。

NXTRTC

このサンプルは、OpenRTM-aist の Python版 に同梱されています。 C++版、Java版 には同梱されていませんのでご注意ください。

概要

NXTRTC.py は、LEGO Mindstorm NXT のモーター制御や、センサーデータを出力するコンポーネントです。



起動画面


NXTRTC.png
NXTRTC 実行例(NXTRTC)


TkMotor.png
TkMotorComp 実行例(TkMotorComp)


NXTRTC_example_rtse_ja.png
NXTRTC 実行例(RTSystemEditor)


使い方

GUI をもった TkJoystickComp (入力デバイス)と、TkMotorComp (出力デバイス) に接続し、LEGO のモータ制御と値の確認をします。

 ※詳細はRTコンポーネント作成(LEGO Mindstorm編)マニュアルでごご覧ください。


  • 手順
    • RTSystemEditor を起動し、SystemEditor を用意します。→RTSystemEditor の使用方法の詳細についてはRTSystemEditor を参照
    • こちらを参考に PC と LEGO Mindstorm を Bluetooth、又は USB 接続してください。
    • NXTRTC.py、入力デバイス TkJoyStickComp.py、TkMotorComp、各コンポーネントを起動します。
    • RTSystemEditor の NameServiceView にコンポーネントが表示されるので、それらを SystemEditor 上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図 SystemEditor 実行例を参照)
    • どちらかのコンポーネントを右クリックし、「All Activate」を選択します。

TkMotorComp・SliderComp

TkMotorComp

このサンプルは、OpenRTM-aist の Python版 に同梱されています。 C++版、Java版 には同梱されていませんのでご注意ください。

概要

GUI 画面を持った RTコンポーネントのサンプルです。TkMotorComp.py を実行することでサンプル・コンポーネントが起動します。

起動画面


TkMotorComp.png
TkMotorComp 実行例



SliderComp

このサンプルは、OpenRTM-aist の Python版 に同梱されています。 C++版、Java版 には同梱されていませんのでご注意ください。

概要

GUI 画面を持った RTコンポーネントのサンプルです。SliderComp.py を実行することでサンプル・コンポーネントが起動します。(以下の画面は、Windows で動作させた場合のものです。)

起動画面


SliderComp.png
SliderComp 実行例

TkCalibGUI

TkCalibGUI

このサンプルは、OpenRTM-aist の C++版 に同梱されています。 Python版、Java版 には同梱されていませんのでご注意ください。


概要

GUI 画面を持った RTコンポーネントのサンプルです。TkCalibGUIComp を実行することでサンプル・コンポーネントが起動します。 カメラキャリブレーションを行う ImageCalibration コンポーネント用のGUIです。

本コンポーネントを実行して選択可能リストの中からカメラコンポーネントを指定すると、ImageCalibrationComp と合わせて自動起動し、コンポーネント間のポート接続も自動で行います。 GUI のボタン操作でキャリブレーションに必要なカメラ画像の保存、及び、カメラパラメーターの算出を行うことができます。


コンポーネントの実行条件

OpenRTM-aist C++ の Windows用インストーラーを使ってインストールされた場合は、TkCalibGUIComp.exe を実行するだけで動作します。

ソースからビルドされた場合は、実行条件を整える必要があります。
本コンポーネントでは実行に必要な環境のチェックを行っています。 条件に合わないと以下のようなメッセージダイアログを表示します。指示に従ってインストールしてください。

calib9.jpg
実行条件を満たさない場合に表示されるメッセージ

Windows環境向け

メッセージ内容 対応処理
OpenRTM-aist Python is not installed. OpenRTM-aist Python版 のページから Windows用インストーラーをダウンロードできます。
インストーラーの OS のバージョン(32bit or 64bit)は、OpenRTM-aist C++版に合わせて下さい。
Ttk is not installed. pyttk をインストールしてください。python2.7 には含まれていますが、python2.6 では別途インストールが必要です。
PIL is not installed. PIL をインストールしてください。
NumPy is not installed. numpy をインストールしてください。
rtctree is not installed. rtctree-3.0.1 以上が必要
近日インストーラーを公開予定ですが、それまでは githubのページ の右下の「Download Zip」をクリックし、rtc-master.zip ファイルをダウンロード・展開し、setup.py を実行してインストールしてください。(> python setup.py install)
site-packages\rtctree\rtmidlへのパスをシステム環境変数の PYTHONPATH に追加してください。
例)C:\Python27\Lib\site-packages\rtctree\rtmidl

Linux(Ubuntu)環境向け

メッセージ内容 対応処理
OpenRTM-aist Python is not installed. OpenRTM-aist Python版 のページから一括インストールスクリプトをダウンロードできます。
Ttk is not installed. $ sudo apt-get install python-tk
PIL is not installed. $ sudo apt-get install python-pil.imagetk
NumPy is not installed. $ sudo apt-get install python-numpy
rtctree is not installed. rtctree-3.0.1 以上が必要
github からダウンロードし、setup.py を実行してインストールする手順は Windows環境と同じ。~/.bashrc などに PYTHONPATH を追加してください。
export PYTHONPATH="/usr/local/lib/python2.7/dist-packages/rtctree/rtmidl"

起動画面


calib1.jpg

最初に使用するカメラコンポーネントをリストの中から選択します。このリストには実行環境で使用可能なカメラコンポーネント名が表示されています。 例として、DirectShowCamComp は vc2010 までの環境で選択可能ですが、vc2012 以降は MFCameraComp となっています。


calib2.jpg

[All Activate] ボタンをクリックするとカメラ映像が表示されます。 この時の全コンポーネントの接続状態は下図の通りです。 TkCalibGUIComp 以外のコンポーネントは自動起動され、コンポーネント間も自動接続しています。


calib10.jpg


使い方

チェッカーパターン(キャリブレーションパターン)を用意します。参考として、ここでは checkerboard.pdf を使っています。 チェッカーパターンのコーナー数は、ImageCalibrationComp の Configuration で指定する必要があります。(checker_h, checker_w) 撮影枚数(image_num)も Configuration で変更可能です。

チェッカーパターンは姿勢を変えて指定枚数保存します。[確認] ボタンで保存画像の確認が可能です。[取消し] ボタンをクリックするとその画像は削除されますので保存し直してください。

#br

calib3.jpg calib4.jpg
calib5.jpg calib6.jpg


指定枚数の保存が終了すると [結果表示] ボタンが有効となります。これをクリックするとカメラパラメーター値が表示されます。


calib8.jpg

カメラパラメーターは camera.yml のファイル名でコンポーネントの実行ファイルと同じディレクトリーに出力されます。

  %YAML:1.0
  calibration_time: "Thu May 22 16:38:06 2014\n"
  image_width: 640
  image_height: 480
  board_width: 13
  board_height: 9
  cameraMatrix: !!opencv-matrix
     rows: 3
     cols: 3
     dt: d
     data: [ 5.8272934483011682e+002, 0., 3.3703801084645710e+002, 0.,
         5.8023846162074653e+002, 2.2824562602176763e+002, 0., 0., 1. ]
  distCoeffs: !!opencv-matrix
     rows: 1
     cols: 5
     dt: d
     data: [ -1.4659954975042236e-001, 5.7825601645508595e-001,
         -3.3745642103035984e-003, 1.2569676956708463e-003,
         -9.8011775330916773e-001 ]


画像出力(参考資料)

参考として [保存] ボタンをクリックした時の画像ファイルをシステム環境変数の TEMP、または TMP のディレクトリーに出力しています。
  • ファイル名:capture0.jpg ~ capture4.jpg (5枚保存した場合:グレースケール画像)


capture0.jpg

上記の画像に対して出力したカメラパラメーターを用いて歪み補正した画像も同じディレクトリーに出力しています。
  • ファイル名:undistorted0.jpg ~ undistorted4.jpg (ファイルの番号は capture*.jpg に対応)


undistorted0.jpg