Skip to main content

Module 01 · Foundations

Robotics runs on a small set of ideas used over and over. A robot moves in 3D, so you need vectors and rotations. Its sensors are noisy, so you need probability. It has to fit models to data and tune controllers, so you need gradients and least squares. And it runs on Linux, so you need the shell, Git and containers. This module teaches exactly those, and nothing you will not use.

Every idea is taught with code you run, and robot examples instead of abstract ones. You will rotate a camera point into a robot's frame, fuse two noisy range sensors, and fit a line to simulated lidar data. If you have studied this math before, treat the labs as a check. If you have not, you will leave with just enough to follow Modules 02 to 10.

By the end of this module you can…​

  • Write clean, vectorised NumPy code for robotics data such as poses, point sets and trajectories.
  • Build rotation matrices and homogeneous transforms, chain them, and invert them correctly.
  • Explain what a quaternion is and convert between quaternions and rotation matrices.
  • Model sensor noise with Gaussians and update a belief with Bayes rule.
  • Compute gradients, run gradient descent, and solve least squares problems.
  • Work confidently in the Linux shell, Git and a Docker container.

Lessons​

LessonWhat you buildTime
Python for roboticsA vectorised differential-drive robot simulator40 min
Linear algebra and transformsA frame-chain calculator for a camera on a robot45 min
Probability for robotsA sensor-fusion routine and a corridor localizer45 min
Calculus and optimizationA line fit by gradient descent and by least squares40 min
Linux, Git and toolingA scripted, versioned workspace and a ROS 2 container35 min

Module project​

The foundations toolkit. In your kinemata-workspace repository, create a package folder toolkit/ with three small modules: transforms.py (rotation matrices, homogeneous transforms, composition and inversion), fusion.py (Gaussian fusion and a histogram filter), and fit.py (line fitting by least squares and by gradient descent). Add a test_toolkit.py with at least six assertions, and a short README.md. Commit your work in small steps with clear messages. You will reuse this toolkit in Modules 02 and 05.

Next: Python for robotics