-
Notifications
You must be signed in to change notification settings - Fork 0
/
Geste.pde
98 lines (81 loc) · 2.73 KB
/
Geste.pde
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
import fr.dgac.ivy.*;
class Geste{
Ivy bus_geste;
String message_geste;
String forme;
String taux_confiance;
String position;
String position_objet;
FSM mae; // Finite Sate Machine
Geste(String adresse){
try{
// création du bus dédié à la capture de geste
bus_geste = new Ivy("Geste","Geste Ready", null);
bus_geste.start(adresse);
// on récupere tous les messages
bus_geste.bindMsg("^(.*)", new IvyMessageListener(){
@Override
public void receive(IvyClient client, String[] args) {
String simulation = args[0];
System.out.println("RECEIVE " + simulation);
System.out.println(" commande: " + message_geste);
mae = FSM.NORMALE;
}
});
}
catch(IvyException e){
e.printStackTrace();
}
}
void analyse(String message){
// PREMIER: ANALYSE DE LA FORME VOULU
forme = analyse_type(message, "form");
// DEUXIEME: ON MET A JOUR LA POSITION DE LA FORME CHOISI
// c'est le where dans le ivy bus recu
position_objet = analyse_type(message, "where");
// TROISIEME: ON MET A JOUR LA POSITION FINALE DU DEPLACEMENT
// c'est le localisation dans le ivy bus recu
position = analyse_type(message, "localisation");
// FINALE: ON REGARDE LE TAUX DE CONFIANCE
taux_confiance = analyse_type(message,"confidence");
// On met à jour la variable message
// FORMAT: forme' 'couleur' 'position' 'position_objet
message_geste = forme + " " + position + " " + position_objet;
}
String analyse_type(String message, String type) {
int position_type = message.indexOf(type);
// Si le message contient action alors c'est une commande de l'utilisateur
if(position_type != -1){
String message_type = (message.substring(position_type, message.length()));
int position_espace = message_type.indexOf(" ");
int difference_taille = message.length() - message_type.length();
int position_fin_type = position_espace + difference_taille;
// On récupère l'action donc après entre le action= et l'espace(d'out le +7 au début)
String action = message.substring(position_type + type.length() + 1, position_fin_type);
System.out.println("type: " + type + " : " + action);
return action;
}
else{
// le message n'est pas une commande
return "-";
}
}
Ivy get_bus(){
return bus_geste;
}
String get_message(){
return message_geste;
}
String get_forme(){
return forme;
}
String get_confiance(){
return taux_confiance;
}
String get_position(){
return position;
}
String get_position_objet(){
return position_objet;
}
}