diff --git a/analyzer.sh b/analyzer.sh index f2fccac..aa9e0be 100644 --- a/analyzer.sh +++ b/analyzer.sh @@ -2,6 +2,6 @@ #sh starter.sh & export ECG_FED=FED1 export JYTHONPATH=../ecg_framework_code/build/compling.core.jar:../ecg_framework_code/src/main/nluas/language -jython -J-Xmx2g -m analyzer ../ecg_grammars/compRobots.prefs +jython -J-Xmx3g -m analyzer ../ecg_grammars/compRobots.prefs #jython -m analyzer ../ecg_grammars/compRobots.prefs #python3 src/main/robots/robots_ui.py AgentUI diff --git a/src/main/robots/morse/xnet_simulator.py b/src/main/robots/morse/xnet_simulator.py index 72dc1c5..983994c 100644 --- a/src/main/robots/morse/xnet_simulator.py +++ b/src/main/robots/morse/xnet_simulator.py @@ -50,7 +50,7 @@ def update_motion(self, **to): # this isn't being called anymore, so we're not getting the proximity information? def move(self, **to): #print('Simulator move: ') - print(to) + #print(to) inst = getattr(self.simulator, self.name) diff --git a/src/main/robots/robot_solver.py b/src/main/robots/robot_solver.py index 894f851..7f4faf8 100644 --- a/src/main/robots/robot_solver.py +++ b/src/main/robots/robot_solver.py @@ -48,6 +48,7 @@ def __init__(self, args): #self.world = self.build_world("mock/world.json") #build('mock') self._recent = [] + self.recent_protagonists = [] self._wh = None self._speed = 4 # This depends on how size is represented in the grammar. @@ -232,6 +233,16 @@ def command_stop(self, parameters): process = parameters['process'] actionary = process['actionary'] protagonist = self.get_described_object(parameters['protagonist']['objectDescriptor']) + self.stop(protagonist) + #print(protagonist.name) + # DO SOMETHING HERE... + + + def command_continue(self, parameters): + process = parameters['process'] + actionary = process['actionary'] + protagonist = self.get_described_object(parameters['protagonist']['objectDescriptor']) + self.resume(protagonist) #print(protagonist.name) # DO SOMETHING HERE... @@ -255,12 +266,19 @@ def command_move(self, parameters): # TO DO: What to do here? #print("Command_move, no destination.") + def get_default_protagonist(self): + if len(self.recent_protagonists) > 0: + return self.recent_protagonists[-1] + return getattr(self.world, "robot1_instance") + def get_move_info(self, parameters): information = dict(destination=None, protagonist=None, speed=None) information['protagonist'] = self.get_described_object(parameters['protagonist']['objectDescriptor']) + if information['protagonist'] is None: + information['protagonist'] = self.get_default_protagonist() information['speed'] = parameters['speed'] * self._speed #spg = selparameters['spg'] @@ -354,7 +372,7 @@ def push_to_location(self, actedUpon, goal, protagonist): def push_direction(self, heading, actedUpon, distance, protagonist): info = self.get_push_direction_info(heading, actedUpon, distance['scaleDescriptor']['value']) - self.move(protagonist, info['x1'], info['y1'], tolerance=4) + self.move(protagonist, info['x1'], info['y1'], tolerance=2.5) self.move(protagonist, info['x2'], info['y2'], tolerance=3, collide=True) @@ -375,6 +393,8 @@ def get_push_info(self, parameters): else: heading = None protagonist = self.get_described_object(parameters['protagonist']['objectDescriptor']) + if protagonist is None: + protagonist = self.get_default_protagonist() goal = parameters['affectedProcess']['spg']['spgDescriptor']['goal'] distance = parameters['affectedProcess']['distance'] info = dict(goal=None, @@ -616,7 +636,7 @@ def get_described_object(self, description, multiple=False): return None else: message = "Sorry, I don't know what the {} is.".format(self.assemble_string(description)) - self.identification_failure(message) + #self.identification_failure(message) #TESTING, for speech and unmentioned referents return None def tag_ntuple(self, ntuple, description, k=None): @@ -1088,6 +1108,7 @@ def solve_conditional_declarative(self, ntuple): def move(self, mover, x, y, z=1.0, speed=2, tolerance=3, collide=False): + self.recent_protagonists.append(mover) msg = "{} is moving to ({}, {}, {}).".format(mover.name, x, y, z) #print() diff --git a/src/main/robots/xnet_solver.py b/src/main/robots/xnet_solver.py index c06a387..de1fc20 100644 --- a/src/main/robots/xnet_solver.py +++ b/src/main/robots/xnet_solver.py @@ -59,6 +59,16 @@ def move(self, mover, x, y, z=0.0, speed=2, tolerance=3.5, collide=False): ## print('exiting xnet solver move') self.update_world(agent=mover) + + def stop(self, mover): +## print('xnet solver stop requested') + self.solver_command_processor.set_suspended_expected(True) + mover.suspend() + + def resume(self, mover): + self.solver_command_processor.set_continue_expected(False) + mover.resume() + if __name__ == "__main__": solver = XnetMorseSolver(sys.argv[1:]) #solver = XnetRobotSolver(sys.argv[1:])