[From Bill Powers (2007.05.21.1425 MDT)]
Martin Taylor (2007.05.21) --
Looking over the diagram for "control17o.vi", I believe I see that you were advancing the phase of the target perception by an adjustable fraction of the input delay time, so the controller was tracking the target as if it were some distance ahead of where it actually is, although still with some perceptual delay.
The target signal seems to come from "Reference array", but the way it's dealt with after that is still beyond me. At some point you seem to be calculating Vt = 0.9*Vt + 0.1*(dVt/dt), which supposedly produces something called "smoothed derivative," which in turn seems to be identical with Vt. That is put into an "Array of past target derivatives" which becomes an input to an adjustable prediction lag. The lagged smoothed target derivative then is subtracted from the lagged output velocity (output V) (where I take it that the "output" is actually the cursor position), and that produces the "chase error" after subtraction from the "chase reference value" which comes from the position error signal.
At this point I have lost track -- it seems that the higher order velocity signal is being used to adjust the reference for the lower order velocity controller, whereas I would have expected the position error to determine the velocity reference. But I could easily be misreading.
I hope you realize that you're proposing an extremely complex model here, unless you have some much simpler way for these computations to be carried out. Everything that is in the main rectangle of this block diagram represents part of the model, and amounts to a claim that the correponding computation is going on in the real system. By implication, each independent block calls for at least one parameter, whether given an arbitrary value or made adjustable. I understand that some functions require rather indirect ways of carrying them out due to limitations of the simulation language, but even discounting those there are parameters unaccounted for. For example, you have an overall lag parameter, but it seems to adjust not only the perceptual input lags, but the lags for derivative signals for both "input" and target, as well as affecting the relative prediction lag. Is there some fundamental reason why those lags have to be the same? And the smoothing method uses arbitrary constants of 0.9 and 0.1 (1.0 - 0.9), which should by rights be adjustable since nothing says they have to have those particular values -- in two different places.
One of the pitfalls of modeling is the problem of proving that the system you have modeled actually works in the way you say it works. Hidden or covert loops can invalidate what one says on the basis of looking at just part of the system, and when the design gets complicated enough it's really not possible to be sure that what one says is happening is really happening. To be sure I understand a model, I must either keep it extremely simple, or actually go through the chore of setting up and solving the system equations, which I would certainly not like to have to do with control17o.vi.
I hope the models you ended up using are simpler than this one!
Best.
Bill P.