Exemplo n.º 1
0
    def __init__(self,
                 population_size,
                 sim_population,
                 sensor_radius=1,
                 n_threads=1):
        """Initializes a simulation

        :population_size: The allowable population size per generation
        :sim_population: The allowable population size per grid simulation
        :n_threads: The number of threads to utilize

        """

        # Type checking
        if type(n_threads) is not int:
            raise TypeError('Thread count must be a positive integer')
        elif n_threads < 1:
            raise ValueError('Thread count must be above 0')

        self.n_threads = n_threads
        self.sensor_radius = sensor_radius

        # Create genetic pool for simulation
        dims = (sensor_radius + 1, sensor_radius + 1)
        self.pool = NEAT_Pool(dims, 3)
        self.population = Population(population_size, sim_population,
                                     self.pool)
        self.renderer = Renderer()
Exemplo n.º 2
0
def draw_avatars_timeline(dates):
    pygame.init()

    renderer = Renderer()
    width = max(len(date[1]) for date in dates)
    height = len(dates)
    gap = 0

    page1 = pygame.Surface(
        (width * (8 * 2 + gap) + gap, height * (8 * 2 + gap) + gap))
    page2 = pygame.Surface(
        (width * (8 * 2 + gap) + gap, height * (8 * 2 + gap) + gap))

    values1 = []
    values2 = []

    maps = []

    for y, row in enumerate(dates):
        for x, entry in enumerate(row[1]):
            i = y * width + x
            pos = (x * (8 * 2 + gap) + gap, y * (8 * 2 + gap) + gap)

            try:
                world = get_world(entry["boid"])
                frame1, frame2 = get_avatar_frames(renderer, world)

                page1.blit(frame1, pos)
                page2.blit(frame2, pos)
            except Exception as e:
                print("Couldn't parse '%s' (%s)" %
                      (entry["title"], entry["boid"]))

    pygame.image.save(page1, "timeline1.png")
    pygame.image.save(page2, "timeline2.png")
Exemplo n.º 3
0
    def __init__(self):
        self.screen = pygame.Surface((256, 256))
        self.dialog = pygame.Surface((208, 38))

        self.room_frame_0 = pygame.Surface((256, 256))
        self.room_frame_1 = pygame.Surface((256, 256))

        self.avatar_frame_0 = pygame.Surface((16, 16))
        self.avatar_frame_1 = pygame.Surface((16, 16))

        self.renderer = Renderer()

        self.avatar_x = 0
        self.avatar_y = 0
        self.avatar_room = None
        self.palette = None

        self.dialogue_lines = []
        self.dialogue_char = 0
        self.dialogue_style = {
            "shk": False,
            "wvy": False,
            "rbw": False,
            "clr": 0
        }

        self.starting = False
        self.ending = False
        self.ended = True
        self.prev_frame = -1
Exemplo n.º 4
0
def draw_average(index):
    pygame.init()
    renderer = Renderer()

    graphic = [pygame.Surface((16, 16)), pygame.Surface((16, 16))]
    sums = [[[0 for x in xrange(8)] for y in xrange(8)],
            [[0 for x in xrange(8)] for y in xrange(8)]]
    avgs = [[[0 for x in xrange(8)] for y in xrange(8)],
            [[0 for x in xrange(8)] for y in xrange(8)]]
    count = 0.0

    for entry in index.itervalues():
        try:
            world = get_world(entry["boid"])

            if len(world["tiles"]) > 0:
                graphic_ = world["sprites"]["A"]["graphic"]

                if len(graphic_) > 1:
                    frame1, frame2 = graphic_[0], graphic_[-1]

                    for y in xrange(8):
                        for x in xrange(8):
                            sums[0][y][x] += 1 if frame1[y][x] else 0
                            sums[1][y][x] += 1 if frame2[y][x] else 0
                    count += 1

        except Exception as e:
            pass

    for y in xrange(8):
        for x in xrange(8):
            avgs[0][y][x] = sums[0][y][x] / count > 0.5
            avgs[1][y][x] = sums[1][y][x] / count > 0.5
    """
    for y in xrange(0, 8):
        for x in xrange(0, 8):
            avg = avgs[0][y][x] * 255
            color = (avg, avg, avg)
            graphic[0].fill(color, (x * 2, y * 2, 2, 2))

            avg = avgs[1][y][x] * 255
            color = (avg, avg, avg)
            graphic[1].fill(color, (x * 2, y * 2, 2, 2))"""

    renderer.render_frame_to_surface(graphic[0], avgs[0], (255, 255, 255),
                                     (0, 0, 0))
    renderer.render_frame_to_surface(graphic[1], avgs[1], (255, 255, 255),
                                     (0, 0, 0))

    pygame.image.save(graphic[0], "average1.png")
    pygame.image.save(graphic[1], "average2.png")
Exemplo n.º 5
0
def draw_avatars(index):
    pygame.init()

    renderer = Renderer()

    width = 35
    height = int(math.ceil(len(index) / float(width)))
    print(width, height)

    gap = 0

    page1 = pygame.Surface(
        (width * (8 * 2 + gap) + gap, height * (8 * 2 + gap) + gap))
    page2 = pygame.Surface(
        (width * (8 * 2 + gap) + gap, height * (8 * 2 + gap) + gap))

    values1 = []
    values2 = []
    urls = []
    titles = []

    for entry in index.itervalues():
        try:
            world = get_world(entry["boid"])

            if len(world["tiles"]) > 0:
                frame1, frame2 = get_avatar_frames(renderer, world)

                values1.append(frame1)
                values2.append(frame2)
                urls.append(entry["url"])
                titles.append(entry["title"])
        except Exception as e:
            print("Couldn't parse '%s' (%s)" % (entry["title"], entry["boid"]))
            #traceback.print_exc()

    maps = []

    for y in xrange(height):
        for x in xrange(width):
            if y * width + x >= len(values1):
                break

            i = y * width + x
            pos = (x * (8 * 2 + gap) + gap, y * (8 * 2 + gap) + gap)

            page1.blit(values1[i], pos)
            page2.blit(values2[i], pos)

            maps.append((pos, urls[i], titles[i]))

    pygame.image.save(page1, "avatars1.png")
    pygame.image.save(page2, "avatars2.png")

    print(len(index), len(values1))

    with open("avatars.html", "w") as html:
        html.write('<html><body><img src="avatars.gif" usemap="#avatars">\n')
        html.write('<map name="avatars">\n')

        for map in maps:
            pos, url, title = map
            x, y = pos

            html.write(
                '<area shape="rect" coords="%s,%s,%s,%s" href="%s" title="%s">\n'
                % (x, y, x + 16, y + 16, url, title))

        html.write("</map>\n")
        html.write("</body></html>\n")
Exemplo n.º 6
0
    def __init__(self, map, agents_info, dynamic_obs_num=0):

        self.window = None  #Window("Test")
        #self.window.show(block=False)

        #load map info
        self.map = map
        self.obstacles = map["map"]["obstacles"]

        #load agents info. Pose, goal and name are all python list format with length agents_num.
        self.agents_num, self.agents_pose, self.agents_goal, self.agents_name = self.get_agents_info(
            agents_info)

        print("Agents number: ", self.agents_num)
        #Env constant
        self.tilesize = 16
        self.font = cv2.FONT_HERSHEY_SIMPLEX
        self.visibility = 5
        self.traj_color = np.random.randint(256, size=(self.agents_num, 3))
        #Map the grid index to object type.
        self.idx_to_object = {
            0: "free",
            1: "obstacle",
            2: "agent",
            3: "dynamic obstacle",
            4: "unseen",
            5: "goal",
        }
        self.object_to_idx = dict(
            zip(self.idx_to_object.values(), self.idx_to_object.keys()))

        #initialize canvas   0
        self.row = map["map"]["dimensions"][1]
        self.col = map["map"]["dimensions"][0]
        print("row: ", self.row, " col: ", self.col)
        self.background_img = np.ones(
            shape=(self.row * self.tilesize, self.col * self.tilesize, 3),
            dtype=np.uint8) * 255
        self.renderer = Renderer(self.row, self.col, self.tilesize,
                                 self.traj_color)

        #simulation variable
        self.time = 0
        self.descrip = str(self.time)
        self.traj = []

        self.background_grid = np.zeros(shape=(self.row, self.col), dtype=int)
        self.current_grid = None

        for i in range(self.agents_num):
            self.traj.append([self.agents_pose[i]])

        # Draw the goal and static obstacles on the background image
        self.background_img = self.renderer.draw_background(
            self.background_img, self.agents_goal, self.obstacles)
        self.background_grid = self.update_background_grid(
            self.background_grid)

        #initialize dynamic obstacles
        self.dynamic_obs_num = dynamic_obs_num
        self.dynamic_obs_pose = []
        self.dynamic_obs_future_traj = []
        self.dynamic_obs_manager = RobotManager(self.background_grid,
                                                self.idx_to_object,
                                                self.dynamic_obs_num)
Exemplo n.º 7
0
from rendering import Renderer


def load_graph(graph_filename):
    with tf.gfile.GFile(graph_filename, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    return graph_def


import dlib

det = dlib.get_frontal_face_detector()
pred = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
renderer = Renderer()


def get_landmarks(image):
    detection = det(image, 1)[0]
    face_shape = pred(image, detection)

    l_eye_x = np.mean([face_shape.part(i).x for i in range(42, 48)])
    l_eye_y = np.mean([face_shape.part(i).y for i in range(42, 48)])

    r_eye_x = np.mean([face_shape.part(i).x for i in range(36, 42)])
    r_eye_y = np.mean([face_shape.part(i).y for i in range(36, 42)])

    l_eye = (l_eye_x, l_eye_y)
    r_eye = (r_eye_x, r_eye_y)
Exemplo n.º 8
0
ROOT = os.path.dirname(__file__)

pygame.init()
pygame.mouse.set_visible(False)

gameDisplay = pygame.display.set_mode(SCREEN)
buffer = pygame.Surface((256, 256))

pygame.display.set_caption('bitspy')

clock = pygame.time.Clock()
pygame.time.set_timer(pygame.USEREVENT, 1000)
TIMER = 0

RENDERER = Renderer()

background = pygame.Surface((256, 256))
background.fill(RENDERER.BGR)

bg_inc = 255
bg_src = [(x, y) for x in xrange(16) for y in xrange(16)]
bg_dst = [(x, y) for x in xrange(16) for y in xrange(16)]

BLACKLIST = set()
WHITELIST = set()


def refresh_lists():
    global WHITELIST, BLACKLIST
Exemplo n.º 9
0
    f_count = 1000  # fault count per mesa
    f_height = 1.0  # max fault height
    mat_list = [(0.2, 50.0), (0.3, 100.0), (0.0, 1.0), (0.2, 10.0),
                (0.7, 1000.0)]  # material list
    road_maxdist = 20  # max dist for next road segment        - meters
    road_iterations = 50  # max road placement attemps
    road_width = 10  # road width                            - meters

    ValidateInput(hm_width, hm_height, hm_cellsize, m_origins, m_scale,
                  mp_segments, mp_angularvar, mp_extangularvar, mp_lengthvar,
                  mp_extensionprob, f_radiusvar, f_distance, f_count, f_height,
                  mat_list, road_maxdist, road_iterations, road_width)

    # init
    random.seed(_seed)
    app = Renderer()
    heightmap = hmp.HeightMap(hm_width, hm_height)
    matlist = material.MaterialList(mat_list)
    CFFkernels = CFF.InitKernels(f_radiusvar, f_height)

    masI = []
    for i in range(0, m_origins):
        magent = maI.MesaAgentI(i, hm_width, hm_height, m_scale, mp_segments,
                                mp_angularvar, mp_extangularvar, mp_lengthvar,
                                mp_extensionprob, f_radiusvar, f_distance,
                                f_count, f_height)
        magent.Run(heightmap, CFFkernels)
        masI.append(magent)

    printer.DrawMesaAgentI(masI,
                           heightmap,