goo blog サービス終了のお知らせ 

robo8080のブログ

ロボット製作や電子工作など。

Processing + mbed + 無線LANカメラで物体追跡ロボット製作(その2)

2012年01月16日 | ロボット

 

物体追跡がうまく行ったので、アームを付けてボールを捕まえるようにしてみる。

右腕はすでに出来ているので左腕を作ることにする。

パーツはこんな感じ。

 

 

まず、コンフィギュレータで、サーボモータのIDと通信速度を変更する。

 

 

アーム製作中。

 

 

アーム完成。

  

 

アーム取付完了。

なかなかいい感じになった。あとは自動でうまくボールをつかめるようにできるか、だな。

 

 

物体追跡ロボットの制御部は至ってシンプル。
mbedの他にはコネクタぐらいしか載っていない。(^_^;) 

 

物体追跡ロボットのデバッグ(その5)
アームの動作テスト。
アームでボールをつかめるようになった。1回目失敗、2回目成功!

 

  

物体追跡ロボットのデバッグ(その6)
ボールをカメラで追跡->車体の位置決め->ボールの把持->ボールを投げる、を繰り返すようにした。
独りでボール投げをして遊ぶ?ロボットになった。(^-^)/

 

つづく...


Processing + mbed + 無線LANカメラで物体追跡ロボット製作(その1)

2012年01月13日 | ロボット

 

Processing + mbed + 無線LANカメラで物体追跡ロボットを製作。

以前作ったProcessingを使ったカラートラッキングをベースに物体追跡ロボットをつくる。

 ・車体ベース構成

 タミヤのユニバーサルプレートとTTLシリアルコマンド式のDynamixel AX-18Aサーボを使用。

 サーボはEndless Turnモードにしている。

 

 

 

・カメラ首振り用サーボ

 普通のPWM式RCサーボモータを使用。

 

 

・無線LANカメラ

 PLANEXの小型無線LANカメラCS-W07G-CY使用。

 

・カメラを取り付けるとこんな感じ

 

 

・mbed搭載

 mbedでサーボモータを制御。

 現在は、USBシリアル変換モジュール経由でPC(Windows7)と通信している。

 将来的には、Bluetooth SPP接続にする予定。

 

 

制御ソフトはこれを無線LAN用に改造して使用している。

 処理の流れは、

  無線LANカメラ -画像-> PC(Processingで画像処理) -サーボ指令値-> mbed --> サーボモータ

動画はこちら 

物体追跡ロボットのデバッグ(その1)

カメラだけで追尾できるようになった。

 

物体追跡ロボットのデバッグ(その2)

カメラで追い切れなくなったら、車体の左右の動きでもある程度追尾できるようになった。
調整してもう少し反応速度を上げたい。

 

物体追跡ロボットのデバッグ(その3)

調整して反応速度を向上させた。

(その2)の動画と見比べると、チッ、チッというサーボの音の間隔が短くなっているのがわかる。

 

物体追跡ロボットのデバッグ(その4)

前後左右に追尾できるようになった。

 

まだひも付きなのでバッテリ駆動できるようにしなければ... 

その他、色々改造中。

片腕だけアームを付けてみた。ちょっとバランスが悪いかな。

 

アームの単体動作テスト動画。

良さそうな感じなので左腕もつけよう。

 

 

(その2)へつづく...


TTLコマンドサーボのDynamixel AX-18Aを動かしてみた。

2012年01月11日 | ロボット

TTLコマンドサーボのDynamixel AX-18Aを動かしてみた。

まずはいろいろパーツの準備。

使うのは電源コネクタ変換基板。

 

 

ハンダ付け完了。

 

 

まずは、USB-シリアル変換モジュールでPCから動かしてみる。

実験回路できた。

回路はここを参考にさせていただいた。

 

 

C#で作った動作確認プログラムで動作確認できた。

動作確認プログラムは、以前RS304MDの実験に使ったプログラムを改造したもの。

また、事前にコンフィグレーターでAX-18Aの通信速度を115200bpsに変更しておいた。

 

 

次はmbedからの動作実験。

mbedからも動作確認できた。

 

 

―以上―


Processingを使ったカラートラッキング。

2011年12月09日 | ロボット

Processingを使ったカラートラッキングをやってみた。

今度のは無線LANカメラじゃなくて普通のUSBカメラを使っている。

画像処理もOpenCVを使わずにシンプル。

ここを参考にさせてもらった。

自分の用途ではOpenCVを使わなくてもこれで十分だな。

 

動画はこちら

速い動きにも追従している。

 

転がるボールにもある程度追従できる。

 

次はこれをmbed+RCサーボモータで…

 

mbed + RCサーボモータ + USBカメラできた。

 

構成は、Windows7 PC + USBカメラ + mbed + RCサーボ。

PC上のProcessingでUSBカメラ画像を処理して、USBシリアル変換モジュール経由でmbedにサーボ指令値を送っている。

どうもmbedのUSBシリアルドライバーとProcessingのシリアルライブラリは相性が悪いみたい。
仕方がないので、別途USBシリアル変換モジュールをmbedに付けている。(2012.10.29追記)

動画はこちら。

ある程度早い動きにも追従できている。

 

ここではUSBカメラを使用しているが、無線ALNカメラに対応させるのも簡単。 

物体追跡ロボットの製作”につづく...

 

こちらを参考にさせていただいた。

Processing Webカメラ/カラートラッキング

 


Android端末で無線LANカメラの画像を表示してみた。

2011年11月18日 | ロボット

Android端末で無線LANカメラの画像を表示してみた。

使用したのは、

 Android端末 : Acer ICONIA TAB A500

 無線LANカメラ : PLANEX CS-W07G-CY

 

・とりあえずwebview.loadUrl()を使って無線LANカメラ画像を表示するところまではすぐできた。

-----途中省略、要点のみ---------------------------------------------------------
    public void onCreate(Bundle savedInstanceState) {
       
      super.onCreate(savedInstanceState);
     
      WebView webview = new WebView(this);
     
      setContentView(webview);
     
      webview.loadUrl("http://192.168.1.100/?action=snapshot");
    }
----------------------------------------------------------------------------
さてこれを任意の位置に任意のサイズで表示するにはどうすれば良い?

 

・やっと表示位置とサイズを変えられるようになった。

ちょっと変更して url.getContent()を使ってみた。

-----途中省略、要点のみ------------------------------------------------------
  protected void onDraw(Canvas canvas)
  {

    try {
      URL url = new URL("http://192.168.1.100/?action=snapshot");
      InputStream is = (InputStream) url.getContent();
      Bitmap bitmap = BitmapFactory.decodeStream(is);
      is.close();
      canvas.drawColor(Color.WHITE);
      Paint paint = new Paint();
      Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, 160, 120, true);
      canvas.drawBitmap(resizedBitmap, 50, 100, paint);
    } catch (IOException e) {
      if (D) Log.d(TAG, e.toString());
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
----------------------------------------------------------------------------

 

bluetooth sppでmbed + サーボを動かすUIに、無線LANカメラ画像を表示するようにした。

一応カメラ画像は表示できるようになったが、カメラ画像の取得処理が重いのでUIの反応が悪くなってしまった。

SurfaceViewを使えば描画を別スレッドにできるらしい。試してみよう。

 

・SurfaceViewを使って、無線LANカメラの画像取得処理と表示を別スレッドにしてUIの応答性を改善した。

カメラ画像表示は6fps前後だが、何とかロボットのリモコンとして使えそうにはなった。

 

・Android端末で移動ロボット操縦、できた。

Android端末でロボットに搭載の無線LANカメラ画像をモニタしつつ、タッチパネルで操縦できる。

ロボットはmbedで制御Android端末とはBluetooth SPP接続

 

動画はこちら。

タッチパネルが滑らないのでちょっと操縦しずらい。(^^;)

 

― 以上 -

 

ここを参考にさせて頂いた。

電池で動くWi-FiカメラCS-W07G-CY(やっと)到着

プラネックスのネットカメラも試してみる