Weekly Robotics Workshop Series
Organize and teach weekly hands-on workshops for students on robotics, ROS 2, drones and embedded systems.
Overview
Since January 2025, I have been running a weekly workshop series at the EIU FabLab for students who want to get hands-on with robotics. The series is split into workshops, each a multi-session track built around one small robot or platform. Students start from the fundamentals and finish by making that robot work themselves.
Topics so far include embedded programming on STM32, ROS 2, the F1TENTH autonomous racing platform and drones. Recordings of the lectures are shared on YouTube so students can review them at their own pace.
My role
I organize the series. I prepare the lecture content and hands-on exercises, teach the sessions, and help students debug their code and robots during the labs.
Workshops
Select a workshop to see its goal, learning path and lecture recordings.
Workshop 1 — STM32 And Two-Wheeled Self-Balancing Robot
Goal: program a two-wheeled self-balancing robot from scratch — from blinking an LED on the STM32 to keeping the robot upright with an IMU-based attitude estimator and an LQR controller.
Robot platform
The workshop is built around a small two-wheeled self-balancing robot with a custom STM32 controller board, so every module can be tried directly on real hardware.
Learning path
-
C programming
The C fundamentals used throughout the workshop.
-
STM32 peripherals
Configure and use the microcontroller peripherals that drive the robot's sensors and motors.
GPIOsExternal Interrupt TimersTimer Interrupt PWMADC SPIDMAUART -
IMU calibration
Calibrate the IMU before its data is used for estimation.
-
From IMU data to rotation
Represent the robot's orientation and compute it from each sensor.
Euler angles & rotation matrices Accelerometer & magnetometer → XYZ Gyroscope → Euler angles Quaternions -
Attitude estimation with an EKF
Fuse the sensor data with an Extended Kalman Filter to estimate the robot's attitude.
-
LQR control
Design a Linear–Quadratic Regulator that keeps the robot balanced.
-
Final goal: a self-balancing robot
Put everything together and program the two-wheeled self-balancing robot.
In class


Workshop 2 — F1TENTH Autonomous Racing
Goal: build the autonomy stack of a 1/10-scale F1TENTH car step by step — from Linux, Python and ROS 2 basics to mapping, localization, path tracking and obstacle avoidance.
Robot platform
The workshop uses a 1/10-scale F1TENTH car with a 2D LiDAR, a depth camera and an IMU, an NVIDIA Jetson Xavier NX for onboard compute, and a VESC motor controller — all running ROS 2.
Learning path
-
Ubuntu basics
Working with Linux and the terminal — the environment used for the rest of the workshop.
-
Python & OOP
Python and object-oriented programming for writing ROS 2 nodes.
-
Math review
The math behind the algorithms in the later modules.
CalculusLinear Algebra Statistics & Probability -
ROS 2 basics
Core ROS 2 concepts and tools.
WorkspacePackage NodeTopic ServiceLaunch file ParametersMultithreading Debugging toolsTransforms (TF2) -
Automatic Emergency Braking (AEB)
Stop the car before it hits an obstacle.
-
Wall following with PID
Keep the car at a set distance from the wall with a PID controller.
-
2D mapping with SLAM Toolbox
Build a 2D map of the track.
-
Localization with AMCL
Localize the car in the 2D map.
-
Waypoints & Pure Pursuit
Create waypoints and track them with the Pure Pursuit algorithm.
-
Obstacle avoidance with RRT & RRT*
Plan paths around obstacles with sampling-based planners.
-
Final goal: an autonomous F1TENTH car
Put mapping, localization, path tracking and obstacle avoidance together on the car.
In class



More workshops
Write-ups for the other topics (e.g. drones) are coming soon.