Acknowledgments |
|
xi | |
Introduction |
|
xiii | |
|
|
|
Getting Started with Roomba |
|
|
3 | (16) |
|
|
3 | (1) |
|
|
3 | (2) |
|
Which Roomba Cleaners Are Hackable? |
|
|
5 | (8) |
|
Internal and External Components |
|
|
13 | (3) |
|
OSMO//hacker: Hope for Older Third Generation Roombas |
|
|
16 | (1) |
|
|
17 | (2) |
|
|
19 | (22) |
|
What Can Be Done with the ROI? |
|
|
19 | (2) |
|
|
21 | (3) |
|
|
24 | (15) |
|
Introducing the RoombaComm API |
|
|
39 | (1) |
|
|
40 | (1) |
|
Building a Roomba Serial Interface Tether |
|
|
41 | (24) |
|
|
41 | (2) |
|
|
43 | (1) |
|
|
44 | (4) |
|
Building the Serial Tether |
|
|
48 | (8) |
|
|
56 | (6) |
|
|
62 | (1) |
|
|
63 | (2) |
|
Building a Roomba Bluetooth Interface |
|
|
65 | (24) |
|
|
65 | (1) |
|
|
66 | (1) |
|
|
67 | (1) |
|
|
68 | (2) |
|
|
70 | (1) |
|
Building the Bluetooth Adapter |
|
|
71 | (7) |
|
|
78 | (5) |
|
|
83 | (1) |
|
|
83 | (1) |
|
|
84 | (4) |
|
|
88 | (1) |
|
|
89 | (20) |
|
The Roomba Motors and Drive Train |
|
|
89 | (3) |
|
|
92 | (6) |
|
|
98 | (4) |
|
|
102 | (2) |
|
|
104 | (3) |
|
Writing Logo-Like Programs |
|
|
107 | (1) |
|
|
108 | (1) |
|
Reading the Roomba Sensors |
|
|
109 | (22) |
|
|
109 | (6) |
|
|
115 | (3) |
|
|
118 | (3) |
|
|
121 | (1) |
|
BumpTurn: Making an Autonomous Roomba |
|
|
122 | (2) |
|
Measuring Distance and Angle |
|
|
124 | (2) |
|
|
126 | (1) |
|
|
127 | (4) |
|
Part II: Fun Things to Do |
|
|
|
|
131 | (20) |
|
|
131 | (5) |
|
Using RoombaComm in Processing |
|
|
136 | (4) |
|
|
140 | (10) |
|
|
150 | (1) |
|
|
151 | (16) |
|
Sonic Capabilities of Roomba |
|
|
151 | (3) |
|
ROI SONG and PLAY Commands |
|
|
154 | (3) |
|
Playing Roomba as a Live Instrument |
|
|
157 | (2) |
|
|
159 | (2) |
|
RoombaMidi: Roomba as MIDI Instrument |
|
|
161 | (5) |
|
|
166 | (1) |
|
|
167 | (22) |
|
|
168 | (1) |
|
|
168 | (2) |
|
Adding a Paintbrush to Roomba |
|
|
170 | (8) |
|
What Are Spiral Equations? |
|
|
178 | (6) |
|
Drawing Spirals with RoombaSpiro |
|
|
184 | (3) |
|
|
187 | (2) |
|
Using Roomba as an Input Device |
|
|
189 | (16) |
|
Ways to Use the Roomba's Sensors |
|
|
189 | (1) |
|
|
190 | (4) |
|
Using Roomba as a Theremin |
|
|
194 | (6) |
|
Turning Roomba into an Alarm Clock |
|
|
200 | (2) |
|
|
202 | (3) |
|
Part III: More Complex Interfacing |
|
|
|
Connecting Roomba to the Internet |
|
|
205 | (26) |
|
|
205 | (1) |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
208 | (14) |
|
|
222 | (3) |
|
Modifying RoombaComm for the Net |
|
|
225 | (3) |
|
|
228 | (3) |
|
Going Wireless with Wi-Fi |
|
|
231 | (26) |
|
|
232 | (4) |
|
|
236 | (5) |
|
Building the Roomba Wi-Fi Adapter |
|
|
241 | (7) |
|
Controlling Roomba through a Web Page |
|
|
248 | (5) |
|
|
253 | (2) |
|
|
255 | (1) |
|
|
255 | (2) |
|
Giving Roomba a New Brain and Senses |
|
|
257 | (40) |
|
Microcontroller vs. Microprocessor |
|
|
257 | (1) |
|
|
258 | (3) |
|
Adding a New Brain with the Basic Stamp |
|
|
261 | (15) |
|
Adding a New Roomba Brain with Arduino |
|
|
276 | (18) |
|
|
294 | (3) |
|
|
297 | (36) |
|
|
298 | (5) |
|
|
303 | (2) |
|
|
305 | (11) |
|
Controlling Roomba in OpenWrt |
|
|
316 | (9) |
|
Making It All Truly Wireless |
|
|
325 | (6) |
|
|
331 | (2) |
|
RoombaCam: Adding Eyes to Roomba |
|
|
333 | (32) |
|
|
334 | (1) |
|
|
334 | (12) |
|
Controlling Roomba from C |
|
|
346 | (6) |
|
|
352 | (11) |
|
|
363 | (2) |
|
|
365 | (18) |
|
|
365 | (5) |
|
Roomba Costumes and Personalities |
|
|
370 | (2) |
|
Roomba APIs and Applications |
|
|
372 | (3) |
|
|
375 | (6) |
|
|
381 | (2) |
Appendix A: Soldering and Safety Basics |
|
383 | (22) |
Appendix B: Electrical Diagram Schematics |
|
405 | (10) |
Appendix C: iRobot Roomba Open Interface (ROI) Specification |
|
415 | (12) |
Index |
|
427 | |