Idea for robot navigation

Hello,

I want to make a robot which should play a game. It should detect and grab balls of a certain color in a ground (small play area table made of wood). So it has to move in the play area, find the ball of a specific color and grab it, then find the next ball of the same color and so on..

I am using a camera for the robot to see balls. The problem is that when the balls are far away from the robot (and its camera), there color intensities changes along with their size so it becomes difficult for the robot to move in their direction as it does not identifies them.

I wanted some ideas on which approach should i use for my task.

Also are sensors a more effective way of doing it rather than just a camera?

Offcourse the ideal situati0on would be that the robot is fast enough and accurate.

 

Regards
Saher Maqsood

**Yeah, what Jinx said.

Can**
Yeah, what Jinx said.

Can you tell us about your robot? What processor, what camera, what color are the bolts that hold it together? Basically it would help us to help you if we knew a lot more about your robot.

Did you write your own vision software or are you using OpenCV (and if not, why?)?

And please show us some pictures, both of the robot and a couple of shots from the camera displaying the problem (a good shot that can identify the ball, and one that can’t).

I have played with machine

I have played with machine vision, got frustrated, come back to it, get frustrated, come back to it etc.  I find it very frustrating yet I have hopes that one day, I will beat it and not be bad at it.  

As you have found out, the color will always be different depending on how far away you are, the light intensity, the light type, light position, multiple light sources etc.  Supposedly, you can use hues instead of colors since they are less impacted by changes in light.  I was not successful though and had same problems in both.  

If you have control over where your robot is playing ie perhaps you are having it play on an all white background you can look at your screen and look at the blobs or objects that are “closest” to the color you want, then go to your closest one.

Another approach I played with and got sort of kind of working was to do a histogram of all the blobs.  I would then take the blobs that were closest in color to what I want (let’s say red here).  I would then intensify the red on those blobs, change it to a monochrome with a red filter so only the reddest blobs show up as black.  By cleaning up the clutter in the image like this, you can then be accurate as to where and how big the images you care about are. You may have to do this several times with different values to get accurate positions depending on light conditions.

If you can get the machine vision piece working in many types of lighting, this is a good approach.  I would combine it with ultrasonic sensors for when you are pretty close to it (which might be all you need) and infrared sensors for when you are extremely close to fine tune picking the balls up (might not need).  

Good luck.  Let us know how you make out.

Regards,

Bill 

 

 

Hardware used and progress so far

Hello,

Thaks for all the responses.

I am using galileo G2 board. The motors and the drivers are running on it. All the image processing is handled by it only. The galileo board has an intel processor on it.The arm for the robot is Lyxnmotion AL5A. I have used Modelcraft RB350100-0A101R Motors and  Conrad-Miniatur-Fahrtenregler drivers. The camera is a basic logic link camera.

http://logilink.com/showproduct/UA0072.htm?seticlanguage=en

I am using OpenCV functions and have not written my own functions. I am hoping OpenCV is fast enough.

I am using the HSV color model now. Since the robot has to detect yellow and green objects on a blue background, so onject detection seems to work for now.

Now the problem is that the robot has to first find the objects. So far I am just making it turn and grab a new image with every turn(and forward) movement. But it makes it very slow. My question is how could the search time be improved? I think image processing will keep it slow. Can I use some long range sensors for finding yellow and green objects? any ideas would be of great help.

A small video of my robot is on the link below. It only shows the robot going close to the object once it has detected it. And my arm is also not delivered yet so its missing.

https://www.youtube.com/watch?v=i-M_i_Nnehs&feature=youtu.be

Regards
Saher Maqsood   

The Gallilao may not be fast
The Gallilao may not be fast enough for what you need. Right now the net is slow for me, so would you tell me what resolution you are using?

You might try a RasPi or an Odroid-C1 (it’s very compatible with the RasPi 2 or B, but it has some nice features, such as 3 AtoD pins).

It runs OpenCV very nicely. They can handle a larger camera than the Galilleo. The RasPi camera is a nice camera module, but you have to go through some hoops to get it linked with OpenCV.

Galileo and Pi comparison

Hi,

The max. resolution for the camera is 640x480 and I am using this frame size rightt now.

1) For better performance(speed improvement) of blob detection, i think i should go to low resolution cameras, ryt?

2) Also I have read alot about pi vs galileo comaprison. I am still not sure how much faster would the code be on Raspberry PI? Like in the first link below it says:

"Arguably, “performance” is subjective, and depends on what you want to do with the board. Recall that Galileo runs the 400MHz Pentium-class Quark. RPi is normally clocked at 700MHz, but since RPi performs fewer calculations per cycle, they are roughly equivalent in this aspect. The big difference is that RPi includes a GPU as a co-processor and is well suited to work with high definition graphics."

but since i don’t need high def graphics, is it suitable to sitch to PI?

3) There is also a GPU on Pi and they say a Pi can be overclocked. Can somebody explain the term “over clock” and also if/how the GPU and clocking can make thinks faster in my case?

http://www.mouser.de/applications/open-source-hardware-galileo-pi/ 

http://www.linuxuser.co.uk/reviews/intel-galileo-review

Regards
Saher Maqsood

I would get either the RasPi
I would get either the RasPi 2 or the Odroid-C1. These are both quad core ARM 7 linux boxes (the Odroid runs faster and has some extra so it would be my choice). I have a RasPi 2 and it feels a lot faster than the older RasPis that I have when doing desktop activities.

I don’t have the Odroid C1 because I spent my money on an Odroid XU3 Lite which is a VERY nice machine (8 cores, 2 GB RAM, USB3).

Camera Resolution


Thanks for your reply. I will consider all my options.

One last thing, will a low resolution camera make things fast (like blob detection) or a high resoution one? Also can you explain HOW? or share a link in this regard maybe?

 

Regards

Saher Maqsood

Google "OpenCV
Google “OpenCV tutorial”

There are lots of them out there.

Get a good camera

You can always scale down resolution, but you can’t scale up.

(No subject)