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 —…
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…
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…
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…
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
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…
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…
What do you use bdsim for?
GitHub discussion · bdsim
Please share your use cases and areas you would like to see developed.
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…
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
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.
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.
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…
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.
v0.9 on PyPI
GitHub discussion · RTB
New features and compatibility with some breaking changes to SMTB.
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…
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 =…
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…
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…
