Robotics – Detecting Pinpoint Location Outdoors


I am getting back in to EE after some time so please excuse my ignorance. I am looking for a way to detect pinpoint location outdoors to navigate a robot for a project with my sons.
Is there a low cost way to triangulate or use GPS? I am looking for down to the inch precision. Also I do not care if I need to place some transmitters in different locations to give the device a reference.

This is for a robotic lawnmower. I have a 2 acre yard and my house is near the middle with several trees as obstacles.

My 2 acre yard

Two of my three boys (14yrs, 11yrs, 5rys old) brought up the idea so the real goal of this project is to spend time with them and pique their interest in EE & CE.

With that said cost is a factor but I do not care if we work on it for the next 2 years and spend a little along and along.

Here are my current plans

  • Include a Windows PC on board so I can code against the sensors.
  • Microsoft Connect on board to help with obstacle detection (reason for Windows PC)
  • Include a USB GPS for general location
  • Include camera just for the fun of it

In 2 years if I have some money in it that is okay but I do not want to start with a crazy expensive GPS.

Thanks to everyone who has help me!!!!

Best Answer

You should consider flipping the system around. There is no need for the robot itself to determine the location. It only needs to know what to do. This can be communicated to it from a fixed PC via a WiFi link. With such a link it doesn't matter whether the robot figures out the location or whether that is done in the fixed installation and then the result transmitted to the robot. If the robot ever looses the WiFi connection, it could simply stop. That keeps it from getting out of range and therefore not getting the information that it should turn around, meanwhile mowing down all the flower gardens in the neighborhood. I think it's also a good idea to keep the robot as simple as possible and put as much of the burden onto the fixed installation where it's easier to monitor, fix, and work with.

I haven't actually done this, but here is something I came up with while musing about your problem. Have a rotating IR emitter on the robot. This might rotate once a second or so. It shoots out a fairly narrow vertical slit of modulated IR. Then you put fixed IR sensors around the place, mostly the periphery. These indicate when they sense the beam from the robot, which will only be for a small fraction of the repetition interval. By comparing the timing of the signals from the various sensors and knowing their locations, you should be able to compute the robot's position. The time offset from any two sensors divided by the beacon period tells you the relative angles of those two sensors as seen from the robot. With enough sensors and a bunch of math (easily done on any modern PC in a tiny fraction of a second), you can solve for the absolute position of the robot. The PC then sends appropriate commands to the robot over a TCP connection via the WiFi link.

The robot doesn't actually need the position information. All the "thinking" gets done on the fixed PC. All the robot needs is a small embedded system with a WiFI module and TCP/IP stack. You can send basic commands to the robot, like relative direction, speed, etc.

The data from any two sensors puts the robot on a arc that also includes the two sensors. The exact arc depends on the angle offset of the two sensors. In theory all you need is three arcs, which means three sensors. I would use several more so that individual sensors can drop out temporarily for various reasons. That will overconstrain the problem, but with the right algorithm you can make use of all this data and find the most likely location of the robot.

As I said, I haven't tried this, but I think you should be able to get accuracy good enough to control a lawn mower. At least this scheme doesn't rely on anything particularly expensive, hard to get, or anything pushing what you can measure reasonably in your own back yard (no nanosecond timing, for example).

Related Topic