Пример #1
0
    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
Пример #2
0
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()
		'''
Пример #3
0
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()
Пример #4
0
    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)
Пример #5
0
	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)
Пример #6
0
    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()
Пример #7
0
    def Start_Evaluation(self, pp, pb):

        self.sim = PYROSIM(playPaused=pp, playBlind=pb, evalTime=500)

        robot = ROBOT(self.sim, self.genome)

        self.sim.Start()
Пример #8
0
 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
Пример #9
0
 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()
Пример #10
0
 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()
Пример #13
0
 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()
Пример #14
0
 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()
Пример #15
0
 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]
Пример #16
0
 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()
Пример #17
0
    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()
Пример #18
0
    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)
Пример #19
0
    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()
Пример #20
0
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()
Пример #22
0
        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()
Пример #23
0
        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()
Пример #24
0
    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()
Пример #25
0
	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()
Пример #26
0
    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()
Пример #27
0
    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()
Пример #28
0
    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]
Пример #29
0
    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()
Пример #30
0
    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()