A student-organised robotics laboratory run outside the formal curriculum, bringing together students and teaching assistants from the School of Mechanical Engineering.
The lab started from a simple observation: the courses we take (calculus, dynamics, control theory, numerical methods, operations research) teach us a lot, but always separately. This laboratory is a space to apply them to a single problem: controlling a robot arm.
34 practice sets, each one a hands-on problem session. The sequence builds from the mathematical foundations up to full robot simulation, control design, and motion planning.
| Sets | Topic |
|---|---|
| 1–2 | Robot fundamentals: joints, degrees of freedom, coordinate frames |
| 3–5 | Spatial mathematics: rotation and transformation matrices |
| 6–9 | Forward kinematics: screw theory, matrix exponentials, fk() |
| 10–14 | Jacobians: jaco(), task Jacobians, singularities |
| 15–16 | Inverse kinematics: analytical and numerical via gradient descent |
| 17–22 | Dynamics: Euler-Lagrange, mass matrix, Coriolis, full equations of motion |
| 23–26 | Control theory: stability, PID, Lyapunov |
| 27–28 | Control in practice: MATLAB simulation, learning from data |
| 29 | Gradient descent for parameter learning |
| 30 | Optimal control via Sequential Quadratic Programming |
| 31–34 | Motion planning: Bug algorithm, trajectory optimisation, RRT |
| File | Set | What it does |
|---|---|---|
practice16.m |
16 | Numerical IK via gradient descent |
practice27.m |
27 | 2-link arm simulation and design your own controller |
practice28.m |
28 | Learn parameters via linear regression |
practice29.m |
29 | Learn parameters via gradient descent |
practice30.m |
30 | Optimal control gains via fmincon |
practice32.m |
32 | Trajectory optimisation |
practice34.m |
34 | RRT motion planning |
MATLAB R2019b or later. Optimization Toolbox required for sets 30 and 32.