ラベル 空間認識 の投稿を表示しています。 すべての投稿を表示
ラベル 空間認識 の投稿を表示しています。 すべての投稿を表示

2013年2月13日水曜日

Image recognition and Noise reduction

ロボットの原価を低減させる為に、市販の部品を使っていますが、いろいろ課題が発生します。
ロボットの目には、2,000円台のWebcamを使っていますが、高価な物に比べて不安定です。従って、画像認識において、図1のような元のイメージからピンクのボールを認識する場合、大量のノイズが発生する事が多いです。
図2は、その状態を解り易くする為に二値化した物です。大量のノイズが存在します。
このような状況で、図3の様にボールだけを認識しなければなりません。
画像処理は、奥が深いです。だから、面白いです。更に、ロボットと組み合せると、”面白い”の二乗になります。ロボットは、動いていますから、限りなく短い時間で処理をしなければなりません。その情報を元に、駆動系の制御をします。
webcamが、どのような画像を取得しているか解りません。従って、プログラムはそれを前提に作らないとなりません。いやはや、とっても面白い世界です。

しかし、結局、ロボットは、ソフトウェアが勝負ですね。また、ソフトの工数を減らす為には、高価なデバイスが必要になります。結局、高い原価構成のジレンマに陥ります。
だから、企業レベルでロボットの原価を考えると、価格は高くならざるおえません。
それを、僕は、RDCSで解決しています。

図1 元画像 
(白い格子は、画像の保存時に付加)
図2 noiseの大量発生
noiseが解り易いように二値化した画像
HSV色空間では、大量のnoiseを拾ってしまう場合がある
 図3 認識結果
noise処理を行い、ボールだけを認識する 
この処理もRaspberry Piで実行しますが、画像の保存をしなければ処理は瞬時に終わります。

peace!

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!

2013年1月17日木曜日

Recognizing and Extracting tomatos from a photo digital image.

トマト収穫ロボットを作るためには、画像からのトマト認識が重要です。
その画像認識技術の開発を進めています。
複数の方法を組合せて認識しますが、安定してきたので紹介します。
OpenCVも使っていますが、認識技術の中核は自作しました。

下の写真は、遠目で撮った写真から収穫が可能なトマトの候補を認識した結果です。何故、このような離れた位置からの認識が必要なのかは、長くなるので別な機会に説明します。
まだまだロジックの改良が必要ですが、目標は達成できそうです。
トマト収穫ロボットでは、2000x1500程度の画素数のwebcamを使うので、遠目の撮影を行う為のトマトとの位置関係、そして移動ロボットへの搭載方法を考えています。
元々、Low Cost Robotなので、1台専用にしても良いですが、、、

葉の陰や、重なっていても、それなりに認識しています。
この処理は、ロボットに搭載しているRaspberry Piの性能では、実用上の速度で出来ないので、RDCS上に配置されたi5 2.5GHz のマシンで動く、Space Recognizing Serviceで行います。その結果をロボットに返します。
遠目の撮影で、かつ 影になっているのトマト認識
黄緑色の十字マーカーは、認識した収穫候補のトマトを表します 
(処理対象の画像解像度 3680 × 2760)
画像認識の点で言えば、如何に、一枚の画像から多くの情報を、位相関係も含めて、かつ高速に抽出するのかが、私の一番重要視している点です。
50センチ程度から撮影した画像で行えば、ほぼ位相関係も含めて認識が可能となってきました。実際の収穫対象のトマトを選定する為には、まずは十分です。あとは、画像から推定するトマトの糖度ですが、なんとかなるでしょう。なんたって、サンプルが大量にありますから、実験しながら試行錯誤し、閾値の組合せを作れば良いです。接近したトマト画像の認識処理は、Raspberry Piで処理する目処も立ちました。

ちなみに、このトマトは、フルーツトマトで、糖度が約10以上あります。
私のトマト栽培は、化学合成農薬/肥料や、有害物の混ざり込む可能性のある農業用水を使いません。有用な微生物や安全な水を活用して作っています。
その理由は、自分が化学合成物に少し敏感な体質だからです。安心して食べれる物を作って、普通に食べれるのは、そのような体質の私にとっては大きな幸せです。

あ〜、時間が足りない、プログラムもっと、作りたい、改良したい。
工作の方は、ラジコン飛行機をしていたので、なんとかなりそうです。
そんな事もあり、主要な機能を遠隔から無線で操縦するする物はラジコンだと思っています。ロボットは、対象の作業を自律的に行う装置だと考えています。私は、人手を減らす為に使うので操縦しないですむようにしたいです。

peace!

2012年12月16日日曜日

A new wheel robot (testing machine) & New Algorithm

Today I assembled a new wheel robot.
This robot is used  to debug functions of RDCS.
These functions are Moving Control, Space Recognizing Service, Motion Planning Service and more.

This robot don't use a Xtion for 'Space Recognizing'.
I developed a new algorithm of 'Space Recognizing'.
New algorithm use one webcam.


peace!

2012年11月15日木曜日

Moving Control Flowchart and Moving Mode of 4 legged robot

The below figure is a flowchart of moving control.
Moving control is able to call as a 'Moving Control Service'.
This flowchart is a part of RDCS.




My 4 legged robot has 5 moving modes.

(1) On board mode
    This mode is to move mounting a harvesting machine and other working machines.
    An importance function of this mode is to move with keeping machines in a horizontal position.
(2) Walking mode
    This mode is to walk  with  loading a  package(20Kg).
(3) Traction mode
    This mode is to tractor other robot and carts.
        sample --> http://robot009.blogspot.jp/2012/10/prototype-robot-movie.html
(4) Climb and down stairs mode
    This mode is to climb up stairs and to down stairs with a light load package
(5) ike-ike mode
    This mode is to accomplish on the irregular ground.

My 4 legged robot automatically adjust its moving  mode to the situation.

I have built up a prototype robot to validate the above functions.
At the result, I've found many issues, improvements and bugs, so I'm improving away off.
On the other hand, I feel increasingly confident that RDCS is  beneficial.
(RDCS is a robot development platform.)


"Requester"  is " upper level programs or services of RDCS.
"RDCS Servicer"  is common functions of RDCS such as "4D Space Database",  Space recognition", "Obstruction Detection" and other functions.

RDCS: Robot Distributed Cooperative System
             --> http://robot009.blogspot.jp/2012/09/update-rdcs.html

私が開発している4脚 歩行 ロボットは5つの移動モードを持っています。
農作業の様々場面で、活動する為にはこれらの複数のモードが必要です。
私のロボットは、分散コンピューティングの考え方を基本にしています。
つまり、計算リソースは、必要に応じて組合わせる事ができます。
下の図は、RDSCのMoving Controlのフローです。
詳しい説明はしませんが、こんな感じです。
開発しながら、Documentを、残さないと大変なことになるので、、、
学者風に説明すれば、かなりの量の論文が書けます。
特に、自己再帰的に、4脚を制御して、路面に合わせて最適な接地位置を選択する
機能なんか、とっても面白い、論文になります。
4脚ロボットは、かなり面白いです。また、応用の範囲が大変広いです。

そのひとつが、Actuatorです。逆に開発しなくてよかったなぁと思います。
しかし、最近は、昼間は本職(農業)で、夕方からロボット開発で、毎晩遅くまでやっています。
でも、すげー楽しいです。
特に、4脚歩行のmotion データの自動作成プログラムや、空間認識プログラムは、錆付いた脳みその、お掃除に最適です。

英語の内容と違った内容になってしまった。まぁ、いいかぁ





By the way, I am a farmer. (*^^)v
This morning, I sprinkled the lactobacillus on the ground of my farm.
I use the lactobacillus to improve the microbial environment of the soil in my farm.
This picture is the shot of  pouring the home fermentation lactobacillus out of the bottle to the water pot. To sprinkle the lactobacillus on the farm, I usually dilute by 1%.



この写真は、自家製の乳酸菌を作物や土に散布する為に、じょうろに移している場面です。
今朝の乳酸菌を、畑に撒く準備をしている時に、写しました。
乳酸菌を定期的に土に散布すると、土壌中の微生物環境を良い状態に保てます。
農業を始めてから乳酸菌を使い、いろいろ効能を検証してきましたが、3年間の経験から言うと、


・乳酸菌を薄めるときには、直接水道水を使わない。
 塩素が、影響して菌が死にます。
 私は、ビタミンCを使って還元した水道水を使います。


・土中の環境改善に効果がある。
  土中の環境改善により、病原菌が減り、かつ虫も減ります。
  また、土中の菌が増えるので、根の周りの環境がよくなり、
  結果的には、美味しい野菜になります。
  特に、タマネギには効果絶大です。

・防虫/殺虫効果は、単体利用では期待しないほうが良い。
 確かに、乳酸菌は酸なので、PH4程度に薄めた液は、強酸ですから
 アブラムシなどに若干の効果がありました。しかし、同時に葉面の菌を殺すことにもなります。
 私が、効果のあると認識しているのは、弱酸性にして、アルカリ性のものと、
 交互に散布する方法です。水ナスなどでは、虫がつかなくなります。
 2年続けて、露地栽培で、化学農薬を使わない水ナスを作ることができました。

 最近は、水ナスにつく虫や病原菌に化学農薬が効かないという話を聞きます。農薬で洗い流すように、農薬を丁寧に散布しているそうです。であれば、農薬の本来の意味がありません。
 数十年以上化学農薬を使い続けているので、基本的に農薬を使った営農方法に、害虫のライフ
 サイクルが、お温暖化の環境と相まって、適応しているのかもしれません。
 私も、乳酸菌を薄めた液で、ナスについたアブラムシを洗い流す時もありますが、翌日は、
 ほのかにヨーグルトのにおいがします。(営農1年目です。今は、アブラムシがつかないので
 そのような使い方はしません)

以下は、私の主観的な考えですが、、、、、
 私の方法は、葉面菌と共存できる状態で弱アルカリ性と弱酸性の両方の環境を、
 交互に人工的に発生させて
 「ここはなんか、おかしい卵をうみたくない」と”遺伝子の深いところにある部分に、生理的に感じさせている”のかもしれません。 基本的に、病原菌や虫は、中性の状態を好みます。
化学農薬に対する記憶は、遺伝子の中にはないですから虫は避けないのではないでしょうか?避けなければ、生き残った虫は、耐性を持ってしまうのは、考えられることです。
また、化学農薬の多くは、中性ではないでしょうか?

農薬で洗い流すような撒布方法をするのであれば、ロボットでは無理だと思います。この方法は、葉を一枚一枚洗う為に、高圧で散布する農薬を被ることになります。
しかし、葉面に霧状の散布をするのであれば、ロボット的な作業工程を組み立てることができます。

アブラ虫を寄り付かせない為には、防虫テープが、大変効果を発揮します。
確か、農業試験場の実験報告もあります。
私は、ナスやトマトハウスの周りにも、張っています。
テープで囲まれた内側に虫を捕捉するテープを張り、1週間程度様子を見ると、
テープで囲んだ箇所と、囲んでないところでは、見た目で効果が比較できます。
地上から0.5m、1m、1.5mの間隔で張れば十分です。
風に吹かれて、ユラユラすると、光が乱反射されて、虫が方向感覚を失うそうです。

化学農薬利用のドグマにはまり込んでいる、農業現場です。
ここには、TPPは関係ありません。

ロボットの話から、、、脱線しました。

Peace!