Book Review: Robotics, Vision and Control Fundamental Algorithms in MATLAB by Peter Corke

by on March 17, 2014

vision control matlab

Hi all
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).

Liked it? Take a second to support David Kohanbash on Patreon!
Become a patron at Patreon!

Comments

Nice review. I assume this is appropriate for an introductory to robotics level. Would you say appropriate for graduate students? Or could it be taken up with undergrad courses?

I think this would be good for an upper undergrad course or intro CS grad course (maybe not for a grad robotics program).
The reason I say this is because the book covers algorithms at a high level and is not heavy on the detail and math.

Also while I am sort of anti-Matlab, since I am into real robots and not just simulation, I think Matlab can be a good learning tool and lets students quickly develop and test algorithms.

Thanks for the review, you’ve touched on most of the things that I was trying to address in writing this book, to cover gaps in content and approach that I saw with other robotics textbooks. Books seem to fall into two classes: hobbyist (code, wiring but with little conceptual foundation) or academic (lots of maths but no tinkering or playing). There’s a second edition to be written in the second half of 2015 so send me comments about what to change.

Re the book binding (interesting coincidence that David does book binding). I was really insistent that the book that would lie open (like the early Leslie Lamport LaTeX book) and Springer found this amazing binding. Everybody likes the binding 🙂

Re MATLAB and $$. It’s a common complaint. I’m acutely aware of the irony of writing free software toolboxes that require you to pay money to another person in order to run them. However things have changed lately and there’s a new product: for less than $150 you can get full MATLAB and a bunch of pretty powerful toolboxes, check out http://mathworks.com/products/matlab-home

Re the comment regarding target levels for the book. It was definitely pitched at upper years of a 4 year engineering course. Also for first year or so of a graduate course, particularly for those who enter with little experience of robotics. But at grad level the book would have to be augmented with more traditional books with theory and depth in particular areas of study.

Hi
Thanks for your comments.

I know I am nit picking the matlab is $149 for the base package and then another $45/toolbox (such as the image processing one) for personal use only. My problem with matlab is more about using it in a real robot (as opposed to the cost). How you would connect sensors, spin motors, etc.. from matlab; as well as performance issues.

Some things I think would be good for a next edition are:
– Other applications of vision for mobile robots (maybe optical flow velocity/position estimation)
– Expand on basic camera calibration (in pictures with minimal math); intrinsics, extrinsics, multiple cameras
– In the navigation section why is there no section for A*
– Add generating maps from images/stereo to be used for navigation
– This might be an awful idea but how about putting “matlab comments” in your code segments when you have multiple lines with multiple functions.
– It might be out of scope of your book but it would be cool to discuss using a LIDAR (scanning or pushbroom) and 1 camera and how to overlay/calibrate them.
– add a glossary/appendix of the functions in your toolboxes that are used in the book.

Leave a Reply