ラベル robot eye の投稿を表示しています。 すべての投稿を表示
ラベル robot eye の投稿を表示しています。 すべての投稿を表示

2013年2月9日土曜日

Performance of the recognizing a moving ball on Raspberry Pi

自律型ロボットは、自分で空間認識をする必要があります。その為には、リアルタイムで画像解析が必要になりますが、Raspberry Piでそれをする事は無理があります。
しかし、どこまで可能なのか?知る必要があり各種の画像処理のパフォーマンステストをしています。
結果的に言えば、私のプログラムのチューニングをすれば、かなりの事ができるという事でした。プログラムを見直すと、無駄な処理やループが沢山ありました。今は、とにかく、数を優先している為、ロジックに無駄が沢山あります (-_-)

(私が開発しているのは、人が操作しない、自律型ロボットです。人が操作する物は、ラジコンだと考えて、ハッキリ分けています。趣味の一つがラジコン飛行なので、、、)

テストの例
「画像入手(webcam 640x480 CV_U8C3) -> 動くボール認識 -> 認識画像出力」
上記100回の処理時間 → 10回計測 平均45秒 約2回/秒 の認識処理
同上 ファイル出力無し → 10回計測 平均30秒 約3回/秒 の認識処理

テスト方法は、下図のピンクのボールを手に持って、Webcamの前で不規則に動かします。Raspberry Pi上の認識プログラムが、usb接続されたwebcamから画像を入手して、動いているボールだけを認識します。
図1
ピンクのボールをwebcamの前で不規則に動かし、ボールだけを認識する
図2
左上から右下に、処理結果の順で並べている
赤が、手で不規則に動かしたボールの認識結果。
光の影響があるので、完全な'円'になっていない。白丸は同じボールであることを示す
認識プログラムは、複数の動く物体を認識できる
図2の8枚のボールの動きは、約3.6秒間(45秒/100x8)の動きのsnapshotになります。
1回の処理毎に、認識した結果をファイルに保存した画像の一部を並べました。保存をしない場合は、同じ時間で、12回のボール認識ができます。

1秒間に、3回の画像認識処理ができれば、僕のロボットの要求仕様を十分に満たす事が出来ます。実際には、風景内の沢山の認識をしているので、ロボットの運用上は1秒間に1回の画像認識処理で十分です。

Raspberry Piは、見た目以上に、すごいヤツです。

peace!

2013年2月7日木曜日

A memorandum : fswebcam

fswebcamは、デフォルトでbannerを出力するので、それを抑制する設定。
忘れない様に、、、
いままでは、画像処理の途中で無くなっていたので無視していたけど、
ある処理をする為に、赤いラインが邪魔になるので、調べました。
デバイスを指定しているのは、Raspberry Piに2台のWebcamを接続している為。
保存ファイル名は、2050-02-07-123950.jpgの様になります。


fswebcam -d /dev/video0 -r 640*480 --no-banner --line-colour '#FF000000' -save /tmp/`date +%Y-%m-%d-%H%M%S.jpg` -S 3


bannerが消えました
ファイル名の2050年は、冗談です。 (^_^)

peace!

Recognizing tomatos on my robot using Raspberry Pi

15万円台、トマト収穫ロボットの基礎技術の紹介です。

今回は、ロボットの目、形状認識の紹介です。
特徴は、2次元の画像データ1枚から、トマトを抽出し、かつ抽出したトマトの3次元の位相関係を作る点です。この位相関係が出来れば、その後の処理を効率よくすすめる事が出来ます。
    Step1: 2次元画像を使ったトマト形状認識と、その他 controlデータ抽出
    Step2: 3次元位相構造の作成

この認識で使っているアルゴリズムは、Computer Visionで開発された様々なOpenCVに実装されているアルゴリズムと、トマトを栽培しながら観察した植物体の位相構造などから作ったアルゴリズムを組合せました。(3D GISの開発経験も役に立ちました)
この内容は、トマト収穫機や収穫済みのトマトのパッキングなど、広範囲に使える基礎的な技術です。また、webcamなどの安価なカメラで行う事を前提に開発しています。

下に表示した画像からのトマト抽出結果は、ブログ標題の背景写真を使っています。トマトの表面が光っている、またガクがついているなど、画像を使った形状認識に於いては、条件が悪いデータです。

青い範囲(640x480)が、Actuatorのmotion planning の対象であり、その中は精度を高めて認識をしています。赤い丸で囲まれた物が、第一段階の画像処理をして認識したトマトです。青い四角の範囲では、ほぼ100%の認識です。この処理は、アルゴリズムの高速化に苦労しました。今は、i5クラスのマシンで1秒の数分の1以下のオーダです。

第一ステップの認識
青い四角は、特に認識精度を要求する範囲
赤い○は、トマトとして認識した形状
シアンの○は、後処理に必要なcontrolデータ
画像のふちは、切れたデータの処理が完成していないので
誤認識が発生しています。(改善予定)
この処理の後に、第二段階として、さらに独自のテンプレートを使った位相構造抽出処理をして、一定の誤差内の3次元データを生成します。3次元データが出来た段階で、トマト認識処理は終了です。第二段階は位相構造の演算が主なので短時間で終わります。
その3次元データは、ActuatorのMotion Planningの元データになります。
このように書くと、単純だけど、僕に取っては認識処理は結構複雑で悩みました。

可能な限り、2次元の画像データから3次元のデータを生成します。その方がコストが安く出来ます。全ては、15万円トマト収穫機の実現のためです。

この認識は、Raspberry Piの性能では負荷が高いので、他の処理への影響も考えてserviceで実施する様にしています。
ただし、プログラム処理ロジックのチューニングの余地がかなりあるので、他の機能の性能が定量的に把握できた段階で、再検討をします。1台のRaspberry Piを専用に割当てても良いし。。。。。

今は、Raspberry Piで画像を取得して、Recognizing Serviceに送って、あっという間に処理して返します。RDCSの腕の見せ所です。
RDCSによって、Raspberry Piは、実際の性能以上のロボットコントローラになります。
こういうのが、smartですよね。
The network is the computer. いい言葉です。

peace!

2012年10月27日土曜日

New Machine & Eye

It's new machine for robot developing.

I can make original parts.

New Eye
UCAM-DLE300T
Full HD(1920x1080) webcam
I will use a computer vision part of moving control.

happy!

2012年9月24日月曜日

Xtion vs Kinect, which is the best Robot EYE


The purpose of introducing robots into farming is to improve productivity through reducing labor and other cost. My robots have  to work without the help of farmers.
Therefore my robots must have  self-control feature. I think the most important technology to acquire self-control is to recognize the space. This technology is base on  space 3D scanning and 3D recognition.
To develop the technology, I did a lot of experiments with  Xtion and Kinect. I decided to adopt Xtion from the results of the experiment.
(1) small and light
(2) bus power
(3) near mode
(4) cross platform (Arch Linux, Ubuntu, OSX, WindowsXp)
(5) cooperative with OpenCV and PCL
(6) commercial use free

私は、実際に業務で使えるロボットを開発したと考えています。
それは、人件費の削減を通じた生産性の向上をはたすものでなければなりません。
そのようなロボットを実現ためには、空間認識が最も重要な技術であると考えています。その為に、3Dスキャナーとして、XtionとKinectを実験してきましたが、ロボットに適しているのは、Xtionという結果を得ました。

Xtion and Kinect