-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMATB.m
146 lines (121 loc) · 5.54 KB
/
MATB.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
% ------------------------------INFOS--------------------------------------
% MATB - Multi Attribute Task Battery (Replica from the NASA version - https://matb.larc.nasa.gov/)
% Author: Kevin Verdiere, ISAE-SUPAERO, 2018,
% You'll absolutely need :
% --> Simulink 3D Animation toolbox : for the Joystick interaction
% --> Psychtoolbox : for Time, Keyboard and Sound management
% You migh need :
% --> labstreaminglayer toolbox : to stream all those data :)
%% -----------------------TUTORIAL & TRAINING------------------------------
close all; clc; clear; fclose('all');
addpath('Function_MATB')
rng('shuffle')
global fileID MATB_DATA % Almost every important game mechanics data is stocked in MATB_DATA
% SALE : MATB_DATA est parfois global parfois passer en argument
MATB_DATA=[]; MATB_DATA.ScenarioNumber=1;
MATB_DATA.GazepointEyeTracker = 0; % if 1, Gazepoint Active
MATB_DATA.LSL_Streaming = 0; % if 1, Data Streamed via LSL
MATB_DATA.Param.PumpCloseTrack = 0; % if 1, When track is out of big square all pump off
MATB_DATA.Param.TrackIfLevel = 0; % if 1, when level are above 3000 or below 2000 TRACK is harder
%-------- Initializing ----------------------------------------------------
[MATB_DATA]=Init_LOG(MATB_DATA);
[MATB_DATA]=Init_LSL(MATB_DATA);
[MATB_DATA]=Init_MATB(MATB_DATA);
[MATB_DATA]=Init_EYE_TRACK(MATB_DATA);
%--------------------------------------------------------------------------
%-------- Scenario Type ---------------------------------------------------
% Exemple : 2 scenario 10sec each
MATB_DATA.ScenarioType=[ %Workload 0/1 avec 0 pour low workload, 1 pour high workload
0
0
0];
% Randomisation=[ 5 1 2 6 8 7 4 3 ];
% MATB_DATA.ScenarioType=[ % Interation 0/1 WL_PF 0/1 WL_PM 0/1
% 0 0 0
% 0 0 1
% 0 1 0
% 0 1 1
% 1 0 0
% 1 0 1
% 1 1 0
% 1 1 1];
% MATB_DATA.ScenarioType=MATB_DATA.ScenarioType( Randomisation ,:);
% % Add The training
% MATB_DATA.ScenarioType=cat(1,...
% [ 0 0 0
% 0 1 1
% 0 0 0
% 0 1 1] ,MATB_DATA.ScenarioType);
%------------------------------------------------------------ --------------
%-------- Scenario Duration (sec) -----------------------------------------
MATB_DATA.ScenarioDuration=[120 120 300];
% MATB_DATA.ScenarioDuration=cat(2,ones(1,4)*5,ones(1,8)*5);
% MATB_DATA.ScenarioDuration=cat(2,ones(1,4)*150,ones(1,8)*300);
% MATB_DATA.ScenarioDuration=cat(2,ones(1,4)*10,ones(1,8)*300);
% MATB_DATA.ScenarioDuration=cat(2,ones(1,4)*10,ones(1,8)*300);
% MATB_DATA.ScenarioDuration=ones(1,8)*300;
%--------------------------------------------------------------------------
%-------- EVENT -----------------------------------------------------------
gen_EVENT % Automatically generate events
%EventManuel % Program MATB events manually
%--------------------------------------------------------------------------
ListenChar(-1) % Stop taking keyboard input into matlab console
% str1 = compose(str1);
pop_waiter(["Bonjour,",...
"Bienvenue dans cette expérimentation MATB!", ...
"(Appuyez sur 'ENTREE' pour commencer)"],1);
%-------- TUTORIAL -------------------------------------------------------
pop_waiter(["Afin de vous familiariser avec la tâche, merci de réaliser ce petit tutoriel", ...
"(Appuyez sur 'ENTREE' pour continuer)"],1);
Tutorial
pop_waiter('Ce tutorial est desormais termine. Appuyez sur "Entrée" pour continuer',1)
%--------------------------------------------------------------------------
%-------- TRAINING---------------------------------------------------------
pop_waiter(["Veuillez à present vous entrainer sur la tâche", ...
"(Appuyez sur 'ENTREE' pour continuer)"],1);
Training
pop_waiter(["Les sessions d'entrainement sont desormais terminées", ...
"(Appuyez sur 'ENTREE' pour continuer)"],1);
%--------------------------------------------------------------------------
% f=figure('CloseRequestFcn',@closehide);
%
% % set(f,'CloseRequestFcn',);
%
% function closehide(src,callbackdata)
% set(src,'Visible','off');
% end
%% ------------------------ MAIN TASK--------------------------------------
pop_waiter(["Passons maintenant à la vraie tâche laquelle durera 5mn", ...
"(Appuyez sur 'ENTREE' pour commencer)"],1);
% MATB_DATA.ScenarioType % Diplaying just to be sure :)
% [pop]=guide(MATB_DATA.ScenarioType(MATB_DATA.ScenarioNumber,1),MATB_DATA.ScenarioNumber);
% pop_waiter('The Cooperation instructions are on the left. Dont forget to look at it. Hit ENTER when you are READY to START the Calibration',1);
for i=1:size(MATB_DATA.ScenarioType,1)
MATB_Main();
Performance();
MATB_DATA.ScenarioNumber=MATB_DATA.ScenarioNumber+1;
pause(2)
pop_waiter(["FIN DE LA TACHE",...
"(Appuyez sur la touche 'ENTREE' pour continuer)"],1);
if MATB_DATA.ScenarioNumber > size(MATB_DATA.ScenarioType,1)
break
end
% close(pop)
%
% [pop]=guide(MATB_DATA.ScenarioType(MATB_DATA.ScenarioNumber,1),MATB_DATA.ScenarioNumber);
% pop_waiter(['Look at the Instructions for Scenario ' num2str(MATB_DATA.ScenarioNumber-4) ' and hit Enter to START'],1);
end
% close(pop)
pop_waiter(["Enregistrement des données",...
"(Appuyez sur la touche 'ENTREE' pour continuer)"],1);
SauvegardeDATA
pop_waiter(["Veuillez à présent compléter un dernier questionnaire",...
"(Appuyez sur la touche 'ENTREE' pour continuer)"],1);
slidervalues
% pop_waiter(["Thank you so much!", ...
% "Que Dieu vous garde!"],1);
ListenChar(0); fclose(fileID);
DeleteHandle(MATB_DATA)
close all
diary off