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.
   103   104   105   106   107   108   109   110   111   112   113