Is myrobotlab supported in 64 bit os/machines? Some errors.

I downloaded myrobotlab 14.9 and ran the bat file. The application worked fine but when I am trying to install/download services like arduino there are some errors like: need to reinstall processing. I'm just wondering if that version of myrobotlab is supported in 64 bit version OS/machine. BTW, my OS is Windows 7 Ultimate 64 bit. Anyway, I will try to use it in windows xp 32 bit.

GroG's picture

Hello michael96_27,Yes, it

Hello michael96_27,

Yes, it appears rather "goofed up" in 14.9 on Windows.  It's the integration of the Arduino GUI which is causing the problem.  I looked into fixing it correctly, but got side tracked with the Kinect stuff.

Give me a few days and I'll make a new release.  Fortunately, I can test with Windows 7 64 bit now .. (although this particular issue spans more than just that version of the OS)

GroG

michael96_27's picture

Okay :)

Thanks GroG!

BTW, is downloading/installing services errors will be fixed too? I do have an internet connection but some errors show in installing services.

Thanks again,

Michael

GroG's picture

Yes... I'm hammering on it

Yes... I'm hammering on it now :)

BTW - change your picture ... Don't be a scared gopher !

GroG's picture

Just so you know, I've got to

Just so you know, I've got to move all the options in the Arduino editor - here listed as "editor" to a non-Arduino editor named  at the moment "editor2". 

After this is done, it should be easy to enhance the new "editor2" with functionality like autocompletion...

michael96_27's picture

Thanks!

Thank You!

Btw, I just want you to let you know that 14.9 worked on win7 32bit. Sadly, it's not my machine. So, my option know is to wait for your update. Thanks Again!

michael.

michael96_27's picture

Updates?

Hey GroG,

Any updates in myrobotlab to work on 64bit machines?

Thanks,

Michael

GroG's picture

Still working on it.  

Still working on it.   Regrettably, a lot of the source code initially put in for the Arduino editor is very "messy" - it will need to be removed or refactored.

I'm curious how you plan to use MRL, could you mind elaborating?  Just so you know, the Arduino part which does not work on 64 bit currently is the graphics editor.  The actual "Arduino Service", which does not have a graphical part runs fine on 64 bit machines.  To use it you would need to use the official Arduino IDE to load a PDE/INO on the Arduino - and then run MRL headless...

michael96_27's picture

Some Help?

Can you help me in my project? Maybe some tips?

Here's my plan:

 

I do have a fully functional rover controlled by an arduino. It uses bluetooth shield for wireless communication together with some sensors. Currently, I made my personal GUI for my robot created in Visual Basic then I found MRL in the net. At first, I was trying to learn OpenCV but the problem is I don't have much knowledge in programming. So, my option now is to try MRL for Ball/Color and Face Tracking.

Could you help me in my project? For now, I want to try color tracking with my arduino rover. I can setup the camera in a pan/tilt and the rover will follow the color as well. I hope you can help me with this :)

Thanks, Michael

michael96_27's picture

Would you?

Hi again Grog,

I would just like to ask again if you can help me in my project. or maybe just give me some tips.

Thanks, 

Michael

GroG's picture

Sure Michael,  I'd be glad

Sure Michael, 
I'd be glad to help.   First thing - change your profile picture, You don't need to be a scared gopher :D (http://myrobotlab.org/user/295/edit)

It looks like you have a great project started.  I assume, the camera mounted on the rover is wireless?  Is this correct?  What is the lag like?  What is the type/model of camera?  What is the format of the video stream?  Do you have a camera on the laptop?  Can you upload a picture of what your project is, so far?  Sometimes a picture is worth 1000 words or more.

I checked the OpenCV service in 14.9 and it's not compatible with windows 64 bit...  I'm working on that now....

GroG's picture

The OpenCV & JavaCV parts

The OpenCV & JavaCV parts were recently updated to the latest releases.  In the process - some things broke (of course).  Right now, I've got stuff working again on Windows 7 64 bit with the latest OpenCV - There is some cleanup to do, but it does not look like it's in too bad shape..

Here's a Canny filter...

If your doing color tracking you might want to look over this tutorial in preperation - http://myrobotlab.org/content/opencv-how-isolate-object-hue-saturation-and-value

Here's a HSV filter - Oh my, don't I look scary !

To start with you might want to keep it simple..  
For color tracking you should get a well defined uniform color target in a uncluttered background..

michael96_27's picture

Thanks! :)

First, thanks for helping me here :)

Now, for your questions:

"I assume, the camera mounted on the rover is wireless?"

-For now, the camera isn't wireless but i'm planning to buy an ip camera.

"What is the type/model of camera?"

-Type of camera is webcam. Genius iLook 300 is the model.

The pictures will follow soon. :)

So, how will the program look like in MRL? I mean, is it full of programming(typing codes) or icon based programming?

BTW, I have read your tutorial. it's GREAT! I can't wait for the time it will be used for my rover :))

GroG's picture

Python will be the scripting

Python will be the scripting used to control your bot.

Basically, a very short script is needed to start the OpenCV service - add the appropriate filters for HSV tracking, and tell the OpenCV service to publish the tracking point to the Arduino.  Actually, it will publish to a Differential Drive service, which will publish commands to the Arduino.   The differential drive is a general purpose service which can track points.  
 

So is your bot working now?  Is it a differential drive i.e. a motor on each wheel, or does it have some other configuration.  This is where pictures help..

GroG's picture

Alrighty, I just tested it

Alrighty,
I just tested it on  Windows 7 64 bit... 
The repo is patched up..
And OpenCV & JavaCV have been updated.

You can download this "Bleeding Edge" Version by clicking the "All files in zip" on the build server's distribution page :

here -> http://myrobotlab.dyndns.org:8080/job/myrobotlab/ws/myrobotlab/dist/intermediate.729.20120820.0631/

  • unzip it
  • scroll down to OpenCV under the Runtime/Borg tab
  • right-click - "install"
  • wait a while - OpenCV has a lot of dependencies
  • make sure it installs with a success
  • scroll down to OpenCV under the Runtime/Borg tab - (again)
  • right-click - "start" -  name your service, something creative like "camera"  or "opencv"
  • go to the new tab
  • make sure the input drop down is set to OpenCV - (this is the opencv frame grabber, good for most webcams)
  • press "capture"
  • if it works take a screen capture and post it !
  • if it doesn't work send me the myrobotlab.log file from the same directory.

Going forward:
For things which don't work - please attach the myrobotlab.log file and try to provide as much information as possible. Answer my previous question : "So is your bot working now?  Is it a differential drive i.e. a motor on each wheel, or does it have some other configuration.  This is where pictures help.."

michael96_27's picture

Will keep you posted

Hi Grog!

I will update you on my progress by Saturday. Our exams are on going and I need to review XD.

I promise to answer all your questions and post pics of MRL running on my system.

 

PS: Is arduino service is now working in MRL on 64bit?. I didn't test it yet XD

 

Thanks, 

Michael

GroG's picture

Good luck on your exams ! No,

Good luck on your exams !

No, the 64 bit support is not done yet, a lot of scope was added.  If you subscribe to http://myrobotlab.org/releasenotes - you'll be sent an email when the next release is out, or I believe the RSS feed still works.

Regards,
GroG

michael96_27's picture

I think there's a problem.....

When I tried to install OpenCV Service from MRL, I assume it's downloading. But it took minutes, hours..... still it's not yet done. The problem can't be my internet because it is consistent and fast. Here's some pic.

BTW, how to attach files here? XD

GroG's picture

That seems correct. The

That seems correct.

The OpenCV binaries are at least 48 Megs... so yes, it would take a while.
You can attach a file to your original forum post, by editing it then scrolling to the end to "file attachments" - send the myrobotlab.log if it did not complete sucessfully.

michael96_27's picture

I tried installing again

I tried installing again OpenCV service but with no luck again. I tried installing it again and left my laptop open since last night. Is it normal for downloading this service? :|

 

BTW, this is my robot for now.(I didn't included pan and tilt platform.. And sorry for the low quality XD. I've taken it from a webcam.)

GroG's picture

Great !

Looks great.  

No, it shouldn't take that long.  You don't go through a proxy server do you? What kind of connection do you have? Were you going to attach the myrobotlab.log to this post?

michael96_27's picture

No. I don't go through a

No. I don't go through a proxy server. I am using internet from wifi connected to a DSL connection.

I've attached the log file. It's in .zip format cause .log files are not supported. :))

GroG's picture

1st thing - don't use 14.9

1st thing - don't use 14.9 release !

get the "Bleeding Edge" - the link is on the download page -

http://myrobotlab.dyndns.org:8080/job/myrobotlab/ws/myrobotlab/dist/ 

Find the latest and greatest ....

Looks like SwedKonsult checked in a bunch of Jython GUI updates (Yay!) ... so the latest is here

intermediate.737.20120823.0406/

click the download as zip - and try again... good luck :)

michael96_27's picture

I've donwloaded

I've donwloaded intermediate.737 release and tried again installing OpenCV service - with no luck again.

I've attached another log file("latest log file") in my post. Maybe the problem is in my system somehow isn't it?. However, I will try to donwload it in other system/laptop. :)

GroG's picture

Thanks for the log file...

Thanks for the log file...  

The first thing I've noticed is your running Java 7 (which has not been tested), I also have noticed that there should be more logging around the download...  I'll download Java 7 and start looking for the issue.

michael96_27's picture

What version of Java should I

What version of Java should I use?

GroG's picture

I've downloaded  Java 1.7.6 -

I've downloaded  Java 1.7.6 - and it still works on my system... :P

I'm looking at the logs in detail now..

Your system appears to download all the other dependencies - but it seems to be getting stuck when it hits the dlls...

Perhaps virus checking software which doesn't allow .dlls to be downloaded ?

michael96_27's picture

What virus checking software?

What virus checking software? I am using AVG security :) 

GroG's picture

Here's your log snippet

Here's your log snippet :

 

98712 [BORG 3675] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] com.googlecode.javacv#javacv;0.2!javacv-windows-x86_64.jar (28287ms)
98712 [BORG 3675] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] com.googlecode.javacv#javacv;0.2!javacv.jar (16844ms)
98712 [gui] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox -1 = 0
98712 [BORG 3675] INFO  class org.myrobotlab.framework.ServiceInfo  - Ivy2.run -cache .ivy -retrieve libraries/[type]/[artifact].[ext] -settings ivychain.xml -dependency net.sourceforge.opencv opencv latest.integration -confs runtime,x86.64.windows 
98713 [BORG 3675] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveBegin(String)]
98713 [BORG 3675_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
98713 [BORG 3675_outbox_0] DEBUG class org.myrobotlab.net.CommunicationManager  - sending local
98713 [BORG 3675_outbox_0] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox +1 = 1
98713 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveSuccess(String)]
98713 [gui] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox -1 = 0
98713 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
98714 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - /resolveSuccess#String notifyList is empty
98715 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveBegin(String)]
98715 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
98715 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - /resolveBegin#String notifyList is empty
460349 [AWT-EventQueue-0] DEBUG class org.myrobotlab.framework.ServiceInfo  - inspecting org.myrobotlab.service.IPCamera for unfulfilled dependencies
460349 [AWT-EventQueue-0] DEBUG class org.myrobotlab.framework.ServiceInfo  - org.apache.log4j can not be found in current thirdPartyLibs
460349 [AWT-EventQueue-0] DEBUG class org.myrobotlab.framework.ServiceInfo  - hasUnfulfilledDependencies exit true
 
Here's mine :

33323 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] com.googlecode.javacv#javacv;0.2!javacv.jar (3677ms)
33323 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox +1 = 1
33323 [gui] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox -1 = 0
33323 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - Ivy2.run -cache .ivy -retrieve libraries/[type]/[artifact].[ext] -settings ivychain.xml -dependency net.sourceforge.opencv opencv latest.integration -confs runtime,x86.64.windows 
33323 [BORG 27916] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveBegin(String)]
33323 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
33323 [BORG 27916_outbox_0] DEBUG class org.myrobotlab.net.CommunicationManager  - sending local
33324 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox +1 = 1

33324 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveSuccess(String)]33324 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveSuccess(String)]

33324 [gui] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox -1 = 0
33324 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
33324 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - /resolveSuccess#String notifyList is empty
33325 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveBegin(String)]
33326 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
33326 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - /resolveBegin#String notifyList is empty
116726 [BORG 27916] INFO  org.myrobotlab.framework.Ivy2  - ivy.retrieve returned 18
116726 [BORG 27916] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveSuccess(String)]
116726 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_ts242.dll(native) (3172ms)
116727 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_gpu242.dll(native) (1698ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_imgproc242.dll(native) (6427ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_ml242.dll(native) (2130ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_core242.dll(native) (7880ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_objdetect242.dll(native) (2790ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_photo242.dll(native) (925ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_flann242.dll(native) (2075ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_highgui242.dll(native) (4251ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_calib3d242.dll(native) (3277ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_legacy242.dll(native) (4982ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/tbb.dll(native) (920ms)
116727 [BORG 27916_outbox_0] DEBUG class org.myrobotlab.net.CommunicationManager  - sending local
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_video242.dll(native) (1287ms)
116727 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox +1 = 1
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_stitching242.dll(native) (3804ms)
116727 [gui] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox -1 = 0
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_videostab242.dll(native) (2246ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_nonfree242.dll(native) (1283ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_contrib242.dll(native) (4037ms)
116727 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - [SUCCESSFUL ] net.sourceforge.opencv#opencv;2.4.2!x86.64.windows/opencv_ffmpeg242_64.dll(native) (29045ms)
116728 [BORG 27916] INFO  class org.myrobotlab.framework.ServiceInfo  - Ivy2.run -cache .ivy -retrieve libraries/[type]/[artifact].[ext] -settings ivychain.xml -dependency com.sun.jna jna latest.integration -confs runtime,x86.64.windows 
116728 [BORG 27916] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveBegin(String)]
116729 [gui] DEBUG org.myrobotlab.framework.Outbox  -  msgBox size 1 msg [resolveSuccess(String)]
116729 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
116729 [gui_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - /resolveSuccess#String notifyList is empty
116729 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Outbox  - removed from msgBox size now 0
116729 [BORG 27916_outbox_0] DEBUG class org.myrobotlab.net.CommunicationManager  - sending local
116729 [BORG 27916_outbox_0] DEBUG org.myrobotlab.framework.Inbox  - gui.msgBox +1 = 1

Notice you can successfully download .jar files but not .dll

michael96_27's picture

Oh, Now it's a problem XD

Oh, Now it's a problem XD

GroG's picture

I suspect that is it... The

I suspect that is it...
The dlls as well as all serice dependencies are on codegoogle.com -
I'm curious what happens if you try to manually download it ...

http://code.google.com/p/myrobotlab/source/browse/#svn%2Ftrunk%2Fmyrobotlab%2FthirdParty%2Frepo%2Fnet.sourceforge.opencv%2Fopencv%2F2.4.2%2Fx86.64.windows

click on one of the dlls .. do you get a popup or warning from the AVG software ?

michael96_27's picture

No, there isn't a popup or

No, there isn't a popup or warning come from the AVG. However, I've successfully downloaded a dll.

Is there a way on how can I manually install these dlls?

 

BTW, Thank you very much for your help. And, sorry to disturb you XD

GroG's picture

It's possible, but a bit of a

It's possible, but a bit of a pain - that is why its done "automatically"
 

There's a couple of possible workarounds - 

1. temporarily turn off the virus checking software

2. download the .dlls manually 

The problems with #2 is - it will not update the local Ivy files - which means MRL will not understand that all the OpenCV dependencies are available, and you will not be able to start the service graphically.  However, if you choose to go with #2 - you will need to make the following sub-directories under your
unzipped - intermediate.737.20120823.0406 directory

libraries\native\x86.64.windows

This is what it looks like on my system...

michael96_27's picture

I'll try to turn off my

I'll try to turn off my firewall and try again to install openCV service. Hope it works(crossed fingers XD) If this doesn't resolve the problem i'll try it manually. How can I start OpenCV?

GroG's picture

If you get it downloaded

If you get it downloaded automatically - it's trivial - right click - start  ... (you just have to name it something)

If you install manually - you'll need to use the Jython service

Copy - paste the following in the Jython IDE & hit execute (the button with the gear), when the dlls are in place...

--------------------------------

 

from java.lang import String
from java.lang import Class
from org.myrobotlab.service import Runtime
from org.myrobotlab.service import OpenCV
from com.googlecode.javacv.cpp.opencv_core import CvPoint;
from org.myrobotlab.service import OpenCV
 
# create or get a handle to an OpenCV service
opencv = Runtime.create("opencv","OpenCV")
opencv.startService()
# reduce the size - face tracking doesn't need much detail
# the smaller the faster
opencv.addFilter("PyramidDown1", "PyramidDown")
------------------------------------------------------------------
michael96_27's picture

It WORKED! YEEHEE XD

It FINALLY WORKED! Here's the pic. I tried shutting down my firewall and it worked XD. Truly, it's the virus checking software s the problem

GroG's picture

Mystery Solved ! That's great

Mystery Solved !

That's great - now the next step ....

is your camera supported by OpenCV ?

Does the capture button work :P

michael96_27's picture

Yes it's supported ;)

Here's a screenshot of me XD

--It's dark there but I will BUY a new webcam cause' it's just only the webcam from the laptop.

michael96_27's picture

How can I set the width and

How can I set the width and height for the video stream?

GroG's picture

Success !

You can't set format directly on the camera - there is a format parameter which can be set through Python - but some models & makes of cameras ignore it anyway.

You can resize the stream by using the PyramidDown PyramidUp to halve or double (respectively) the stream.

michael96_27's picture

What's the next step :)

I've got OpenCV service running, purchased a new webcam, and made a pan and tilt with servos for the camera. What should be the next step :) For this project I want color tracking first :))

 

BTW, What's the joystick service? Can it be used to control arduino robots?

GroG's picture

Alrighty, Let's color track

Alrighty,

Let's color track something

1. Make your experiment simple at first.  Find a clear and non-cluttered area to setup your system.  Have a monotone wall or floor in the background.

2. Run through the HSV tutorial with a colored object.

3. When your satisfied with the values you got from the GUI - let me know them - the next step would be making a small & simple Jython with OpenCV and the HSV values your interested in.  This makes startup much quicker

Going forward you can use the script to start and configure all services quickly, including starting the camera capture, loading the approriate filter, etc.  After the service start up and begin tracking, the OpenCV service will be configured to publish a tracking "point" - you'll send this point to a Tracking Service of a PID Service - The point of this middle service is to re-translate the OpenCV graphical 2D point into correction values sent to the Arduino & Servos..

Clear as mud?

michael96_27's picture

Alrighty, I am working on it

Alrighty, I am working on it now. I'll post pictures as soon as I'm satisfied with the values. :)

michael96_27's picture

Here it is!

GroG here's the pic :

BTW, Can I use the joystick service to control robots?

GroG's picture

Excellent work Michael ! Very

Excellent work Michael !

Very nice - now send me the values that you set up for the InRange filter.

Nice work !  Seems like you caught on quickly...

As for the Joystick - yes, its just another input device - its coordinates would need to be remapped in a service such that they are translated to command sent to the Arduino, Motors, or Servos - but most definately ..  the Joystick service can be used to control robots.  Do you have a joystick or PS2/3 controller?

I usually make them an "override" to autonomous bots, such that if I don't like what the bot is doing autonomously, then I take control with the joystick, or keyboard...

send me the InRange values and I'll send you a starter Jython script... 

BTW - thanks for uploading pictures, I like visualizations - but if you could just right-click - image properties - width = 600 (height should auto-adjust) - that way it doesn't blow out the comment format..  Thanks.. :)

michael96_27's picture

Here are the value in InRange

Here are the value in InRange filter:

 

hue: 3, 33

saturation: 87, 256

value: 230, 256

GroG's picture

Alrighty..... The "next

Alrighty.....
The "next step" - is to begin incorporating what you want into a script - I created this one so that you can get an idea of the possibilities.

You will need the latest bleeding edge build - since there was some filter stuff I had to fix. Additionally, there is probably a memory leak in FindContours, or the Jython console logging - I'll figure that out later, since my current focus is fixing up the Arduino service

from java.lang import String
from java.lang import Class
from org.myrobotlab.service import Runtime
from org.myrobotlab.service import OpenCV
from com.googlecode.javacv.cpp.opencv_core import CvPoint;
from org.myrobotlab.service import OpenCV

# create or get a handle to an OpenCV service
opencv = Runtime.createAndStart("opencv","OpenCV")

# add the desired filters
opencv.addFilter("PyramidDown1", "PyramidDown")
opencv.addFilter("InRange1", "InRange")
opencv.addFilter("Dilate1", "Dilate")
opencv.addFilter("FindContours1", "FindContours")

# change values of the InRange filter
opencv.setFilterCFG("InRange1","hueMin", "3")
opencv.setFilterCFG("InRange1","hueMax", "33")
opencv.setFilterCFG("InRange1","saturationMin", "87")
opencv.setFilterCFG("InRange1","saturationMax", "256")
opencv.setFilterCFG("InRange1","valueMin", "230")
opencv.setFilterCFG("InRange1","valueMax", "256")
opencv.setFilterCFG("InRange1","useHue", True)
opencv.setFilterCFG("InRange1","useSaturation", True)
opencv.setFilterCFG("InRange1","useValue", True)

# change value of the FindContours filter
# opencv.setFilterCFG("FindContours1","minArea", "150")
# opencv.setFilterCFG("FindContours1","maxArea", "-1")
# opencv.setFilterCFG("FindContours1","useMinArea", True)
# opencv.setFilterCFG("FindContours1","useMaxArea", false)

# ----------------------------------
# input
# ----------------------------------
# the "input" method is where Messages are sent to this Service
# from other Services. The data from these messages can
# be accessed on based on these rules:
# Details of a Message structure can be found here
# http://myrobotlab.org/doc/org/myrobotlab/framework/Message.html 
# When a message comes in - the input function will be called
# the name of the message will be msg_++_+
# In this particular case when the service named "opencv" finds a face it will publish
# a CvPoint.  The CvPoint can be access by msg_opencv_publish.data[0]
def input():
    #print 'found face at (x,y) ', msg_opencv_publish.data[0].x(), msg_opencv_publish.data[0].y()
    arrayOfPolygons = msg_opencv_publish.data[0]
    print arrayOfPolygons
    if (arrayOfPolygons.size() > 0):
   	print arrayOfPolygons.get(0).centeroid.x(),arrayOfPolygons.get(0).centeroid.y()
    return object

# create a message route from opencv to jython so we can see the coordinate locations
opencv.addListener("publish", jython.name, "input", CvPoint().getClass()); 

# set the input source to the first camera
opencv.capture()

What this script does :

  • it creates and starts the an OpenCV service
  • it adds the appropriate filters
  • it configures the filters
  • it sets a message route from the OpenCV service to the Jython service for "found polygons"
  • for any found polygon, the Jython service prints out the first polygons center coordinates

Here is what happens on my laptop. 
You'll noticed the 4 filters are not displayed, this is because the service is not notifying the gui that new filters have been added, although, they were added programmatically.  At the moment, if you add a filter programmatically, you'll have to remove it programmatically.  Some gui notification details are low on my priority list.  So, whatever filter values you have assigned, I had something which fit the criteria,.Strangely, I think it was my hair :D 

It found 1 polygon and sent it back to the jython service.

So the polygon's center is printed out in the jython service's "jython console".
here you can see the x,y location of that polygon at (228,87)

Now, the Jython service could take those two values, adjust or modify them, and send them to an Arduino service which has 2 Servo's attached ....   and viola !  you have color tracking :)

Hope this makes sense.

BTW - this is getting very off topic, if you wouldn't mind could you create another forum entry if you have another question or preferrably create a page and post your Robot Project !  For an example look at DancesWithRobots' Houston entry - http://myrobotlab.org/content/houston

GroG's picture

Disregard

Disregard the 

"</sending></sending>" tags at the end of the script... This is being added by Drupal for some incorrect reason...

michael96_27's picture

The script is not yet sending

The coordinates (288,87) can be mapped/adjusted to fit servos' angle isn't it? :D

And in the script:

 

opencv.setFilterCFG("InRange1","hueMin", "3")
opencv.setFilterCFG("InRange1","hueMax", "33")
opencv.setFilterCFG("InRange1","saturationMin", "87")
opencv.setFilterCFG("InRange1","saturationMax", "256")
opencv.setFilterCFG("InRange1","valueMin", "230")
opencv.setFilterCFG("InRange1","valueMax", "256")
opencv.setFilterCFG("InRange1","useHue", True)
opencv.setFilterCFG("InRange1","useSaturation", True)
opencv.setFilterCFG("InRange1","useValue", True)

Can I edit the values so can I choose other colors? Am I correct? :))

GroG's picture

The (x,y) represents the

The (x,y) represents the pixel location of the center of the polygon found, yes it can be re-mapped to servo angle.

Yes, you can change color by changing the filter configuration values...

If you get the Sphinx service to working, with a bit more logic added to the script, you could get it to recognize the word "red" and set the filter configuration to appropriate "red" settings, or have it recognize the word "blue" and set the appropriate "blue" filter settings, etc....

 

michael96_27's picture

The jython console is not

The jython console is not printing x,y coordinates, Why is that? Do I need to download/install jython service? cause it's says "not installed" in the menu but it's in the tab. :)