Short articles on a variety of topics. Mostly I write these to help myself learn a thing, and to sketch out material for future editions of the book.
TUTORIALS
Some resources for learning robotics online
Here is a curated list of resources available for learning robotics online. ...
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 w...
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 identities and an algebraic...
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, but the covariance update is more complex....
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 and wrong here, au...
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. prcurves File size: 172.29 KB Created: 21-12-2016 Updated...
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 determining the kinematic parame...
ROBOTICS
Articles & tutorials
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 of popular open- source packages and r...
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 support, I’m being stubborn ...
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 got a bit carried away in reverse engineering the control box. Unimate Pu... File si...
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 series. The ...
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 position and orientation in the Cartesian workspace. Its kin...
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 diagram (reverse engineered) for th...
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 w...
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 Mojava. 1. File permissions V-REP complains ab...
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 XML format file and a number of specialized ...
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, but the covariance update is more complex....
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 and wrong here, au...
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 numbe...
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 determining the kinematic parame...
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 di...
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 finding an inverse...
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. rtb_real_r... File size: 857.16 KB Created: 16-03-2014 Updated: 23...
MATLAB STUFF
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 typically difficult. MATLAB has had, forever, a ...
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 difficult. MATLAB has had, forever, a MEX int...
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 XML format file and a number of specialized ...
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 a tutorial that first introduces XML and then s...
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 identities and an algebraic...
A quick introduction to MATLAB objects
This article is a quick introduction to MATLAB objects, using an example from the Robotics Toolbox for MATLAB. It was originally Appendix C in the first edition of my book, but deleted from the second edition for space reasons. [ddownload id=”4...
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 the builtin file bro...
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. rtb_real_r... File size: 857.16 KB Created: 16-03-2014 Updated: 23...
MAC STUFF
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 Mojava. 1. File permissions V-REP complains ab...
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 I need. Step 1. Create a service using Automator Fire up Auto...
GENERAL
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 hold of, but I did get my hand...
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 in speech), just no longer maintained. There a...
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 which isn’t always convenient...
Descarte’s 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 at the U of Paris. ...