Code source de NaoQuest.objectives.cpt_objective
# coding: utf-8
"""
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Script a utiliser quand on allume Nao la première fois
"""
try:
from NaoQuest.objective import *
from NaoCreator.setting import Setting
from NaoCreator.SpeechToText.nao_listen import nao_listen
from NaoCreator.Tool.stop import normal_stop
except Exception as e:
print e
[docs]class CptObjective(Objective):
"""
Objectif de type "Capteur", pour réussir, le capteur que l'on interroge doit contenir des valeurs dans des plages
de données spécifiées par deux dictionnaires de valeurs: "cpt_min", "cpt_max".
Champs obligatoires:
- cpt_min: Dictionnaire représentant les valeurs minimales que le capteur doit renvoyer pour réussir
- cpt_max: Dictionnaire représentant les valeurs maximales que le capteur doit renvoyer pour réussir
- nickname: Le nom du capteur que l'on regarde
Champs optionnels:
- since: A partir de quel quart d'heure depuis le dernier on extrait les données
- to: Jusqu'à quel quart d'heure depuis le dernier on extrait les données
- avg: Détermine si les valeurs regardées sont la moyenne des valeurs regardées
Note: since <= to
"""
def __init__(self, scenario_name="", quest_name="", inner_name=""):
super(CptObjective, self).__init__(scenario_name, quest_name, inner_name)
def _exec(self):
if not hasattr(self, "values_min") or not hasattr(self, "values_max"):
Setting.error("No \"values_min / values_max\" in CptObjective \"{}\"".format(self.inner_name))
return
if not hasattr(self, "nickname"):
Setting.critical("No \"nickname\" in CptObjective \"{}\"".format(self.inner_name))
return
def _interact(self):
pass
def _verif(self):
cpt = None
for c in Setting.cptdata:
print c, c.get_data("nickname"), self.nickname
if c.get_data("nickname") == self.nickname:
cpt = c
break
if cpt is None:
Setting.critical("Could not initialize CaptorData in \"CptObjective {}\"".format(self.inner_name))
normal_stop()
for i in range(getattr(self, "since", 0), getattr(self, "to", 0)+1):
for k in self.values_min:
if c.get_data(k, i) < self.values_min[k]:
return False
for k in self.values_max:
if c.get_data(k, i) > self.values_max[k]:
return False
return True