def main(argv) : if len(argv) < 0 or len(argv) > 4 : print "Inadequate number of parameters, view README" return b = g.get_bot() sensor_grid = grid.Grid(size, size) # Grid for displaying noisy readings ml_grid = grid.Grid(size, size) # Grid for displaying most likely pos accuracy = [] # At each step, how far away is the most likely state steps = 15 # How many steps the robot should take print_info = False # Flag for info print_grid = False # Flag for grid printing time_per_step = 0.0 if len(argv) >= 1 : steps = int(argv[0]) if len(argv) >= 2 : print_info = (int(argv[1]) != 0) if len(argv) >= 3 : print_grid = (int(argv[2]) != 0) if len(argv) >= 4 : time_per_step = float(argv[3]) count = 0 for i in xrange(steps) : obs = g.next() # Latest observation update(obs) if not obs[0] is "nothing" : # Nothing handling sensor_grid.set_bot(obs[0][0], obs[0][1]) ml_state = most_likely() if print_grid : # This prints three parallell grids ml_grid.set_bot(ml_state.get_x(), ml_state.get_y()) grid_string = g.to_string().split("\n") sensor_string = sensor_grid.to_string().split("\n") ml_string = ml_grid.to_string().split("\n") for j in xrange(len(grid_string)) : print (grid_string[j] + sensor_string[j] + ml_string[j]) bstate = b.to_state() diff = bstate.diff(ml_state) accuracy.append(diff) if print_info : info = "Actual" + str(bstate.to_string()) info += "\tSensor" info += str((obs[0], bot.h_to_string(obs[1]))) info += "\tMost likely" + str(ml_state.to_string()) print info + "\n" print "Off by " + str(diff) if print_grid : time.sleep(time_per_step) s = str(len(accuracy)) + ": " for x in accuracy : s += str(abs(x[0]) + abs(x[1])) + " " print "\nAccuracy as a function of time: " print s
def to_string(self) : s = "(" + str(self.loc) + ", " s += bot.h_to_string(self.h) + ")" return s