OpenRTM付属のサンプルについてOpenRTM付属のサンプルについてOpenRTM-aistにはいくつかのサンプルコンポーネントが付属しており、簡単に使ってみれます。(CameraViewer/OpenCVCameraコンポーネントにはOpenCVが必要です。サンプルコンポーネントのソースコードも付属していますので、開発の参考にしてください。本章では、OpenRTM-aistに付属のサンプルについて説明します。サンプルコンポーネントを使ってみる場合は、サンプルコンポーネントを起動する前にネーム・サービスを起動しておいてください。ネーム・サービス用のプログラムとしては以下のものが用意されています。(Python)Windowsでネーム・サーバーを実行するには、該当するファイルをエクスプローラーで見つけダブルクリックしてください。Service]としてもネームサービスを起動できます。本章ではRTSystemEditorがインストールされた環境であることを想定して説明しています。RTSystemEditorのインストールについての詳細は、OpenRTPのインストールを参照してください。使い方このサンプルは、OpenRTM-aistのC++版、Python版、Java版に付属されています。概要InPort、OutPortの使用方法のサンプルです.ConsoleInコンポーネントとConsoleOutコンポーネントを起動させます。Port間を接続すると、ConsoleIn側で入力した数字が、ConsoleOut側に表示されます.Port間はRTSystemEditorを用いる以外にRTShellコマンドを実行することで接続できます。使い方SimpleIOのサンプルは、ConsoleInで入力された数字をデータポートからConsoleOutへ送って、ConsoleOut側にも同じ数字を表示させるサンプルです。ConsoleInの画面から数字を入力してください。するとConsoleOutで入力した数字が出力されます。OpenRTPを起動し、RTSystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照ConsoleInとConsoleOutの両コンポーネントを起動します。コンポーネントの起動はOSやOpenRTM-aistの言語によって異なってます。以下の表を参考に起動します。Viewに両コンポーネントが現れるので、それらをSystemEditor上にドラッグします。両コンポーネントのポートを結びます。Systems]を選択します。number:」のプロンプトが現れるので、数字を入力します。ConsoleOutの画面にその数字が表示されます。使い方このサンプルは、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実行例(RTSystemEditor接続画面)SeqInコンポーネントとSeqOutコンポーネントの実行例(C++版)SeqInコンポーネントとSeqOutコンポーネントの実行例(Python版)SeqInコンポーネントとSeqOutコンポーネントの実行例(Java版)使い方SeqIOのサンプルは、SeqOutから連続して出力される数値データをデータポートからSeqInへ送り、GUIまたはコンソール上に表示させるサンプルです。SeqOutとSeqInの対応するポートをRTSystemEditor上で接続してください。両コンポーネントをアクティベートするとSeqOutだけでなくSeqInの出力される数値も連続的に変化し、データポートの入出力が観察できます。手順RTSystemEditorを起動し、SystemEditorを用意します。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照SeqOutとSeqInの両コンポーネントを起動します。コンポーネントの起動はOSやOpenRTM-aistの言語によって異なりますので、以下の表を参考に起動します。SeqOut.shRTSystemEditorのNameServiceViewに両コンポーネントが現れるので、それらをSystemEditor上にドラッグします。両コンポーネントの対応ポートを接続します。System]を選択します。使い方このサンプルは、Python版にのみ付属しています。概要InPortから入ったデータをある基準で判別してOutPortに別の形の出力をするコンポーネントです。SeqIn、SeqOutと共に使用することができます。各Port間を接続するとSeqOut側の出力値、SeqIn側の入力値がそれぞれのコンソール画面に表示されます。(Port間の接続にはRTSystemEditorを利用ください。velocity)の出力をするコンポーネントです。SeqOutとSeqInの対応するポートをRTSystemEditor上で接続してください。両コンポーネントをアクティベートするとSeqOutだけでなくSeqInの出力される数値も連続的に変化し、データポートの入出力が観察できます。手順RTSystemEditorを起動し、SystemEditorを用意します。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照AutocontrolとSeqOut、SeqInコンポーネントを起動します。Files\OpenRTM-asit\1.2.x\Components\Python"より、”Autocontrol.bat"、”SeqIn.bat"、”SeqOut.bat"をダブルクリックしてください。RTSystemEditorのNameServiceViewに3つのコンポーネントが現れるので、それらをSystemEditor上にドラッグ&ドロップします。両コンポーネントの対応ポートを接続します。System]を選択します。View]の[編集]ボタンをクリックします。View]タブが表示されているはずなので、それをクリックしてください。パラメータ値を変更します。この例では、[velocity]を10.0、[turn_velocity]を1.0、[distance_to_env]を5.0に設定するのが分かりやすい設定例になります。Dataの2つの値に注目してください。[turn_vel]か、[velocity]、[velocity]の値として出力されているのを確認してください。それぞれConfigurationパラメータを変化させて、入出力の関係がどのようになるかを見てみるのも良いでしょう。使い方このサンプルは、Python版にのみ付属しています。使い方このサンプルは、OpenRTM-aistのC++版、Python版、Java版に付属されています。複合コンポーネントCompositeの使用方法を示したサンプルです。複合コンポーネントをActivateする前に、複合コンポーネントを構成している子のコンポーネント間を接続する必要があります。Compositeコンポーネントは、Sensor、Controller、Motorの3つのコンポーネントを子に持っています。Compositeコンポーネントの動作は、ConsoleIn/ConsoleOutコンポーネントと接続して確認できます。Viewに4つのコンポーネント名が表示されます。Editorにドラッグ&ドロップします。Composite実行例(複合コンポーネントをドラッグ&ドロップ)複合コンポーネント内を表示させるため、PeriodicECShareCompositeをダブルクリックすると、別のエディタに表示されますので、コンポーネント間を接続します。Composite実行例(複合コンポーネントの子コンポーネント間を接続する)ここではConsoleIn/ConsoleOutコンポーネントと接続した場合の動作例を示します。Composite実行例(RTSystemEditor接続画面)ConsoleInで「111」と入力した場合、ConsoleOutで「888」と表示されれば正しい動作です。複合コンポーネントを構成している子コンポーネントは、入力値(コンソール画面に表示されている値)を2倍して出力しています。Composite実行例(左:複合コンポーネント画面、右:ConsoleOut画面)使い方Compositeのサンプルは、入力データポートから受け取った値を、3つの子コンポーネントがそれぞれ2倍の値にして出力しているので、最終的にCompositeの出力データポートから8倍の値が出力されるサンプルです。手順RTSystemEditorを起動し、新規SystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照Compositeコンポーネントを起動します。コンポーネントの起動はOSやOpenRTM-aistの言語によって異なりますので、以下の表を参考に起動します。ViewにPeriodicECShareCompositeが現れるので、それらをSystemEditor上にドラッグします。PeriodicECShareCompositeをダブルクリックし、子コンポーネント間のポートを結びますConsoleInとConsoleOutの両コンポーネントを起動し、PeriodicECShareCompositeと対応ポートを接続します。Systems]を選択します。使い方このサンプルは、OpenRTM-aistのC++版、Python版、Java版に付属しています。概要ServicePortの使用方法を示したサンプルです。以下に示すIDLを使用してサービスを定義しています。};MyServiceConsumerコンポーネントとMyServiceProviderコンポーネントを起動します。Consumer側コンポーネントをActivateすると、コンソールに利用可能なコマンドリストが表示されますので、各コマンドをお試しください。(Port間の接続にはRTSystemEditorを使用してください。使い方SimpleServiceは、MyServiceConsumerからコマンドを送り、MyServiceProviderでそれを処理させるというサンプルです(※正確には、コマンドの解釈はConsumer側であり、Provider側の関数を呼び出す形で実装されています)。MyServiceConsumerとMyServiceProviderの対応するポートをRTSystemEditor上で接続し、両コンポーネントをアクティベートします(ActivateするのはConsumer側コンポーネントだけでもよい)とConsumer側プロンプトにコマンド一覧が表示されるので、適当なコマンドを入力してください。Provider側の応答がプロンプト上で観察できます。手順RTSystemEditorを起動し、新規SystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照MyServiceConsumerとMyServiceProviderの両コンポーネントを起動します。コンポーネントの起動はOSやOpenRTM-aistの言語によって異なりますので、以下の表を参考に起動します。Viewに両コンポーネントが現れるので、それらをSystemEditor上にドラッグします。両コンポーネントの対応ポートを結びます。Systems]を選択します。(この場合は、Consumer側コンポーネントをActivateするだけでも動作します。)Consumer側プロンプトにコマンドを入力します。外部からの入力(イベント)により処理が実行されるExecutionContextのサンプルです。ExtConsoleIn.batとExtConsoleOut.batを実行し、2つのサンプル・コンポーネントを起動します。両コンポーネントを起動後、ExtConnector.batを実行し、2つのコンポーネントのPort間を接続します。起動画面ExtTrigger実行例(ExtConsoleIn)ExtTrigger実行例(ExtConsoleOut)ExtTrigger実行例(ExtConnector)Port間の接続が成功すると、ExtConnectorを実行したコンソールにどのコンポーネントの処理を進めるか選択するメニューが表示されます。この入力値により、それぞれのコンポーネントは処理を1周期づつ進めていきます。C++版、Python版、Java版に付属しています。概要RTコンポーネントのコンフィギュレーションセットの使用方法を示したサンプルです。ConfigSampleコンポーネントを起動します。コンポーネントが正常に起動されると、コンフィギュレーション・セットが予め設定された状態となっております。RTSystemEditorを利用してコンフィギュレーション・セットを確認してみてください。※コンポーネント起動時に「指定されたパスが見つかりません。」というエラーが発生してしまう場合は、RTMExamples/ConfigSampleディレクトリ内にあるrtc.confファイル内の「example.ConfigSample.config_file」を次のように修正してください。次に示すパスに置き換えます。(ディレクトリ名やファイル名の間の文字は'\'ではなく、'\\'とします)または「configsample.conf」へのフルパスに書き換えます。この場合も、上記と同様にディレクトリ名やファイル名の間の文字に'\\'を使用します。使い方RTSystemEditorのConfigrationViewで選択・設定したConfigrationSetに従ったデータセットをプロンプト上に表示し、絶えず表示更新をし続けます。手順RTSystemEditorを起動し、SystemEditorを用意します。参照ConfigSampleコンポーネントを起動します。コンポーネントの起動はOSやOpenRTM-aistの言語によって異なりますので、以下の表を参考に起動します。Viewにこのコンポーネントが表示されるので、SystemEditor上にドラッグします。Viewから適当なConfigrationSet(default、mode0、mode1)を選びます。必要に応じてvalueを変更します。[適用]ボタンをクリックします。い方このサンプルは、OpenRTM-aistのJava版のみに付属しています。GUI画面を持ったRTコンポーネントのサンプルです。Windowsの場合はGUIIn.bat、Linuxの場合はGUIIn.shを実行することでサンプル・コンポーネントが起動します。GUIIn実行例(GUIIn)GUIIn実行例(RTSystemEditor接続画面)各GUI要素とPort間の関係は以下のとおりです。TimedDouble型OutPort各Portは該当するPort間を接続後、GUI要素横のチェックボックスをONにすることで、入力データを送信します。(Port間の接続にはRTSystemEditorをご利用ください。出力データの確認にはSeqInなどの他サンプルをご利用ください。)使い方GUIInコンポーネントのGUI画面でチェックを入れたコントロール(スライダー、スピナ)を操作すると、その値の変化にしたがってSeqInのコンソール画面上の値も変化します。手順RTSystemEditorを起動し、新規のSystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照GUIInとSeqInの両コンポーネントを起動します。コンポーネントの起動はOSによって異なります。Windowsの場合はGUIIn.bat、Linuxの場合はGUIIn.shを起動します。Editor上にドラッグします。両コンポーネントの対応ポートを結びます。Systems]を選択します。使い方OpenRTM-aistのPython版、Java版には付属していませんのでご注意ください。Linux上では、LinuxにおけるOpenCVサンプルコードのビルド手順に従ってビルドしてインストールしてください。概要OpenCVCamera、CameraViewerを起動することで、USBカメラの画像をモニターに表示します。OpenCV画像処理サンプルRTCコンポーネントを接続し、エフェクトをかけられます。起動画面OpenCVCameraコンポーネントとCameraViewerコンポーネントの実行例OpenCVCamera実行例(RTSystemEditor)CameraViewer実行例(モニター)使い方OpenCVCameraはUSBカメラの画像データを取得し、CameraViewerコンポーネントでモニター上に表示するサンプルです。OpenCVのRTサンプルコンポーネントを間に接続し、画像データにエフェクトをかけることもできます。手順RTSystemEditorを起動し、新規SystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照OpenCVCamera(openCVCamera.bat)とCameraViewer(CameraViewer.bat)の両コンポーネントを起動します。x86>C++_OpenCV-Examplesから)起動してください。Viewにこれらのコンポーネントが現れるので、二つともSystemEditor上にドラッグします。両コンポーネントの対応ポートを結びます。Systems]を選択します。x86>C++_OpenCV-Examplesから)起動してください。SystemEditor上にドラッグして表示し、OpenCVCameraとCameraViewer両コンポーネントと接続し「Activate」します。(下図Flip実行例を参照)FlipはConfigure「flip_mode」の値を変更する事で、出力データを変更することも可能です。(下図flip_modeの変更を参照)Flipの詳しい使い方・解説はこちらをご確認ください。入力画像のアフィン変換をします。入力画像においてKey入力があった時点の画像から変化分を出力します。入力画像を二値化した白黒画像に変換します。ダイアレーション/エロージョン処理を行います。輪郭抽出をして、輪郭を画像中に表示します。白黒化した画像の明度/コントラストの変更処理をしながら、ヒストグラムの変化を表示します。画像のパースペクティブ変換(斜め下から見たように変換します。画像でグーチョキパーを判定します。画像を回転と縮小拡大処理をします。画像の縮小拡大処理をします。画像のセピア化を行います。画像の2次元移動処理をします。移動方向LinuxにおけるOpenCVサンプルのビルド手順Linuxにおいては一括インストールスクリプトの実行ではOpenCVサンプルコードはインストールされません。サンプルコードのインストールのためには、githubリポジトリよりソースコードを入手してビルドする必要があります。手順は以下のようになります。OpenRTM-aistを一括インストールスクリプトを用いてインストールしてください。(以下の手順の実行にはC++版とPython版が必要になります。実際に動作させる場合にはOpenrtpが必要になることが多いかと思われます。それに合わせてオプションを指定してください。--yesOpenCV3.4以降をインストールする。(現状では3.4.5のみがテストされています。インストールにはソースコードビルドが必要なこともあります。)以下の手順でソースコードを入手してビルドしてください。使い方TkJoyStickこのサンプルは、OpenRTM-aistのPython版に付属しています。C++版、Java版には付属していませんのでご注意ください。概要GUI画面を持ったRTコンポーネントのサンプルです。TkJoyStickComp.batを実行することでサンプル・コンポーネントが起動されます。