Adjust numerical values from a terminal user interface.
Project description
Valmix
Adjust numerical values from a terminal user interface.
Usage
Suppose you have a Python program with parameters you want to tune:
def main(kp: float, kd: float):
pass # your code here
Valmix gives a systematic way to tune these parameters from the command line. First, wrap your parameters in multiprocessing.Value
s:
import multiprocessing as mp
kp = mp.Value("f", 10.0)
kd = mp.Value("f", 1.0)
Next, update your program to read from the multiprocessing values. For example:
import numpy as np
import time
def main(kp: mp.Value, kd: mp.Value):
with open("/tmp/output", "w") as output:
for _ in range(100):
u = np.clip(kp.value * 1.0 + kd.value * 0.1, 5.0, 20.0)
output.write(f"{u}\n")
output.flush()
time.sleep(1.0)
Finally, run your program and Valmix together, specifying the tuning range for each value:
# Call the main function in a separate process
main_process = mp.Process(target=main, args=(kp, kd))
main_process.start()
# Display the terminal user interface in this process (blocking call)
valmix.run(
{
"kp": (kp, np.arange(0.0, 20.0, 0.5)),
"kd": (kd, np.arange(0.0, 10.0, 0.5)),
}
)
This will fire up a terminal user interface (TUI) where you can tune kp
and kd
while the program runs in the background:
Useful for instance to tune robot behaviors in real-time 😉
Installation
From PyPI
pip install valmix
See also
Related software:
- Textual: terminal user interface (TUI) framework for Python, used to build this tool.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.