def main(): out = sys.argv[1] m1 = map_rep.map_(fname='i.map') mv1 = move_list.MoveList(fname='i.mv') out_keys = ['max_rng', 'step', 'particle_number'] # keys from the dict to add to file s1 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 25, 'particle_number': 1, 'out_file': out} #s2 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 5, 'out_file': 'data.txt'} #s3 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 5, 'particle_number': 5, 'out_file': 'data.txt'} #s4 = {'map_':m1, 'move_list':mv1, 'max_rng':75, 'step': 15, 'particle_number': 5, 'out_file': 'data.txt'} s5 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 3, 'out_file': out} s6 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 5, 'out_file': out} s7 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 8, 'out_file': out} s8 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 15, 'out_file': out} s9 = {'map_':m1, 'move_list':mv1, 'max_rng':50, 'step': 15, 'particle_number': 25, 'out_file': out} srs = [s1,s5] testnum = 2 for cfg in srs: f = open(out, 'a') f.write('newconf\n') for key in out_keys: f.write('%s:%s/'%(key, cfg[key])) f.write('\n') f.close() s = sonar_sim.sonar(**cfg) for i in range(testnum): f = open(out, 'a') f.write('newtest\n') f.write('----START----: %s\n'%(time.time())) f.close() while s.sim_step() != -1: continue f = open(out, 'a') f.write('step 99999\n') f.write('----END----: %s\n'%(time.time())) f.close() mv1.reset()
# that is closest to the current sonar location intersect = self.math.get_intersect_point(self.loc, ln, self.map) # calculate the distance to the intersection point, with # some parameters which limit the data to a certain range dist = self.math.intersect_distance(self.loc, intersect, self.min_range, self.max_range,) self.ranges.append(dist) # store the calculated distance # Store the other objects for drawing later if necessary self.scan_lines.append(ln) self.intersection_points.append(intersect) self.current_angle += self.step # increment the angle to the angle of the next measurement def generate_particles(self, number): """Create a number of particles.""" if not self.particles.list(): for i in range(number): # Create a particle within a gaussian range of the current sonar location self.particles.add(particle.Particle(Point(self.math.apply_point_noise(self.loc.x, self.loc.y, self.loc_noise, self.loc_noise)), self)) if __name__ == '__main__': simple_map = map_rep.map_(sys.argv[1]) mvlist = move_list.MoveList() mvlist.read_from_file(sys.argv[2]) #mvlist = move_list.MoveList([Point(0,0)]) #param = {'map_':simple_map, 'move_list':mvlist, 'max_rng':50, 'step': 15, 'particle_number': 10, 'out_file': 'data.txt', 'param_file': 'params.txt'} param = {'map_':simple_map, 'move_list':mvlist, 'max_rng':50, 'step': 15, 'particle_number': 10, 'out_file': 'data.txt'} sonar = sonar(**param) #sonar = sonar(simple_map, mvlist, rng=50, step=15, particle_number=5) #a = particle.Particle(sonar.loc, sonar) #a.get_ranges() ab = gui.gui(sonar)