Website here: https://mfarzan.ir/learncontrol/
Project structure notes:
- Diagrams are genarated using the Makefile at
/diagrams
(Usemake install
to copy them where React can find them). The genarated files are copied to/src/img
. The output files are commited as well, so you don't have to run this step at all, unless you're adding new diagrams. - Heavy calculations are handled using WebAssembly. The Makefile at
/wasm/learncontrolwasm
builds the rust package andmake install
stores a symlink of the locally built package. The package binaries are commited, so if you're not modifiying the rust code you can just link to the prebuilt wasm package usingmake install
. (all
target should be satisfied, but if it still gives error, run the make instructions manually.) - Use
npm start
to start developement server andnpm run build
to create optimized static files. Useexport REACT_APP_BUILD_LANG=fa
to build the Persian version.
TODO:
- Add noise
- Allow more inputs (rect, ramp, etc.)
- Add open-loop controller
- View control effort, controller freq response, controller zero-pole diagram
- Show the trace line for zeros and poles while user is dragging parameters
- Use adaptive step size