def __init__(self, mock=False, run=True) -> None: super().__init__('injector_node') self.command_publisher = messenger.Publisher('/command', messenger.Messages.string) self.strategy_listener = messenger.Listener('/strategy', messenger.Messages.string) self.canbus_listener = messenger.Listener('/canbus_message', messenger.Messages.string) self.settings_listener = messenger.Listener( '/settings_changed', messenger.Messages.string, callback=self.refresh_settings) self.recognition_listener = messenger.Listener( '/recognition', messenger.Messages.string) self.config = ConfigManager.get_value('game') self.mock = mock self.initial_devices = set( (dev.hwid or dev.device) for dev in find_serial('CP2102').values()) self.logger.info("existing devices %s", list(self.initial_devices)) self.injector: Optional[serial.Serial] = None if run: self.loop(3)
def __init__(self, mock=False, run=True, **kwargs) -> None: super().__init__('gameplay', existing_loggers=['gameplay'], **kwargs) self.mock = mock # ConfigManager.set_value('game|global|gameplay status', 'disabled') self.config = ConfigManager.get_value('game') self.gameplay = Gameplay(self.config, Controller(), self.logger) self.strategy_publisher = messenger.Publisher('/strategy', messenger.Messages.string) self.settings_listener = messenger.Listener( '/settings_changed', messenger.Messages.string, callback=self.refresh_settings) self.recognition_listener = messenger.Listener( '/recognition', messenger.Messages.string, callback=self.callback) self.command_listener = messenger.Listener( '/command', messenger.Messages.string, callback=self.command_callback) self.kicker_listener = messenger.Listener( '/canbus_message', messenger.Messages.string, callback=self.kicker_callback) self.realsense_distance_listener = messenger.Listener( '/distance/realsense', messenger.Messages.float, callback=self.realsense_distance_callback) self.tfmini_distance_listener = messenger.Listener( '/distance/tfmini', messenger.Messages.float, callback=self.tfmini_distance_callback) self.realsense_active = time() self.logger.info("Start gameplay") if run: self.spin()
def run(self): logger.info("REMOTERF THREAD STARTED") string = "" while True: field = ConfigManager.get_value("game|global|field_id") ack_packet = "a{}{}ACK------".format( ConfigManager.get_value("game|global|field_id"), ConfigManager.get_value("game|global|robot_id"), ) ack_packet = ack_packet.encode() c = self.ser.read(11) # ---aAXSTART - self.ser.write(ack_packet) try: c = c.decode() except: continue if not c: continue string += c if f"{field}XSTART" in string: logger.info("GOT START") string = "" ConfigManager.set_value("game|global|gameplay status", 'enabled') if f"{field}XSTOP" in string: logger.info("GOT STOP") string = "" ConfigManager.set_value("game|global|gameplay status", 'disabled') if "PING" in string: logger.info("got ping") string = "" self.ser.write(ack_packet) if len(string) > 1000: string = ""
def send_settings_packet(): game_config = ConfigManager.get_value('game') if not game_config: ConfigManager.set_value('game|global|field_id', 'A') ConfigManager.set_value('game|global|robot_id', 'A') ConfigManager.set_value('game|global|target goal color', 'blue') ConfigManager.set_value('game|global|gameplay status', 'disabled') game_options = [ ("field_id", [ConfigManager.get_value("game|global|field_id"), "A", "B", "Z"]), ("robot_id", [ConfigManager.get_value("game|global|robot_id"), "A", "B"]), ("target goal color", [ConfigManager.get_value("game|global|target goal color"), "purple", "blue"]), ("gameplay status", [ConfigManager.get_value("game|global|gameplay status"), "disabled", "enabled"]), ] settings_packet = json.dumps(dict( action="settings-packet", sliders=dict(color=ConfigManager.get_value("color")), options=game_options )) websocket.send(settings_packet)
def refresh_settings(self, settings_topic): self.config = ConfigManager.get_value('game')
exit(0) listener_wrapper = messenger.CallbackListenerWrapper() node = messenger.Node('octocamera', on_shutdown=kill) settings_change = messenger.Listener('/settings_changed', messenger.Messages.string, callback=listener_wrapper.update) recognition_publisher = messenger.Publisher('/recognition', messenger.Messages.string) logger = node.logger # Build pipeline config = ConfigManager.get_value('camera') grabber = PanoramaGrabber(config) image_recognizer = ImageRecognizer(grabber, config_manager=ConfigManager, publisher=recognition_publisher) # settings listeners listener_wrapper.listeners.append(image_recognizer.refresh_config) manager = None # type: ThreadManager def main(silent=False): if not silent: messenger.ConnectPythonLoggingToROS.reconnect('image_recognition', 'visualization',
def refresh_settings(self, settings_topic): self.loginfo("Settings refreshed") self.config = ConfigManager.get_value('game') self.gameplay.config = Settings(self.config)