@@ 14,17 14,31 @@
%% https://www.kalmanfilter.net/
%%
%%
+%% Ok to make life simpler for expository purposes we're just gonna use a
+%% 1D position model. Once it works we can try to generalize it
-module(alg_kalman).
-export([run/0]).
-% Ok to make life simpler for expository purposes we're just gonna use a
-% 1D position model
-
-record(state, {x, vx}).
-record(uncertainty, {err_x, err_vx}).
+%% Abortive attempt to generalize the algorithm.
+%% TODO NEXT: Work on making all the functions take/return
+%% a #state{} and #val{}.
+%% A single value/dimension that the predictor operates on
+%-record(val, {v, err}).
+
+%% The whole state of the predictor.
+%% This requires models for predicting the state and error,
+%% which will depend on this whole state. Each field of this is one
+%% #val{}.
+%%
+%% Each measurement must be this whole state, and each
+%% step of the filter will return a new copy of this state.
+%-record(state, {x , vx}).
+
%% Kalman Gain is also written Kn.
%%
%% These are all independent of what model we use so we just do a single
@@ 122,6 136,8 @@ step(State, Err, {MeasurementState, Meas
{EstimatedState, EstimatedErr}.
+
+
run() ->
InitialState = #state { x = 0.0, vx = 0.0 },
InitialErr = #uncertainty { err_x = 0.1, err_vx = 0.1 },