def __init__(self,
              actor,
              target_speed=None,
              plan=None,
              blackboard_queue_name=None,
              avoid_collision=False,
              name="FollowWaypoints"):
     """
     Set up actor and local planner
     """
     super(WaypointFollower, self).__init__(name)
     self._actor_list = []
     self._actor_list.append(actor)
     self._target_speed = target_speed
     self._local_planner_list = []
     self._plan = plan
     self._blackboard_queue_name = blackboard_queue_name
     if blackboard_queue_name is not None:
         self._queue = Blackboard().get(blackboard_queue_name)
     self._args_lateral_dict = {
         'K_P': 1.0,
         'K_D': 0.01,
         'K_I': 0.0,
         'dt': 0.05
     }
     self._avoid_collision = avoid_collision
Example #2
0
 def update(self):
     '''
     mild pain: ps <= 5
     moderate: ps 6,7
     severe: ps >= 8
     '''
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs[
             'hypoxemia'].score / 1000.
     if blackboard.Signs['pain severity'].binary:
         s = blackboard.Signs['pain severity'].score / 1000.
         ps = int(blackboard.Signs['pain severity'].value)
         if ps <= 5:
             blackboard.feedback['nitronox'] += self.posi * s
             blackboard.feedback['acetaminophen'] += self.posi * s
             blackboard.feedback['ibuprofen'] += self.posi * s
         elif ps == 6 or ps == 7:
             blackboard.feedback['toradol'] += self.posi * s
         else:
             blackboard.feedback['normal saline'] += self.posi * s
             blackboard.feedback['fentanyl'] += self.posi * s
         #  blackboard.feedback['morphine sulfate'] += self.posi * s
     if blackboard.Signs['nausea'].binary:
         blackboard.feedback['ondansetron'] += self.posi * blackboard.Signs[
             'nausea'].score / 1000.
     elif blackboard.Signs['vomiting'].binary:
         blackboard.feedback['ondansetron'] += self.posi * blackboard.Signs[
             'vomiting'].score / 1000.
     blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
     return py_trees.Status.SUCCESS
Example #3
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
     # have to do?
    # blackboard.feedback['capnography'] += self.posi
    # blackboard.feedback['bronchodilator'] += self.posi 
 #    blackboard.feedback['metered dose inhaler'] += self.posi
     # if respiratory distress
     if blackboard.Signs['shortness of breath'].binary and (blackboard.Signs['hypoxemia'].binary or blackboard.Signs['rhonchi'].binary):
         s = blackboard.Signs['shortness of breath'].score / 1000. *\
          ((blackboard.Signs['hypoxemia'].binary * blackboard.Signs['hypoxemia'].score +\
          blackboard.Signs['rhonchi'].binary * blackboard.Signs['rhonchi'].score) / \
          (blackboard.Signs['hypoxemia'].binary +blackboard.Signs['rhonchi'].binary) / 1000.)
         blackboard.feedback['bag valve mask ventilation'] += self.posi * s
         # bvm ventilation have been done
         if blackboard.Inters['bag valve mask ventilation'].binary:
             blackboard.feedback['endotracheal tube'] += self.posi * s * blackboard.Inters['bag valve mask ventilation'].score / 1000.
         if not blackboard.Signs['hypertension'].binary:
             blackboard.feedback['albuterol'] += self.posi * s * blackboard.Signs['hypertension'].score / 1000.
             blackboard.feedback['ipratropium'] += self.posi * s * blackboard.Signs['hypertension'].score / 1000.
         if blackboard.Signs['wheezing'].binary:
             blackboard.feedback['dexamethasone'] += self.posi * s * blackboard.Signs['wheezing'].score / 1000.
         if blackboard.Signs['hypoxemia'].binary and blackboard.Signs['tachypnea'].binary \
         and blackboard.Vitals['bp'].binary and blackboard.Vitals['bp'].value.strip().split('/')[0].isdigit() and int(blackboard.Vitals['bp'].value.strip().split('/')[0]) > 90:
             blackboard.feedback['cpap'] += self.posi * s * blackboard.Signs['tachypnea'].score / 1000.
         blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
 
     return py_trees.Status.SUCCESS
Example #4
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
     blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
     if blackboard.candi[0] == self.key and blackboard.Vitals['gcs'].value == '15':
         blackboard.feedback['aspirin'] += self.posi
     # consider add dependency on iv
     if blackboard.Signs['substance abuse history'].binary:
         blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['substance abuse history'].score / 1000.
        # blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['substance abuse history'].score / 1000.
     elif blackboard.Signs['abuse of substance'].binary:
         blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['abuse of substance'].score / 1000.
       #  blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['abuse of substance'].score / 1000.
     if 'STEMI' in blackboard.Vitals['ekg'].value and blackboard.Vitals['pain'].binary \
     and blackboard.Vitals['bp'].binary and int(blackboard.Vitals['bp'].value.strip().split('/')[0]) > 100:
         blackboard.feedback['nitroglycerin'] += self.posi * blackboard.Vitals['pain'].score / 1000. * blackboard.Vitals['bp'].score / 1000.
     if  blackboard.Vitals['pain'].binary and blackboard.Inters['nitroglycerin'].binary:
       #  blackboard.feedback['morphine'] += self.posi * blackboard.Vitals['pain'].score / 1000. * blackboard.Inters['nitroglycerin'].score / 1000.
         blackboard.feedback['fentanyl'] += self.posi * blackboard.Vitals['pain'].score / 1000. * blackboard.Inters['nitroglycerin'].score / 1000.
     return py_trees.Status.SUCCESS
Example #5
0
 def setup(self, unused_timeout=15):
     '''
     create a ConceptExtractor and initialize the patient status
     the list here is the complete list
     '''
     '''
     self.ce1 = CE.ConceptExtractor("Concept_List_1.csv")
     self.ce1.StatusInit()
     self.ce2 = CE.ConceptExtractor("Concept_List_2.csv")
     self.ce2.StatusInit()
     '''
     vcl = pd.read_csv(self.exlist)
     blackboard = Blackboard()
     self.sce = CE.CEWithoutMM(self.slist, self.intlist,\
     AllinOne_SS = self.aio_ss, AllinOne_Int = self.aio_int,\
      neg_res = self.neg_res, WDistance = self.WDistance, aio_only = self.aio_only)
     self.sce.StatusInit()
     for item in vcl:
         self.sce.SpecificInit(item)
     self.vce = CE.ConceptExtractor(self.vlist)
     #self.vce.StatusInit()
     #self.ice = CE.ConceptExtractor(self.intlist)
     #self.ice.StatusInit()
     if self.inC:
         self.vce.ConceptWrapper(self.inC)
     blackboard.Signs = self.sce.Status
     blackboard.Vitals = self.vce.Status
     blackboard.Inters = self.sce.Interventions
     blackboard.ConcLog = []
     return True
Example #6
0
    def update(self):
        blackboard = Blackboard()
        # mm confidence encoding
        TV = []
        for item in blackboard.Signs:
            if blackboard.Signs[item].binary:
                TV.append(blackboard.Signs[item].score / 1000.)
            else:
                TV.append(0.)
        #TV = [blackboard.Status[item].score/1000. for item in blackboard.Status]

        # one-hot encoding
        #TV = [float(blackboard.Signs[item].binary) for item in blackboard.Signs]
        blackboard.TV = TV
        maxsim = 0
        result = ''
        blackboard.ranking = []
        for key in self.PV:
            sim = 1 - spatial.distance.cosine(TV, self.PV[key])
            blackboard.ranking.append((key, sim))
            if sim > maxsim:
                maxsim = sim
                result = key
        blackboard.protocol = result
        blackboard.candi, blackboard.pos = rank(blackboard.ranking)[0], rank(
            blackboard.ranking)[1]
        return py_trees.Status.SUCCESS
Example #7
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs[
             'hypoxemia'].score / 1000.
     if blackboard.Vitals['BP'].binary and int(
             blackboard.Vitals['BP'].value.strip().split('/')[0]) <= 90:
         blackboard.feedback[
             'normal saline'] += self.posi * blackboard.Vitals[
                 'BP'].score / 1000.
     if blackboard.Signs['abuse of substance'].binary:
         blackboard.feedback['narcan'] += self.posi * blackboard.Signs[
             'abuse of substance'].score / 1000.
     elif blackboard.Signs['pin point pupils'].binary:
         blackboard.feedback['narcan'] += self.posi * blackboard.Signs[
             'pin point pupils'].score / 1000.
     elif blackboard.Signs['decreased mental status'].binary:
         blackboard.feedback['narcan'] += self.posi * blackboard.Signs[
             'decreased mental status'].score / 1000.
     elif blackboard.Signs['hypotension'].binary:
         blackboard.feedback['narcan'] += self.posi * blackboard.Signs[
             'hypotension'].score / 1000.
     elif blackboard.Signs['bradypnea'].binary:
         blackboard.feedback['narcan'] += self.posi * blackboard.Signs[
             'bradypnea'].score / 1000.
     blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
     return py_trees.Status.SUCCESS
 def setup(self, unused_timeout = 15):
     '''
     create a ConceptExtractor and initialize the patient status
     the list here is the complete list
     '''
     '''
     self.ce1 = CE.ConceptExtractor("Concept_List_1.csv")
     self.ce1.StatusInit()
     self.ce2 = CE.ConceptExtractor("Concept_List_2.csv")
     self.ce2.StatusInit()
     '''
     vcl = pd.read_csv(self.exlist)
     blackboard = Blackboard()
     self.sce = CE.ConceptExtractor(self.slist)
     self.sce.StatusInit()
     for item in vcl:
         self.sce.SpecificInit(item)
     self.vce = CE.ConceptExtractor(self.vlist)
     #self.vce.StatusInit()
     self.ice = CE.ConceptExtractor(self.intlist)
     self.ice.StatusInit()
     if self.inC:
         self.vce.ConceptWrapper(self.inC)
     blackboard.Signs = self.sce.Status
     blackboard.Vitals = self.vce.Status
     blackboard.Inters = self.ice.Status
     blackboard.ConcLog = []
     return True
 def update(self):
     blackboard = Blackboard()
     num = sum(blackboard.pos[:3])
     for idx,item in enumerate(blackboard.candi):
         if idx < 3:
             blackboard.protocol_flag[item] = (True,blackboard.pos[idx]/num)
     return py_trees.Status.SUCCESS
Example #10
0
 def setup(self, unused_timeout = 15):
     blackboard = Blackboard()
     PC = dict()
     pro_df = pd.read_excel(self.protocols)
     for line in pro_df.iterrows():
         line_ss = [(i.strip().lower()[:-1],i.strip().lower()[-1]) for i in line[1]['Signs&Symptoms'].split(';')]
         if not pd.isnull(line[1]['Possible signs&symptoms additions']):
             line_ssr = [(i.strip().lower()[:-1],i.strip().lower()[-1]) for i in line[1]['Possible signs&symptoms additions'].split(';')]
         name = line[1]['Protocol']
         PC[name] = line_ss + line_ssr
     self.PV = dict()
     for item in PC:
         vec = list()
         su = 0.
         for i in blackboard.Signs:
             res = 0.
             for j in PC[item]:
                 if i == j[0]:
                     res = 8.**int(j[1])
                     break;
             su += res
             vec.append(res)
         for i in xrange(len(vec)):
             vec[i] = vec[i] / su
         self.PV[item] = vec
     blackboard.PV = self.PV
     return True
    def __init__(self,
                 actor_type_list,
                 transform,
                 threshold,
                 blackboard_queue_name,
                 actor_limit=999,
                 name="ActorSource",
                 # ======== additional args ========
                 init_speed=0.,  # initial speed of spawned vehicle
                 randomize=False,
                 ):
        """
        Setup class members
        """
        super(ActorSource, self).__init__(name)
        self._world = CarlaDataProvider.get_world()
        self._actor_types = actor_type_list
        self._spawn_point = transform
        self._threshold = threshold + 5.  # todo fix this with accurate vehicle length
        self._queue = Blackboard().get(blackboard_queue_name)
        self._actor_limit = actor_limit
        self._last_blocking_actor = None

        # ==========   additional attributes   ==========
        self.init_speed = init_speed
        self.randomize = randomize
        self.distance_gap = None
    def __init__(self, debug=False, name="TrafficJamChecker"):
        super(TrafficJamChecker, self).__init__(name)
        self.debug = debug
        self.blackboard = Blackboard()
        self.world = CarlaDataProvider.get_world()
        self.map = CarlaDataProvider.get_map()
        self.list_intersection_waypoints = []

        # remove initial collisions during setup
        list_actors = list(CarlaActorPool.get_actors())
        for _, actor in list_actors:
            if actor.attributes['role_name'] == 'autopilot':
                if detect_lane_obstacle(actor, margin=0.2):
                    CarlaActorPool.remove_actor_by_id(actor.id)

        # prepare a table to check for stalled vehicles during the execution of the scenario
        self.table_blocked_actors = {}
        current_game_time = GameTime.get_time()
        for actor_id, actor in CarlaActorPool.get_actors():
            if actor.attributes['role_name'] == 'autopilot':
                actor.set_autopilot(True)
                self.table_blocked_actors[actor_id] = {
                    'location': actor.get_location(),
                    'time': current_game_time
                }

        self.logger.debug("%s.__init__()" % (self.__class__.__name__))
Example #13
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['combative'].binary:
         s = blackboard.Signs['combative'].score / 1000.
         if blackboard.Signs['hypoxemia'].binary:
             blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000. * s
         blackboard.feedback['physical restraint'] += self.posi * s
         if blackboard.Signs['agitation'].binary:
             blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['agitation'].score / 1000. * s
          #   blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['agitation'].score / 1000. * s
           #  blackboard.feedback['geodon'] += self.posi * blackboard.Signs['agitation'].score / 1000. * s
         blackboard.feedback['transport'] += self.posi * s  
     elif blackboard.Signs['violent'].binary:
         s = blackboard.Signs['violent'].score / 1000.
         if blackboard.Signs['hypoxemia'].binary:
             blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000. * s
         blackboard.feedback['physical restraint'] += self.posi * s
         if not blackboard.Signs['hypotension'].binary and blackboard.Signs['agitation'].binary:
             blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['agitation'].score / 1000. *\
              blackboard.Signs['hypotension'].score / 1000. * s
           #  blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['agitation'].score / 1000. * s
         #    blackboard.feedback['geodon'] += self.posi * blackboard.Signs['agitation'].score / 1000. * s
         blackboard.feedback['transport'] += self.posi * s
     else:
     #    blackboard.feedback['encourage patient to relax'] += self.posi
         blackboard.feedback['transport'] += self.posi
     return py_trees.Status.SUCCESS
Example #14
0
    def update(self):
        blackboard = Blackboard()
	# posi = Normalized confidence score (dervied from cosine similarity) for protocol indicated by key
        self.posi = blackboard.protocol_flag[self.key][1]
        if self.posi == 0:
            return py_trees.Status.SUCCESS  #might be better to return FAILURE?
        if blackboard.Signs['hypoxemia'].binary:
            blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
        blackboard.feedback['cardiac monitor'] += self.posi
        blackboard.feedback['transport'] += self.posi
        if blackboard.candi[0] == self.key and blackboard.Vitals['GCS'].value == '15':
            blackboard.feedback['aspirin'] += self.posi
        # consider add dependency on iv
        if blackboard.Signs['substance abuse history'].binary:
            blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['substance abuse history'].score / 1000.
           # blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['substance abuse history'].score / 1000.
        elif blackboard.Signs['abuse of substance'].binary:
            blackboard.feedback['midazolam'] += self.posi * blackboard.Signs['abuse of substance'].score / 1000.
          #  blackboard.feedback['diazepam'] += self.posi * blackboard.Signs['abuse of substance'].score / 1000.
        if 'STEMI' in blackboard.Vitals['EKG'].value and blackboard.Vitals['Pain'].binary \
        and blackboard.Vitals['BP'].binary and int(blackboard.Vitals['BP'].value.strip().split('/')[0]) > 100:
            blackboard.feedback['nitroglycerin'] += self.posi * blackboard.Vitals['Pain'].score / 1000. * blackboard.Vitals['BP'].score / 1000.
        if  blackboard.Vitals['Pain'].binary and blackboard.Inters['nitroglycerin'].binary:
          #  blackboard.feedback['morphine'] += self.posi * blackboard.Vitals['Pain'].score / 1000. * blackboard.Inters['nitroglycerin'].score / 1000.
            blackboard.feedback['fentanyl'] += self.posi * blackboard.Vitals['Pain'].score / 1000. * blackboard.Inters['nitroglycerin'].score / 1000.
        return py_trees.Status.SUCCESS
Example #15
0
 def terminate(self, new_status):
     if new_status == Status.SUCCESS:
         bb = Blackboard()
         bb.set(
             "biome_type",
             analyze_type(bb.get("biome_type"), self.color_original,
                          self.color_left, self.color_right))
         bb.set("biome_check", False)
Example #16
0
 def setup(self, unused_timeout = 15):
     blackboard = Blackboard()
     blackboard.protocol_flag = dict()
     blackboard.feedback = dict()
     for i in blackboard.PV:
         blackboard.protocol_flag[i] = (False,0.)
     for i in blackboard.Inters:
         blackboard.feedback[i] = 0.
     return True
Example #17
0
 def __init__(self, ego_vehicle, debug=False, name="TrafficLightManipulator"):
     super(TrafficLightManipulator, self).__init__(name)
     self.ego_vehicle = ego_vehicle
     self.debug = debug
     self.blackboard = Blackboard()
     self.target_traffic_light = None
     self.annotations = None
     self.reset_annotations = None
     self.intervention = False
     self.logger.debug("%s.__init__()" % (self.__class__.__name__))
Example #18
0
 def setup(self, unused_timeout = 15):
     level = 'I/P'
     blackboard = Blackboard()
     #blackboard.action = []
     blackboard.level = level
     blackboard.tick_num = 0
     blackboard.protocol = "Universal Patient Care"
     self.text = ''
     self.sent_text = []
     return True
Example #19
0
 def setup(self, unused_timeout=15):
     #level = raw_input("Please type in your certification(EMT,A,I/P): \n")
     level = 'I/P'
     blackboard = Blackboard()
     #blackboard.action = []
     blackboard.level = level
     blackboard.tick_num = 0
     blackboard.protocol = "Universal Patient Care"
     self.text = ''
     self.sent_text = []
     return True
Example #20
0
    def update(self):
        bb = Blackboard()
        if bb.get("color_floor"):
            return Status.SUCCESS

        color = self.robot.get_color()
        result = bb.set("color_floor", color)
        if result:
            return Status.RUNNING
        else:
            return Status.FAILURE
Example #21
0
    def __init__(self):
        super(BTAgent, self)

        global BLACKBOARD

        py_trees.logging.level = py_trees.logging.Level.DEBUG

        BLACKBOARD = Blackboard()
        self.tree = BehaviourTree(self.create_tree())
        _thread.start_new_thread(self.tree.tick_tock,
                                 (50, CONTINUOUS_TICK_TOCK, None, None))
Example #22
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
     blackboard.feedback['normal saline'] += self.posi
     blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
     return py_trees.Status.SUCCESS
Example #23
0
def main():
    """
    Entry point for the demo script.
    """
    command_line_argument_parser().parse_args()

    print(description())

    py_trees.logging.level = py_trees.logging.Level.DEBUG

    tree = create_tree()
    
    tree.setup(timeout=15)

    robot = Pose2D(250,250);
    ball = Pose2D(int(random.random()*500),
                  int(random.random()*500))
    bin = Pose2D(int(random.random()*500),
                 int(random.random()*500))

    blackboard = Blackboard()
    blackboard.set("robot", robot)
    blackboard.set("ball", ball)
    blackboard.set("bin", bin)

    try:
        while tree.status != py_trees.common.Status.SUCCESS:
            print("tick")
            tree.tick_once()

            img = np.full((500,500,3), 0, dtype=np.uint8)
            cv2.circle(img, (robot.x,robot.y), 10, (0,0,255), thickness=-1)
            cv2.line(img, (robot.x, robot.y),
                     (robot.x + int(50*math.cos(robot.th+1.0)),
                      robot.y + int(50*math.sin(robot.th+1.0))),
                     (0,0,255), 1, cv2.LINE_AA)
            cv2.line(img, (robot.x, robot.y),
                     (robot.x + int(50*math.cos(robot.th-1.0)),
                      robot.y + int(50*math.sin(robot.th-1.0))),
                     (0,0,255), 1, cv2.LINE_AA)
            cv2.circle(img, (ball.x,ball.y), 10, (0,255,0), thickness=-1)
            cv2.circle(img, (bin.x,bin.y), 10, (255,0,0), thickness=-1)
            cv2.imshow('image', img)
            cv2.waitKey(100)

            if random.random() < 0.05:
                ball.x = int(random.random()*500)
                ball.y = int(random.random()*500)
        print("\n")
    except KeyboardInterrupt:
        print("")
        pass
Example #24
0
 def __init__(self, actor_type_list, transform, threshold, blackboard_queue_name,
              actor_limit=7, name="ActorSource"):
     """
     Setup class members
     """
     super(ActorSource, self).__init__(name)
     self._world = CarlaDataProvider.get_world()
     self._actor_types = actor_type_list
     self._spawn_point = transform
     self._threshold = threshold
     self._queue = Blackboard().get(blackboard_queue_name)
     self._actor_limit = actor_limit
     self._last_blocking_actor = None
Example #25
0
 def update(self):
     blackboard = Blackboard()
     blackboard.protocol_flag = dict()
     blackboard.feedback = dict()
     for i in blackboard.PV:
         blackboard.protocol_flag[i] = (False,0.)
     for i in blackboard.Inters:
         blackboard.feedback[i] = 0.
     num = sum(blackboard.pos[:3])
     for idx,item in enumerate(blackboard.candi):
         if idx < 3:
             blackboard.protocol_flag[item] = (True,blackboard.pos[idx]/num)
     return py_trees.Status.SUCCESS
Example #26
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
     blackboard.feedback['normal saline'] += self.posi
     if not blackboard.Signs['hypotension'].binary and blackboard.Signs['seizure'].binary and blackboard.Vitals['glucose'].value > 60:
         s = blackboard.Signs['seizure'].score / 1000. * blackboard.Vitals['glucose'].score / 1000. * blackboard.Signs['hypotension'].score / 1000.
         blackboard.feedback['midazolam'] += self.posi * s
       #  blackboard.feedback['diazepam'] += self.posi * s
     blackboard.feedback['cardiac monitor'] += self.posi
     # recovery position?
     blackboard.feedback['transport'] += self.posi
     return py_trees.Status.SUCCESS
Example #27
0
 def update(self):
     blackboard = Blackboard()
     self.posi = blackboard.protocol_flag[self.key][1]
     if self.posi == 0:
         return py_trees.Status.SUCCESS
     if blackboard.Signs['hypoxemia'].binary:
         blackboard.feedback['oxygen'] += self.posi * blackboard.Signs['hypoxemia'].score / 1000.
     blackboard.feedback['cardiac monitor'] += self.posi
     blackboard.feedback['transport'] += self.posi
     if blackboard.Signs['hypoglycemia'].binary:
         s = blackboard.Signs['hypoglycemia'].score / 1000.
         if blackboard.Signs['loss of consciousness'].binary:
             blackboard.feedback['normal saline'] += self.posi * blackboard.Signs['loss of consciousness'].score / 1000. * s
             blackboard.feedback['dextrose'] += self.posi * blackboard.Signs['loss of consciousness'].score / 1000. * s
         else:
             blackboard.feedback['oral glucose'] += self.posi * s
     return py_trees.Status.SUCCESS
 def update(self):
     blackboard = Blackboard()
     self.sce.ConceptExtract(blackboard.text)
     blackboard.concepts = self.sce.concepts
     blackboard.confi = self.sce.scores
     self.sce.FirstExtract(blackboard.text, blackboard.tick_num)
     self.Vital2Symptom()
     blackboard.Signs = self.sce.Status
     #self.vce.concepts = blackboard.concepts
     #self.vce.scores = self.sce.scores
     #self.vce.FirstExtract(blackboard.text, blackboard.tick_num)
     blackboard.Vitals = self.vce.Status
     #self.sce.DisplayStatus()
     self.ice.concepts = blackboard.concepts
     self.ice.scores = self.sce.scores
     self.ice.FirstExtract(blackboard.text, blackboard.tick_num)
     blackboard.Inters = self.ice.Status
     self.ice.DisplayStatus()
     blackboard.ConcLog += self.sce.Log + self.vce.Log
     return py_trees.Status.SUCCESS
Example #29
0
 def update(self):
     bb = Blackboard()
     if bb.get("biome_check") and self.status != Status.RUNNING:
         self.color_original = self.robot.get_color()
         return Status.RUNNING
     elif self.status == Status.RUNNING:
         if not self.robot.is_running():
             if self.turning:
                 if not self.color_left:
                     self.color_left = self.robot.get_color()
                     self.robot.turn_for(30, 0, 2)
                 if not self.color_right:
                     self.color_right = self.robot.get_color()
                     self.robot.turn_for(0, 30, 1)
                 else:
                     self.turning = False
                     return Status.SUCCESS
             elif not self.left_done:
                 self.robot.turn_for(0, 30, 1)
                 self.turning = True
         return Status.RUNNING
     else:
         return Status.INVALID
Example #30
0
    def setup(self, unused_timeout=15):
        '''
        create a ConceptExtractor and initialize the patient status
        the list here is the complete list
        '''
        '''
        self.ce1 = CE.ConceptExtractor("Concept_List_1.csv")
        self.ce1.StatusInit()
        self.ce2 = CE.ConceptExtractor("Concept_List_2.csv")
        self.ce2.StatusInit()
        '''
        vcl = pd.read_csv(self.exlist)
        blackboard = Blackboard()
        # Signs and Symptoms Concept Extractor
        self.sce = CE.ConceptExtractor(self.slist)
        self.sce.StatusInit()
        for item in vcl:
            self.sce.SpecificInit(item)
# Vital Signs Concept Extractor
        self.vce = CE.ConceptExtractor(self.vlist)
        #self.vce.StatusInit()
        # Interventions Concept Extractor
        self.ice = CE.ConceptExtractor(self.intlist)
        self.ice.StatusInit()
        self.vce.StatusInit()
        if self.inC:
            self.vce.ConceptWrapper(self.inC)
# The list of vital signs we support (from RAA data)
        pool = ['Pulse', 'Resp', 'BP', 'GCS', 'Glucose', 'SPO2', 'Pain', 'EKG']
        for item in pool:
            self.vce.SpecificInit(item)
        blackboard.Signs = self.sce.Status
        blackboard.Vitals = self.vce.Status
        blackboard.Inters = self.ice.Status
        blackboard.ConcLog = []
        return True