Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jkleiber/control-blocks
https://github.com/jkleiber/control-blocks
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/jkleiber/control-blocks
- Owner: jkleiber
- Created: 2022-08-04T00:57:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-11-15T04:59:41.000Z (almost 2 years ago)
- Last Synced: 2024-10-11T03:14:21.974Z (28 days ago)
- Language: C++
- Size: 16.8 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# control-blocks
The goal of this project is to make a node based control system block diagram software.
This will enable open source development and simulation of control systems.![Diagram Example](/img/example_diagram.png)
## Current Capability
- Basic GUI and simulation for simple math / constants
- Block types:
- Constant
- Sum
- Gain (only faciliator of feedback at the moment)
- Mux (can add ports but not remove)
- Display
- Can add/remove blocks and wires
- Saving and loading the diagram (only one filename supported right now)## Dependencies
See `third_party` for a list of dependencies and how to install them.## Active Work
- ODE solver
- Using Boost for this.
- Improve feedback systems
- This should be ready theoretically if each Dynamic system block actually implements `ApplyInitial()`
- Unclear if basic blocks like sum and mux should have this feature, but it is likely they should
- Variables in a workspace## Roadmap
The current work is focusing on Steps 1-3.1. Basic GUI and scripting
- Scripting will tentatively be in python, but might end up in C++
- C++ will be used in the backend for speed optimization in the future.
2. Simulation for general dynamical systems (x_dot = f(x,u,t))
- Series simulation only, no summing junctions
3. Simulation for linear time invariant (LTI) systems
- State-space LTI systems
- S-domain transfer functions
4. Diagnostics for LTI systems
- Bode plot
- Nichols chart
- Nyquist plot
- Pole-zero map
- Step response
- Impulse response
5. Basic block diagram algebra
- Summing junctions
- Feedback systems
- Multiplexing
6. Advanced block diagram manipulation
- I/O linearization
7. Controllers
- PID
- LQR
f
8. Advanced control
- H-infinity
- Model predictive control (MPC)