Website here: https://mfarzan.ir/learncontrol/
Project structure notes:
- Diagrams are genarated using the Makefile at
/diagrams(Usemake installto 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/learncontrolwasmbuilds the rust package andmake installstores 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. (alltarget should be satisfied, but if it still gives error, run the make instructions manually.) - Use
npm startto start developement server andnpm run buildto create optimized static files. Useexport REACT_APP_BUILD_LANG=fato 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