Skip to content

Implementation of controls as part of Control Theory course at IIT Kharagpur

Notifications You must be signed in to change notification settings

kvmanohar22/controls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linear Controls

Implementation of linear controls as part of EE60011: Control Theory course at IIT Kharagpur by Prof. Sanand

Fig1: Left: Marginally stable system. Right: Exponentially stable system.

TODO

  • 3D rendering using OpenGL
  • Continuous/Discrete Linear Time Invariant Systems
  • Particle rendering with different initial conditions
  • Rendering particles lifetime
  • Efficient rendering of particles [use instance buffers]
  • Non-linear systems (pendulum/inverted pendulum as simple examples)
  • SISO pole placement
  • MIMO pole placement

Requirements

  • cmake 3.3+
  • C++14 (g++-5.4.0)
  • OpenGL 3.3+
  • Eigen3
  • gl3w

Usage

  1. After cloning the repository, you need to add the dependencies. Specifically gl3w files. Checkout this on how to generate gl3w.h glcorearb.h and gl3w.c files. Place the headers under include/controls/ext/gl3w directory. Structure should look something like:
include/
  controls/
    ext/
      gl3w/
        - gl3w.h
        - glcorearb.h

... and place gl3w.c under src/.

Build

Note: Built in Debug mode, to change to Release, check CMakeLists.txt

git clone git@github.com:kvmanohar22/controls.git
cd controls
mkdir build
cd build
cmake ..

Test linear controller

cd /path/to/build
make test_linear
./test_linear
  • Use W S A D keys to move the camera and mouse to change yaw and pitch angles.
  • Checkout tests/test_linear.cpp to simulate different systems.

Test SISO pole placement

cd /path/to/build
make test_siso
./test_siso

For more details checkout https://kvmanohar22.github.io/controls