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 1980 —…
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…
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…
BDSim published in IEEE Control Systems Magazine
Happy to share that my paper about BDSim, an open-source block diagram modelling tool for Python, has been published in IEEE Control Systems magazine: the paper on IEEE Xplore. It greatly extends an earlier article…
AppleScript
AppleScript is a language that has frustrated me for decades, so I’ve gone down an AppleScript rabbit hole to find out who was responsible and why they did it. I was initially thinking public naming…
2025
On color blindness
I’ve been meaning to write this piece for a long time, but wandering around a public garden and not really seeing the flowers properly was the motivation I needed to do it. Plus I’m so…
Gemini and me (and block diagrams)
Let me start by saying that I’m a dinosaur and a bit of sceptic about the current AI gold rush and have not spent much time playing with LLMs. bdsim is a Python-based tool I…
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…
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…
2023
SS Great Eastern
As previously mentioned I was a geeky kid, and for a while I was a ship geek. I became obsessed with the Great Eastern, a steamship launched in 1858, and designed to carry 4000 passengers to…
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…
2022
A journey toward open-source block diagram simulation
This is a long account of about the development of a software tool (bdsim) I’ve been working on for the last two years. It’s become a passion project and a big sink of discretionary time…
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…
2021
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…
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…
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…
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…
Some resources for learning robotics online
Here is a curated list of resources available for learning robotics online.
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…
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…
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…
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…
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…
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.
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…
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…
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…
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…
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…
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…
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…
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,…
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…
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…
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…
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…
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)
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…
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…
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…
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…
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…
