Motion Master 6.0.0-alpha.86
Next-generation motion control software
Loading...
Searching...
No Matches
process.h File Reference

The auto-tuning executable, started and supervised as a child process. More...

#include <chrono>
#include <cstdint>
#include <expected>
#include <filesystem>
#include <string>
Include dependency graph for process.h:
This graph shows which files directly or indirectly include this file:

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.
 

Detailed Description

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.