EyeSeeCam SCI: Difference between revisions
Jump to navigation
Jump to search
| Line 6: | Line 6: | ||
===Matlab interface=== | ===Matlab interface=== | ||
%todo | The recorded data is read from an LSL stream. | ||
<pre> | |||
% todo: LSL streaming parameters | |||
</pre> | |||
The lsldata is a struct and has the following fields: | |||
*escdata | |||
*escmetadata | |||
*escstr | |||
*evdata0 | |||
*evdata1 | |||
*evdata2 | |||
*evdata3 | |||
*evdata4 | |||
The lsldata.escdata contains the eye and head data. The data contains a matrix for with a row for every parameter. The total of parameters is 63. The field lsldata.escmetadata.channel lists all the names of the parameters. | |||
<pre> | |||
%Eye data | |||
RightEyePosX = 46; | |||
RightEyePosY = 47; | |||
RightEyePosZ = 48; | |||
xeye = lsldata.escdata.Data(46,:); % right 46, left 32 | |||
yeye = lsldata.escdata.Data(47,:); % right 47, left 33 | |||
zeye = lsldata.escdata.Data(48,:); % right 48, left 34 | |||
% Head data | |||
HeadInertialVelXCal = 27; | |||
HeadInertialVelYCal = 29; | |||
HeadInertialVelZCal = 31; | |||
xh = lsldata.escdata.Data(27,:); % calibrated torion velocity data HEAD | |||
yh = lsldata.escdata.Data(29,:); % calibrated vertical velocity data HEAD | |||
zh = lsldata.escdata.Data(31,:); % calibrated horizontal velocity data HEAD | |||
</pre> | |||
===Converting rotation speed=== | ===Converting rotation speed=== | ||
Revision as of 09:15, 1 May 2024

Description
The EyeSeeCam SCI is a combined eye tracker and head movement tracker.
Matlab programming
Matlab interface
The recorded data is read from an LSL stream.
% todo: LSL streaming parameters
The lsldata is a struct and has the following fields:
- escdata
- escmetadata
- escstr
- evdata0
- evdata1
- evdata2
- evdata3
- evdata4
The lsldata.escdata contains the eye and head data. The data contains a matrix for with a row for every parameter. The total of parameters is 63. The field lsldata.escmetadata.channel lists all the names of the parameters.
%Eye data RightEyePosX = 46; RightEyePosY = 47; RightEyePosZ = 48; xeye = lsldata.escdata.Data(46,:); % right 46, left 32 yeye = lsldata.escdata.Data(47,:); % right 47, left 33 zeye = lsldata.escdata.Data(48,:); % right 48, left 34 % Head data HeadInertialVelXCal = 27; HeadInertialVelYCal = 29; HeadInertialVelZCal = 31; xh = lsldata.escdata.Data(27,:); % calibrated torion velocity data HEAD yh = lsldata.escdata.Data(29,:); % calibrated vertical velocity data HEAD zh = lsldata.escdata.Data(31,:); % calibrated horizontal velocity data HEAD
Converting rotation speed
%make a coordinate object
mycoordinates_XYZ = coordinates_XYZ(startingGaze);
% initialize R_total to 3D unit matrix
R_total = [1,0,0;0,1,0;0,0,1];
%loop through al timesteps
for i = (timeRange)
% determine the angle changes between time t(i)-delta_t/2 to t(i)+delta_t/2
delta_angleX = Vx(i)*delta_t;
delta_angleY = Vy(i)*delta_t;
delta_angleZ = Vz(i)*delta_t;
%create a rotation matrices
delta_Rx = Rx(delta_angleX);
delta_Ry = Ry(delta_angleY);
delta_Rz = Rz(delta_angleZ);
%multiply rotation matrices (order is not important if angles are small enough)
delta_R = delta_Rx * delta_Ry * delta_Rz;
% determine new R_total
% rotation in device coordinates, order: R_total * delta_R
R_total = R_total * delta_R;
%rotate startingpoint with R_total
newpoint = R_total * startingGaze;
%add new position to list of coordinates
mycoordinates_XYZ.add(newpoint);
end
% transform XYZ to RAS coordinates with EyeSeeCam definition
mycoordinates_RAS = transform_XYZ2RAS(mycoordinates_XYZ, definition_XYZ2RAS_EyeSeeCam_Sci);
mycoordinates_DP = transform_RAS2DP(mycoordinates_RAS);