Skip to content

Latest commit

 

History

History
81 lines (56 loc) · 1.88 KB

File metadata and controls

81 lines (56 loc) · 1.88 KB

Interactive Control System

Recording.2026-02-14.231741.mp4

Currently available controllers

  • Manual control (choose the control input with your mouse!)
  • Feedforward control (aka open loop control)
  • Bang-bang control (aka on/off control)
  • PID control

Requirements

The libraries required are NumPy, SciPy, PyQt6 and PyQtGraph. You can install the most up-to-date versions using:

pip install numpy scipy PyQt6 pyqtgraph

or see below for installing specific versions for guaranteed compatability.

PyQt6 can be easily swapped out for PySide6 by replacing the import lines in gui.py and main.py with:

from PySide6.QtWidgets import ...
from PySide6.QtCore import ...

How to run

  1. Clone the repo to your system:
git clone https://github.com/lorcan2440/Interactive-Control-System.git
  1. Navigate into the project directory:
cd Interactive-Control-System

(Optional) Create and activate a virtual environment. This helps keep dependencies isolated.

python -m venv venv
# if on Linux / macOS:
source venv/bin/activate
# in on Windows:
venv\Scripts\activate
  1. Make sure you have Python 3 with pip installed, then run:
pip install -r requirements.txt
  1. Run the application:
python main.py

Future features

Coming soon:

  • H2 optimal control (aka LQG control)
  • H∞ optimal control (solve by either CARE or LMI in CVX)
  • Bode, Nyquist and Nichols plots of the OLTF L(s) with gain/phase margins
  • Interactive pole placement for the OLTF L(s)

Coming eventually:

  • Lead-lag compensator
  • Sliding mode control (including boundary layer smoothing) - may replace bang-bang
  • Model predictive control (solve using OSQP)
  • Neural control (using LSTM)
  • Reinforcement learning control (using DDPG)