def on_event(self, event): state = event[:3] direction = event[3:6] action = event[6:] if state != 'joy' or event == 'joyjoyoff': logo.stop() return Awake() if action != 'sta': logo.stop() else: if direction == 'top': logo.motor_speed(JOY_SPEED, JOY_SPEED) elif direction == 'mid': logo.motor_speed(-JOY_SPEED, -JOY_SPEED) elif direction == 'lef': logo.motor_speed(-JOY_SPEED / 4, JOY_SPEED / 4) elif direction == 'rig': logo.motor_speed(JOY_SPEED / 4, -JOY_SPEED / 4) return self
def __init__(self): super(Joystick, self).__init__() logo.stop() k9.speak("Under manual control")
def __init__(self): super(Following, self).__init__() logo.stop() k9.speak("Mastah!")
def __init__(self): super(Awake, self).__init__() # turn on lights logo.stop() k9.speak("K9 operational")
def __init__(self): super(Asleep, self).__init__() # turn all lights off logo.stop() k9.speak("Conserving battery power")
if len(indices[0]) > 0: direction = (np.average(indices) - mid_point) / width return (direction, final_distance) def mqtt_callback(self, client, userdata, message): """ Enables K9 to receive a message from an Epruino Watch via MQTT over Bluetooth (BLE) to place it into active or inactive States """ payload = str(message.payload.decode("utf-8")) if payload != self.last_message: self.last_message = payload event = payload[3:-1].lower() # print("Event: ",str(event)) self.on_event(event) # Create the k9 finite state machine k9 = K9() try: while True: k9.run() except KeyboardInterrupt: logo.stop() del body_cam del device k9.client.loop_stop() k9.speak("Inactive") print('exiting from', str(k9.state).lower(), 'state.') sys.exit(0)