Page 108 - Hacking Roomba
P. 108
Driving Roomba chapter
mobile robot doesn’t get very far without some means of locomo-
tion. The Roomba has its two drive wheels. These two wheels form
Aa differential steering system. Differential steering is similar to the
differential gearing used in a car, but instead of one source of power divided
between two wheels with gearing, both wheels are powered independently.
By having both wheels powered, the Roomba can do things no differentially
geared car could ever hope to do, like pivot in place and move in perfect
circles. A differential steering system also poses some problems. The biggest
one is driving in exactly a straight line. To drive straight, exactly the same in this chapter
power must be applied to both wheel motors, if not, the robot moves in a
subtle arc. Roomba drive
system internals
The ROI command used to drive the motors hides much of these issues by
presenting a simple DRIVE command that takes a velocity and radius, and
the radius can be set to zero to drive in a straight line. Behind the scenes ROI DRIVE
Roomba is actually reading its distance and angle sensors (odometry sensors) command
and compensating the power to each motor. If it did not do this, simply
driving the Roomba from the computer would be much more of a hassle Grow
because one would have to be continually reading the odometers, calculating RoombaComm
errors, and updating the motor outputs to compensate.
Since drive systems are so important, this chapter shows a taken-apart Move Roomba with
Roomba motor unit and discusses the gearing and other mechanisms. RoombaComm
Because the following figures show a taken-apart Roomba, there is no need
for you to take a screwdriver to your own Roomba. The whole point of the
ROI (and this book) is to allow Roomba hacking without voiding your
warranty. If, however, you don’t mind having a potentially non-working
Roomba at the end, I highly recommend taking one apart to see how every-
thing all goes together.
The Roomba Motors and Drive Train
Figure 5-1 shows what the left Roomba drive motor unit looks like; the
right unit is the same but mirror imaged. Immediately noticeable is the
rather large cable bundle emanating from the motor unit. Only two wires
of the cable bundle directly control the motor. These two wires plug into a
high-current motor driver. The motor driver is controlled by the Roomba’s
microcontroller through a digital-to-analog (D/A) converter with approxi-
mately 10-bit resolution.