Revised Tracking Model -- Processing version

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

BA: That online Processing IDE is wonderful! Using it exposed a flaw in my reasoning: the output of the level 2 controller should set the reference for a level 1 control system that controls, not cursor position, but rather, rate of change in cursor position. This is because the output of the level 2 controller is proportional to the error in cursor position rather than indicating the absolute position the cursor should move toward. I’ve redone the program to match the new model, but for some reason the online Processing IDE won’t let me copy it. I’m heading out the door right now so I’ll post it later.

Here is a revised diagram for the new tracking model:

image00324.jpg

And here is the Processing-language code:

// Two-level tracking control system

//----------------------------------

float i1=100, i1v=0, p1, r1, e1, o1;

float i2a, i2b=100, p2, r2, e2, o2;

float k1=.05, k2=100, s1=1;

float dt = .01;

void setup ()

{

size(100, 400);

}

void draw ()

{

background(255);

i2a = mouseY;

fill(255,0,0);

rect(30,i2a,20,5);

rect(70,i2a,20,5);

// level 2: relationship level

r2 = 0;

p2 = i2a - i2b;

e2 = r2 - p2;

o2 = k2*e2;

// level 1: cursor velocity control

r1 = -o2;

p1 = i1v;

e1 = r1 - p1;

o1 += k1e1dt;

i1v = o1;

i2b = i1+i1v;

fill(0,255,0);

rect(50,i2b,20,5);

}

Just remove the existing code in the online Processing IDE (http://semmy.me/ide/ ) and paste in the new code. (After pasting, check to be sure that a couple of extra brackets did not get appended at bottom; I have found that these cause an error.

In the new model, the level 1 cursor velocity control increases or decreases the cursor’s vertical velocity as needed to close the distance between the target position and cursor position. The physical cursor position changes as a result. Cursor position is sensed and converted to a perceptual signal just as the target position is, and both perceptions are fed into the level 2 relationship controller’s input function.

I changed the appearances of target and cursor a bit to resemble their appearance in the Delphi demo.

Bruce

[From Bruce Abbott (2014.03.21.1145 EDT)]

It occurs to me that the diagram I presented for the revised tracking model might be a bit misleading in that cursor position and cursor velocity are represented in separate places. I presented cursor position as a physical object that is perceived via input function if4, and cursor velocity as the rectangle labeled “CV” in the velocity controller. But to perceive cursor velocity, you must perceive cursor position, and this is not made clear in the diagram.

A better arrangement would be one similar to the diagram Bill Powers presented in his description of the inverted pendulum demo of LCS III. The pendulum an its cart are represented as a physical object from which position, and velocity are extracted through integration. This way of representing things makes clear the fact that all these variables arise from the same physical object.

One way to fix my diagram of the tracking system would be to have the physical cursor perceived via the if4 function, as is currently the case, and then extract velocity from change in position per unit of time (i.e., differentiation) to create the velocity perceptual signal that inputs to the level 1 cursor velocity controller. The output of this controller affects the velocity of the physical cursor on the computer screen, thus changing the position seen via the if4 perceptual input function. Computationally, cursor velocity is integrated over time to produce the new cursor position at each time-step.

Notice that I am not suggesting a change in the way that the tracking system is organized. The current diagram correctly depicts that. What changes is how the physical side (the environment consisting of physical target and cursor on the screen) is represented in the diagram.

By the way, there is some tantalizing evidence that the visual system may handle velocity perception separately from position perception. That evidence come from a few extremely rare cases of brain injury that caused the loss of the ability to perceive motion in the visual scene. For these individuals, objects seem frozen in space for a time, then suddenly jump to new locations and again freeze in position. Although the person perceives the change in location, this is not perceived as motion. Rather, it’s more like viewing a sequence of slides without any perception of objects moving from one slide to the other, even though their positions are displaced.

Bruce

[From Rick Marken (2014.03.21.1230)]

image00324.jpg

···

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

Here is a revised diagram for the new tracking model:

And here is the Processing-language code:

RM: This is super Bruce! It made me realize that I should be using a two level model in my object interception models (or even three level; after all the muscle forces accelerate the body). I find that the movement of the cursor looks a little more realistic if you increase the gain of the level 1 (velocity) control system a bit. I changed k1 from .05 to .09 and it looked much better – well, it controlled better so it looked more like my behavior. I am pretty good at tracking, if nothing else;-)

But apparently my granddaughter takes after me in this regard (the tracking, not the nothing else;-) Here she is at 5 1/2 months,“tracking” the “up” and “down” words of her father:

http://www.youtube.com/watch?v=Wu2_Beqt9aI

Or is she? Who cares? What could be cuter!

Best

Rick


Richard S. Marken PhD
www.mindreadings.com
It is difficult to get a man to understand something, when his salary depends upon his not understanding it. – Upton Sinclair

[From Rick Marken (2014.03.21.1255)]

···

Bruce Abbott (2014.03.21.1145 EDT)–

By the way, there is some tantalizing evidence that the visual system may handle velocity perception separately from position perception. That evidence come from a few extremely rare cases of brain injury that caused the loss of the ability to perceive motion in the visual scene. For these individuals, objects seem frozen in space for a time, then suddenly jump to new locations and again freeze in position. Although the person perceives the change in location, this is not perceived as motion. Rather, it’s more like viewing a sequence of slides without any perception of objects moving from one slide to the other, even though their positions are displaced.

RM: This is a great find! Do you have a reference for it? This would be perfect for Warren’s categorization of controlled variables project (should he choose to accept it;-). It certainly shows that position and velocity are separate perceptual variables.

Best

Rick


Richard S. Marken PhD
www.mindreadings.com
It is difficult to get a man to understand something, when his salary depends upon his not understanding it. – Upton Sinclair

[From Bruce Abbott (2014.03.21.1910 EDT)]

Rick Marken (2014.03.21.1255)] –

Bruce Abbott (2014.03.21.1145 EDT)

By the way, there is some tantalizing evidence that the visual system may handle velocity perception separately from position perception. That evidence come from a few extremely rare cases of brain injury that caused the loss of the ability to perceive motion in the visual scene. For these individuals, objects seem frozen in space for a time, then suddenly jump to new locations and again freeze in position. Although the person perceives the change in location, this is not perceived as motion. Rather, it’s more like viewing a sequence of slides without any perception of objects moving from one slide to the other, even though their positions are displaced.

RM: This is a great find! Do you have a reference for it? This would be perfect for Warren’s categorization of controlled variables project (should he choose to accept it;-). It certainly shows that position and velocity are separate perceptual variables.

BA: It does indeed. I remember reading about this condition long ago in a Scientific American article, if I’m not mistaken. But you can read about it and get references for it via the Wikipedia article on Akinetopsia: http://en.wikipedia.org/wiki/Akinetopsia .

When we scan a scene, our eyes move in saccades – short jumps – which allows the image to stabilize on the retina briefly and thus minimizes “motion blur.” In effect, the visual system is getting a series of still images, one per saccade. It makes sense to me that the “motion” perceptual system does something akin to “morphing” between stills to give the impression of smooth changes the image of an object whose position changes between “stills.” I would suggest that this “morphing” ability is what is lost in those patients who suffer akinetopsia.

Here’s something else: A couple of years ago I taught a course on sensation and perception; the textbook I adopted asserted that there are separate visual pathways in the cortex for handling fast-moving and slow-moving visual objects. The “fast” system allows you to react quickly, as when catching a fastball, but at relatively low resolution; the “slow” system provides greater resolution of the image but cannot track the motion of the object as well as the “fast” system can.

Bruce

[From Bruce Abbott (2014.03.21.1920 EDT)]

Rick Marken (2014.03.21.1230)]

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

Here is a revised diagram for the new tracking model:

image00324.jpg

And here is the Processing-language code:

RM: This is super Bruce! It made me realize that I should be using a two level model in my object interception models (or even three level; after all the muscle forces accelerate the body). I find that the movement of the cursor looks a little more realistic if you increase the gain of the level 1 (velocity) control system a bit. I changed k1 from .05 to .09 and it looked much better – well, it controlled better so it looked more like my behavior. I am pretty good at tracking, if nothing else;-)

BA: I’m working on a revision of that diagram to better reflect the organization of this system (I hope!). (I hate having to post these revisions; if I could just get it right the first time they wouldn’t be necessary. But as I continued to think about it, I decided that the above revision isn’t quite right either, although the model it supposedly describes works properly.) I’ll post the latest version (the revised revision, for heaven’s sake!) when I’m satisfied with it.

But apparently my granddaughter takes after me in this regard (the tracking, not the nothing else;-) Here she is at 5 1/2 months,“tracking” the “up” and “down” words of her father:

http://www.youtube.com/watch?v=Wu2_Beqt9aI

Or is she? Who cares? What could be cuter!

BA: She is absolutely adorable, Rick! You must be one proud Grandpa!

Bruce

[From Adam Matic 2014.03.22]

Nice! Waiting for the revised diagram.

Just to be clear on the use of terms, what would you say are the controlled variables in this model?

Rate of change of visual variables is definitely interesting. My two cents: could it be that variable p2 (difference) is differentiated and controlled in the inner level?

Adam

image00324.jpg

···

On Sat, Mar 22, 2014 at 12:21 AM, Bruce Abbott bbabbott@frontier.com wrote:

[From Bruce Abbott (2014.03.21.1920 EDT)]

Rick Marken (2014.03.21.1230)]

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

Here is a revised diagram for the new tracking model:

And here is the Processing-language code:

RM: This is super Bruce! It made me realize that I should be using a two level model in my object interception models (or even three level; after all the muscle forces accelerate the body). I find that the movement of the cursor looks a little more realistic if you increase the gain of the level 1 (velocity) control system a bit. I changed k1 from .05 to .09 and it looked much better – well, it controlled better so it looked more like my behavior. I am pretty good at tracking, if nothing else;-)

BA: I’m working on a revision of that diagram to better reflect the organization of this system (I hope!). (I hate having to post these revisions; if I could just get it right the first time they wouldn’t be necessary. But as I continued to think about it, I decided that the above revision isn’t quite right either, although the model it supposedly describes works properly.) I’ll post the latest version (the revised revision, for heaven’s sake!) when I’m satisfied with it.

But apparently my granddaughter takes after me in this regard (the tracking, not the nothing else;-) Here she is at 5 1/2 months,“tracking” the “up” and “down” words of her father:

http://www.youtube.com/watch?v=Wu2_Beqt9aI

Or is she? Who cares? What could be cuter!

BA: She is absolutely adorable, Rick! You must be one proud Grandpa!

Bruce

[David Goldstein (2014.03.22.01:12)]

Bruce,

After downloading the revised tracking program, I got this error:

David

image00324.jpg

revised tracking program.jpg

···

On Friday, March 21, 2014 10:37 AM, Bruce Abbott bbabbott@FRONTIER.COM wrote:

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

BA: That online Processing IDE is wonderful! Using it exposed a flaw in my reasoning: the output of the level 2 controller should set the reference for a level 1 control system that controls, not cursor position, but rather, rate of change in cursor position. This is because the output of the level 2 controller is proportional to the error in cursor position rather than indicating the
absolute position the cursor should move toward. I’ve redone the program to match the new model, but for some reason the online Processing IDE won’t let me copy it. I’m heading out the door right now so I’ll post it later.

Here is a revised diagram for the new tracking model:

TrackingDiag v2.jpg

And here is the Processing-language code:

// Two-level tracking control system

//----------------------------------

float i1=100, i1v=0, p1, r1, e1, o1;

float i2a, i2b=100, p2, r2, e2, o2;

float k1=.05, k2=100, s1=1;

float dt = .01;

void setup ()

{

size(100, 400);

}

void draw ()

{

background(255);

i2a = mouseY;

fill(255,0,0);

rect(30,i2a,20,5);

rect(70,i2a,20,5);

// level 2: relationship level

r2 = 0;

p2 = i2a - i2b;

e2 = r2 - p2;

o2 = k2*e2;

// level 1: cursor velocity control

r1 = -o2;

p1 = i1v;

e1 = r1 - p1;

o1 += k1e1dt;

i1v = o1;

i2b = i1+i1v;

fill(0,255,0);

rect(50,i2b,20,5);

}

Just remove the existing code in the online Processing IDE (http://semmy.me/ide/ ) and paste in the new code. (After pasting, check to be sure that a couple of extra brackets did not get appended at bottom; I have found that these cause an error.

In the new model, the level 1 cursor velocity control increases or decreases the cursor’s vertical velocity as needed to close the distance between the target position and cursor position. The physical cursor position changes as a result. Cursor position is sensed and converted to a perceptual signal just as the target position is, and both perceptions are fed into the level 2 relationship
controller’s input function.

I changed the appearances of target and cursor a bit to resemble their appearance in the Delphi demo.

Bruce

[From Bruce Abbott (2012.03.22.0545 EDT)]

There is no error shown below. Did you check for extra curly brackets at the end of the program after you pasted it, as I suggested? These get appended to the program after you paste it and cause a (bogus) missing semicolon error.

Why the gigantic typeface?

Bruce

image00324.jpg

···

From: Control Systems Group Network (CSGnet) [mailto:CSGNET@LISTSERV.ILLINOIS.EDU] On Behalf Of D GOLDSTEIN
Sent: Saturday, March 22, 2014 1:18 AM
To: CSGNET@LISTSERV.ILLINOIS.EDU
Subject: Re: Revised Tracking Model – Processing version

[David Goldstein (2014.03.22.01:12)]

Bruce,

After downloading the revised tracking program, I got this error:

David

On Friday, March 21, 2014 10:37 AM, Bruce Abbott bbabbott@FRONTIER.COM wrote:

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

BA: That online Processing IDE is wonderful! Using it exposed a flaw in my reasoning: the output of the level 2 controller should set the reference for a level 1 control system that controls, not cursor position, but rather, rate of change in cursor position. This is because the output of the level 2 controller is proportional to the error in cursor position rather than indicating the absolute position the cursor should move toward. I’ve redone the program to match the new model, but for some reason the online Processing IDE won’t let me copy it. I’m heading out the door right now so I’ll post it later.

Here is a revised diagram for the new tracking model:

TrackingDiag v2.jpg

And here is the Processing-language code:

// Two-level tracking control system

//----------------------------------

float i1=100, i1v=0, p1, r1, e1, o1;

float i2a, i2b=100, p2, r2, e2, o2;

float k1=.05, k2=100, s1=1;

float dt = .01;

void setup ()

{

size(100, 400);

}

void draw ()

{

background(255);

i2a = mouseY;

fill(255,0,0);

rect(30,i2a,20,5);

rect(70,i2a,20,5);

// level 2: relationship level

r2 = 0;

p2 = i2a - i2b;

e2 = r2 - p2;

o2 = k2*e2;

// level 1: cursor velocity control

r1 = -o2;

p1 = i1v;

e1 = r1 - p1;

o1 += k1e1dt;

i1v = o1;

i2b = i1+i1v;

fill(0,255,0);

rect(50,i2b,20,5);

}

Just remove the existing code in the online Processing IDE (http://semmy.me/ide/ ) and paste in the new code. (After pasting, check to be sure that a couple of extra brackets did not get appended at bottom; I have found that these cause an error.

In the new model, the level 1 cursor velocity control increases or decreases the cursor’s vertical velocity as needed to close the distance between the target position and cursor position. The physical cursor position changes as a result. Cursor position is sensed and converted to a perceptual signal just as the target position is, and both perceptions are fed into the level 2 relationship controller’s input function.

I changed the appearances of target and cursor a bit to resemble their appearance in the Delphi demo.

Bruce


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2014.0.4336 / Virus Database: 3722/7229 - Release Date: 03/21/14

From Bruce Abbott (2014.03.22.1035 EDT)]

Sorry, David, in my previous reply I overlooked the .jpg attachment showing the error message. All I know about the online Processing IDE is how to paste my own code into it and press the “run� button, so I’m afraid I can be of much help with that error message. It could have something to do with the browser you are using. I’ve been using Internet Explorer on my Vista PC and don’t get that error message. It’s not the program, because I and others have been able to run it just fine.

Bruce

image00324.jpg

···

From: Control Systems Group Network (CSGnet) [mailto:CSGNET@LISTSERV.ILLINOIS.EDU] On Behalf Of D GOLDSTEIN
Sent: Saturday, March 22, 2014 1:18 AM
To: CSGNET@LISTSERV.ILLINOIS.EDU
Subject: Re: Revised Tracking Model – Processing version

[David Goldstein (2014.03.22.01:12)]

Bruce,

After downloading the revised tracking program, I got this error:

David

On Friday, March 21, 2014 10:37 AM, Bruce Abbott bbabbott@FRONTIER.COM wrote:

[From Bruce Abbott (2014.03.21.1035 EDT)]

Bruce Abbott (2014.03.20.1540 EDT) –

BA: That online Processing IDE is wonderful! Using it exposed a flaw in my reasoning: the output of the level 2 controller should set the reference for a level 1 control system that controls, not cursor position, but rather, rate of change in cursor position. This is because the output of the level 2 controller is proportional to the error in cursor position rather than indicating the absolute position the cursor should move toward. I’ve redone the program to match the new model, but for some reason the online Processing IDE won’t let me copy it. I’m heading out the door right now so I’ll post it later.

Here is a revised diagram for the new tracking model:

TrackingDiag v2.jpg

And here is the Processing-language code:

// Two-level tracking control system

//----------------------------------

float i1=100, i1v=0, p1, r1, e1, o1;

float i2a, i2b=100, p2, r2, e2, o2;

float k1=.05, k2=100, s1=1;

float dt = .01;

void setup ()

{

size(100, 400);

}

void draw ()

{

background(255);

i2a = mouseY;

fill(255,0,0);

rect(30,i2a,20,5);

rect(70,i2a,20,5);

// level 2: relationship level

r2 = 0;

p2 = i2a - i2b;

e2 = r2 - p2;

o2 = k2*e2;

// level 1: cursor velocity control

r1 = -o2;

p1 = i1v;

e1 = r1 - p1;

o1 += k1e1dt;

i1v = o1;

i2b = i1+i1v;

fill(0,255,0);

rect(50,i2b,20,5);

}

Just remove the existing code in the online Processing IDE (http://semmy.me/ide/ ) and paste in the new code. (After pasting, check to be sure that a couple of extra brackets did not get appended at bottom; I have found that these cause an error.

In the new model, the level 1 cursor velocity control increases or decreases the cursor’s vertical velocity as needed to close the distance between the target position and cursor position. The physical cursor position changes as a result. Cursor position is sensed and converted to a perceptual signal just as the target position is, and both perceptions are fed into the level 2 relationship controller’s input function.

I changed the appearances of target and cursor a bit to resemble their appearance in the Delphi demo.

Bruce


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2014.0.4336 / Virus Database: 3722/7229 - Release Date: 03/21/14