# Pretty good system identification results

I've been making steady progress on the system identification of our experiments and this is one of the better fits.

This example is for run # 700. Luke is the rider @ 5.1657 m/s for a line tracking with disturbance run on the pavilion floor. There are two input pulses and Luke tries to stay on the line. The data was low pass filtered @ 30 Hz. I'm fitting a linear discrete grey box model of the form:

$$x(t+1) = \mathbf{A}(\theta)(t) + \mathbf{B}(\theta)(t) + \mathbf{K(\theta)}e(t)$$ $$y(t) = \mathbf{C}(\theta)(t) + \mathbf{D}(\theta)(t) + e(t)$$where \(\theta\) are six parameters of our control model:

$$\theta=[k_\delta \quad k_\dot{\phi} \quad k_\phi \quad k_\psi \quad k_{y_q} \quad \omega_{nm}]^T$$

The input, fB, are two lateral pulses applied just below the seat of bicycle.

For the fits shown, the initial condition and \(\mathbf{K}\) matrices are zero (which may not necessarily be a good idea). The output variables are named as they are in Meijaard2007.

The model (blue) fits the data (black) very well. The steer torque (tDelta) doesn't fit as well as the rest. Steer torque is notoriously difficult to measure and the model may have a hard time predicting it because of un-modeled phenomena like tire/road interactions and the inertial effects of the rider's moving arms (I almost have the model working for the arms addtion).

The parameters are identified as:

14.7804 -0.9121 4.1347 0.4931 0.2572 43.2367

We are interested in identifying the controller parameters, \(\theta\), accurately for a large set of runs at different speeds so that we can characterize the controller. With the noise matrix, \(\mathbf{K}\), set to zero the parameters are optimally chosen such that the outputs of the model is best fit to the outputs from the experimental data. As you can see, when the input is basically zero, the model still tries to fit the output data even though this is the human remnant, or noise. Theoretically if a noise model, in our case \(\mathbf{K}e(t)\), is chosen correctly, then the model will still fit well, but the identified parameters, \(\theta\), will be different and be more accurate. The \(\mathbf{K}\) matrix is in fact a Kalman gain which is a result of formulating the Kalman filter. If you can characterize the process and output noise which their respective covariance, you can get a good estimate of \(\mathbf{K}\).

My intuition tells me that I can make use of the line tracking runs which had no disturbances to try an characterize the process noise (i.e. human remnant), but I'm not sure how to do that yet. Any suggestions are welcome.