日本語 | English


ロボットアプリケーション(RSNPクライアント)の作成

ここでは、サンプルロボットアプリケ−ションのRobotMimamoriSample(ロボット見守りサービス)を実行します。

1. 構築するロボットアプリケーションの概要と機能、システム構成

準備するもの

  • ノートPC
  • USBカメラ(Webカメラ)

ロボットアプリケーションの機能

  • ロボットの状態を定期的にサーバへ通知します
  • 撮影したカメラ画像を定期的にサーバに送信します
  • 撮影した画像は,ロボットサービス(RSNPサーバ上)に実装されたRSiロボットマップからの参照が可能です
     
    left

2. 開発環境の設定

ロボットアプリケーションを開発するためにはロボットアプリケーションの開発環境を構築してください。ロボットアプリケーションの開発環境は、コチラから設定できます。

3. Webカメラの接続(認識の確認)

Webカメラを使って画像を認識できることを確認します。

(※WebカメラをPC上で認識するために、専用のデバイスドライバのインストールが必要な場合があります。)

4. Eclipseの起動と環境設定

1. ロボットアプリケーションのダウンロードとインポート

  1. プロジェクトのダウンロード

    本サイトから、RobotMimamoriSample.zipダウンロードします。ダウンロードしたzipファイルを、任意のフォルダに解凍します。

  2. プロジェクトのEclipseへのインポート
    1. Eclipseを起動し、「ファイル」−「インポート」から「インポート」ダイアログを開き、「一般」−「既存のプロジェクトをワークスペースへ」を選択し、「次へ」ボタンをクリックします。
    2. インポートするプロジェクトを選択するウィンドウが表示されます。「ルート・ディレクトリーの選択」にチェックを行い、右側にある「参照」ボタンを押します。インポートするプロジェクトが含まれるディレクトリを指定して「OK」ボタンをクリックします。
       
      left
       
    3. インポート可能なプロジェクトの一覧が表示されます。インポートしたいプロジェクトの左側のチェックボックスにチェックを行った後で「終了」ボタンをクリックします。
       
      left
       
    4. パッケージ・エクスプローラーの中にインポートしたプロジェクトが追加されて表示されます。

2. Java Media Framework(JMF)のインストールとビルドパスの設定

本アプリケーションではWebカメラから画像を取得して、利用します。そのために、音声や動画など時系列で変化するメディアをJavaアプリケーションやアプレットに追加するためのJavaライブラリーであるJMFをインストールします。その後に、EclipseのJavaのビルド・パスにJMFを追加します。

  1. JMFのインストール

    ORACLEのJMFダウンロードサイト (http://www.oracle.com/technetwork/java/javase/download-142937.html) より、”JMF”をダウンロードし、インストールします。

  2. EclipseへのJMFのビルド・パス設定

    インストールしたJMFへのビルド・パスをEclipseへ設定します。

    1. インストールしたJMFのlibフォルダ配下にある以下のライブラリーを、”RobotMimamoriSample”プロジェクトのlibフォルダにコピーします。
      • jmf.jar
    2. 『パッケージ・エクスプローラー』ビューで"RobotMimamoriSample"プロジェクトを選択し、右クリックでポップアップメニューを表示し、「プロパティー」を選択して『プロパティー』ダイアログを開き、左ペインのツリーで「Java のビルド・パス」を選択し、右ペインで「ライブラリー」タグを開きます。
    3. 「JARの追加…」ボタンを押し、『JAR の選択』ダイアログを開き、先ほど追加したlibフォルダ配下のライブラリファイルを選択し、「OK」ボタンを押します。
    4. ビルド・パス上のJARおよびクラス・フォルダーの内容を確認し「OK」ボタンを押します。

5. ロボットアプリケーションの実行、動作確認

ロボットアプリケーションを実行し、その動作を確認します。ソースコードの変更を行わない場合には、Webカメラの画像ではなく、単色画像がロボットアプリケーションからの画像としてロボットサービスに送られます。まず、この状態で動作確認を行います。

  1. アカウント設定

    アカウント情報は、ロボットアプリケーションはロボットサービスと接続するための、ロボットアカウントと、Webブラウザからサービスへログインし、ロボットの動作確認を行うための管理者アカウントがあります。アカウント情報を下記に記述します。

    ロボットアカウント(ロボットからのロボットサービスへの接続に使用)
    ユーザID:robot030   
    パスワード:robot030_pass
    ロボット管理者アカウント(Webブラウザからの動作確認に使用)
    ユーザID: rssr030
    パスワード: rssr030_pass

    ロボットアカウントについては、ロボットアプリケーションにあらかじめ引数を設定します。Eclipseを起動し、RobotMimamoriSampleプロジェクトを右クリックしてポップアップメニューを表示します。「実行」を選択して『実行の構成』ダイアログを開き、左ペインのツリーで「Java アプリケーション」-「RobotMimamoriMain」を選択します。「引数」タグに、上記で示したロボットアカウントをユーザID、パスワードの順で記述します。

     
    left
     
  2. ロボットアプリケーションの実行 

    RobotMimamoriMain.javaを選択し、プログラムを実行してください。

  3. ロボットアプリケーションの動作確認

    Webブラウザから以下のURLへアクセスし、ロボットサービス上でロボットアプリケーションがどのように動作しているのかを確認してみましょう。

    • RSiロボットマップ(http://rsi.aiit.ac.jp/

      RSiロボットマップ上にロボットが点在しています。一時間以上アクセスしていないロボットは灰色、アクセス一時間未満のロボットは緑色に表示されます。StateNotificator.javaのrunメソッドは、緯度・経度の引数を持ちます。マップ上では、この経度・緯度の位置にロボットが表示されます。表示のロボットをクリックすると、ロボットの詳細情報を確認できます。

      public void run() {
      		if (statusParams != null && inp != null) {
      		    synchronized (this) {
      				// XML作成
                              buff.append("<latitude>35.423936</latitude>"
      			    + "<longitude>136.760750</longitude>"
      			    + "<location>岐阜</location>"
      			    + "<comment>RSNPチュートリアル@日本</comment>");
      		        buff.append("</status></mimamori>");
                      ・
              ・
       
      left
       
    • ロボットみまもりサービス(http://rsi.aiit.ac.jp/rsnpServer/mimamori/login/

      ロボットみまもりサービスに行くと、Login画面が表示されます。5-1節に示したロボット管理者アカウントでLoginします。Login後ロボットアプリケーションからの情報(ロボットの位置・現在の接続状態・ロボット周辺の画像)を確認できます。

       
      left
  4. ロボットアプリケーションの停止操作

    http://localhost:9000/ にアクセスすることによってロボットアプリケーションからロボットサービスへの接続が切断されます。

6. 実際のカメラ画像表示、動作確認

単色画像ではなく、実際のWebカメラ画像をロボットアプリケーションからロボットサービスに配信するソースコードに書き換えます。下記のように、CameraImage.javaのcreateImageメソッドの一部を変更します。“byte[] bytes = out.toByteArray();”はコメントアウトします。

private byte[] createImage(String type) {
		// 画像を取得
		BufferedImage im;
		im = new BufferedImage(240, 180, BufferedImage.TYPE_INT_RGB);
                ・
        ・
        }
        // 単色画像を取得する場合のロジック   
		//byte[] bytes = out.toByteArray();

		// カメラ画像を取得する場合のロジック
		byte[] bytes = ImgCapture.getInstance().getImg();

		return bytes;
 

left

 

7. アレンジ(ソースコードを変更し、表示位置・コメント等が変更されたことを確認)

 StateNotificator.javaのrunメソッドの一部を改変することでロボットアプリケーションがロボットサービスに送る位置情報を変更することができます。下記ソースコードの位置情報(緯度・経度・場所)を変更して、RSiロボットマップでどのように変更が反映されるか確認します。RSiロボットマップ上のロボットの表示位置が異なることを確認します。

 
public void run() {
		if (statusParams != null && inp != null) {
		    synchronized (this) {
				// XML作成
                        buff.append("<latitude>33.83752</latitude>"
			    + "<longitude>132.798969</longitude>"
			    + "<location>松山</location>"
			    + "<comment>RSNPチュートリアル@日本</comment>");
		        buff.append("</status></mimamori>");
                ・
        ・
 
 

left

 

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-25 (金) 13:50:50 (4356d)