diff --git a/research/datalog.plot b/research/datalog.plot new file mode 100755 index 0000000..47a74f2 --- /dev/null +++ b/research/datalog.plot @@ -0,0 +1,71 @@ +#!/usr/bin/gnuplot + +# Plot interesting data from datalog.out simulator trace log +# +# Key bindings: +# Left-arrow: Scroll left +# Right-arrow: Scroll right +# Ctrl-Left: Scroll one screen left +# Ctrl-Right: Scroll one screen right +# Plus: Zoom in +# Minus: Zoom out +# Z: reset to show whole graph +# + +#_____________________________________________________________________________ +# MACROS +set macro +scroll = "x=(x_right - x_left) * factor ; x_left = x_left +x ; x_right = x_right + x; @normalize ; @update " +zoom = " x=(x_right - x_left) * factor ; x_left = x_left + x ; x_right = x_right - x ; @normalize ; @update" + +# Bound left and right of screen to our imported data +lnormalize = "x=(x_left < GPVAL_DATA_X_MIN ? GPVAL_DATA_X_MIN-x_left : 0) ; x_left = x_left + x ; x_right = x_right + x " +rnormalize = "x=(x_right > GPVAL_DATA_X_MAX ? GPVAL_DATA_X_MAX-x_right : 0) ; x_left = x_left + x ; x_right = x_right + x " +hnormalize = "x_left=(x_left < 0 ? 0 : x_left) " +normalize = "@lnormalize ; @rnormalize ; @hnormalize " + +# Update screen +update = " set xrange[x_left:x_right] ; refresh " + +#_____________________________________________________________________________ +# KEY BINDINGS + +# scroll +bind "Right" "factor=0.10; @scroll" +bind "Left" "factor=-0.10; @scroll" + +# scroll by a whole screen +bind "Ctrl-Right" "factor=1; @scroll" +bind "Ctrl-Left" "factor=-1; @scroll" + +# zoom +bind "+" "factor=0.25; @zoom" +bind "=" "factor=0.25; @zoom" +bind "-" "factor=-0.5; @zoom" + + +#_____________________________________________________________________________ +# LOAD DATA + +# Note: If your datalog columns change, adjust the following to match. + +set yrange [-1:14] +set style fill transparent solid 0.5 noborder +plot 'datalog.out' u ($1/10000000):( $6*0.8 + 9) with steps t 'X_STEP' , \ + 'datalog.out' u ($1/10000000):( $7*0.8 + 8) with steps t 'X_DIR' , \ + 'datalog.out' u ($1/10000000):( $9*0.8 + 7) with steps t 'X_ENABLE' , \ + 'datalog.out' u ($1/10000000):($10*0.8 + 6) with steps t 'Y_STEP' , \ + 'datalog.out' u ($1/10000000):($11*0.8 + 5) with steps t 'Y_DIR' , \ + 'datalog.out' u ($1/10000000):($13*0.8 + 4) with steps t 'Y_ENABLE' , \ + 'datalog.out' u ($1/10000000):($21*0.8 + 3) with steps t 'STEPPER_ENABLE' , \ + 'datalog.out' u ($1/10000000):($2/1000) with filledcurve x1 t 'X_POS' , \ + 'datalog.out' u ($1/10000000):($3/1000) with filledcurve x1 t 'Y_POS' , \ + 'datalog.out' u ($1/10000000):($4/10 ) with filledcurve x1 t 'Z_POS' + +# Set the range (need to do this after our initial plot so data is loaded) +x_left = GPVAL_DATA_X_MIN +x_right= GPVAL_DATA_X_MAX + +set yrange [-1:14] ; @update + +pause mouse close