Beispiel #1
0
    async def dispatch_message(self, bus_message: BusMessage,
                               source: str) -> None:
        """ Detect type of a BusMessage and call a controller. """
        type_msg = bus_message.WhichOneof("message_content")
        if type_msg == "heartbeat":
            pass
        elif type_msg == "encoderPosition":
            self.position_controller.update_odometry(
                bus_message.encoderPosition.left_tick,
                bus_message.encoderPosition.right_tick)
            self.motion_controller.trigger_update()

        elif type_msg == "laserSensor":
            await self.match_action.set_laser_distances()
        elif type_msg == "pressureSensor":
            await self.match_action.set_pressures()
        elif type_msg == "debugLog":
            LOGGER.get().info("low_level_log",
                              content=bus_message.debugLog.content,
                              source=source)
        elif type_msg in [
                "moveWheelAtSpeed", "wheelPositionTarget", "pidConfig",
                "wheelTolerances", "wheelPWM", "wheelControlMode"
        ]:
            # messages that are read back are ignored
            pass
        else:
            LOGGER.get().error("unhandled_protobuf_message",
                               message_type=type_msg,
                               source=source)
 async def dispatch_message(self, bus_message: BusMessage) -> None:
     """ Detect type of a BusMessage and call a controller. """
     type_msg = bus_message.WhichOneof("message_content")
     if type_msg == "heartbeat":
         pass
     elif type_msg == "movementEnded":
         self.localization_controller.movement_done(
             bus_message.movementEnded.blocked)
     elif type_msg == "encoderPosition":
         self.localization_controller.update_odometry_position(
             bus_message.encoderPosition.left_tick,
             bus_message.encoderPosition.right_tick)
     elif type_msg == "laserSensor":
         await self.match_action.set_laser_distances()
     elif type_msg == "pressureSensor":
         await self.match_action.set_pressures()
     else:
         LOGGER.get().error("unhandled_protobuf_message",
                            message_type=type_msg)
Beispiel #3
0
    async def handle_movement_order(self, data: bytes, _: str) -> None:
        """
        Handle move wheels packets.
        """
        bus_message = BusMessage()
        bus_message.ParseFromString(data)

        # pylint: disable=no-member
        type_msg = bus_message.WhichOneof("message_content")
        if type_msg == "moveWheelAtSpeed":
            target_left = bus_message.moveWheelAtSpeed.left_tick_per_sec
            target_right = bus_message.moveWheelAtSpeed.right_tick_per_sec
            self.simulation_state.queue_speed_left.append(target_left)
            self.simulation_state.queue_speed_left.popleft()
            self.simulation_state.queue_speed_right.append(target_right)
            self.simulation_state.queue_speed_right.popleft()

            LOGGER.get().debug('simulation_router_received_wheel_speed_target')
        elif type_msg == "pidConfig":
            LOGGER.get().debug('simulation_router_received_pid_config')
        else:
            LOGGER.get().debug('simulation_router_received_unhandled_order')