[From Bill Powers (2011.02.02.2034 MST)]
AM: Update:
I took large chunks of code from TrackAnalyse (from LCSIII) and rewrote them in C#. What I'm missing are the disturbance generator and the fitting part. I guess I need some general guidelines on how to approach those problems.
I could probably use the disturbance generator from TrackAnalyse for the Y dimension, but I can't figure out how to generate the X dimension disturbances.
BP: The curvature of the path taken by the target (if you do the experiment that way) will generate all the disturbances you need. If you're not going to be studying the way participants learn a particular path by using the same path over and over, you can use a different curvature on every experimental run, using one disturbance from each of two tables in the file "distable." I don't know the details of your experiment so it's hard to suggest useful variations.
You could, of course, use a single disturbance table to vary the direction in which a target is moving while it moves at constant speed. Since the tables have a known peak-to-peak amplitude, equal on both sides of zero, you could make the variations in direction small or large, to generate a target path ranging from almost a straight line to a path with large deviations and even loops in it. Of course you could also use a second disturbance table to vary the speed of the target.
For an example of a constant-speed target, if d[i] is the ith value in a disturbance table, you could say
angle := k*d[i]; // k determines how large the changes in direction are
dx := targetspeed*cos(angle);
dy := targetspeed*sin(angle);
targetx := targetx + dx;
targety := targety + dy;
You see that I'm assuming that you will move a target along the path you want the participant to follow, so you control the speed by determining how fast the target moves. If you want to let the subject determine the speed, the problem gets harder because you don't know what the intended position of the cursor is at any moment. You can see where the cursor is but not the place where the subject is trying to make it move. So you don't know how to measure the error signal, and you can't match the behavior to a model. Unless you have some trick up your sleeve that I haven't thought of.
AM: If the speed should be constant along the path, then the X disturbance should somehow depend on Y disturbance and on the number of data points. Should I also have less data points for slower speeds?
BP: You're going to have one data point for every 1/60 second. Don't mess with that: it's your basic connection between the physics of motion in physical time and the computational iterations.
AM: I also have a question about parameters from TrackAnalyse - the Bill1.par, Bill3.par, and Bill5.par. I noticed there are large differences between the Damping constants. How is this happening if the same person does the tracking, is it because of inertia, or have I misunderstood something?
BP: That's just how the best-fit values come out -- it wasn't intended. It shows that we dont have quite the right model yet -- or perhaps that with more difficult tasks, participants actually tighten up their muscles and change the damping factor! The amount of damping has only a small effect on the fit of the model to the data, which might explain the variation in the damping factor that we get -- except that the damping factor always goes up at the higher difficulties by about the same amount, in all people I have tested. So to get rid of those large variations we need to add something to the model, or find some way of measuring the stiffness changes in the muscles..
I get more uniform values of the parameters over the range of difficulties when I use a two-level model, in which a position-control system acts by adjusting the reference level for a velocity-control system (as in demo 5-1 in LCSIII). The reference signal is one parameter and the gains of the two control system output functions are the others. The velocity is sensed by measuring the difference in successive positions divided by dt, the duration of one iteration. there are still variations in t he parameters with difficulty, but they aren't nearly as great. But the parameters still change, and we don't know if that is because they really change, or because we haven't found exactly the right model yet. I haven't even looked at nonlinearities yet, or slip-stick friction...
I wouldn't worry about the damping -- you could just set it to a constant and get a decent fit. We probably won't whittle down the last sources of variability until we put a realistic muscle into the model, like Hill's muscle model.
Best,
Bill P.
···
At 11:41 PM 2/2/2011 +0100, Adam Matic wrote: