示例#1
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()
    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()
示例#3
0
class INDIVIDUAL:
    def __init__(self, i):

        self.ID = i

        self.genome = numpy.random.random([4, 8]) * 2 - 1

        self.fitness = 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()

    def Compute_Fitness(self):

        self.sim.Wait_To_Finish()

        sensorData = self.sim.Get_Sensor_Data(sensorID=4, s=1)

        self.fitness = sensorData[499]

        if (self.fitness > 10.0):

            self.fitness = 10.0

        del self.sim

    def Mutate(self):

        s = random.randint(0, 3)

        m = random.randint(0, 7)

        self.genome[s, m] = random.gauss(self.genome[s, m],
                                         math.fabs(self.genome[s, m]))

        if (self.genome[s, m] > 1.0):

            self.genome[s, m] = 1.0

        if (self.genome[s, m] < -1.0):

            self.genome[s, m] = -1.0

    def Print(self):

        print '[',

        print self.ID,

        print self.fitness,

        print '] ',
示例#4
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()
示例#5
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()
示例#6
0
def _Test_Tree():

    T = 1000
    sim = PYROSIM(playPaused=False,
                  playBlind=False,
                  evalTime=T,
                  xyz=[0, 0, 5],
                  hpr=[90, -90, 0])
    #sim = PYROSIM(playPaused=False, playBlind=False, evalTime=T, xyz=[-5,0,2], hpr=[0,-20,0])
    t = Treebot()
    t.Send_To_Simulator(sim)
    sim.Start()
    sim.Wait_To_Finish()
    data = sim.Get_Results()
示例#7
0
    def Evaluate(self, obstacles, playBlind, playPaused):

        self.sims = {}

        for e in range(0, c.NUM_ENVIRONMENTS):

            self.sims[e] = PYROSIM(playBlind=playBlind, playPaused=playPaused)

            self.sim = self.sims[e]

            self.Send_To_Sim(e)

            obstacles.Send_To_Sim(self.sims[e])

            self.sims[e].Start()

        self.fitness = 0.0

        for e in range(0, c.NUM_ENVIRONMENTS):

            self.sim = self.sims[e]

            self.sims[e].Wait_To_Finish()

            self.Compute_Fitness()
示例#8
0
def Play_Indv(robot, eval_time, environment=False):
    sensor_data = {}
    if environment:

        for i, env in enumerate(environment[:8]):
            sim = PYROSIM(playPaused=True,
                          playBlind=False,
                          evalTime=eval_time,
                          xyz=(0, -2, 3),
                          hpr=(90, -30, 0))
            offset = robot.Send_To_Simulator(sim, eval_time=eval_time)

            env.Send_To_Simulator(sim, ID_offset=offset[0])
            sim.Start()
            sim.Wait_To_Finish()
            sensor_data[i] = sim.Get_Results()
    print sensor_data
    return sensor_data
示例#9
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()
示例#10
0
def Send_Sub_Population_To_Simulator(population, start_index):
    sensor_data = {}
    ID = 0
    for offset in range(start_index, len(population), NUM_IN_PARALLEL):

        sims = [0] * NUM_IN_PARALLEL
        for i in range(NUM_IN_PARALLEL):
            if i + offset < len(population):
                sims[i] = PYROSIM(playBlind=True, evalTime=1000)
                indv_to_send = population[i + offset]['genome']
                indv_to_send.Send_To_Simulator(sims[i], eval_time=1000)
                sims[i].Start()

        for i in range(NUM_IN_PARALLEL):
            if i + offset < len(population):
                sims[i].Wait_To_Finish()
                ID = population[i + offset]['ID']
                sensor_data[i + offset] = sims[i].Get_Results()

    return sensor_data
示例#11
0
    def Send_Sub_Population_To_Simulator(self, start_index, environment=0):
        sensor_data = {}
        ID = 0
        for offset in range(start_index, len(self.population),
                            NUM_IN_PARALLEL):

            sims = [0] * NUM_IN_PARALLEL
            for i in range(NUM_IN_PARALLEL):
                if i + offset < len(self.population):
                    sims[i] = PYROSIM(playBlind=True, evalTime=self.eval_time)
                    indv_to_send = self.population[i + offset]['genome']
                    offsets = indv_to_send.Send_To_Simulator(
                        sims[i], eval_time=self.eval_time)
                    self.environments[environment].Send_To_Simulator(
                        sims[i], ID_offset=offsets[0])
                    sims[i].Start()

            for i in range(NUM_IN_PARALLEL):
                if i + offset < len(self.population):
                    sims[i].Wait_To_Finish()
                    ID = self.population[i + offset]['ID']
                    sensor_data[i + offset] = sims[i].Get_Results()

        return sensor_data
    def Evaluate(self, hideSim=True, startPaused=False):

        sim = PYROSIM(playPaused=startPaused,
                      playBlind=hideSim,
                      evalTime=c.evaluationTime)
        robot = ROBOT(sim, self.genome)
        sim.Start()

        sim.Wait_To_Finish()

        x = sim.Get_Sensor_Data(sensorID=4, s=0)
        y = sim.Get_Sensor_Data(sensorID=4, s=1)
        z = sim.Get_Sensor_Data(sensorID=4, s=2)

        # self.sensorData_0 = sim.Get_Sensor_Data(sensorID=0)
        # self.sensorData_1 = sim.Get_Sensor_Data(sensorID=1)
        # self.sensorData_2 = sim.Get_Sensor_Data(sensorID=2)
        # self.sensorData_3 = sim.Get_Sensor_Data(sensorID=3)
        # self.sensorData_4 = sim.Get_Sensor_Data(sensorID=4)

        # print(sim.Get_Sensor_Data(sensorID=4))

        self.fitness = y[-1]
        del sim
示例#13
0
from pyrosim import PYROSIM

sim = PYROSIM(playPaused = True , evalTime = 1000)

x = 0

y = 0

z = 0.1

for i in range(0,10):

	sim.Send_Cylinder(x=x, y=y, z=z, r1=0, r2=1, r3=0, length=1.0, radius=0.1)

	z = z + 2.0 * 0.1

sim.Start()
示例#14
0
from pyrosim import PYROSIM

ARM_LENGTH = 0.5

ARM_RADIUS = ARM_LENGTH / 10.0

sim = PYROSIM(playPaused=True, evalTime=1000)

sim.Send_Cylinder(ID=0,
                  x=0,
                  y=0,
                  z=ARM_LENGTH / 2.0 + ARM_RADIUS,
                  r1=0,
                  r2=0,
                  r3=1,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Cylinder(ID=1,
                  x=0,
                  y=ARM_LENGTH / 2.0,
                  z=ARM_LENGTH + ARM_RADIUS,
                  r1=0,
                  r2=1,
                  r3=0,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Joint(ID=0,
               firstObjectID=0,
               secondObjectID=1,
import matplotlib.pyplot as plt
from pyrosim import PYROSIM
from robot import ROBOT
import random

for i in range(0, 3):
    ########################################################################################################################
    # Pyrosim setup
    ########################################################################################################################
    sim = PYROSIM(playPaused=False, evalTime=300)
    robot = ROBOT(sim, random.random() * 2 - 1)

    sim.Start()
    sim.Wait_To_Finish()

    sensorData_0 = sim.Get_Sensor_Data(sensorID=0)
    sensorData_1 = sim.Get_Sensor_Data(sensorID=1)
    sensorData_2 = sim.Get_Sensor_Data(sensorID=2)
    sensorData_3 = sim.Get_Sensor_Data(sensorID=3)
    sensorData_4 = sim.Get_Sensor_Data(sensorID=4)
    sensorData_5 = sim.Get_Sensor_Data(sensorID=5)

    # x = sim.Get_Sensor_Data(sensorID=5, s=0)
    # y = sim.Get_Sensor_Data(sensorID=5, s=1)
    # z = sim.Get_Sensor_Data(sensorID=5, s=2)
    #
    # print (x[-1])
    # print(y[-1])
    # print(z[-1])

########################################################################################################################
示例#16
0
from pyrosim import PYROSIM

sim = PYROSIM()

sim.Send_Cylinder()

sim.Start()
from pyrosim import PYROSIM
import math

ARM_LENGTH = 0.5

ARM_RADIUS = ARM_LENGTH / 10.0

sim = PYROSIM(playPaused=True, evalTime=1000, debug=False)

sim.Send_Cylinder(objectID=0,
                  x=0,
                  y=0,
                  z=ARM_LENGTH / 2.0 + 2 * ARM_RADIUS,
                  r1=0,
                  r2=0,
                  r3=1,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Cylinder(objectID=1,
                  x=0,
                  y=ARM_LENGTH / 2.0,
                  z=ARM_LENGTH + 2 * ARM_RADIUS,
                  r1=0,
                  r2=1,
                  r3=0,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Joint(jointID=0,
               firstObjectID=0,
示例#18
0
        #Sensor on feet
        sim.Send_Touch_Sensor(ID=sensorID, objectIndex=calfID)
        sensorID += 1

    #Send a position sensor attached to the body
    sim.Send_Position_Sensor(ID=sensorID, objectIndex=bodyID)
    print sensorID
    sensorID += 1

    return objID, jointID, sensorID


if __name__ == '__main__':
    T = 1000
    sim = PYROSIM(playPaused=False, playBlind=False, evalTime=T)
    objID = 0
    jointID = 0
    sensorID = 0
    neuronID = 0
    pos_sensor_list = []
    N = 4
    for i in range(
            N):  #Create N potatoes, each with a different random network
        color = np.random.rand(3)
        objID, jointID, sensorID, neuronID = Send_Quadruped_Body_And_Brain(
            sim,
            x=i * 1.5 - N / 2.,
            objID=objID,
            jointID=jointID,
            sensorID=sensorID,
from population import POPULATION
from pyrosim import PYROSIM
from robot import ROBOT
from minimalRobot import MINIMAL_ROBOT
from individual import INDIVIDUAL
import constants as c
from core01_HillClimber import *
from environments import ENVIRONMENTS

import matplotlib.pyplot as plt
import copy as cp
import sys
import pickle
import random
import os.path
import time

genome = [
    MatrixCreate(c.numHidNeurons, 5),
    MatrixCreate(c.numHidNeurons, 8),
    MatrixCreate(c.numHidNeurons, c.numHidNeurons)
]
genome[0] = MatrixRandomize(genome[0], 0, 0)
genome[1] = MatrixRandomize(genome[1], 0, 0)
genome[2] = MatrixRandomize(genome[2], 0, 0)

# Plain Robot without motor Neurons
sim = PYROSIM(playPaused=True, playBlind=False, evalTime=1000000)
robot = ROBOT(sim, genome)
sim.Start()
示例#20
0
from pyrosim import PYROSIM
from robot import ROBOT
import matplotlib.pyplot as plt
import random

for i in range(0, 10):
	sim = PYROSIM(playPaused=False, evalTime = 200)
	robot = ROBOT(sim, random.random() *2 - 1)
	sim.Start()
	sim.Wait_To_Finish()

# sensorData = sim.Get_Sensor_Data(sensorID=2)
# print sensorData

# f = plt.figure()
# pn = f.add_subplot(111)
# plt.plot(sensorData)
# pn.set_ylim(-10,+11)
# plt.show()
示例#21
0
from pyrosim import PYROSIM

WHEEL_RADIUS = 0.1

sim = PYROSIM(playPaused=False, evalTime=1000)

sim.Send_Cylinder(objectID=0,
                  x=-2 * WHEEL_RADIUS,
                  y=-2 * WHEEL_RADIUS,
                  z=WHEEL_RADIUS,
                  length=0,
                  radius=WHEEL_RADIUS)

sim.Send_Box(objectID=1,
             x=0,
             y=0,
             z=WHEEL_RADIUS,
             length=4 * WHEEL_RADIUS,
             width=4 * WHEEL_RADIUS,
             height=WHEEL_RADIUS)

sim.Send_Joint(jointID=0,
               firstObjectID=0,
               secondObjectID=1,
               x=-2 * WHEEL_RADIUS,
               y=-2 * WHEEL_RADIUS,
               z=WHEEL_RADIUS,
               n1=1,
               n2=0,
               n3=0,
               lo=-3.14159 / 4.0,
示例#22
0
from pyrosim import PYROSIM

ARM_LENGTH = 0.5

ARM_RADIUS = ARM_LENGTH / 10.0

sim = PYROSIM(playPaused=False, evalTime=1000)

sim.Send_Cylinder(objectID=0,
                  x=0,
                  y=0,
                  z=ARM_LENGTH / 2.0 + ARM_RADIUS,
                  r1=0,
                  r2=0,
                  r3=1,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Cylinder(objectID=1,
                  x=0,
                  y=ARM_LENGTH / 2.0,
                  z=ARM_LENGTH + ARM_RADIUS,
                  r1=0,
                  r2=1,
                  r3=0,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Start()

# sim.Collect_Sensor_Data()
示例#23
0
from pyrosim import PYROSIM

sim = PYROSIM(evalTime=10000)

sim.Start()
示例#24
0
文件: synapses.py 项目: rdpli/evodevo
from pyrosim import PYROSIM

import matplotlib.pyplot as plt

sim = PYROSIM(playPaused=True, evalTime=2000)

sim.Send_Cylinder(objectID=0, x=0, y=0, z=0.6, length=1, radius=0.1)

sim.Send_Cylinder(objectID=1,
                  x=0,
                  y=0.5,
                  z=1.1,
                  r=1,
                  g=0,
                  b=0,
                  r1=0,
                  r2=1,
                  r3=0)

sim.Send_Joint(jointID=0,
               firstObjectID=0,
               secondObjectID=1,
               x=0,
               y=0,
               z=1.1,
               n1=-1,
               n2=0,
               n3=0,
               lo=-3.14159 / 2,
               hi=3.14159 / 2)
from pyrosim import PYROSIM
import constants

pi = constants.pi

sim = PYROSIM(playPaused=True, evalTime=10000)

sim.Send_Cylinder(objectID=0, x=0, y=0, z=0.6, length=1.0, radius=0.1)
sim.Send_Cylinder(objectID=1,
                  x=0,
                  y=0.5,
                  z=1.1,
                  length=1.0,
                  radius=0.1,
                  r=1,
                  g=0,
                  b=0,
                  r1=0,
                  r2=1,
                  r3=0)
sim.Send_Joint(jointID=0,
               firstObjectID=0,
               secondObjectID=1,
               x=0,
               y=0,
               z=1.1,
               n1=1,
               n2=0,
               n3=0,
               lo=-pi / 2,
               hi=pi / 2)
示例#26
0
from pyrosim import PYROSIM

ARM_LENGTH = 0.5

ARM_RADIUS = ARM_LENGTH / 10.0

sim = PYROSIM(playPaused=True, evalTime=1000)

sim.Send_Cylinder(ID=0,
                  x=0,
                  y=0,
                  z=ARM_LENGTH / 2.0 + ARM_RADIUS,
                  r1=0,
                  r2=0,
                  r3=1,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Cylinder(ID=1,
                  x=0,
                  y=ARM_LENGTH / 2.0,
                  z=ARM_LENGTH + ARM_RADIUS,
                  r1=0,
                  r2=1,
                  r3=0,
                  length=ARM_LENGTH,
                  radius=ARM_RADIUS)

sim.Send_Joint(ID=0,
               firstObjectID=0,
               secondObjectID=1,
示例#27
0
from pyrosim import PYROSIM

sim = PYROSIM(playPaused=True, evalTime=1000)

sim.Send_Cylinder(x=0, y=0, z=0.5, r1=0, r2=1, r3=0)

sim.Start()
示例#28
0
from pyrosim import PYROSIM
sim = PYROSIM(playPaused=True, evalTime=1000)
sim.Send_Cylinder(objectID=0, x=0, y=0, z=0.6, length=1.0, radius=0.1)
sim.Send_Cylinder(objectID=1,
                  x=0,
                  y=0.5,
                  z=1.1,
                  r=1,
                  g=0,
                  b=0,
                  r1=0,
                  r2=1,
                  r3=0)
# sim.Send_Cylinder( length=1.0 , radius=0.1 )
sim.Start()
示例#29
0
from pyrosim import PYROSIM
import matplotlib.pyplot as plt

sim = PYROSIM(playPaused=True , evalTime=100)
sim.Send_Cylinder( objectID=0, x=0 , y=0 , z=.6 , length=1.0 , radius=0.1 )
sim.Send_Cylinder( objectID=1 , x=0 , y=.5 , z=1.1 , r1=0 , r2=1, r3=0 , length=1.0 , radius=0.1 , r=1, g=0, b=0)

sim.Send_Joint( jointID = 0 , firstObjectID = 0 , secondObjectID = 1, x=0 , y=0 , z=1.1, n1 = -1 , n2 = 0 , n3 = 0, lo=-3.14159/2 , hi=3.14159/2 )

sim.Send_Touch_Sensor( sensorID = 0 , objectID = 0 )
sim.Send_Touch_Sensor( sensorID = 1 , objectID = 1 )

sim.Start()
sim.Wait_To_Finish()
sensorData = sim.Get_Sensor_Data(sensorID = 1)
print sensorData

#f = plt.figure()
#pn = f.add_subplot(111)
#plt.plot(sensorData)
#plt.show()
示例#30
0
from geodude import GEODUDE
from pyrosim import PYROSIM
import constants as c






sim = PYROSIM( playPaused=True, playBlind=False, evalTime=10000)
geodude1 = GEODUDE(sim)
sim.Start()
sim.Wait_To_Finish()

# touch = sim.Get_Sensor_Data(sensorID=0)
# print(touch)