Ahora que tenemos el intérprete listo, y para poder hacer montones
de pruebas rápidas, lanzamos el monitor (con la opción echo
) y vamos
probando distintas constantes de pid simplemente tecleando a través del
puerto serie:
~/git/adefesio_master$ [master *%=] pio device monitor --echo | tee docs/plots/2019-01-27-con-prompt-1.dat
--- Miniterm on /dev/ttyUSB0 115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
A> kp -1.0
kp=-1.00
A> go
GO!
ultimaVel velObjetivo errorLeft errorAcumulado kp kd ki potencia ticks
0.00000 0.10000 -0.10000 0.00000 0.10000 0.00000 0.00000 0.10000 146
(...)
0.00000 0.10000 -0.10000 -0.10000 0.10000 0.00000 0.00000 0.20000 147
0.06085 0.10000 -0.03915 -0.03437 0.03915 0.00000 0.00000 0.50691 0
0.07085 0.10000 -0.02915 -0.03915 0.02915 0.00000 0.00000 0.53606 0
A> ki -0.1
ki=-0.10
A> go
GO!
ultimaVel velObjetivo errorLeft errorAcumulado kp kd ki potencia ticks
0.00000 0.10000 -0.10000 -0.00138 0.10000 0.00000 0.00014 0.10014 180
0.00000 0.10000 -0.10000 -0.10000 0.10000 0.00000 0.01000 0.21014 181
0.00000 0.10000 -0.10000 -0.10000 0.10000 0.00000 0.01000 0.32014 182
0.00000 0.10000 -0.10000 -0.10000 0.10000 0.00000 0.01000 0.65014 185
(...)
0.05324 0.10000 -0.04676 -0.03726 0.04676 0.00000 0.00373 0.50159 0
0.06406 0.10000 -0.03594 -0.04676 0.03594 0.00000 0.00468 0.54220 0
0.07574 0.10000 -0.02426 -0.03594 0.02426 0.00000 0.00359 0.57005 0
0.10097 0.10000 0.00097 -0.02426 -0.00097 0.00000 0.00243 0.57150 1
A>
y así sucesivamente. En otra ventana lanzamos un pequeño oneliner en bash
que nos extrae del fichero de datos las últimas líneas desde el último go
,
y lanza el gnuplot.
while [ 1 ]; do tac 2019-01-27-con-prompt-1.dat | sed '/^GO.*/,$ d' | tac | head -n -1 > /tmp/plot.dat | gnuplot 2019-01-27.gp; done
Para hacer las pruebas, sólo tenemos que:
Haciendo las pruebas tal y como indicamos antes es muy cómodo y rápido ir probando valores. Encontramos que unos valores aceptables son:
kp = -0.6
kd = -0.12
ki = -0.01