Estimating parameters of an unknown PID controller

Say that I have your standard PID controller at work. To keep it extremely simple imagine I have a target $x^*$ on the variable $x$. Then the controller is:

$y(t) = K_p ( x^* - x_t) + K_i \int_0^t (x^* - x_{\tau})d \tau + K_d \frac{d}{dt} (x^* -x_t)$

Now, I do have numerical observations for all $t \in [0,T]$ of both $y_t$ and $x_t$. This data generating process is a PID controller of which I do not know the three parameters. I'd like to estimate them!

Now if the data was perfect I would just need the first 3 observations to solve a system of equation and I'd be done. The data isn't perfect though (imagine an $\epsilon$ added to my observed $y_t$). How should I proceed?

I couldn't find literature regarding this problem so I am somewhat at a loss. How do you attack this?

• Do I perform an OLS? I can approximate the integrative and derivative part with my data set but I wonder how the errors will compound. Plus there is $t$ and I wonder if any time series object would do the job better
• I could try brute search or some weird metropolis hastings trick where I keep trying random parameters and choose the ones that minimize SSR or prediction error, but I think that's my last option.

Any ideas?

-
add comment