A re-purposed Shark hand held sweeper. The first question I usually get (particularly from women) when I talk about robots is "Can it sweep my floors?". So here it is. I bought the hand held sweeper at a Goodwill store for a few bucks, added continuous rotation servos for drive motors, a homemade Arduino controller (ATmega8) and a sonar and bump sensors for obstacle avoidance.
The code uses a subsumption architecture (okay, behavior based if you want to use the current lingo).
It does a surprisingly good job of picking things up. It even found a small drill bit I dropped in my workshop and hadn't been able to locate. The basic obstacle avoidance scheme is to backup for a random 1-3 seconds then turn for a random .5-2 seconds. Every 3 minutes it changes from turning right during avoidance to turning left. I noticed that always turning a random direction would sometimes leave it stuck in one area from quite some time. Always turning one way would make it follow the same basic pattern around the floor. Switching between right and left every 3 minutes seems to work well and increase the coverage.
Next step is to take the sweeper motor and brush from this and build a new circular chassis for them. All the electronics will be the same, but with a perimeter bump sensor a la Roomba.
This was a REALLY fun project and I look forward to improving on it.
I know iRobot has the wonderfully engineered and debugged Roomba, but where's the fun in buying something somebody else made?