ファーストステップ

概要

RTM on Androidの環境が準備できたら、OpenRTM-aistのツールを使用してAndroid上のサンプルRTコンポーネントを実際に動かしてみましょう。

OpenRTM-aistのツールのインストール方法については、OpenRTM-aistのページ( http://www.openrtm.org/openrtm/ja/content/openrtm-aist-official-website )を参照してください。

ここでは下図に示すような、ConsoleInとConsoleOutという2つのRTコンポーネントを利用します。これは、ユーザーがConsoleInコンポーネントのコンソール画面から入力したデータを、データポートを介してAndroidのコンポーネントに入力し、そのデータを5倍した値を出力ポートからConsoleOutコンポーネントに送信し、コンソール画面にデータを表示するという簡単なものです。

_images/step00.png

デモシステムの構成

起動するプログラム一覧
プログラム名 役割
ネーミングサービス 各コンポーネントの名前とリファレンスを管理するプログラム
ConsoleInコンポーネント ユーザーの入力したデータをOutPortから出力するRTコンポーネント
SampleDevelopコンポーネント InPortから入力されたデータを演算処理してOutPortから出力するRTコンポーネント(Androidアプリケーション)
ConsoleOutコンポーネント InPortから入力されたデータをコンソールに出力するRTコンポーネント
RTSystemEditor RTコンポーネントをモニタリングや操作するためのGUIアプリケーション

ネーミングサービスの起動

まずは、ネーミングサービスの起動を行います。

スタートメニューから「プログラム」→「OpenRTM-aist」→「C++」→「tools」→「Start Naming Service」を選択してください。

_images/step11.png

ネーミングサービスの起動

RT System Editorの起動

次にRTコンポーネントを操作するためのツールであるRT System Editorを起動します。

スタートメニューから「プログラム」→「OpenRTM-aist」→「C++」→「tools」→「RT System Editor」を選択してください。 すると、下図のような画面が表示されます。

_images/step01.png

RT System Editor 起動画面

NameServerViewにネームサーバが表示されない時は、手動でlocalhostを追加します。画像の[ネームサーバの追加]ボタンをクリックしダイアログを出します。localhostと入力し、[OK]をクリックして追加します。

_images/step02.png

Add Name Server の 起動

次に、メニューより、「ファイル」→[Open New System Editor]を選択するか、下図のようにツールバーの[Open New System Editor]アイコンをクリックしてSystemDiagramを表示してください。

_images/step03.png

System Diagram の表示

RTコンポーネントの起動

続いて、各RTコンポーネント(ConsoleIn, ConsoleOut)を起動します。 インストーラパッケージからインストールした場合は、スタートメニューから「プログラム」→「OpenRTM-aist」→「C++」→「components」→「example」を開き、「ConsoleInComp.exe」と「ConsoleOutComp.exe」を起動してください。

起動に成功すると、「ConsoleInComp.exe」、「ConsoleOutComp.exe」と記述されたコンソールウィンドウが開き、コンソールに下記のように表示されます。

_images/step12.png

コンポーネントが正常に起動すると、RT System EditorのName Service Viewに、下図のようにコンポーネントの名前が表示されます。最初は折りたたまれて非表示ですので、[+]をクリックし展開するとコンポーネントが確認できます。

_images/step04.png

RT System Editor の Name Service View の確認1

ネーミングサービスが起動していない場合は、RTコンポーネントがエラー終了し、下記のようなログが出力されます。ネーミングサービスが起動しているか確認してください。

エラーメッセージ

2012-02-20 19:12:53,642 [1] ERROR (Manager) ネーミングサービスへの登録に失敗しました。
omg.org.CORBA.TRANSIENT: CORBA system exception : omg.org.CORBA.TRANSIENT [Unable to connect to target.] , completed: Completed_No minor: 4000

 次にAndroid端末上で、Androidアプリのサンプルコンポーネント「RTMonAndroidSample」を起動します。 サンプルコンポーネントのサンプルアプリ(RTMonAndroidSample.apk)は配布パッケージ中の下記サンプルフォルダに納められていますので、任意の方法でAndroid端末にインストールしてください。

RTMonAndroidSample
└─bin
    └─RTMonAndroidSample.apk
_images/step13.png

NameServer欄にホストPC(ネーミングサービスを起動しているPC)のIPアドレスを入力し、[START RTC]ボタンをタップします。

コンポーネントが正常に起動すると、アプリ画面に「start RTC : SampleDevelop」と表示され、RT System EditorのName Service Viewには、下図のようにAndroid端末上のコンポーネントの名前が表示されます。

_images/step05.png

RT System Editor の Name Service View の確認2

ネームサーバーに接続できない場合は、ホストPC側からAndroid端末にpingが通っているか等、機器間で通信が出来ることを確認してください。(Android端末はWi-Fiでローカルエリアネットワークに接続している必要があります)

RTコンポーネントの操作

 コンポーネントが起動したら、次にRT System Editorを利用して、RTコンポーネントを操作してみましょう。

 まず、RTSystemEditorのName Service Viewの中からまずConsoleInコンポーネントを選択し、SystemDiagramにドラッグ&ドロップすると、下図のようにRTコンポーネントが表示されます。

_images/step06.png

RTコンポーネントのドラッグ&ドロップ

同様に、ConsoleOutとSampleDevelopもドラッグ&ドロップしてください。

なお、RTコンポーネントを描画している色は、以下に示すように、RTコンポーネントの状態を示しています。

RTSystemEditor コンポーネントの色と状態の関係
コンポーネントの色 コンポーネントの状態
コンポーネントが非活性(INACTIVE)状態
コンポーネントが活性化(ACTIVE)状態
コンポーネントがエラー(ERROR)状態

データポートの接続

 次にConsoleInとSampleDevelop、ConsoleOutのデータポートの接続を行います。

 下図に示すように、ConsoleInのOutPortの領域から、SampleDevelopのInPortの領域にドラッグ&ドロップを行うと、データポート間の接続を行うことができます。

 データポート間でドラッグ&ドロップ後、接続に必要な情報の入力を促すダイアログが表示されます。デフォルトでDataflowTypeがpushと表示されていることを確認して[OK]をクリックします。

_images/step07.png

RTSystemEditorデータポートの接続

 同様にSampleDevelopのOutPortの領域から、ConsoleOutのInPortへも接続します。

RTコンポーネントへのコマンド送信

ドロップしたRTコンポーネントに対して、右クリックすると、下図のようなコンテキストメニューが表示されます。 このメニューの中から、送信したいコマンドを選択します。送信可能なコマンドは下記の表の通りです。

送信可能なコマンド一覧
コマンド名 内容
Activate RTコンポーネントを活性化させます。
Deactivate RTコンポーネントを非活性にします。
Reset RTコンポーネントがエラー状態のとき、リセットします。
Finalize RTコンポーネントの終了処理を行います。※RTM on Androidでは利用できません
Exit RTコンポーネントを終了させます。※RTM on Androidでは利用できません
Start 実行コンテキストを起動します。※RTM on Androidでは利用できません
Stop 実行コンテキストを停止します。※RTM on Androidでは利用できません
Delete システムエディタの描画領域から削除します。※RTコンポーネントにはコマンドを送信しません。
Create Composite Component 複合コンポーネントを作成します。※RTM on Androidでは利用できません

ここでは、ConsoleInにActivateコマンドを送信しましょう。

_images/step09.png

RTコンポーネントへのコマンド送信

確認ダイアログで[OK]をクリックして、コンポーネントの色が青からみどりに代わればアクティベート成功です。 同様に、SampleDevelop、ConsoleInもアクティベートして下さい。

_images/step10.png

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

データ送信の確認

 ConsoleInコンポーネントのコンソール画面を確認すると、「Please Input number: 」というメッセージが表示されています。ここで、下記のように、適当な整数値を入力してください。

ConsoleInコンポーネントの表示画面

Please Input number: 123

すると、入力した数値が下記のようにAndroidアプリ上のinput Data欄に表示され、その数値が5倍された値がConsoleOutのコンソール画面に表示されます。

ConsoleOutコンポーネントの表示画面

Received: 615
_images/step14.png