Authors: Joe Jones, Daniel Roth
ISBN-13: 9780071427784, ISBN-10: 0071427783
Format: Paperback
Publisher: McGraw-Hill Companies, The
Date Published: September 2003
Edition: (Non-applicable)
Joe Jones (Acton, MA) is a veteran roboticist, currently employed by iRobot. He is the co-author of Mobile Robots: Inspiration to Implementation, as well as numerous articles in the field of robotics. He is one of the inventors of the Roomba(R) Robotic FloorVac, the first widely adopted consumer robot.
Daniel Roth (Cambridge, MA) is a master's degree candidate in computer science at the Massachusetts Institute of Technology, specializing in autonomous robot navigation.
MASTER ROBOT PROGRAMMING ITH YOUR OWN FREE VIRTUAL 'BOT!
This ingenious book/Web site partnership teaches the skills you need to program a robot and gives you a virtual robot waiting online to perform your commands and test your programming expertise. You don't need to know either robotics or programming to get started!
Using an intuitive method, Robot Programming deconstructs robot control into simple and distinct behaviors that are easy to program and debug for inexpensive microcontrollers with little memory. Once you’ve mastered programming your online 'bot, you can easily adapt your programs for use in physical robots.
Though Robot Programming smoothes the path to acquiring skills in this arcane art, it does not reduce it to simplistics. With this resource, you can open the door to all the complexity, sophistication, versatility, and robustness that it is possible for robot behavior to exhibit.
WHAT DO YOU WANT YOUR ROBOT TO DO?
Robot Programming's hands-on approach to behavior-based robotics
* Teaches you intuitively, with a system that integrates explanation, code examples, and exercises using an online robot simulator
* Demonstrates programming for mobile robots
* Gives you the tools to combine sensors with robot skills
* Shows you how to develop new robot behaviors by manipulating old ones and adjusting programming parameters
* Provides examples of programming for object seeking, object avoidance, decision-making, and much more
* Leads you to advanced strategies for designing your own behavior-based systems from scratch
* Introduces the history and theory behind behavior-based programming
* Requires no background in either programming or robotics
Joe Jones (Acton, MA) is a veteran roboticist, currently employed by iRobot. He is the co-author of Mobile Robots: Inspiration to Implementation, as well as numerous articles in the field of robotics. He is one of the inventors of the Roomba(R) Robotic FloorVac, the first widely adopted consumer robot.
Daniel Roth (Cambridge, MA) is a master's degree candidate in computer science at the Massachusetts Institute of Technology, specializing in autonomous robot navigation.
Jones, one of the inventors of the first widely adopted consumer robot, introduces the history and theory behind behavior-based programming, teaches skills needed for programming a robot, and provides readers with a virtual robot on a web site to test programming expertise. Using an intuitive method, he deconstructs robot control into simple behaviors that are easy to program and debug for inexpensive microcontrollers with little memory. No background is required in programming or robotics.
Preface | xi | |
Acknowledgments | xvii | |
Introduction | xix | |
1 | Autonomous Mobile Robots | 1 |
Example: Collection Task | 1 | |
Robot Defined | 6 | |
Sensing | 8 | |
Actuation | 10 | |
Intelligence | 11 | |
Mobile and Immobile Robots | 11 | |
Responding to the Challenge | 15 | |
Robot's World View | 16 | |
Summary | 20 | |
Exercises | 21 | |
2 | Control Systems | 25 |
Open and Closed Loop Control | 25 | |
Position Control Example | 30 | |
Control System Catastrophe | 31 | |
Control System Stability | 33 | |
Saturation, Backlash, and Dead Zones | 36 | |
Open Loop Controllers with Parameters and State | 39 | |
Bang-Bang Controllers | 40 | |
Hysteresis | 42 | |
Summary | 44 | |
Exercises | 45 | |
3 | Behaviors | 49 |
Triggers and Control Systems | 49 | |
Servo and Ballistic Behaviors | 51 | |
Implementing Servo Behaviors | 52 | |
Finite State Analysis | 57 | |
FSM Example: Escape | 63 | |
FSM Implementation | 67 | |
Overloading Behaviors | 70 | |
Summary | 70 | |
Exercises | 71 | |
4 | Arbitration | 75 |
Fixed Priority Arbitration | 75 | |
When to Arbitrate | 79 | |
Graceful Degradation | 83 | |
The Path Not Taken | 87 | |
Sensor Qualification | 89 | |
Other Arbitration Schemes | 92 | |
Variable Priority | 92 | |
Subsumption Architecture | 93 | |
Motor Schema | 97 | |
Least Commitment Arbitration | 100 | |
Summary | 102 | |
Exercises | 103 | |
5 | Programming | 107 |
Homing Based on Differential Detectors | 107 | |
Homing Based on Absolute Position | 112 | |
Avoidance with Differential Detectors | 117 | |
Anti-Canyoning | 120 | |
Wall-Following with Contact Sensors | 124 | |
Wall-Following with Ranging Sensors | 126 | |
Wall-Following with Proximity Sensors | 127 | |
Confinement and Cliff Behaviors | 128 | |
Thrashing | 130 | |
Escape | 133 | |
Area Coverage | 134 | |
Deterministic Coverage | 134 | |
Random Coverage | 135 | |
Generalized Differential Response | 139 | |
Avoidance and Homing Using Vectors | 143 | |
Debugging | 145 | |
Summary | 146 | |
Exercises | 147 | |
6 | Decomposition | 151 |
SodaBot | 152 | |
Stating the Problem | 152 | |
Accomplishing the Task Simply | 156 | |
Visit Likely Spots | 157 | |
Identify Soda Cans | 157 | |
Abandoned versus Active Sodas | 158 | |
Can Pickup | 160 | |
Navigation | 161 | |
Identify, Deposit, and Recharge | 162 | |
Avoid Hazards | 163 | |
Mechanical Platform | 164 | |
Which Questions? | 164 | |
Which Sensors? | 165 | |
Building Behaviors | 167 | |
SodaBot Behaviors | 167 | |
Robot Recap | 171 | |
Principles | 172 | |
First Do No Harm | 172 | |
Tilt the Playing Field | 172 | |
Prefer Robust Chaos to Brittle Determinism | 172 | |
Summary | 173 | |
Exercises | 174 | |
7 | Physical Interfaces | 177 |
Collision Sensors | 179 | |
Bumpers | 180 | |
Stall Sensors | 183 | |
Stasis Sensing | 185 | |
Avoidance Sensors | 185 | |
Infrared Proximity Sensors | 186 | |
Infrared Range Sensors | 188 | |
Sonar Sensors | 189 | |
Range-Sensor Considerations | 190 | |
Homing Sensors | 192 | |
Photocells, Phototransistors, and Photodiodes | 192 | |
Coded Beacons | 194 | |
Pyroelectric Sensors | 196 | |
Color Blob Sensors | 196 | |
Magnetic Sensors | 197 | |
Dead Reckoning and Navigation Sensors | 197 | |
Shaft Encoders | 197 | |
Inertial Sensors | 199 | |
Compasses | 199 | |
GPS | 201 | |
Summary | 201 | |
Exercises | 202 | |
8 | Implementation | 203 |
RoCK Specifications: The Goal of a New Machine | 203 | |
Programming Specifications | 208 | |
RoCK's Behaviors | 211 | |
Dance | 211 | |
IR_follow and VL_follow | 212 | |
Boston | 212 | |
Cruise | 212 | |
Escape | 212 | |
Joystick | 213 | |
Wire | 213 | |
Beeper Control | 213 | |
The Code | 214 | |
Scheduler | 214 | |
Behavior Format | 216 | |
Arbiter | 222 | |
Summary | 226 | |
Exercises | 226 | |
9 | Future Robots | 229 |
Reply Hazy--Ask Again Later | 230 | |
Which Path? | 232 | |
Future Actuation | 233 | |
Power | 233 | |
Motors | 234 | |
Manipulation | 235 | |
Locomotion | 237 | |
Future Intelligence | 237 | |
Robot Control | 238 | |
Learning | 238 | |
Future Sensing | 239 | |
Vision | 240 | |
Acoustic Sensing | 240 | |
Other Sensors | 241 | |
Exercise | 242 | |
A | Mathematics of Differential Drive | 243 |
Pose | 243 | |
Dead Reckoning | 245 | |
Differential Drive | 249 | |
London Fog | 252 | |
Limits of Dead Reckoning | 253 | |
Summary | 254 | |
Exercises | 256 | |
B | BSim | 259 |
BSim Aspects | 259 | |
The Simulator and Time | 259 | |
The World | 260 | |
Fantasy Mode and Noise | 261 | |
Latency | 261 | |
A Simple Robot | 261 | |
Behaviors and Arbitration | 262 | |
Cruise | 263 | |
Escape | 263 | |
Avoid | 263 | |
Wall Follow | 264 | |
Home | 264 | |
Anti-Moth | 265 | |
Dark-Push | 265 | |
London | 265 | |
Gizmo | 265 | |
Remote | 266 | |
Tasks | 266 | |
Collection Task | 266 | |
Gizmo Task | 266 | |
London Task | 267 | |
Simulations | 267 | |
Collection Simulation | 267 | |
London Simulation | 267 | |
Gizmo Simulation | 267 | |
User Interface | 268 | |
World Editor | 268 | |
The Robot Programmer | 268 | |
C | Frequently Used Functions | 271 |
Clip | 271 | |
Leaky Integrator | 272 | |
Running Average | 274 | |
Angle Computations | 275 | |
D | Pseudocode | 279 |
E | Bibliography | 283 |
Index | 285 |