This page contains the following: - Project and Results Overview - Movie of the FSM in Action - Time Lapse Stills of VacBot in Action
Time Lapse Sequence
Here we will present the results of our mechanical and programming efforts for the first model of the VacBot concept, along with recommendations for improving on successive designs. A great deal of information was learned on autonomous robotic vacuuming from this project, and successful ideas will be incorporated into the designs that follow in the future.
Original Concept and primary goals
The task sounds simple enough: Motor drive a electric floor sweeper around the room and take the routine labor out of sweeping and vacuuming wood floors, and carpet. But as we found out by getting our hands dirty on this project, it is a much more complex task than cited above. Additional factors we had not fully considered included the perfect shape of the robot, changing the brush height, and what would be the minimum of a sensory array to accomplish its task. And finally but not least, the power requirements for effectively driving on thick carpet was unexpected.
While the details of VacBots construction has been documented in the earlier uploads on this project, our original concept remained the same: Take a proven industry standard push vacuum and make it self driven, and autonomous. The small size and amazing efficiency of the Red Devil brand push electric sweeper is well known among households today. We went through several iterations on driving the base around, which had a center of gravity not optimal for a well balanced robot. After giving up on belt drives, we settled on a nylon gear drive system with Jameco motors left over from our PAAMI project. The brackets and mounting were of Lexan and aluminum, with some brass for small parts. We mounted the microcontroller and motor driver H bridge in one box, with a split power supply. A 9v battery mounted with velcro on the outside of the box, and the rechargeable 7.2v battery which came internal to the sweeper was used for motor power.
It was found that while the motors did very well with the large wheels on hard floors, carpet was an issue because of the constant rotation maneuvers that would wear down the battery flat in less than 5 minutes. On a hard floor, that time was over an hour. The majority of testing for the final sweeping techniques was done on our hardwood floors.
The PIC16F628 processor was programmed with PICBasic with a Microchip programmer connected to our mobile laptop computer. Since no analog functions were used, we found this device more than adequate for the tasks. The controller drove a status LED for testing, and a LMD298 H bridge motor driver.
Finite State Machines to the Rescue.
Rather than use subsumption architecture and more than one processor, the robot is programed with a Tri-State finite state machine. There are three states: Spiral Sweep, Forward Sweep, and Escape. The diagram is shown below and details the States and jumps. A description of the function of each State is as follows:
Spiral Sweep - The robot is placed in the center of the room to clean and turned on. It then goes into this state. The robot first rotates about the center for about 10 seconds to clean under it. Then the right wheel stops at zero velocity and over a period of several minutes the speed via PWM control ramps up from about 25 percent up to 100 percent, which would of course make the robot go straight! But at some point in the spiral outward it WILL hit something like a wall or furniture leg. At that point it jumps to the Escape state.
Escape - Upon impact of the bumpers, the appropriate ballistic action is taken. To avoid "Canyoning" which is getting trapped in corners, the equation for the angular rotation contains a random variable to rotate the robot a constant plus the random variable. We always leave the Escape state after completion of its task to the Forward Sweep State.
Forward Sweep - The robot moves forward at full speed, while an internal timer is ticking away. After a period of one to five minutes has elapsed of total accumulated forward time (minus escape jumps times) the robot jumps state back into the Spiral Sweep state. And a new part of the home will be cleaned maximally. The diagram below illustrates the Three states described:
The use of Finite State Machines not only greatly simplifies and organizes the software architecture, it also allows the robot to exhibit multiple distinct behaviors with unique variables and isolation. Small changes in a particular state do not affect the others, and makes troubleshooting much easier.
Results of Project
Except for the drive and navigation problems on thick plush carpeting, the robot performed well on hard surfaces and indoor/outdoor carpeting. Illustrated below are several images to demonstrate the performance and concepts. First is a movie clip with sound (turn up
tthe volume) demonstrating the Spiral to Forward Sweep State transition. The robot stars out spiraling outward at an increasing rate, then as soon as a bumper impact occurs, the program jumps state to the Forward Sweep State and moves about linearly. The sweeper is off here, and you can hear the motors whine. There is also no Minute rice on the floor yet. (If you didn't know, Vacuuming robot competitions held world wide use minute rice as the "dirt" because it it is easily handled and can be weighed accurately after a competition run.) Also, below are a series of time lapse stills that show minute by minute the progress of the robot on the rice. You will note that the robot gets all the rice except for a 3 inch border around the edges. This is a physical limitation of the location of the sweeper intake on the robot, and would require special additional brushes to take care of.
Improvements for next time
This project was a real eye opener as far as the stringent requirements for a household vacuuming system. Below we list a component of the robot, and where we can improve this component for the next version.
The square body plan of the commercial sweeper was designed for a back and forth motion by hand on the end of a long handle. The robot must navigate autonomously in a household environment without getting stuck or trapped by its body shape. While the corners and added on wheels on the side were troublesome in this regard, the ideal shape from our experiments appears to be a short cylinder with a convex top, and no protruding elements. This is supported by the fact that commercial robotic vacuumes which have had large sums of money poured into research do resemble this shape.
While foam tires, and most wheels used in robotics work fine on tile floors, on plush carpet they flat out cannot function well. Experimenting with different materials and treads showed us that the best tire is in the 2 to 3 inch range for size, and the material does not have to be a sticky rubber because the dust on the floor quickly coats the tires and makes them slippery anyway. The best tread design would be one that has a good mechanical grip on carpet, but does not catch the thread loops in the strands and get stuck. A wide hard rubber tire with rounded protrusions fills this bill. Such tires we have found are available in hobby shops for model off road radio controlled vehicles in a variety of the right sizes. Tires larger than 3 inches and wider than about an inch pose navigational issues such as skid turns and have a tendency to hit chair legs and rub walls.
Bumpers that do not hang on furniture or chair legs is extremely important. It was not a good thing when our VacBot would go under the kitchen table and encounter chair and table legs a plenty. Bumpers that are flush to the body or nearly so would have been more practical from an autonomous point of view. But as we found with other house roaming robotic projects, bumpers are NOT sufficient to keep a wandering robot from getting stuck. Additionally you will need to add IR proximity and IR ranging sensors at a minimum. The IR ranging will be used to wall follow and get the edges of the room. Edge "feelers" are not acceptable because they can get caught on things you never thought of.
Batteries and Recharging
When running on carpet, Vacbot drew about 6 times the power from the small batteries than when on tile floor. After only 5 or 10 minutes it was all over with. Sufficient gearing would have helped but still you must consider that carpet has a much larger drag, especially shag types. This showed up much more during turning maneuvers which require more power because of wheel skid. Having your robot rechargeable as we did certainly made for a more economical situation. Even better, a docking station with a charger that the robot visits when in need would be better for uses of extended periods.
The Sweeper - To suck or not to suck.
The Red Devil power sweeper we used for the basis for our cleaner had a spiral brush run by a small motor on one side, with a cogged belt. We were amazed at how well this removed dirt and cat hair from the floor and carpets. While the smallest dust like dirt which lies at the bottom of the carpet may be left behind, for the most part remember a carpet is like a dense filter: The largest particles lie on the top, and only the smallest dust makes it to the bottom of the stack. By using the rotating brush, the carpet is essential beat repeatedly many times a second, and bounces out without suction most of the dirt and small bits. Once a month power vacuuming is all that is required by hand to supplement the bot, since the surface and about 80 percent down will be cleaned by the robot.
Where do we head from here? When we are ready to go for VacBot II, we now have a much better understanding on what to construct. Here are some highlights:
- Round smooth cylindrical body, with domed top
- RC 4WD wheels with short nubs
- Power enough to climb a 30 degree incline on a thick shag rug
- A larger rechargeable battery
- Spiral sweeper design
- Bumper, IR Prox, and IR ranging sensors
- Corner and wall edge cleaning capability.
T + 0 min Starting Arena with a cup of Minute Rice (Rory inspects the fresh Rice)
T + 1 min
T + 2 min
T + 3 min
T + 4 min
T + 5 min