Posted 04/29/15
In a whole series of posts over this last month, I described the results of my efforts to solve the ‘stealth slipper’ problem, where Wall-E gets stuck on my wife’s fuzzy blue slippers and can’t seem to reliably detect this condition. I ran a large number of experiments which eventually convinced me that the ultrasonic sensors I have been using for wall-following and ‘stuck’ detection just aren’t up to the task. Even the use of two forward-looking ping sensors, which I thought was going to be a really cool and elegant solution, didn’t do the job. There is just too much data corruption due to multipath and ‘friendly fire’ corruption between ping sensors to reliably discriminate the ‘stuck on stealth slippers’ condition.
So, its time to consider other, more radical, alternatives. First and foremost, it is clear that ultrasonic sensing will not work for ‘stealth slipper’ detection/avoidance. Other possible sensing modes are:
- IR Ranging: This has the advantage of being pretty cheap, but hobbyist IR ranging options like the Sharp IR Range Sensor (shown below) are fairly short range, slow, and have just an analog output with limited accuracy.
- LIDAR: This technology is fast, can be very long range, and can provide very accurate ranging information. Unfortunately these sensors tend to be heavier and much more expensive than either the ultrasonic or IR sensor options. The CentEye/ArduEye laser range finder using the Stonyman vision chip was a really cool, light weight and cheap solution, but it is unfortunately out of production and unavailable :-(. The best of the lot for now appears to be the LIDAR-LITE sensor or the fully-assembled LIDAR package that is part of the NEATO robot vacuum cleaner.
- Optical parallax vision processing: This is really the same as the LIDAR option, but with separate laser, receiver, and parallax computation modules. This is what the now-unobtainable Stonyman chip/Laser/Arduino solution did, but there are other, less attractive, ways to do the same thing. One is a combination of a cheap laser diode and the Pixy CMU Cam. The Pixy module handles a lot of the vision pre-processing necessary for parallax range determination, and the laser diode would provide the bright, distinct spot for it to track.
After looking through the available options, it occurred to me that something like the LIDAR-Lite might allow me to not only replace the forward-looking sensor on WallE, but maybe even the side ones as well. The LIDAR-Lite is fast enough (20 msec/reading) that I should be able to use it for all three directions (left, right, forward). In fact, if I mounted it on a servo motor using something like the Adafruit slip ring component shown here, I could implement a cool 360-degree LIDAR
It also occurred to me that while I’m in the process of making radical changes to WallE’s sensor suite, I might want to consider changing WallE’s entire chassis (I think this is the robot equivalent of ‘repairing’ a car by lifting up the radiator cap and driving a new car under it). The 2-wheel plus castering nose wheel arrangement with the current WallE leaves a lot to be desired when navigating around our house. Too often the castering nose wheel gets stuck at the transition from the kitchen floor to the hall carpet or the area rugs. In addition the nose wheel axle/sleeve space tends to collect dirt and cat hair, leading to the castering nose wheel acting more like a castering nose skid than a wheel ;-). After some more quality time with Google, I came up with a very nice 4-wheel drive DFRobot 4WD Arduino Mobile Platform robot chassis from DF Robots, along with the companion ‘All In One Controller‘.