cursor speed
-
- Posts: 40
- Joined: 02 Jul 2010, 04:51
cursor speed
Dear all,
we were wondering if it is possible to know the maximal cursor speed that could be reached in the "cursor task application" (i.e. the time the cursor will take to cover the whole screen lenght), and if it possible to modify this value, or otherwise if it is a fixed configuration parameter of the application.
Thank you so much in advance,
kind regards
Paolo, Marcello and Joanna
we were wondering if it is possible to know the maximal cursor speed that could be reached in the "cursor task application" (i.e. the time the cursor will take to cover the whole screen lenght), and if it possible to modify this value, or otherwise if it is a fixed configuration parameter of the application.
Thank you so much in advance,
kind regards
Paolo, Marcello and Joanna
Re: cursor speed
Hi,
the FeedbackDuration parameter of the CursorTask application does exactly that: It chooses cursor speed such that an average trial will have the specified duration. This is possible because the control signal is normalized to be zero mean, and unit variance. When you don't use the Normalizer, then the FeedbackDuration parameter will still be inversely proportional to cursor speed.
Best regards,
Juergen
the FeedbackDuration parameter of the CursorTask application does exactly that: It chooses cursor speed such that an average trial will have the specified duration. This is possible because the control signal is normalized to be zero mean, and unit variance. When you don't use the Normalizer, then the FeedbackDuration parameter will still be inversely proportional to cursor speed.
Best regards,
Juergen
-
- Posts: 40
- Joined: 02 Jul 2010, 04:51
Re: cursor speed
Hi Juergen,
first of all I would like to thank you for your quick reply. Actually we understood that if we increase the Feedback duration parameter we will obtain a decreased cursor speed, and vice versa. But what about if we want to quantify this speed? I mean, if we mantain a fixed Feedback duration (let's say, for example, 3 secs ), in these 3 seconds the cursor could move from the left bottom of the screen to the right one once, twice or even more (depending on the power of the brain signal BCI2000 receives) if it doesn't touch the target, right? If so, there is a mathematical formula that links Feedback duration, incoming brain signal amplitude and speed of the cursor?
Thanks again,
kind regards.
first of all I would like to thank you for your quick reply. Actually we understood that if we increase the Feedback duration parameter we will obtain a decreased cursor speed, and vice versa. But what about if we want to quantify this speed? I mean, if we mantain a fixed Feedback duration (let's say, for example, 3 secs ), in these 3 seconds the cursor could move from the left bottom of the screen to the right one once, twice or even more (depending on the power of the brain signal BCI2000 receives) if it doesn't touch the target, right? If so, there is a mathematical formula that links Feedback duration, incoming brain signal amplitude and speed of the cursor?
Thanks again,
kind regards.
Re: cursor speed
From http://www.bci2000.org/wiki/index.php/U ... ckDuration:
"cursor movement will take FeedbackDuration from center to edge": x(0) = screen width/2, x(FeedbackDuration) = screen width -> v_0 = (screen width)/(2*FeedbackDuration).
Thus:
v = v_0 * (control signal) = (control signal) * (screen width) / ( 2*FeedbackDuration)
Hope this helps,
Juergen
"normalized control signal": mean = 0, variance = 1 -> in the ideal case, the control signal will be constant +1 for up trials, and -1 for down trials.This parameter is not a hard limit to feedback duration but determines cursor speed such that, for a normalized control signal, cursor movement will take the specified time from the cursor's starting point to the screen's edge. Feedback trials will typically have this duration, provided that the cursor starts at the center of the screen, targets are located at the screen's edges, and ignoring cursor and target width.
"cursor movement will take FeedbackDuration from center to edge": x(0) = screen width/2, x(FeedbackDuration) = screen width -> v_0 = (screen width)/(2*FeedbackDuration).
Thus:
v = v_0 * (control signal) = (control signal) * (screen width) / ( 2*FeedbackDuration)
Hope this helps,
Juergen
-
- Posts: 40
- Joined: 02 Jul 2010, 04:51
Re: cursor speed
Dear all,
thank you, actually it helped a lot!
now we are conducting again experiments, but we observed a strange behavior from the cursor task. Basically we run the calibration session for right movement and we than conducted offline analysis. We observed (both from the 'Feature plot' and the 'spectra plot') a great ERD at channel 5 (C3), at 10 and 12 Hz. So, in order to make the cursor hit a target positioned on the right part of the screen, we filled the 'Linear classifier matrix' of the Cursor Task parameter file with a single raw:
channel frequency output channel weight
5 10Hz 1 -1
The cursor behaves like this: MOTOR IMAGERY --> slow, marginal movement to the LEFT.
RELAX --> huge movement to the LEFT.
So we think we made some mistakes about weight, and we change it:
5 9Hz 1 1
And the new behavior is the following: MOTOR IMAGERY --> slow, marginal movement to the RIGHT
RELAX --> huge movement to the right.
Basically, there is a great difference between task and relax, but we observed more movement in the relaxed situation. Did we make some mistakes? Do you have some suggestion?
Thank you again,
best wishes.
thank you, actually it helped a lot!
now we are conducting again experiments, but we observed a strange behavior from the cursor task. Basically we run the calibration session for right movement and we than conducted offline analysis. We observed (both from the 'Feature plot' and the 'spectra plot') a great ERD at channel 5 (C3), at 10 and 12 Hz. So, in order to make the cursor hit a target positioned on the right part of the screen, we filled the 'Linear classifier matrix' of the Cursor Task parameter file with a single raw:
channel frequency output channel weight
5 10Hz 1 -1
The cursor behaves like this: MOTOR IMAGERY --> slow, marginal movement to the LEFT.
RELAX --> huge movement to the LEFT.
So we think we made some mistakes about weight, and we change it:
5 9Hz 1 1
And the new behavior is the following: MOTOR IMAGERY --> slow, marginal movement to the RIGHT
RELAX --> huge movement to the right.
Basically, there is a great difference between task and relax, but we observed more movement in the relaxed situation. Did we make some mistakes? Do you have some suggestion?
Thank you again,
best wishes.
Re: cursor speed
Are you using the normalizer? And if so, is mean subtraction enabled?
-
- Posts: 40
- Joined: 02 Jul 2010, 04:51
Re: cursor speed
Dear Boulay,
our normalizer window of the parameters file is filled with these values:
offsets 0 0
gains 1 1
adaptation 0 0
buffer conditions (Feedback)&&(TargetCode==1)
(Feedback)&&(TargetCode==2)
Buffer lenght 9s
Update trigger (Feedback==0)
thank you again.
our normalizer window of the parameters file is filled with these values:
offsets 0 0
gains 1 1
adaptation 0 0
buffer conditions (Feedback)&&(TargetCode==1)
(Feedback)&&(TargetCode==2)
Buffer lenght 9s
Update trigger (Feedback==0)
thank you again.
Re: cursor speed
If you set adaptation to "2 2" then that should fix your problem.
The normalizer is better explained in the Wiki:
http://www.bci2000.org/wiki/index.php/U ... Normalizer
Briefly, the cursor feedback application understands 0 as no movement, +X as rightward movement, and -X as leftward movement. Right now your application is only sending positive values (or negative if the linear classifier weight is negative) because spectral amplitude is always positive. The normalizer subtracts a reference value (and optionally divides by another reference value) from the signal sent to the cursor feedback application so that the "mean" of the signal is around 0. Subsequent modulations in spectral amplitude should translate to deviations from 0, both positive and negative, leading to rightward and leftward movement, respectively.
Please read the page linked above because configuring the normalizer can influence how your subjects learn the task and therefore whether or not they can achieve accurate control.
The normalizer is better explained in the Wiki:
http://www.bci2000.org/wiki/index.php/U ... Normalizer
Briefly, the cursor feedback application understands 0 as no movement, +X as rightward movement, and -X as leftward movement. Right now your application is only sending positive values (or negative if the linear classifier weight is negative) because spectral amplitude is always positive. The normalizer subtracts a reference value (and optionally divides by another reference value) from the signal sent to the cursor feedback application so that the "mean" of the signal is around 0. Subsequent modulations in spectral amplitude should translate to deviations from 0, both positive and negative, leading to rightward and leftward movement, respectively.
Please read the page linked above because configuring the normalizer can influence how your subjects learn the task and therefore whether or not they can achieve accurate control.
Who is online
Users browsing this forum: No registered users and 12 guests