Northeastern University  ·  Electrical & Computer Engineering  ·  Boston/Seattle

EECE 5580

Classical Control Systems

4 Credit Hours  ·  Graduate & Senior Undergraduate

Build a self-balancing robot. Apply control theory. Compete.

Introduces the analysis and design of classical control systems — from transfer functions and stability theory to real hardware implementation. Every concept taught in lecture is tested on a physical robot you build yourself.

Course Overview

What This Course Covers

Examines control system objectives, modeling and mathematical description, transfer function and state-variable representations, feedback control characteristics, system responses, and stability. Also addresses compensator design based on root-locus and frequency response, and modern control using state-variable feedback.

The Hardware Project

The centerpiece of the course is a team-based project to design, build, and tune a two-wheeled self-balancing robot from scratch. Students wire DC motors, an IMU, and wheel encoders to a microcontroller running a 100 Hz real-time control loop — then apply every control method taught in lecture to keep the robot upright and race it five meters.

Simulation & Analysis Tools

Python is used throughout the course for control analysis: the python-control library derives transfer functions, plots root loci and Bode diagrams, and simulates closed-loop responses. Jupyter notebooks let you compare theoretical predictions against live hardware measurements in one shareable document.

End-of-Semester Race

The semester ends with a live, department-wide race. Teams line their tuned robots at the starting line and the robot that travels five meters the fastest — while staying balanced — wins. Awards are given for Fastest Race Time, Best Disturbance Recovery, Best Technical Report, and Fan Favorite.

Course Topics

Control Theory

  • Transfer functions & Laplace domain
  • State-variable representations
  • Feedback system characteristics
  • Stability — Routh-Hurwitz & Nyquist
  • Root-locus design methods
  • Bode plots & frequency response
  • Lead / lag compensator design
  • State feedback & LQR

Hardware Build

  • Inverted-pendulum robot assembly
  • DC motors & H-bridge wiring
  • IMU (gyro + accelerometer) fusion
  • Wheel encoders & velocity feedback
  • Microcontroller real-time loop (100 Hz)
  • Power electronics & battery circuit
  • Serial data logging with Python
  • Hardware-in-the-loop debugging

Competition & Lab

  • PID controller tuning on physical robot
  • LQR cost-function optimization
  • Disturbance rejection experiments
  • Python / Jupyter system modeling
  • Team iterative design sprints
  • 5-meter robot race & department showcase
  • Technical report & oral defense
  • Department showcase & awards

Semester Roadmap

Wk 1–4

Foundations

Laplace · state-space · PID · PincherX 100 labs

Wk 5–8

Frequency Domain

Root locus · Bode · compensators · PincherX 100 labs

Wk 9–11

Robot Build

Assembly · IMU · encoders · firmware

Wk 12–13

Controller Tuning

PID + LQR on balancing robot

Wk 14–16

Race!

5-meter robot race · showcase

What You Will Do

Derive equations of motion for an inverted pendulum and linearize around equilibrium
Deploy a 100 Hz real-time control loop on a microcontroller
Design PID, lead/lag, and LQR controllers analytically in Python
Tune controller gains until your robot balances on its own
Wire DC motors, an IMU, and encoders on a physical robot chassis
Compare measured step-response data to theoretical Bode predictions
Implement a complementary or Kalman filter for tilt estimation
Enter the end-of-semester 5-meter robot race

Hardware Platform

Mechanical & Electrical

Chassis

Two-wheeled inverted-pendulum frame — 3D-printed. Students assemble the full mechanical structure from a provided STL file. Total parts cost per team is approximately $60–75; all components are provided by the course.

Actuation

Brushed DC gearmotors with quadrature encoders. L298N H-bridge motor driver controlled via PWM signals from the microcontroller.

Sensing

MPU-6050 IMU (3-axis gyroscope + accelerometer) for tilt angle estimation. Quadrature wheel encoders for velocity and position feedback.

Power

LiPo or NiMH battery pack with regulated 5 V and motor supply rails. Students design the power distribution circuit and manage safe battery operation.

Computing & Software

Microcontroller

Arduino Nano running a 100 Hz main control loop. Serial port streams sensor data to a laptop for logging and analysis with Python.

State Estimation

Complementary filter or discrete Kalman filter fuses gyroscope and accelerometer data into a reliable tilt angle estimate at full loop rate.

Simulation

System model derived analytically, then built in Python (python-control / scipy) inside a Jupyter notebook and verified by simulation before any code is deployed to hardware.

Data Analysis

Step-response plots, Bode diagrams, and root-locus overlays logged from the real robot and compared against theoretical predictions using Python (matplotlib, python-control) in a shared Jupyter notebook.

Control Theory Curriculum

Mathematical Modeling

Derive equations of motion for the inverted pendulum. Linearize around the upright equilibrium. Extract the transfer function and state-space model for all subsequent analysis.

Stability Analysis

Apply Routh-Hurwitz criterion to assess closed-loop stability. Compute gain and phase margins from Bode plots. Interpret Nyquist diagrams for robustness assessment.

Root-Locus Design

Sketch root loci by hand using construction rules, then verify with the Python control.root_locus() function. Select pole locations to meet transient response specifications such as settling time and overshoot.

Frequency-Domain Design

Use Bode plots to design lead and lag compensators. Specify gain crossover frequency, phase margin, and bandwidth. Verify closed-loop performance before hardware deployment.

PID Control

Derive PD, PI, and full PID controllers. Understand the physical role of each gain. Apply Ziegler-Nichols and manual methods to tune a PID controller on the physical robot.

Modern State-Space Methods

Design state-variable feedback via pole placement. Apply LQR optimal control by specifying a cost function. Introduction to Luenberger observer design for unmeasured states.

End-of-Semester Competition

🏆 5-Meter Balancing Robot Race

The semester ends with a live, department-wide race. Teams line up their tuned robots at the starting line. The robot that travels five meters the fastest — while staying balanced — wins. No software changes are permitted after the submission deadline.

Teams are judged on speed over the 5-meter course, continuous balance throughout the run, and the quality of their final design report. An optional disturbance-recovery bonus is available for teams that want to test their controller robustness.

Race Challenges

  • 5-meter straight-line race
  • Continuous balance throughout the run
  • Optional: disturbance-recovery bonus
  • Fastest balanced completion time wins

Team Deliverables

  • Lab reports (7 labs)
  • Full system design report
  • Oral defense presentation
  • Robot hardware submission
Fastest Race Time Best Disturbance Recovery Best Technical Report Fan Favorite

Why Take This Course

Industry-Ready Skills

PID tuning, frequency-domain analysis, and Python-based control design (python-control, scipy, matplotlib) are used daily by control engineers at aerospace, automotive, and robotics companies. This course teaches them in the context of a real physical system.

Hands-On Learning

No passive lectures — every concept from stability margins to state feedback is verified on a physical robot. You see, hear, and feel the control theory working in real time.

Foundational for Graduate Study

EECE 5580 is a prerequisite gateway to Digital Control Systems and advanced robotics courses. The tools — Laplace, state-space, stability criteria — appear in nearly every controls and robotics graduate course.

Team Design Experience

Work in teams on a semester-long engineering project. Practice technical writing, oral presentation, and collaborative hardware and software development — skills valued in every engineering role.

Course Materials & Repository

📖 Course Wiki

Lessons, labs, homework, and project specifications — all in one place. Every page includes theory, Python code, step-by-step procedures, and expected output. Updated throughout the semester.

Open Wiki ↗

💻 GitHub Repository

All course code lives here: Jupyter notebooks, Arduino sketches, Python analysis scripts, and the balancing robot firmware. Clone the repo on Day 1 and keep it up to date as new files are pushed.

Open Repository ↗

🐍 Python Stack

The entire course runs on open-source Python. No license required. Install once with pip install control scipy matplotlib jupyter and you have everything needed for every lesson and lab.

Setup Guide ↗

🤖 PincherX 100 Setup

The first two labs use a PincherX 100 servo arm as an accessible hardware platform for step-response measurement and PID tuning — before the balancing robot build begins. Setup guide covers ROS2 and Dynamixel Wizard.

Hardware Setup ↗

Course Information

Course NumberEECE 5580
TitleClassical Control Systems
Credits4 credit hours
LevelGraduate & Senior Undergraduate
CampusNortheastern University  ·  Seattle  ·  Boston (potential)
PrerequisitesEECE 3464 or EECE 2520 with minimum grade D−  ·  or Graduate Admission
ToolsPython 3.10+ · python-control · scipy · numpy · matplotlib · Jupyter Lab · Arduino IDE 2.x · ROS2 Humble · Dynamixel Wizard 2.0