Exemple #1
0
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
Exemple #2
0
	def to_string(self) :
		s = "(" + str(self.loc) + ", "
		s += bot.h_to_string(self.h) + ")" 
		return s