Subject:
|
Path following robot, sign recognition.
|
Newsgroups:
|
lugnet.robotics
|
Date:
|
Thu, 1 May 2003 02:21:32 GMT
|
Viewed:
|
794 times
|
| |
| |
Hi, I am building a Lego path following robot,
the robot will follow a white road on a dark (navy blue) surface. It will
encounter traffic signs that i will interpret, and according to those
traffic signs it will turn left or right at the juction or it will wait or
stop.
I created the signs to be easily recognisable.
All the signs black shapes in a red circle (red cardboard, black pen)
The signs all have a smaller black circle in them (for use in the
orientation) and a nother shape to determine the meaning of the sign
x for stop, square for wait, triangle pointing left to go left and triangle
pointing right to go right.
My robot at the moment can do the following:
Detect the positions of many roads,
The position of the sign.
Isolate the sign,
Do edge detection on the sign,
And separate the sub shapes of the sign
It can eliminate most non signs by telling if the number of sub images is
not equal to 3!
How can i distinguish between the signs?
Here is an example (this sign is actually upside down) the smaller circle is
always on top. and according to that the triangle points left or right.
0000000000000000000000111111110000000000000000000
0000000000000000000010111111111100000000000000000
0000000000000011111111110000000111100000000000000
0000000000000011111110000000000011111000000000000
0000000000111111000000000000000000001100000000000
0000000000111110000000000000000000000111000000000
0000000011110000000000000000000000000011100000000
0000000011100000000000000000000000000001111000000
0000001111000000000000000000000000000000001100000
0000001110000000000000000000000000000000000111000
0000111100000000000000000000000000000000000011000
0000111000000000000000000000000000000000000001110
0000110000000000000000000000000000000000000000110
0000110000000000000000000000000000000000000000110
0011110000000000000000000000222222220000000000011
0011100000000000000000002222222222222200000000011
0011000000000022222222222222200000002200000000011
0011000000000022222222222000000000000220000000011
1111000000000022220000000000000000000220000000011
1110000000000002222200000000000000000220000000011
1100000000000000002222222000000000000220000000011
1100000000000000000222222220000000000220000000011
1100000000000000000000000022222000000220000000011
1100000000000000000000000002222220000220000000011
1100000000000000000000000000000022222220000000011
1100000000000000000000000000000002222200000000011
1100000000000000000000000000000000000000000000011
0111000000000000000000000000000000000000000000011
0011000000000000000000000000000000000000000000011
0011000000000000000000000000000000000000000000111
0011000000000000000000333330000000000000000000110
0001100000000000000000333333300000000000000000110
0001100000000000000000330000330000000000000011110
0000110000000000000000330000330000000000000011100
0000110000000000000000333333330000000000001111000
0000011100000000000000033333300000000000001110000
0000000111000000000000000000000000000000111100000
0000000011000000000000000000000000000001111000000
0000000001110000000000000000000000001111100000000
0000000000111100000000000000000000011111000000000
0000000000000111111101000000001111111000000000000
0000000000000001111111111111111111110000000000000
0000000000000000000000011111111000000000000000000
1 shape 284 pixels
2 shape 111 pixels
3 shape 34 pixels
the number of sub shapes found is:3
Well for starters the first sub_shape to be detected is (should be) a large
circle. So after verifying that it can be eliminated. Then there should be 2
sub shapes left. The smaller one should be a circle. So we have that ruled
out.
So basically the problem is how to distinguish between an X a square and 2
triangles pointing in different directions compared to a point of reference
(smaller circle)
The X should be easy enough to detect since it doesnt have a hole.
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
0000000000000000000000000000000001111000000000
0000000000000000000000000000000111111110000000
0000000000000000000000000001111111000110000000
0000000000000000000000000001111100000110000000
0000000000000000000001111111100000111110000000
0000000000000000000111111111000001111100000000
0000000000000111111111000000000111100000000000
0000000000000111111100000000000111000000000000
0000000001111110000000000000011110000000000000
0000000001111100000000000000011100000000000000
0000000001100000000000000000111000000000000000
0000000000111000000000000000110000000000000000
0000000000011000000000000111110000000000000000
0000000000001110000000000111100000000000000000
0000000000000011000000011110000000000000000000
0000000000000001100000011100000000000000000000
0000000000000001100001111000000000000000000000
0000000000000000111011110000000000000000000000
0000000000000000001111000000000000000000000000
0000000000000000000110000000000000000000000000
0000000000000000000000000000000000000000000000
But for the others i dont know exactly what to do. I have tried doing a
hough transform but that dit quite give anything that i could work on. (or i
couldnt see the result immediately)
Does somebody know of any algorithms or methods for interpreting the hough
transform results? I did try taking the maximums but the shorter side doesnt
come out too well. Would detecting the single largest side at a time and
eliminating it work??
So does anyone have any good ideas or any advice?
What other methods could i use? Since the shape doesnt exactly look like a
triangle what techique could i use? It is still not too late to change the
traffic signs for something that will certainly work.
Thank you in advance for your precious time and effort.
Teoman Naskali
|
|
Message has 1 Reply: | | Re: Path following robot, sign recognition.
|
| (...) Sounds like you can detect regions just fine. Why not make the signs dots? Then you could just count the distinct regions to know which command it was. You could make it easier for humans to understand by choosing to arrange the dots in a way (...) (22 years ago, 2-May-03, to lugnet.robotics)
|
2 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|