Let's Make Robots!


Navigate around the room sweeping

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?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I am also doing something similar with a Shark rechargable sweeper. 

This is my first foray into building a robot, and I probably overcomplicated my design.  I use 6V cordless screwdrivers for my drive motors which are attached to the very back instead of coming out the side (so they don't interfere with the brush and can get close to edges), an Arduino and a canakit motor shield.  I decided to keep the battery that came with it plus I use 6 AA NiCad rechargeables for the drive motors so it is kind of a tank for a hobby robot.  I was playing with an accelerometer for collision detection, but I may can that and just use the current sensing built into my motor shield.

I am still working on collistion detection so haven't gotten into the algorithm for the actual sweeping yet.  I will try your algorithm if you don't mind.  I like how simple and elegant your design is. You have obviously done this before.  I laughed when I saw you spent 8 hours on this since I have spent probably a 100+ hours on this going down the different rat holes and backing it out into what I have.  It will be interesting to see your rev 2 cicular design and how you design the circular bumpers. 

Thanks for sharing.  I will post my project soon; it will be edifying for directions not to go when building one of these.



I did initially have the servo drive motors mounted behind the sweeper.  With the wheels I am using it didn't have enough traction to make the robot move.  Moving them to the side (and closer to the CG of the robot) makes it drive well, but necessitated the big cow-catcher of a bumper in front  since the wheels stuck so far out to the side.  The servo motors are also SLOW, so some different motors capable of more RPM would probably be a good thing.