If I point an Ultra Sound sensor at 90deg to the wall, I get a very good reading. But as soon as I change that angle to like 60, 30 or 20deg, accuracy disappears. Is there a sensor that can accurately measure non-peripendicular distances to walls and ceilings?
DROBNJAK:
If I point an Ultra Sound sensor at 90deg to the wall, I get a very good reading. But as soon as I change that angle to like 60, 30 or 20deg, accuracy disappears. Is there a sensor that can accurately measure non-peripendicular distances to walls and ceilings?
Probably some form of LIDAR would be better; the cheapest option (similar to an ultrasonic sensor) would be Parallax's laser range finder unit:
http://www.parallax.com/Store/Sensors/AllSensors/tabid/760/ProductID/774/List/0/Default.aspx
The next cheapest (which is basically a 360 degree sensor) would be to rip the LIDAR unit from a Neato XV-11:
...of course, this isn't really "plug-n-play", and such a robot brand new isn't cheap (still, way cheaper than a SICK or Hokuyo unit).
Maybe you might be able to take a Sharp IR sensor and hack it to use an IR laser module instead of the LED, for better range and accuracy?
Ultimately, though, you can't rely on singular measurements; what you need to do is take multiple point measurements, and use those with statistical/probability models to build up a map (using line fitting algos like least-squares method); so that even if you do "miss" a reading, your robot can still judge with a certain degree of confidence where it is in the "world". This is called SLAM (and is far from a "solved" problem):
Be sure to check out the external link entitled "SLAM For Dummies (A Tutorial Approach to Simultaneous Localization and Mapping)"; that is a very informative paper.
You could always use two (or more) rx sensors and angle them slightly... or optionally, make an acoustic reflector...
If your measuring distance you can make allowances for the reflector distance...