Here is a book review on Peter Corke’s Robotics, Vision and Control, published in 2011 (and 2013). I decided to review this book since it has a lot of Matlab code (I know I complain about Matlab later on) and examples that *could* be useful when developing real systems, testing a specific algorithm, or to benchmark your implementation against. There is a companion website that has summaries and code. Peter has developed two toolboxes with documentation that contain all of this Matlab code; one for robotics and the other for machine vision. As of writing this there are a bunch of figures on the code section of the website that are not being displayed (404 Not Found error). I was also hesitant to review this book since the code is all in Matlab and not in a language that can easily be implemented on a robot (such as C or C++).(I am biased towards things that are useful for developing real world robotics).
Before I begin the review I just want to point out that if you do not have Matlab (since it costs $$) you might be able to run some of this in Octave (a free basic Matlab clone). Since Octave does not have GUI tools or a Simulink equivalent the higher level function might have a problem but you can probably pull out code segments and individual functions. Another option is to try converting the Matlab code to C. I have not tried either of those options with these toolboxes, but you might want to give it a try (please leave a comment after giving this a try).
Robotics, Vision and Control has three primary sections. This first section is all about controlling a robot with topics such as kinematics, dynamics, controls, navigation , & localization. I really like how the author handles mobile robot (including quadcopters) and arms as separate classes of robots with different concerns. The second section is all about computer vision. Topics include calibration (hugely important and annoying to manually perform), manipulating the images, extracting features, and stereo. In the final section the goal is to integrate the control and vision sections of the book. This third section covers visual servoing; both to find position and to servo based on image features. This last section was a bit of a disappointment since the author mostly tied the control and vision together for robotic arms and not for mobile robots (I know there are the 2 examples). The author could have discussed more about generating maps (this is discussed a bit in the first section), position estimation from different scenes (optical flow type stuff), etc..
Reading the book is unlike most other books. The code segments are frequently interspersed within the content of the book making the code part of the story and not a separate section. It is surprisingly easy to follow the examples with this format. One downside is that you sometimes just see a high level function name, and not what is in that function (which you can always check on your own).
The book is laid-out really nicely and provides lots of assistive and random information in colored boxes on the side of the main text. The graphics look really good and do a good job illustrating their point.
I really like the early discussion on coordinate frames. There are good illustrations and even a coordinate frame the you can build for your desk (or wherever)! It is amazing how often I have seen people mess up coordinate frames and understanding what directions are positive and negative (right hand rule, etc..).
The discussion on mobile robots is unique. Most books cover a wide range of mobility options. In this book the car/bike model is introduced, and that is followed by quadcopters which is seldom covered in books (that made me think for a second, since I usually don’t think of flying robots as mobile robots. But I guess they are).
There is a nice discussion on planning algorithms. While the author sort of describes A* I don’t see any references to the words A* in the text and I can’t search for it (see rant below). There is a good discussion on probabilistic methods including PRM and RRT. The graphics used to show what the algorithms are doing are very good.
The robotics arm section uses a PUMA 560 which is the first robotic arm I used. It brings back lots of painful memories… Granted the one I used was old and not in the best of condition.
The sections on machine vision are nice since they address color images and large images; both are topics that many books skip over and ignore. I know there is an image calibration toolbox and you can call it from this toolbox but I had expected more information about how to perform a camera calibration.
In summary I like the book and the provided code. I think that this book is good to give you an overview of a bunch of key robotics topics, but it will not teach you the details on how to perform each task. If you are looking at testing an algorithm, getting a high level understanding, or getting a guide (I know the author says it is not a guide) to use the tool boxes then this book is for you. Also if you are a student looking to learn by implementation (which is the best way to learn) then this book will be good for you. I also want to acknowledge that the author has released the toolboxes as freeware which is a great contribution to the robotics community. If I was rating this book from 1-5 stars, I would probably give it 3.9999 stars. As I mentioned before I am biased towards books that are good for the practical development of real robots. If I was rating this book as a student textbook I would give it a higher rating (probably 4.5).
Before I rant I do want to thank Springer (the publisher) for providing this copy of the book for me to review.
I have a completely separate rant. The tool that Springer has for reviewing the book is very annoying. It only loads the page that you are looking at, so when you want to scroll between pages looking for something it needs to load each page which can take several seconds per page. Often when you finally get to the page you want it will load the prior page and the screen jumps to that prior page (really annoying). It also does not allow any copying of content. So if I want to quote a single line there is no way to copy it. I need to retype it from scratch. I first discovered this when I wanted to just copy and paste the name of the book. I understand they don’t want the whole book copied, but how about letting several lines be copied!
The other completely useless tool is the search function. I tried it several times and it always returned 0 results. I even tried searching for the word “the” which I am sure is used hundreds of times and got 0 results back.
Some words of disclaimer:
I have never met the author of this book and the opinions are mine. I received access to an ebook version of this book for a trial period (180 days) in order to do this review. I think I get a hardcopy of the book once I post a review of it (ie. this post).
Edit: I did get a hardcopy of the book. The layout, graphics, and binding all look really good. I particularly appreciate the tubular perfect binding (perfect is the name of a binding style) that allows the book to lay open flat (one of my hobbies is bookbinding).