Exemple #1
0
 def __init__(self, x=60, y=60, orientation=0, linear=1, angular=0, agent_color='r'):
     self.state = State(x, y, orientation, linear, angular)
     self.map = Map()
     self.pixels_per_meter = 20  # TODO: Make mutator or include in constructor
     self.type = agent_color
     self.sensor = Sensor()
     self.controller = Controller()
     self.sensor_noise = NormalDistribution()
     self.actuator_noise = NormalDistribution()
Exemple #2
0
 def __init__(self):
     self.map = Map()
     plt.ion()
     self.figure = plt.figure(num='Robot simulator',
                              figsize=(8, 8),
                              dpi=80,
                              facecolor='w',
                              edgecolor='k')
     self.figure.canvas.draw()
     self.agent_posteriors = []
class Environment(object):
    def __init__(self):
        self.map = Map()
        self.agents = []
        self.visualiser = Visualiser()
        self.visualise = True
        self.stepsize = 0.1 # TODO: magic number...
    
    def setSensorNoise(self, mean, variance):
        self.sensor_noise.mean = mean
        self.sensor_noise.variance = variance
    
    def setActuatorNoise(self, mean, variance):
        self.actuator_noise.mean = mean
        self.actuator_noise.variance = variance

    def takeStep(self):
        for agent_index in range(len(self.agents)):
            self.agents[agent_index].update()
            if not self.map.inCollision((self.agents[agent_index].state.position.x, self.agents[agent_index].state.position.y)) :
                if not self.agentCollision(agent_index) :
                    self.agents[agent_index].state.position.x = self.agents[agent_index].state.position.x + ( self.agents[agent_index].state.velocity.linear * np.cos(self.agents[agent_index].state.orientation) * self.stepsize * self.agents[agent_index].pixels_per_meter)
                    self.agents[agent_index].state.position.y = self.agents[agent_index].state.position.y + ( self.agents[agent_index].state.velocity.linear * np.sin(self.agents[agent_index].state.orientation) * self.stepsize * self.agents[agent_index].pixels_per_meter)
                    self.agents[agent_index].state.orientation = self.agents[agent_index].state.orientation + (self.agents[agent_index].state.velocity.angular * self.stepsize)
            if self.visualise :
                self.visualiser.plotAgent(agent_index, self.agents[agent_index])
        self.visualiser.draw()
    
    def run(self, max_iterations):
        iterations = 0
        while iterations < max_iterations :
            iterations += 1
            self.takeStep()
        self.visualiser.figure.savefig('last_run.png')
        print 'Completed ' + str(iterations) + ' iterations'
        
    def agentCollision(self, index):  
        out = False       
        for agent_index in range(len(self.agents)):
            if agent_index != index:
                if np.abs(self.agents[agent_index].state.position.x - self.agents[index].state.position.x) < 5 and np.abs(self.agents[agent_index].state.position.y - self.agents[index].state.position.x) < 5 :
                    out = True
        return out
        
 def __init__(self):
     self.map = Map()
     self.agents = []
     self.visualiser = Visualiser()
     self.visualise = True
     self.stepsize = 0.1 # TODO: magic number...
 def __init__(self):
     self.map = Map()
     self.agents = []
     self.visualiser = Visualiser()
     self.visualise = True
     self.stepsize = 0.1  # TODO: magic number...
class Environment(object):
    def __init__(self):
        self.map = Map()
        self.agents = []
        self.visualiser = Visualiser()
        self.visualise = True
        self.stepsize = 0.1  # TODO: magic number...

    def setSensorNoise(self, mean, variance):
        self.sensor_noise.mean = mean
        self.sensor_noise.variance = variance

    def setActuatorNoise(self, mean, variance):
        self.actuator_noise.mean = mean
        self.actuator_noise.variance = variance

    def takeStep(self):
        for agent_index in range(len(self.agents)):
            self.agents[agent_index].update()
            if not self.map.inCollision(
                (self.agents[agent_index].state.position.x,
                 self.agents[agent_index].state.position.y)):
                if not self.agentCollision(agent_index):
                    self.agents[agent_index].state.position.x = self.agents[
                        agent_index].state.position.x + (
                            self.agents[agent_index].state.velocity.linear *
                            np.cos(self.agents[agent_index].state.orientation)
                            * self.stepsize *
                            self.agents[agent_index].pixels_per_meter)
                    self.agents[agent_index].state.position.y = self.agents[
                        agent_index].state.position.y + (
                            self.agents[agent_index].state.velocity.linear *
                            np.sin(self.agents[agent_index].state.orientation)
                            * self.stepsize *
                            self.agents[agent_index].pixels_per_meter)
                    self.agents[agent_index].state.orientation = self.agents[
                        agent_index].state.orientation + (
                            self.agents[agent_index].state.velocity.angular *
                            self.stepsize)
            if self.visualise:
                self.visualiser.plotAgent(agent_index,
                                          self.agents[agent_index])
        self.visualiser.draw()

    def run(self, max_iterations):
        iterations = 0
        while iterations < max_iterations:
            iterations += 1
            self.takeStep()
        self.visualiser.figure.savefig('last_run.png')
        print 'Completed ' + str(iterations) + ' iterations'

    def agentCollision(self, index):
        out = False
        for agent_index in range(len(self.agents)):
            if agent_index != index:
                if np.abs(self.agents[agent_index].state.position.x -
                          self.agents[index].state.position.x) < 5 and np.abs(
                              self.agents[agent_index].state.position.y -
                              self.agents[index].state.position.x) < 5:
                    out = True
        return out
 def __init__(self):
     self.map = Map()