Skip to content

Commit 5b3e794

Browse files
committed
Cleaned Sensors.
Now faster
1 parent 949bb15 commit 5b3e794

File tree

8 files changed

+75
-185
lines changed

8 files changed

+75
-185
lines changed

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name='simple_playgrounds',
9-
version='0.9.21',
9+
version='0.9.22',
1010
description='Simulator for Embedded Learning',
1111
author='Michael Garcia Ortiz',
1212
author_email='[email protected]',

simple_playgrounds/entities/agents/sensors/visual_sensors/collection/vision_sensor.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, anchor, invisible_elements=None, normalize=True, **kwargs):
3636

3737
self.cropped_img = np.zeros((2 * self.range + 1, 2 * self.range + 1, 3))
3838

39-
self.n_precomputed_angles = 5000
39+
self.n_precomputed_angles = int(self.range * 2*math.pi)
4040
self.lines = np.ones((self.n_precomputed_angles, 2, 2*self.range), dtype=int) * self._center[0]
4141

4242
for n in range(self.n_precomputed_angles):
@@ -72,7 +72,7 @@ def _compute_pixels(self, sensor_angle):
7272
def compute_raw_sensor(self, img):
7373

7474
angles = [ (self.anchor.pm_body.angle + sensor_angle)%(2*math.pi) for sensor_angle in self.angles ]
75-
number_angles = [int( angle * self.n_precomputed_angles/(2*math.pi)) for angle in angles ]
75+
number_angles = [int( angle * (self.n_precomputed_angles-1)/(2*math.pi)) for angle in angles ]
7676

7777
lines_coord = self.lines[number_angles]
7878
pixels = img[lines_coord[:,0], lines_coord[:,1]]

simple_playgrounds/entities/agents/sensors/visual_sensors/visual_sensor.py

+2
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ def __init__(self, anchor, invisible_elements=None, normalize=False, **kwargs):
6060

6161
self._center = (self.range, self.range)
6262

63+
64+
6365
@staticmethod
6466
def parse_configuration(key):
6567
""" Parse configurations of different visual sensors. """

simple_playgrounds/game_engine.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ def update_surface_environment(self):
265265
element.draw(self.surface_background)
266266

267267
# self.surface_environment = self.surface_background.copy()
268-
self.surface_environment.blit(self.surface_background.copy(), (0,0) )
268+
self.surface_environment.blit(self.surface_background, (0,0) )
269269

270270
for entity in self.playground.scene_elements:
271271

@@ -296,7 +296,8 @@ def update_observations(self):
296296

297297
if sensor.sensor_modality is SensorModality.VISUAL:
298298

299-
self.surface_sensors = self.surface_background.copy()
299+
# self.surface_sensors = self.surface_background.copy()
300+
self.surface_sensors.blit(self.surface_background, (0,0))
300301

301302
# take all elems and body parts which are close to sensor
302303
sc_elems = [elem for elem in self.playground.scene_elements
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .test_scene_elements import *
1+
from .test_scene_elements import *

tests/test_sensors.py

+35
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,41 @@ def test_sensors_on_all_test_playgrounds():
5353
pg.remove_agent(agent)
5454
pg.reset()
5555
#
56+
57+
58+
# Test angles visual
59+
def test_angle_visual_sensors():
60+
61+
from simple_playgrounds.playgrounds import SingleRoom
62+
63+
64+
angles = [ a * 2*math.pi/12 for a in range(13)]
65+
66+
for angle in angles:
67+
68+
agent = BaseInteractiveAgent(initial_position=[100,100, angle], controller = Random())
69+
70+
agent.add_sensor(
71+
RgbSensor(name='rgb_1', anchor=agent.base_platform, invisible_elements=agent.parts, resolution=128,
72+
range=300))
73+
74+
pg = SingleRoom((200, 200))
75+
76+
pg.add_agent(agent)
77+
78+
print('Starting testing of angle', angle)
79+
80+
engine = Engine(pg, time_limit=100, replay=False)
81+
engine.run()
82+
83+
assert 0 < agent.position[0] < pg.size[0]
84+
assert 0 < agent.position[1] < pg.size[1]
85+
86+
pg.remove_agent(agent)
87+
pg.reset()
88+
#
89+
90+
5691
# def test_noisy_sensors_on_all_test_playgrounds():
5792
# agent = BaseInteractiveAgent(controller=Random())
5893
#

tutorials/jupyter/01_Intro.ipynb

+5-5
Large diffs are not rendered by default.

tutorials/jupyter/03_SceneElements.ipynb

+26-174
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)