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()
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...
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()