Projects you can run tonight

Each project is small enough to finish in an evening, and complete enough to actually run: every script executes end to end in simulation in under 15 minutes, with a checklist of what to look for when it works. Hardware is optional.

Beginner

ROS 2 talker, listener and a moving tf2 frame

A ROS 2 Jazzy package with a talker, a listener, a tf2 broadcaster that moves a frame in a circle and a node that looks the frame up, run in the official Docker image on macOS, Linux or Windows.

Any machine with Docker (Docker Desktop or OrbStack on macOS), ros:jazzy-ros-base image, under 10 minutes · about 2 h · python, ros2-python
Beginner

A two-link arm that draws a square with inverse kinematics

Build a planar two-link arm in MuJoCo, solve analytic inverse kinematics for 161 waypoints around a square, track them with joint position servos and measure how far the pen lags.

Laptop CPU (macOS, Linux or Windows), MuJoCo 3, under 1 minute · about 2 h · python, numpy, mujoco
Intermediate

A differential-drive robot that plans with A* and localises with an EKF

Plan a path across a 10 m room with A*, follow it with pure pursuit and estimate the pose with an extended Kalman filter that fuses noisy wheel odometry with position fixes, in pure Python and NumPy.

Laptop CPU (macOS, Linux or Windows), Python and NumPy, under 1 second · about 3 h · python, numpy
Intermediate

Pick and place a cube with a scripted grasp in PyBullet

Define a five-joint arm with a parallel gripper as an inline URDF, solve its inverse kinematics in closed form and script a grasp in PyBullet that moves a 40 mm cube to within 1 mm of its target.

Laptop CPU (macOS, Linux or Windows), PyBullet in DIRECT mode, under 5 seconds · about 3 h · python, numpy, pybullet, urdf