Author: Cameron and Tracey Hughes
Audience: Those interested in robots, preferably with access to one to try out ideas
Reviewer: Harry Fairhead
Robots are the way of the future so any book that helps you get to grips with the problems they pose deserves your attention.
Robots aren't really a unified platform. Each one is different not only in its hardware but in the software interfaces you have to use to get it to do anything. About the only standard platform is ROS - Robot Operating System - but this is not what this book is about. From a reviewer's point of view it is quite difficult to say exactly what this book is about. If you wre hoping for a hands-on makers style approach to building and programming a robot, then you are going to be disappointed. This is almost a "manager's" point of view or a "hands-off let some one else do it" approach.
The book is nicely produced with lots of pictures, diagrams and flowcharts. It has boxout with notes and tips. Flicking through it looks very promising. So it was all the more disappointing to find that it really doesn't ;ive up to its subtitle of being "A Guide to Controlling Autonomous Robots".
Although I have to say that there were parts of the book that sucked me in and which I read with interest there, was a lot I could have done without. The book seems to want to make lists of all the possible ways something can be done and this is only of interest if you aren't wanting to get on with something practical. On the other hand it has long listings of unexplained code.
The first chapter asks what is a robot and you would have to be very much a beginner to get any reward from reading it as it is very basic. It tackles the problem of programming diverse robots by using BURT - Basic Universal Robot Translator - which sounds promising, but basically it doesn't do anything except allow the authors to write an algorithm in English and then present it in Java or whatever language the robot being considered is using. Chapter 2 discusses how languages, compilers and so one work. Chapter 3 introduces the idea of a state chart i.e. a finite state machine. In this case basically a diagram of the way the robot should respond to the outside world. At this point no real problems have been solved and any projects are entirely theoretical.
Chapter 4 doesn't really get any more practical even though it is titled Checking the Actual Capabilities of Your Robot. The authors assume that reader will have access to a robot to try out and test the commands, instrauctions and programs it presents. The chapter has very theoretical advice on looking to see what your robot can lift and how it can move. It is rendered less useful by being so general.
Chapter 5, called A Close Look at Sensors, is a bit better in that it starts a block of three chapters that deal with sensors and actuators. Unfortunately we start off with lists of what possible sensors could there be and small lectures on topics like the difference between precision and accuracy. The next chapter is called Programming the Robot's Sensors but it is a very general discussion of sensors and their limitations. Where it does introduce some real sensors the covers is so superficial that you would be hard pressed to actually do something practical with it. The final chapter of the three is on Programming Motors and Sensors and again it is fairly detached from actually doing anything real.
From here the book seems to go off into more advanced topics such as modeling the robot's environment, planning and so on. Here the problem is that the descriptions are high level and don't really get down to the details of programming the robot - then we have pages and pages of code which isn't particularly helpful. Chapter 11 is a story about how a fictional "free-spirited, fun loving" character called Midamba programmed his first autonomous robot and, despite having lots of code, it's still vague! The final chapter is a look at some low cost robots.
This is a very strange book in that it attempts to present practical information but actually spends more time considering abstract ideas and explaining basic physics and engineering concepts. I liked the book most when it was explaining ideas such as gears, motors and sensors, but even in these sections the explainations stop short of being really useful. For example, it doesn't go as far enough to help you pick a motor for a particular applications, it's more a "there are these general types of motor".
Overall, Robot Programming has the feel of a book that is intended to be used to teach a course without the students ever getting their hands on a real robot or the components to make a robot. It would have been so much better if the book had selected two robot types or models and used them as specific examples. This not a book to buy if you actually want to build or program a robot because there are so many challenges that it will not help you with at all.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.