#!/usr/bin/env python3 import uuid import paho.mqtt.client as mqtt from planet import Direction, Planet from communication import Mode, Communication from move import Move from time import sleep # DO NOT EDIT client = None def run(): # DO NOT EDIT global client # client_id has to be unique among ALL users client = mqtt.Client(client_id=str(uuid.uuid4()), clean_session=False, protocol=mqtt.MQTTv31) communication = Communication(client) move = Move() while(communication.planetname is None): communication.process_messages() move.traversetonextstation(True) move.resetwheels() move.reset() while(communication.status() is not Mode.COMPLETE): communication.update(move.getstats()) # TODO: Register in map # correct odometry right here otherwise list of edges will be incorrect move.setcurdir(communication.getdir()) communication.process_edges(move.getstationedges()) if(communication.status() is Mode.GOTOSTATION or communication.status() is Mode.TARGET): # should be triggered if current station has no unexplored edges while len(communication.navto) > 0: move.turnto(communication.navto[0][1]) move.traversetonextstation(True) move.setcurdir(communication.planet._planetmap[communication.navto[0][0]][communication.navto[0][1]]) communication.update(None) communication.navto.pop(0) communication._status = Mode.EXPLORE else: move.turnto(communication.navto[0][1]) sleep(4) communication.planet.setcurdir(communication.navto[0][1]) move.setcurdir(communication.getdir()) move.reset() move.traversetonextstation(False) # DO NOT EDIT if __name__ == '__main__': run()