|
Motion Master 6.0.0-alpha.86
Next-generation motion control software
|
The auto-tuning executable, started and supervised as a child process. More...
#include <chrono>#include <cstdint>#include <expected>#include <filesystem>#include <string>Go to the source code of this file.
Classes | |
| struct | mm::auto_tuning::ProcessOptions |
| What to start, and where. More... | |
| class | mm::auto_tuning::Process |
| Starts the auto-tuning executable and keeps it running for the process lifetime. More... | |
Namespaces | |
| namespace | mm |
| namespace | mm::auto_tuning |
Functions | |
| std::filesystem::path | mm::auto_tuning::defaultBinaryName () |
| Name of the executable Motion Master installs beside itself. | |
Variables | |
| constexpr std::uint16_t | mm::auto_tuning::kDefaultPort = 63528 |
| Port the child serves on when the configuration names none. | |
The auto-tuning executable, started and supervised as a child process.
Auto-tuning is a separate program. It holds the tuning calculations, and the fit that turns recorded measurements into a plant model. It is compiled from another repository and serves an HTTP API on loopback. Motion Master starts one instance at startup and talks to it for the rest of the run.
It drives nothing. Every function computes on the numbers it is handed. The measurement a plant model is fitted to is recorded on the drive, by the system identification procedure, and this program only ever sees the samples that procedure produced.
It is a child process rather than a library because the algorithms are Python compiled to a self-contained executable of about 65 MB. Linking that into the server is not an option, and the process boundary also means a numerical routine that hangs cannot take the server with it.
This class owns the process. Nothing here makes a tuning call; Client does that.