def Evolve(self): self.parent = ROBOT() self.parent.Evaluate(self.obstacles, playBlind=True, playPaused=False) for g in range(0, c.NUM_GENERATIONS): child = copy.deepcopy(self.parent) child.Mutate() child.Evaluate(self.obstacles, playBlind=True, playPaused=False) printString = "[generation " + str(g) + " of " + str( c.NUM_GENERATIONS) + "]: " printString = printString + "[parent fitness: " + str( self.parent.fitness) + "] " printString = printString + "[child fitness: " + str( child.fitness) + "] " print printString if (child.fitness > self.parent.fitness): self.parent = child
class SIMULATION: def __init__(self,GUI,solutionID): self.solutionID = solutionID self.GUI = GUI self.physicsClient = p.connect(p.GUI if self.GUI else p.DIRECT) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0,0,-9.8) self.world = WORLD() self.robot = ROBOT(self.solutionID) def Get_Fitness(self): self.robot.Get_Fitness() def Run(self): for t in range(c.NUMBER_STEP): if self.GUI : time.sleep(1/240) p.stepSimulation() self.robot.Sense(t) self.robot.Think(t) self.robot.Act(t) def __del__(self): p.disconnect() '''
class SIMULATION: def __init__(self, directOrGui, solutionID): self.directOrGui = directOrGui if self.directOrGui == "DIRECT": self.physicsClient = p.connect(p.DIRECT) elif self.directOrGui == "GUI": self.physicsClient = p.connect(p.GUI) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0, 0, -9.8) self.world = WORLD() self.robot = ROBOT(solutionID) def Run(self): for i in range(350): p.stepSimulation() self.robot.Sense(i) self.robot.Think() self.robot.Act(i) if self.directOrGui == "GUI": t.sleep(1 / 60) def Get_Fitness(self, solutionID): self.robot.Get_Fitness(solutionID) def __del__(self): p.disconnect()
def __init__(self, directOrGui, solutionID): self.directOrGui = directOrGui if self.directOrGui == "DIRECT": self.physicsClient = p.connect(p.DIRECT) elif self.directOrGui == "GUI": self.physicsClient = p.connect(p.GUI) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0, 0, -9.8) self.world = WORLD() self.robot = ROBOT(solutionID)
def __init__(self,GUI,solutionID): self.solutionID = solutionID self.GUI = GUI self.physicsClient = p.connect(p.GUI if self.GUI else p.DIRECT) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0,0,-9.8) self.world = WORLD() self.robot = ROBOT(self.solutionID)
def Start_Evaluation(self, env, pb, pp=False): #---SIMULATOR---# # start the simulator self.sim = pyrosim.Simulator(eval_time=c.evalTime, play_paused=pp, play_blind=pb, dt=c.discreteTime) #---ROBOTS---# # spawn bot self.robot = ROBOT(self.sim, self.genome) #---ENVIRONMENTS---# env.Send_To(self.sim) env.Send_Slope(self.sim) #---SET COLLISIONS---# # here we can assign collisions directly # we can also make a predefined collision matrix # using sim.create_collision_matrix(collision_type) # where collision_type = 'all','none','inter' or 'intra'. self.sim.assign_collision(self.robot, env) #---SIMULATION---# # start the simulation self.sim.start()
def Start_Evaluation(self, pp, pb): self.sim = PYROSIM(playPaused=pp, playBlind=pb, evalTime=500) robot = ROBOT(self.sim, self.genome) self.sim.Start()
def Start_Evaluation(self, env, pb=True, pp=True): """ Evaluates an individual over a simulation environment in pyrosim. env: Pyrosim simulation env (object of ENVIRONMENT class) play_blind : bool, optional If True the simulation runs without graphics (headless) else if False the simulation runs with graphics (the default is False) play_paused : bool, optional If True the simulation starts paused else if False the simulation starts running. With simulation window in focus use Ctrl-p to toggle pausing the simulation. (the default is False) return:None """ self.sim = pyrosim.Simulator(eval_time=c.evalTime, play_blind=pb, play_paused=pp, xyz=[0, 7.5, 0.8], hpr=[270,0,0.0]) # add robot to sim self.robot = ROBOT(self.sim,genome = self.genome, hidden_genome = self.hidden_genome, WHEEL_RADIUS = self.WHEEL_RADIUS, SPEED=self.SPEED, MASS=self.MASS) # add environment to sim env.Send_To(sim = self.sim) # define collisions in sim self.sim.assign_collision('ball', 'robot') self.sim.assign_collision('goalpost', 'robot') self.sim.assign_collision('ball', 'goalpost') self.sim.start() # retrieve the id of the ball position sensor self.ball_psensor_id = env.ball_psensor_id self.robot_position = self.robot.position
def Start_Evaluation(self, env, pp, pb): self.sim = pyrosim.Simulator(play_paused=pp, eval_time=c.evalTime, play_blind=pb) env.Send_To(self.sim) self.robot = ROBOT(self.sim, self.genome) self.sim.start()
def Evaluate(self): sim = pyrosim.Simulator(play_paused=False, eval_time=100) robot = ROBOT(sim, self.genome) sim.start() sim.wait_to_finish() sensorData = sim.get_sensor_data(sensor_id=robot.P4, svi=1) self.fitness = sensorData[-1]
def Start_Evaluation(self, pb): self.sim = pyrosim.Simulator( play_blind=pb, play_paused=False, eval_time=100) self.robot = ROBOT(self.sim, self.genome) self.sim.start()
def Start_Evaluation(self, hideSim=True, startPaused=False): self.sim = PYROSIM(playPaused=startPaused, playBlind=hideSim, evalTime=c.evaluationTime) robot = ROBOT(self.sim, self.genome) self.sim.Start()
def Start_Evaluation(self, env, pp, pb): self.sim = pyrosim.Simulator(play_paused=pp, eval_steps=c.evalTime, play_blind=pb) env.Send_To(self.sim) #self.sim.set_camera((-4, -1, 2), (15, -15, 0), tracking = 'none', body_to_track = 0) self.robot = ROBOT(self.sim, self.genome) self.sim.start()
def Start_Evaluation(self, pb, tower_y): self.pb = pb self.sim = pyrosim.Simulator( play_paused=True, eval_time=c.eval_time, play_blind=pb) self.robot = ROBOT(self.sim, self.genome) self.tower = TOWER(self.sim, tower_y) self.sim.assign_collision("tower", "tower") self.sim.assign_collision("tower", "robot") self.sim.start()
def Evaluate(self, pb): sim = pyrosim.Simulator(play_blind=pb) robot = ROBOT(sim, self.genome) sim.start() sim.wait_to_finish() x = sim.get_sensor_data(sensor_id=robot.P4, svi=0) y = sim.get_sensor_data(sensor_id=robot.P4, svi=1) z = sim.get_sensor_data(sensor_id=robot.P4, svi=2) self.fitness = y[-1]
def Start_Evaluation(self, pb): self.sim = pyrosim.Simulator(play_blind=pb, eval_time=1000, debug=False, play_paused=False, use_textures=True, xyz=[-25, -50, 0]) self.robot = ROBOT(self.sim, self.genomehidden, self.genomeoutput) self.sim.start()
def Start_Evaluation(self, env, pp, pb): self.sim = PYROSIM(playPaused=pp, playBlind=pb, evalTime=constants.evaluationTime) robot = ROBOT(self.sim, self.genome) env.Send_To(self.sim) self.sim.Start()
def Evaluate(self): sim = pyrosim.Simulator(play_paused=False, eval_time=500) robot = ROBOT(sim, random.random() * 2 - 1) sim.start() sim.wait_to_finish() #gets x,y,z coord of individual's red cylinder. y = sim.get_sensor_data(sensor_id=robot.P4, svi=1) self.fitness = y[-1] #gets last element in y array (last y pos)
def Start_Evaluation(self, pb): # starts simulation self.sim = pyrosim.Simulator(play_paused=False, eval_time=500, play_blind=pb) # call to function ROBOT which generates the scissor robot self.robot = ROBOT(self.sim, self.genome) # starts simulator self.sim.start()
def main(): global P global CMD_VEL # Uncomment for debugging if nesssary, recomment before turning in. # rp.Subscriber('/stage/base_pose_ground_truth', Odometry, mcl_debug.got_odom) rp.Subscriber('/robot/base_scan', LaserScan, got_scan) # movement/sensor particle update rp.Subscriber('/robot/cmd_vel', Twist, got_vel) #actual robot pose only used to show it on map not for partcile filter rp.Subscriber('/stage/base_pose_ground_truth', Odometry, actual_pose) #actual robot pose #removed due to wander node #CMD_VEL = rp.Publisher('/robot/cmd_vel', Twist, queue_size=1) # create initial particles for p in xrange(PARTICLE_COUNT): r = ROBOT() r.set_pose(5, 5.6, 0) # map space P.append(r) mcl_tools.mcl_init('particle_2d') mcl_tools.mcl_run_viz()
def start_evaluation(self, blind_mode=False): ''' :param blind_mode: Flag to disable the visualization Creates an instance of pyrosim and ROBOT ''' self.sim = pyrosim.Simulator(play_paused=False, eval_time=1000, window_size=(1900, 1080), play_blind=blind_mode) self.robot = ROBOT(self.sim, self.genome) self.sim.start()
def __init__(self): self.sim = PYROSIM(playPaused=False) self.arena = ARENA(self.sim) xPosition = random.random()*(c.endX-c.startX) + c.startX yPosition = random.random()*(c.endY-c.startY) + c.startY self.robot = ROBOT(self.sim, x = xPosition , y = yPosition , theta = 0.0 ) self.sim.Start()
def Start_Evaluation(self,trialIndex,initialX,initialY,initialTheta,pp,pb): self.sims[trialIndex] = PYROSIM(playPaused=pp,playBlind=pb) self.robot = ROBOT(self.sims[trialIndex], self.genome, x = initialX , y = initialY , theta = initialTheta) del self.robot self.arena = ARENA(self.sims[trialIndex]) del self.arena self.sims[trialIndex].Start()
def Start_Evaluation(self, env, pp, pb): # starts simulation self.sim = pyrosim.Simulator(play_paused=pp, eval_time=c.evalTime, play_blind=pb) # call to function ROBOT which generates the scissor robot self.robot = ROBOT(self.sim, self.genome) env.Send_To(self.sim) # starts simulator self.sim.start()
def Start_Evaluation(self, env, pb, pp = False): #---SIMULATOR---# # start the simulator self.sim = pyrosim.Simulator(eval_time = c.evalTime, play_paused = pp, play_blind = pb) #---ROBOTS---# # spawn bot self.robot = ROBOT(self.sim, self.genome) #---ENVIRONMENTS---# env.Send_To(self.sim) #---SIMULATION---# # start the simulation self.sim.start()
def Start_Evaluation(self, pb): # create a Pyrosim simulator self.sim = pyrosim.Simulator(play_paused=False, eval_time=1500, play_blind=pb, xyz=[1.0, -2.6, 1.5], window_size=(415, 280), hpr=[110, -18, 0]) # create a robot inside the simulator called sim self.robot = ROBOT( self.sim, self.genome, self.A, self.B, self.leg) # create a class instance of the ROBOT class # start the simulation self.sim.start()
def Reset(self, database, screen): numUndigestedReinforcements = database.Get_Num_Undigested_Reinforcements( ) self.robots = {} for color in c.colors: self.robots[color] = ROBOT(database, color, screen, numUndigestedReinforcements) self.Compute_Max_Wins_And_Losses() for color in c.colors: self.robots[color].Set_Position()
def evaluate(self): sim = pyrosim.Simulator(play_paused=False, eval_time=500, window_size=(1900, 1080)) robot = ROBOT(sim, self.genome) # Starts simulation sim.start() sim.wait_to_finish() # Position sensor returns [x,y,z] coordinates # svi 0 -> x # positionData_x = sim.get_sensor_data(sensor_id=robot.position_red, svi=0) positionData_y = sim.get_sensor_data(sensor_id=robot.position_red, svi=1) # positionData_z = sim.get_sensor_data(sensor_id=robot.position_red, svi=2) self.fitness = positionData_y[-1]
def Start_Evaluation(self, pb, pp): #---SIMULATOR---# # start the simulator self.sim = pyrosim.Simulator(eval_time=1000, play_paused=pp, play_blind=pb) #---ROBOTS---# # spawn bot self.robot = ROBOT(self.sim, self.genome) #---SIMULATION---# # start the simulation self.sim.start()
def Start_Evaluation(self, env=None, eval_time=C.evalTime, play_blind=False): self.sim = pyrosim.Simulator(eval_time=eval_time, play_blind=play_blind, play_paused=True) self.hasLight = env is not None self.carry_box = False if self.hasLight: env.send_to(self.sim) self.hasLight = env.hasLight self.carry_box = env.carry_box if self.carry_box: self.p_box = env.p_box self.robot = ROBOT(self.sim, self.hasLight, self.genome) self.sim.assign_collision('robot', 'env') self.sim.assign_collision('env', 'robot') self.sim.start()