Robotics, Vision and Control

Fundamental algorithms in MATLAB: Second Edition


About the book

Writing the second edition

The bulk of the writing was done during a sabattical visit to Oxford in in the second half of 2015 and in the gaps during 2016.  This was 6 years after I started to write the first edition. I think no page is untouched.

The first challenge was that the previous edition had been typeset using PageMaker, a now obsolete package.  It was exported to Adobe InDesign format but got very broken in the process.

The revision principle was to keep the good (narrative style, code as a first-class citizen, soft plastic cover) and eliminate the bad (errors and missing topics). I started with the collected errata for the first edition and pencilled markup from a battered copy of the first edition that I’ve carried around for years.

I added a lot of new material that was needed but missing from the first edition – I simply ran out of time and energy and the page count was alarming (this edition is bigger!).  The new material includes: Lie groups, matrix exponentials and twists; inertial navigation; differential drive robots; lattice planners; pose-graph SLAM and map making; series-elastic actuators and operational-space control; Lab color spaces; light field cameras; structured light, bundle adjustment and visual odometry; and photometric visual servoing.

In the first edition I shied away from Lie algebra but I think it’s something that should be taught.  I’ve tried to steer a middle ground: beyond what’s in the most common robotics texts (homogeneous transformations only) but not the complexity of hardcore books on algebraic topology.

In addition to bug fixes and new content I restructured two sections into what I think is a better ordering of material. Arm-robot kinematics  (chap 7) now starts in a more intuitive fashion and ends, rather than starts, with Denavit-Hartenberg notation (I hope that one day we stop teaching this notation to students). Dynamics (chap 9) now starts with independent joint control, looks at the effect of disturbances and then introduces rigid-body dynamics.

Every figure has been regenerated since the appearance of MATLAB graphs changed in 2015 and what’s printed should match what you see on the screen.  I finessed the plots to be as clear and good looking as possible, and the scripts that generate all the plots are available for download.

Writing the first edition

The idea of the book had been bubbling away in my head for a long time but my first attempt to write it in 2003-4 went nowhere:  I changed job, and life got too busy.

The second, and successful, attempt began in 2009 when I was able to take a very long holiday. I started at the beginning of April, and then spent three wonderful and productive months in a tiny apartment in Paris, in Rue de Vivier in the 7th arrondissement. I adopted a writerly routine of writing from very early in the morning, and spending the afternoons walking and exploring. This was followed by an equally enjoyable and productive few months at Oxford, where sitting in a lab full of awesome mobile robotics people it occurred to me that the book had nothing to say about mobile robots…

By early 2010 there was a pretty decent draft, and during a 1 week visit to MIT CSAIL I hammered out the first substantial draft of all but the last Part. I queued a massive print job late on Friday night and took the T upto a Kinkos in Harvard Square, they opened early on a Saturday, and they bound it for me. It looked like a book! The rest of 2010 was endless revisions of the book and a simultaneous massive overhaul of the two MATLAB Toolboxes. The manuscript was uploaded to Springer on the second last day of 2010. The book still didn’t have a title.

While the book itself was being typeset there was still plenty to do, much more than I had anticipated. In the manuscript I had used lots of images that I lifted from the internet (as you do). I needed to get licences, or equivalent images that I could licence, for every image.  There are lots of images in the book so this took many months and hundreds of emails.

The biggest image licence saga was the “Where’s Wally/Waldo’” example on pages 313-15. Astute readers will notice that although I provide the images as files distributed with the Toolbox the image is not printed in the book. The images came from the internet but have unknown provenance, I suspect it’s a screenshot from an old PC game by a company that is no longer in business. So the company that owns the Where’s Wally/Waldo brand was unable to licence me to use it. Ultimately nobody would own up to owning it, which made it prudent to not print it just in case some angry owner pops up down the track. Neither could I get images of Valentino Braitenberg or Rudolph Kalman so I’ve used images of their publications instead, on pages 88 and 113 respectively.

The galleys came back from Springer mid year, coincidently during another visit to Oxford. I got my first copy of the book in mid September, a few weeks before IROS 2011 and the official launch. All up it was 30 months from starting to holding a copy of the book in my hand. The book writing itself was 21 months, on average 1 book page per day!

The binding

From the start I wanted a book that would lay open, I was thinking of the spiral binding on my old first edition of Lamport’s LaTeX book. Springer weren’t very keen on spiral binding and came up with the wonderful plastic cover.

Writing tools

The original manuscript was written in LaTeX, with lots of macros and Python scripts to actually run all the MATLAB examples and automatically create the figures. However once it got to the publisher it was ingested into PageMaker.  The good thing is that it looks totally gorgeous, the modest negative is that automated example testing and figure generation is no longer possible.