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)
Exemple #2
0
    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')
Exemple #6
0
    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',
Exemple #7
0
 def refresh_settings(self, settings_topic):
     self.loginfo("Settings refreshed")
     self.config = ConfigManager.get_value('game')
     self.gameplay.config = Settings(self.config)