# Steering task model, help needed

Hello,

I’m a psychology student from Croatia.

I’m trying to make a model for a steering task on a computer, and I’m stuck.

The steering task involves moving a cursor through a curved path, as fast as possible.

What control systems are involved in control of steering? My guess was velocity control and angle control, but I can’t seem to make the system work.

Does someone have an idea how should the systems be organised? What input functions would I need?

Perhaps there is a similar model somewhere?

Best,

[From Bill Powers (2011.01.29.1724 MST)]

Hello,

I'm a psychology student from Croatia.
I'm trying to make a model for a steering task on a computer, and I'm stuck.
The steering task involves moving a cursor through a curved path, as fast as possible.

A little more detail, please. Is the task supposed to have something to do with steering a car or an airplane? Or is it just about moving a cursor on the screen? Assuming the latter ...

This is evidently a two-dimensional task, since the hand will have to move in X and Y in terms of the mouse movements (or are you using a joystick?). In our simple tracking tasks a one-dimensional model works very well, since the main motion is the pitch angle at the shoulder joint as the mouse is pushed and pulled along a straight line. The forearm is confined to a level line by contact of the mouse with the table. With two dimensions, the hand will have to move from side to side as well as away from and toward the subject. If you restrict the amount of motion you might be able to use a simple model with one control system for each of two dimensions, though the two control systems will have to be adjusted independently to match the data, since the characteristics of the real control systems will be somewhat different in the two directions.

When you say the subject is to move "as fast as possible" along the path, how do you determine what is the maximum possible speed? I would think it would be more feasible to have subjects simply move a cursor to keep it on a target that moves at some experimenter-determined speed in a curved path. That way you could measure the relationship between target speed and tracking error, and see how the tracking error increases with target speed. There won't be any actual "maximum possible speed" -- you will just find that accuracy gets worse as speed increases.

What control systems are involved in control of steering? My guess was velocity control and angle control, but I can't seem to make the system work.

You could use polar coordinates, in which the reach distance from the shoulder is one axis and the angle of the distance vector is another. But at the hand, that will just be reflected as X and Y positions of the mouse, so the simplest model would just assume two control systems, one for X and one for Y. The X (sideways) axis will actually be curved a little, but you can adjust the mouse sensitivity so the curvature is small over, say, a 15-cm arc, and the radius of the curve will only change by plus or minus 7 or 8 centimeters over the range of reaching movements, out of perhaps 30 centimeters from the shoulder joint. These small nonlinearities won't affect your results very much. You'll want to standardize the way the subject sits at the table so the upper arm is close to vertical and the forearm close to horizontal over the range of movement. I always like to minimize the causes of variance before starting to take data.

To get clean data while tracking on a curved path, it would be desirable to have an initial phase where the target moves in a straight line at a constant speed, so the subject can acquire good control before the changes in path direction start and you begin recording data.

If this all sounds possible for you, we can talk some more about the actual design of the control systems. It will probably be sufficient to use a two-level model (for which I can give you the code) in each system. How about a description of your programming preferences (and skill level) while we're getting started? Do you do it yourself, or get help from a computer guru?

It sounds like fun!

Best,

Bill P.

···

At 12:22 AM 1/30/2011 +0100, Adam MatiÄ wrote:

[From Bill Powers (2011.01.29.1724 MST)]

A little more detail, please. Is the task supposed to have something to do with steering a car or an airplane? Or is it just about moving a cursor on the screen? Assuming the latter …

Right, it’s about moving a cursor on the screen. Only a mouse would be used for tracking.

This is evidently a two-dimensional task, since the hand will have to move in X and Y in terms of the mouse movements (or are you using a joystick?). In our simple tracking tasks a one-dimensional model works very well, since the main motion is the pitch angle at the shoulder joint as the mouse is pushed and pulled along a straight line. The forearm is confined to a level line by contact of the mouse with the table. With two dimensions, the hand will have to move from side to side as well as away from and toward the subject. If you restrict the amount of motion you might be able to use a simple model with one control system for each of two dimensions, though the two control systems will have to be adjusted independently to match the data, since the characteristics of the real control systems will be somewhat different in the two directions.

When you say the subject is to move “as fast as possible” along the path, how do you determine what is the maximum possible speed? I would think it would be more feasible to have subjects simply move a cursor to keep it on a target that moves at some experimenter-determined speed in a curved path. That way you could measure the relationship between target speed and tracking error, and see how the tracking error increases with target speed. There won’t be any actual “maximum possible speed” – you will just find that accuracy gets worse as speed increases.

What control systems are involved in control of steering? My guess was velocity control and angle control, but I can’t seem to make the system work.

You could use polar coordinates, in which the reach distance from the shoulder is one axis and the angle of the distance vector is another. But at the hand, that will just be reflected as X and Y positions of the mouse, so the simplest model would just assume two control systems, one for X and one for Y. The X (sideways) axis will actually be curved a little, but you can adjust the mouse sensitivity so the curvature is small over, say, a 15-cm arc, and the radius of the curve will only change by plus or minus 7 or 8 centimeters over the range of reaching movements, out of perhaps 30 centimeters from the shoulder joint. These small nonlinearities won’t affect your results very much. You’ll want to standardize the way the subject sits at the table so the upper arm is close to vertical and the forearm close to horizontal over the range of movement. I always like to minimize the causes of variance before starting to take data.

To get clean data while tracking on a curved path, it would be desirable to have an initial phase where the target moves in a straight line at a constant speed, so the subject can acquire good control before the changes in path direction start and you begin recording data.

If this all sounds possible for you, we can talk some more about the actual design of the control systems. It will probably be sufficient to use a two-level model (for which I can give you the code) in each system. How about a description of your programming preferences (and skill level) while we’re getting started? Do you do it yourself, or get help from a computer guru?

It sounds like fun!

You really cleared things up for me regarding the model structure. I was thinking along the similar lines when I first started, but for some reason, I abandoned it and went along ‘velocity control’ and got stuck.

I program myself. I’m no pro, I programed a lot in high school, almost got a B.A. in el. engineering & comp. science, but decided I was more interested in psychology.

I wanted to use C, but I never worked with graphics libraries, so I chose C#. Looks nice, fast development, fast enough execution.

Thank you very much for clearing things up! I’ll get back soon!

Best

···

On Sun, Jan 30, 2011 at 2:14 AM, Bill Powers powers_w@frontier.net wrote:

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. 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?

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?

[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:

[From Bruce Abbott (2011.02.03.0900 EST)]

If you don’t mind my asking, how are you implementing the OnIdle loop in your C# version? (I’m the guy who worked with Bill Powers to develop the LCS III demos.) I just recently downloaded Microsoft’s free edition of Visual Studio C# and am starting to learn C# programming. Eventually I’d like to rewrite all the demos in C#.

Bruce A.

···

From: Control Systems Group Network (CSGnet) [mailto:CSGNET@LISTSERV.ILLINOIS.EDU] On Behalf Of Adam Matic
Sent: Wednesday, February 02, 2011 5:41 PM
To: CSGNET@LISTSERV.ILLINOIS.EDU
Subject: Re: Steering task model, help needed

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. 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?

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?

[From Bill Powers (2011.02.02.2034 MST)]

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.

AM:

Well, as a part of requirements for my B.A. I need to construct and conduct an experiment, and then present it at the end of the year (June or July). My initial idea was a vague “make a model for the steering task”. I guess I’m not really clear myself on how exactly I should arrange the details and I’m open to suggestions.

BP: 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 := kd[i]; // k determines how large the changes in direction are
dx := targetspeed
cos(angle);
dy := targetspeed*sin(angle);
targetx := targetx + dx;

targety := targety + dy;

AM:

Ok. So I’ll have a few experimental situations (4-5?) each with a different constant speed and different path curvature. Does that sound ok? If the speed is greater then the path should be longer so I could get the same number of data points (equal duration of all runs)?

BP: 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.

No trick up my sleeve, just an idea I tried to implement and got stuck. I’ve read somewhere that the direction of movement could be predicted from eye movements, and I was wondering where exactly a subject might be looking at when changing direction of movement. I wrote a small function that returns the “slope of longest straight line going from a given point toward the end of path”. Something like a tangent of the inner curve on a path. It seemed to me my eyes were doing that. It’s all realy vague to me. No need to complicate things just yet, perhaps when I finish this one, I’ll go play with it.

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 wasn’t clear on that. I meant data points per run. I’ve got two options - longer path for greater speed to get the same nuber of data points; or same length and different number of data points. I like the first option more, but don’t really know why

BP: 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.

Ok. Thanks.

Best,

···

On Thu, Feb 3, 2011 at 5:31 AM, Bill Powers powers_w@frontier.net wrote:

Hi!

Of course I don’t mind!

If you mean the timing function, I used the Stopwatch class http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

which actually uses QueryPerformanceCounter, so I didn’t really change anything.

``````        Stopwatch t1 = new Stopwatch();
``````

t1.Start();

``````        while (counter < maxdata)
``````

{

/// recording positions …

while (t1.Elapsed.Milliseconds < dt); // does nothing

t1.Reset();

t1.Start();

counter++;

}

···

On Thu, Feb 3, 2011 at 2:58 PM, Bruce Abbott bbabbott@frontier.com wrote:

[From Bruce Abbott (2011.02.03.0900 EST)]

If you dont mind my asking, how are you implementing the OnIdle loop in your C# version? (Im the guy who worked with Bill Powers to develop the LCS III demos.) I just recently downloaded Microsofts free edition of Visual Studio C# and am starting to learn C# programming. Eventually Id like to rewrite all the demos in C#.

Bruce A.

[From Bill Powers (2011.02.04.1008 MST)]

Adam: I don’t know if this got through, but here it is again. It
starts out like your example but ends differently. Could be a
broken transmission, or one sent in error before it was
finished.

Why is your English so good?

Bill

AM: On Thu, Feb 3, 2011 at 5:31
AM, Bill Powers
powers_w@frontier.net
wrote:Ok. So I’ll have a few experimental situations (4-5?) each with a
different constant speed and different path curvature. Does that sound
ok? If the speed is greater then the path should be longer so I could get
the same number of data points (equal duration of all
runs)?

BP: From your description, there are no extra points for all your work
with writing programs – the object is to do an experiment. So attached
is a start on the program that I had in mind, from which you can probably
develop the program you had in mind. Note that the DisturbFR2 unit has
been simplified to make it easier to use. I have generated target
movements in the simplest way possible, just using one disturbance table
for x and another one for y. The velocities change instead of staying
constant. The problem with the suggestion I send you previously, in which
the x and y position are integrations, is that you can’t be sure the
target will remain on the screen. This way it always does. As you will
see, the disturbance tables are smooth enough to give easy tracking. It’s
set up for difficulty 1 but you can make that a run-time choice. You may
want to modify the way the disturbance tables are read into the program
if you want to be able to use exactly the same disturbance patterns for
different subjects, for comparison. Just remove the comments, as noted in
the program listing.

As of now, the data for target and cursor position are left in an array,
with no storing to a file. Mousex, mousey, targetx, and targety are saved
in the array (as mox, moy, tax, tay).

I’ve made idleloop a little easier to understand by separating the
program being iterated into a different procedure instead of putting it
inside idlelooop itself.

Let me know what you think.

Best.

Bill P.

···

At 07:13 PM 2/3/2011 +0100, Adam Matić wrote:

@Bill & Bruce

Update:

The Idle handler seems to be functioning somewhat differently in C# than in Delphi. I’m looking at ways to implement it with the same functionality and exact measuring.

Disturbance creation is functioning great.

Oh, and my English benefited from all the books I wasted my eyes on

Will get back soon,

[From Bruce Abbott (2011.02.06.1405 EST)]

Bill & Bruce

Update:

The Idle handler seems to be functioning somewhat differently in C# than in Delphi. I’m looking at ways to implement it with the same functionality and exact measuring.

Disturbance creation is functioning great.

Oh, and my English benefited from all the books I wasted my eyes on

Will get back soon,

Thanks for the progress report, Adam. When you get it working correctly, I’d like to see your source code and try it out in my Microsoft Visual Studio C# Express environment!

Bruce

The main parts are working!

I did some hammer banging to make it work, so I’ll be clearing up the code tomorrow. I’ll add some comments on C# specifics.

and I still need to add a few details in the interface to make it look nice and functional. I’ll post the code and the program in a day or two.

I’m going to see my professor on Wednesday to show him what I’ll be doing. That should go well. I’ll write a draft and put “neural network”

somewhere in the title.

Best,

···

On Sun, Feb 6, 2011 at 8:06 PM, Bruce Abbott bbabbott@frontier.com wrote:

[From Bruce Abbott (2011.02.06.1405 EST)]

Thanks for the progress report, Adam. When you get it working correctly, Id like to see your source code and try it out in my Microsoft Visual Studio C# Express environment!

Bruce

[From Bruce Abbott (2010.02.07.2130 EST)]

Thanks, Adam. I’m looking forward to seeing them.

Bruce

···

From: Control Systems Group Network (CSGnet) [mailto:CSGNET@LISTSERV.ILLINOIS.EDU] On Behalf Of Adam Matic
Sent: Monday, February 07, 2011 8:40 PM
To: CSGNET@LISTSERV.ILLINOIS.EDU
Subject: Re: Steering task model, help needed

The main parts are working!

I did some hammer banging to make it work, so I’ll be clearing up the code tomorrow. I’ll add some comments on C# specifics.

and I still need to add a few details in the interface to make it look nice and functional. I’ll post the code and the program in a day or two.

I’m going to see my professor on Wednesday to show him what I’ll be doing. That should go well. I’ll write a draft and put “neural network”

somewhere in the title.

Best,

On Sun, Feb 6, 2011 at 8:06 PM, Bruce Abbott bbabbott@frontier.com wrote:

[From Bruce Abbott (2011.02.06.1405 EST)]

Thanks for the progress report, Adam. When you get it working correctly, I’d like to see your source code and try it out in my Microsoft Visual Studio C# Express environment!

Bruce

Hi,

I haven’t had time to finish everything I planned, but here’s the code I’ve done so far (just rename .zi_ to .zip, I hope the attachment will go trough). I’m in the middle of exams, so I’ll be studying for a few days.

I’ve been to the professor. He’s was a bit surprised. He told me to write 10 pages on visio-motor theories, 10 pages on neural networks and modeling, and make a full draft for the experiment, then come again for consultation.

I’d like to thank you both very much for the help you’ve provided. If there is anything you think I could help regarding C#, please feel free to mail me.

Best,

Steering.zi_ (1.44 MB)

[From Bill Powers (2011.02.09.1210 MST)]

Hi,

I haven't had time to finish everything I planned, but here's the code I've done so far (just rename .zi_ to .zip, I hope the attachment will go trough). I'm in the middle of exams, so I'll be studying for a few days.

Nicely done -- you have the models for each direction working, and the analysis, too. Now you can add radio buttons to pick the difficulty and the disturbance number. I'm very pleased that it's working the way we want it to work. I have to congratulate you for being able to get all this code working with a minimum of help from comments in the text....

Best,

Bill P.

···

At 07:27 PM 2/9/2011 +0100, Adam Matic wrote:

[From Bruce Abbott (2011.02.09.1025 EST)]

Thanks! When I opened the project in Microsoft C# 2010 Express, a message popped up saying that it needed to convert your program from an older version. After I told it to go ahead, it performed the conversion and the program executed flawlessly. Nice work!

For those who might not have been following this thread, Adam converted the TrackAnalyze program (from the LCS III demos that Bill and I wrote) into Microsoft C# (C sharp) code. He also modified the task so that, instead of having the target moving only in the vertical dimension, a target circle moves at random both vertically and horizontally and you have to try to keep another circle (controlled by the mouse) over the target circle. Adam then added two additional graphs to the Analysis section to deal with the data from extra dimension.

Bruce A.

···

From: Control Systems Group Network (CSGnet) [mailto:CSGNET@LISTSERV.ILLINOIS.EDU] On Behalf Of Adam Matic
Sent: Wednesday, February 09, 2011 1:27 PM
To: CSGNET@LISTSERV.ILLINOIS.EDU
Subject: Re: Steering task model, help needed

Hi,

I haven’t had time to finish everything I planned, but here’s the code I’ve done so far (just rename .zi_ to .zip, I hope the attachment will go trough). I’m in the middle of exams, so I’ll be studying for a few days.

I’ve been to the professor. He’s was a bit surprised. He told me to write 10 pages on visio-motor theories, 10 pages on neural networks and modeling, and make a full draft for the experiment, then come again for consultation.

I’d like to thank you both very much for the help you’ve provided. If there is anything you think I could help regarding C#, please feel free to mail me.

Best,

[From Rick Marken (2011.02.09.2225)]

Bruce Abbott (2011.02.09.1025 EST)]

Thanks! When I opened the project in Microsoft C# 2010 Express, a
message popped up saying that it needed to convert your program
from an older version. After I told it to go ahead, it performed the
conversion and the program executed flawlessly. Nice work!

For those who might not have been following this thread, Adam converted
the TrackAnalyze program (from the LCS III demos that Bill and I wrote) into
Microsoft C# (C sharp) code. He also modified the task so that, instead of
having the target moving only in the vertical dimension, a target circle
moves at random both vertically and horizontally and you have to try to keep
another circle (controlled by the mouse) over the target circle. Adam then
added two additional graphs to the Analysis section to deal with the data
from extra dimension.

This sounds great, especially since my Delphi XE has completely
crapped out; I've been trying unsuccessfully to reinstall it; I guess
I'll have to deal with product support tomorrow. Maybe I'm better off
with C#; I'd like to see Adam's program. How do I get C# (a terrific
key, by the way; one of Beethoven's favorites).

I did do some work using two dimensional tracking (when I was able to
write programs in Pascal or whatever I was using on the Mac back
then).

I don't know what you are planning to do with the tracking program,
Adam, but you might get some ideas from Marken, R. S. (1991) Degrees
of Freedom in Behavior. Psychological Science, 2, 92 - 100, if you can
get a hold of that paper, though it is reprinted in my book _Mind
Readings_ if you have a copy of that. I'm so glad you are doing this
work!

Best

Rick

···

--
Richard S. Marken PhD
rsmarken@gmail.com

[From Bill Powers (2011.02.09.1210 MST)]

Nicely done – you have the models for each direction working, and the analysis, too. Now you can add radio buttons to pick the difficulty and the disturbance number. I’m very pleased that it’s working the way we want it to work. I have to congratulate you for being able to get all this code working with a minimum of help from comments in the text…

Thank you. It’s been fun!

[From Bruce Abbott (2011.02.09.1025 EST)]

Thanks! When I opened the project in Microsoft C# 2010 Express, a message popped up saying that it needed to convert your program from an older version. After I told it to go ahead, it performed the conversion and the program executed flawlessly. Nice work!

Thanks!

I’ll update my 2008 version. I’ve read that there’s a fancy new function in the Stopwatch class - no more “stopwatch.reset()” and then “stopwatch.start()”. It’s all in the stopwatch.restart().

[From Rick Marken (2011.02.09.2225)]

This sounds great, especially since my Delphi XE has completely
crapped out; I’ve been trying unsuccessfully to reinstall it; I guess
I’ll have to deal with product support tomorrow. Maybe I’m better off

with C#; I’d like to see Adam’s program. How do I get C# (a terrific
key, by the way; one of Beethoven’s favorites).

I did do some work using two dimensional tracking (when I was able to

write programs in Pascal or whatever I was using on the Mac back
then).

I don’t know what you are planning to do with the tracking program,
Adam, but you might get some ideas from Marken, R. S. (1991) Degrees

of Freedom in Behavior. Psychological Science, 2, 92 - 100, if you can
get a hold of that paper, though it is reprinted in my book _Mind

Readings_ if you have a copy of that. I’m so glad you are doing this
work!

Thank you, I’ve found the article using my university library’s account. I’ll study it.

The program will be used in an experiment I’ll be doing for my B.A. in psychology in July.

I’ll try to fly as below the radar as I can. I guess challenging the SR model would be a suicide

for a BA candidate. I have to show I’ve learned methodology I was supposed to learn in

the undergraduate years. To that end, I’ll probably do some nose-counting and analysis

of variance on recorded data, draw a nice graph showing how much of an RMS error an average

student makes

I’ll call the model “a neural network with analog elements” or something like that.

Most of the discussion will be based on how analog model of the neuron is better than

the digital, how modeling can be done using groups of neurons as elements of the network

and how all that can actually be mapped on to brain. The fact of control, the all-present

negative feedback and the hierarchy of levels will be left as implications for the ones who

wish to check out the references and find out.

That’s the current plan, anyway.

Best,