Let's Make Robots!

Basic Triagulation Positioning System

3 Friends and I are building an autonomous tennis ball collecting robot for a 4th year design project for our undergrad.

We need a way for the robot to keep track of its position on the tennis court (in doors) and we are thinking of using 2 beacons to emit signals with a receiver on the robot. Has anybody done something like this before? Has anyone heard of pre-packaged solutions that do just this? A USB module would be ideal (we are using a netbook to control the robot), but we are not at all opposed to building the positioning system from scratch. 

We've read a bit about robot triangulation systems that rely on IR and Sonar, any idea what the better option would be?

Any help would be much appreciated.

Thanks very much!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Hehe, it wasn't so long ago that I was working on my own 4th year Mechatronics project =)
Looking good so far, had a bit of a skim through your report and image gallery. The only thing I couldn't find was the total battery capacity (mAh, kJ, etc). You have nominal voltage, max current, and other values listed, but unless I missed it there's no mention of how much energy the batteries actually contain. It would be interesting to know how long your robot can operate from full charge.


For now we are just using a car battery. 

Lot's of new videos/content on tennisrobot.org

So the project began this term and we've started to get things moving.

All the info is on the tennis robot website if anyone is interested.

Thanks everyone for the help and suggestions!

This is just an idea that I haven't fully thought through. Since tennis courts are usually nice dark surfaces with bright white lines painted, you may also be able to encorporate some line following into your navigation routine. This can help keep your bot on the court and confirm where you are against your calculations. For example, you should have known positions where you cross foul lines.

one good example of triangulation is http://www.convict.lu/Jeunes/beacon.htm

but how will you find the balls, Camera ?

Yes, currently the plan is to use a web cam. Just a simple USB cam. We'll be plugging it into a tablet PC and probably using some open-source blob detection algoithms with Microsoft Robotics Studio.

Ok, I think you guys are right, triangulation would be over-doing it for this project..

I like the idea of encoders and sonar to detect wall (at ends of X and Y axis).

There is going to be a "Home Base" where the balls will be dumped. IR lock-on sounds like an excellent way to do this. Do you know of any posts on how IR beacons could be implemented?

Do you think exclusively performing 90 degree turns is the way to go here? I've never tried to keep track of position using encoders in such a large physical space as a tennis court. We are using a web cam + blob detection to go after the largest clusters of tennis balls. 90 degree turns might make this slightly more difficult (vs just rotating until we see the biggest yellow blob and driving straight for it), but I have a feeling this extra difficulty in ball hunting will be worth the increased ability to accurately keep track of position. What do you think?

Thanks again! 

If you make turns other than 90 degrees it is harder to keep track of you position on a x,y coordinate plane. 45 degree turns would be feasible but you have to keep track of them as a 90 degree turn folowed by exactly 12 inches of movement = 1 foot and 1 coordinate update to the graph for location. If you turn 45 degrees you have to travel the square root of 2 inches to move to a new coordinate where both x and y will change depending on the direction you turned.

If you throw in many different angles you have to use sin and cos to determine how far to travel to get to a new grid location and keep track of exaclt where in the grid you are since you won't be moving to a new 1 foot square but maybe in between 2 squares. If you really need to do random turns you need to shrink the size of the square to maybe 1 inch by inch. Keep in mind the array for the roommap will take up a LOT of memory. 144 entries per 1 foot square!

Limiting your movements to 90 degree turns surely simplifies the navigation code, a lot.

Reading about the task at hand and about the plan to use visual detection of targets, makes me think you don't really need any localization at all. There are basically two modes of operation:
1) search and collect balls: just chase the big blobs
2) go home and dump the loot: find base using one or two IR omnidirectional beacons

Admittedly, navigation is much more exciting and I would love to see someone build a decent triangulation solution using unidirectional beacons!

I just encountered this: http://letsmakerobots.com/node/12538#comment-35991 . It's called the Hagisonic Stargazer system.

It is adding a load complexity and burns a hole in your budget. But it would work.