Site upgrade: my notes, papers and tutorials are back, and so are my book recommendations

Take a look

Blog posts

Posts on this site and announcements from my GitHub repositories, newest first.


2026

Prof. John H. Anderson (University of Melbourne)

Early in my academic career, John H. Anderson (JHA) was a pivotal figure who shaped my intellectual trajectory. I first took his undergraduate control systems class at the University of Melbourne, probably in 1976 —…

Read

History of the ball & beam apparatus

At a dinner during IROS2026 in Pittsburgh I was sitting next to Paul Oh and we got chatting about the famous “ball and beam apparatus” which is a staple of undergraduate control labs. In particular…

Read

Simple way to control IK solution configurations

GitHub discussion · RTB

One of the problems with numerical IK is that you can't control the solution of the arm, it will be randomly elbow up or elbow down depending on how the RNG dice roll. I wonder (pure speculation) if we could get some…

Read

V1.4.0 released

GitHub discussion · bdsim

This release has a few new features, but mostly bug fixes, and proper deprecation of features I unilaterally pulled (like out.y0) for instance. The documentation was in places quite out of date, so the README, wiki, and…

Read

2024

Website overhaul

It’s been a long time, but finally an update of content on the website, and a bit of change of color schemes (less orange, more blue) so that folk can tell something’s different. I’ve very…

Read

Numpy2

GitHub discussion · RVC3-python

numpy2 is causing a few issues. Right now OpenCV won't work and Jesse' spatial geometry package wont work either. The latter is easier to fix and that job is on our list. There are a number of other major dependencies…

Read

2023

v1.1 release

GitHub discussion · RTB

It's been a while since the last release, but we've just released v1.1.0 in anticipation of the publication the third edition RVC book. We've been a bit preoccupied with books, papers and teaching so far this year, but…

Read

Current state of bdsim

GitHub discussion · bdsim

As of Jan 2023. Over the last year , my attention has been spread a bit too thinly across two book projects and multiple packages (machine vision toolbox, spatial math toolbox and robotics toolbox). Consequently bdsim…

Read

What do you use bdsim for?

GitHub discussion · bdsim

Please share your use cases and areas you would like to see developed.

Read

2022

Interactive Q&A session

GitHub discussion · RTB

Join the creators, Jesse Haviland and Peter Corke, for an interactive Q&A session about the Robotics Toolbox for Python. We will meet via Zoom to discuss design issues, questions, features and how to contribute. We’re…

Read

V1.0 released

GitHub discussion · RTB

We've gone to 1.0 because this version fully supports the third edition of the Robotics, Vision & Control book which has been shipped to the publisher, hopefully released later this year. The book explains the theory…

Read

2021

New branch for RTB development

GitHub discussion · RTB

We're going to try and be more disciplined with GitHub, moving our development and prototyping to the future branch. master branch should be less noisy that it has been.

Read

New PyPI version posted

GitHub discussion · RTB

0.10.0 is now on PyPI. Let us know any issues. The previous version 0.9.1 was posted 2 months ago, and there's been some redesign and bug fixes.

Read

Changes to IK for trajectories

GitHub discussion · RTB

IK methods return a named tuple that holds joint coordinates, success, reason for failure, residual, number of iterations. For a trajectory used to return a list of these tuples, but that meant quite a bit of work to…

Read

More change to trajectory

GitHub discussion · RTB

The attributes in the Trajectory class were called x, y, yd and ydd. For consistency with the RVC book these are now named t, s, sd, and sdd. These attributes q, qd and qdd are the same as s, sd, and sdd.

Read

v0.9 on PyPI

GitHub discussion · RTB

New features and compatibility with some breaking changes to SMTB.

Read

A wonderful early robotics reference: AIM-177

Somebody recently asked me about this Stanford AI lab technical memo which I cite in my book: Modelling, trajectory calculation and serving of a computer controlled arm. Richard Paul November 1972 It’s hard to get…

Read

Changes to trajectory functions

GitHub discussion · RTB

Old behaviour Trajectory functions used to return a named tuple with time, position, velocity and acceleration, eg. tg = tpoly1(0, 1, 20) with elements x, y, yd, ydd, which could be plotted with t1plot. While tg =…

Read

V0.7

GitHub discussion · RTB

Jesse has just pushed 0.7 as a release. We've had some issues with the build failing under windows which turned out to be some weird Unicode thing. The robot arm stuff is in good shape, we have lots of models and…

Read

2020

Future of the Robotics Toolbox for MATLAB

Key points The Robotics Toolbox for MATLAB®, Machine Vision Toolbox for MATLAB and Spatial Math Toolbox for MATLAB will reach end of life in January 2022.  The source code will remain open and free (as…

Read

A Robotics Toolbox for Python

For 25 years the Robotics Toolbox for MATLAB® has been used for teaching and research worldwide. This paper describes its successor – the Robotics Toolbox for Python. More than just a port, it takes advantage…

Read

Interbotix WidowX 250 6DoF desktop robot

I’ve just taken delivery of a new desktop robot arm, a significant upgrade from my old PhantomX Pincher.  Here are some initial notes and impressions. While there is a lot of software available, including ROS…

Read

Some resources for learning robotics online

Here is a curated list of resources available for learning robotics online.  

Read

Gory details of the Unimate Puma 560 controller

I stumbled across this old old report from 1991.  I wrote it in the early days of my second job, where I was trying to get a Puma 560 robot to do force control.  I…

Read

Franka-Emika control interface: libfranka

Introduction The Franka-Emika Panda is a high-performance 7DOF robot arm.  It is produced by a Munich-based startup with a design heritage traceable to Germany’s DLR institute which also found its way into KUKA’s LWR robot…

Read

Franka-Emika Panda kinematics and singularities

The FE Panda is an increasingly popular robot for research and teaching.  It has 7 joints which make it a redundant robot, that is, it has more joints than it needs to achieve an arbitrary…

Read

2019

Integrating Python into MATLAB

We often need to create code using a mixture of languages such as C++, Python and MATLAB.  Each language has its own strengths and weaknesses but creating a single program in a mix of languages is…

Read

Integrating C++ into MATLAB

We often need to create programs using a mixture of languages such as C++ and MATLAB.  Each has its own strengths and weaknesses but creating a single program in a mix of languages is typically…

Read

Low cost robots for hobbyists and teaching

I've put together a list of (relatively) low-cost robots, arms as well as mobile robots (wheeled and flying). It is far from exhaustive but might be interesting.

Read

Dynamixel AX12A servos

These are very capable and handy devices for hobby robotics.  It has a pretty good manual, but here are some extra  notes and links that I’ve gathered.  This is a working document. Hardware details Circuit…

Read

2018

Direct computation of Jacobian from elementary transform string (ETS)

Given a robot kinematic model expressed as an elementary transform sequence (ETS), we show how to derive the manipulator Jacobian matrix.  This, combined with a standard minimization algorithm, is sufficient to perform numerical inverse kinematics…

Read

Making V-REP work

V-REP is a great robotics simulator, but it’s been ages since I last used it.  I installed the latest version and ran into a few issues.  The solutions are below.  I’m using VREP 3.5 under…

Read

Mac hotkey to refile email

Using Apple Mail I wanted to have a single hotkey to file mail into a folder.  I used to use a plugin called Mail-ActOn but it’s gotten more expensive and has way more features than…

Read

Understanding URDF with MATLAB

The Universal Robot Data Format (URDF) is an increasingly common way to represent the kinematic structure and visual appearance of robots. It is widely used in the ROS software ecosystem. A URDF file is an…

Read

Parsing XML with MATLAB

An increasing amount of data is encoded in XML format. MATLAB has built in support for parsing XML format files, but the documentation leaves something to be desired in terms of details. What follows is…

Read

Solving trigonometric equations

Equations of the form A cos theta + B sin theta = C arise frequently when analytically solving robot kinematic equations.  This document and associated MATLAB mlx file illustrate a variety of solutions using trigonometric…

Read

EKF covariance matrix update for a new landmark

In the formulation for EKF SLAM (RVC chapter 6, appendix H) there is a special case when another landmark is discovered.  The state vector update is simple, concatenate the new landmark to the state vector,…

Read

2017

Hacking graphviz/dot to place xlabels

dot is a wonderful tool and the node xlabel attribute allows for an “external label” in addition to the normal internal node label.  Placement is always at the top left of the node’s bounding box…

Read

Roll-pitch-yaw angles

Updated 4 August 2018 There is a lot of confusion around the terms Euler angles and roll-pitch-yaw angles. This stems from quite different, seemingly authoritative, definitions in textbooks and papers.  There is no clear right…

Read

What’s in a MATLAB .mltbx file

Since 2015 MATLAB has supported the ability to distribute a Toolbox with all the files, documentation and settings packaged up in a single file with extension .mltbx.  Installation is now super easy, double click the file from…

Read

Sparse Pose Adjustment

The IROS2010 paper “Efficient Sparse Pose Adjustment for 2D Mapping” by Kurt Konolige, Giorgio Grisetti, Rainer Kümmerle, Wolfram Burgard, Benson Limketkai, and Regis Vincent was published with a link to a website that contained a number…

Read

Precision-recall curves

Precision recall curves are commonly used in robotics to describe the performance of localisers and classifiers.  This short article describes the underlying principles using simple examples. Download: Precision-recall curves (PDF, 176 kB)

Read

A simple and systematic approach to assigning Denavit-Hartenberg parameters

or how to simply/quickly figure out the DH parameters of a serial-link manipulator.   This short paper appeared in TRO vol 23, pp 590-594, June 2007.   This paper presents a simple and intuitive approach to…

Read

2015

Descartes’ bones

Rene Descartes triggered a revolution in thinking, Cartesianism, and attracted many followers and he became a personage. His thinking was vigorously opposed by the Church. And Louis XIV in 1671 forbade the teaching of Cartesianism…

Read

2014

Denavit-Hartenberg notation for common robots

Denavit-Hartenberg parameters are one of the most confusing topics for those new to the study of robotic arms. This note discusses some common robot configurations and the physical meaning of their various Denavit-Hartenberg parameters. Consistent…

Read

4 is harder than 6: Inverse kinematics for underactuated robots

Many low-cost hobby class robots have only 4 joints (degrees of freedom). This document describes how to determine inverse kinematics for such a robot using the Robotics Toolbox for MATLAB. Underactuation complicates the process of…

Read

2013

Interfacing a hobby robot arm to MATLAB

This document describes how to connect a real and relatively inexpensive hobby-class robot, the PhantomX Pincher AX-12 robot from Trossen Robotics, to the Robotics Toolbox for MATLAB. Download: Using the Robotics Toolbox with a real…

Read