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.
- 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
- cmake 3.3+
- C++14 (g++-5.4.0)
- OpenGL 3.3+
- Eigen3
- gl3w
- After cloning the repository, you need to add the dependencies. Specifically
gl3w
files. Checkout this on how to generategl3w.h
glcorearb.h
andgl3w.c
files. Place the headers underinclude/controls/ext/gl3w
directory. Structure should look something like:
include/
controls/
ext/
gl3w/
- gl3w.h
- glcorearb.h
... and place gl3w.c
under src/
.
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 ..
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.
cd /path/to/build
make test_siso
./test_siso
For more details checkout https://kvmanohar22.github.io/controls