Exemple #1
0
def test_list_sensors():

    playground = SingleRoom(size=(300, 200))

    agent_1 = BaseAgent(
        controller=External(),
        interactive=False,
        rotate=False,
        lateral=False
    )

    sensor_1 = RgbCamera(anchor=agent_1.base_platform, invisible_elements=agent_1.parts, range=400)
    sensor_2 = Lidar(anchor=agent_1.base_platform, invisible_elements=agent_1.parts, range=400)
    sensor_3 = SemanticRay(anchor=agent_1.base_platform, invisible_elements=agent_1.parts, range=400)

    agent_1.add_sensor(sensor_1)
    agent_1.add_sensor(sensor_2)
    agent_1.add_sensor(sensor_3)

    playground.add_agent(agent_1, ((100, 100), 0))

    disabler = SensorDisabler(disabled_sensor_types=[RgbCamera, SemanticRay])
    playground.add_element(disabler, ((100, 100), 0))

    engine = Engine(playground)
    engine.step()
    engine.update_observations()

    for sensor in [sensor_1, sensor_2, sensor_3]:

        if isinstance(sensor, RgbCamera):
            assert sensor._disabled
            assert np.all(sensor.sensor_values == sensor._get_null_sensor())

        elif isinstance(sensor, SemanticRay):
            assert sensor._disabled
            assert sensor.sensor_values == sensor._get_null_sensor()

        else:

            assert not sensor._disabled

            if isinstance(sensor.sensor_values, np.ndarray):
                assert not np.all(sensor.sensor_values == sensor._get_null_sensor())

            else:
                assert not sensor.sensor_values == sensor._get_null_sensor()
Exemple #2
0
def test_normalize_position_sensor():

    agent = BaseAgent(controller=External(), rotate=True)

    pos = Position(anchor=agent.base_platform, normalize=False)
    pos_norm = Position(anchor=agent.base_platform, normalize=True)
    agent.add_sensor(pos)
    agent.add_sensor(pos_norm)

    playground = SingleRoom((400, 400))
    playground.add_agent(agent, initial_coordinates=((100, 200), math.pi))

    engine = Engine(playground, time_limit=1000)
    engine.update_observations()

    assert np.all(pos.sensor_values == np.asarray((100, 200, math.pi)))
    assert np.all(pos_norm.sensor_values == np.asarray((0.25, 0.5, 0.5)))
Exemple #3
0
def test_multisteps(base_forward_agent_random, pg_test_class):

    agent = base_forward_agent_random
    sensor = Touch(name='touch_1', anchor=agent.base_platform)
    agent.add_sensor(sensor)

    playground = pg_test_class()
    print('Starting Multistep testing of ', pg_test_class.__name__)
    playground.add_agent(agent)

    engine = Engine(playground, time_limit=10000)

    while engine.game_on:

        actions = {}
        for agent in engine.agents:
            actions[agent] = agent.controller.generate_actions()

        engine.multiple_steps(actions=actions, n_steps=3)
        engine.update_observations()

    engine.terminate()
    playground.remove_agent(agent)
def test_grasping_sensor():

    playground = SingleRoom(size=(200, 200))

    agent_1 = BaseAgent(
        controller=External(),
        interactive=True,
        rotate=True,
        lateral=False,
        radius=10,
    )

    rgb = RgbCamera(anchor=agent_1.base_platform)
    agent_1.add_sensor(rgb)

    playground.add_agent(agent_1, ((100, 100), 0))

    elem = Physical(config_key='circle', mass=5, radius=10, graspable=True)
    initial_position_elem = ((100 + agent_1.base_platform.radius + elem.radius + 2, 100), 0)
    playground.add_element(elem, initial_position_elem)

    engine = Engine(playground)
    engine.step()
    engine.update_observations()
    obs_1 = rgb.sensor_values[:]

    actions = {agent_1: {agent_1.grasp: 1}}
    engine.step(actions)
    engine.update_observations()
    obs_2 = rgb.sensor_values[:]

    engine.update_observations(grasped_invisible=True)
    obs_3 = rgb.sensor_values[:]

    assert (obs_1 == obs_2).all()
    assert (obs_3 != obs_1).any()

    playground.remove_add_within(elems_remove=[elem], elems_add=[])
    engine.step()
    engine.update_observations()
    obs_4 = rgb.sensor_values[:]

    assert (obs_4 == obs_3).all()
Exemple #5
0
def run_drones(pg_width, n_agents):

    n_elem_per_dim = int(pg_width / 100)
    size_elem = 20

    fps = 0

    for run in range(N_RUNS):

        pg = BasicUnmovable(size=(pg_width, pg_width), size_elements=size_elem, n_elements_per_dim=n_elem_per_dim)

        for agent in range(n_agents):

            my_agent = BaseAgent(controller=RandomContinuous(), lateral=False, rotate=True, interactive=False)

            sem_cones = SemanticCones(anchor=my_agent.base_platform,
                                  normalize=False,
                                  n_cones=36,
                                  rays_per_cone=4,
                                  max_range=200,
                                  fov=360)

            my_agent.add_sensor(sem_cones)

            lidar = Lidar(anchor= my_agent.base_platform,
                          normalize=False,
                          resolution=60,
                          max_range=300,
                          fov=180,
                          )

            my_agent.add_sensor(lidar)

            touch = Touch(anchor= my_agent.base_platform,
                          normalize=True,
                          fov=360,
                          max_range=5,
                          resolution=36)

            my_agent.add_sensor(touch)

            pos = Position(anchor=my_agent.base_platform)

            my_agent.add_sensor(pos)

            pg.add_agent(my_agent)

        engine_ = Engine(playground=pg, time_limit=RUN_DURATION)

        t_start = time.time()
        while engine_.game_on:

            actions = {}
            for agent in pg.agents:
                actions[agent] = agent.controller.generate_actions()

            engine_.step(actions=actions)
            engine_.update_observations()

        t_end = time.time()

        fps += (RUN_DURATION/ (t_end - t_start)) / N_RUNS

    return fps