Small fixes to manual_control.py

This commit is contained in:
nsubiron 2018-11-15 18:05:44 +01:00
parent 3072fcb2be
commit 4c9aec0764
1 changed files with 31 additions and 27 deletions

View File

@ -268,8 +268,10 @@ class HUD(object):
def __init__(self, width, height): def __init__(self, width, height):
self.dim = (width, height) self.dim = (width, height)
font = pygame.font.Font(pygame.font.get_default_font(), 20) font = pygame.font.Font(pygame.font.get_default_font(), 20)
mono = next(x for x in pygame.font.get_fonts() if 'mono' in x) # hope for the best... fonts = [x for x in pygame.font.get_fonts() if 'mono' in x]
mono = pygame.font.match_font(mono, bold=True) default_font = 'ubuntumono'
mono = default_font if default_font in fonts else fonts[0]
mono = pygame.font.match_font(mono)
self._font_mono = pygame.font.Font(mono, 14) self._font_mono = pygame.font.Font(mono, 14)
self._notifications = FadingText(font, (width, 40), (0, height - 40)) self._notifications = FadingText(font, (width, 40), (0, height - 40))
self.help = HelpText(pygame.font.Font(mono, 24), width, height) self.help = HelpText(pygame.font.Font(mono, 24), width, height)
@ -300,31 +302,33 @@ class HUD(object):
collision = [colhist[x + self.frame_number - 200] for x in range(0, 200)] collision = [colhist[x + self.frame_number - 200] for x in range(0, 200)]
max_col = max(1.0, max(collision)) max_col = max(1.0, max(collision))
collision = [x / max_col for x in collision] collision = [x / max_col for x in collision]
self._info_text = [
'server: % 16d FPS' % self.server_fps,
'client: % 16d FPS' % clock.get_fps(),
'',
'vehicle: % 20s' % get_actor_display_name(world.vehicle, truncate=20),
'map: % 20s' % world.world.map_name,
'simulation time: % 12s' % datetime.timedelta(seconds=int(self.simulation_time)),
'',
'speed: % 15.0f km/h' % (3.6 * math.sqrt(v.x**2 + v.y**2 + v.z**2)),
u'heading:% 16.0f\N{DEGREE SIGN} % 2s' % (t.rotation.yaw, heading),
'location:% 20s' % ('(% 5.1f, % 5.1f)' % (t.location.x, t.location.y)),
'height: % 18.0f m' % t.location.z,
'',
('throttle:', c.throttle, 0.0, 1.0),
('steer:', c.steer, -1.0, 1.0),
('brake:', c.brake, 0.0, 1.0),
('reverse:', c.reverse),
('hand brake:', c.hand_brake),
'',
'collision:',
collision
]
vehicles = world.world.get_actors().filter('vehicle.*') vehicles = world.world.get_actors().filter('vehicle.*')
self._info_text = [
'Server: % 16d FPS' % self.server_fps,
'Client: % 16d FPS' % clock.get_fps(),
'',
'Vehicle: % 20s' % get_actor_display_name(world.vehicle, truncate=20),
'Map: % 20s' % world.world.map_name,
'Simulation time: % 12s' % datetime.timedelta(seconds=int(self.simulation_time)),
'',
'Speed: % 15.0f km/h' % (3.6 * math.sqrt(v.x**2 + v.y**2 + v.z**2)),
u'Heading:% 16.0f\N{DEGREE SIGN} % 2s' % (t.rotation.yaw, heading),
'Location:% 20s' % ('(% 5.1f, % 5.1f)' % (t.location.x, t.location.y)),
'Height: % 18.0f m' % t.location.z,
'',
('Throttle:', c.throttle, 0.0, 1.0),
('Steer:', c.steer, -1.0, 1.0),
('Brake:', c.brake, 0.0, 1.0),
('Reverse:', c.reverse),
('Hand brake:', c.hand_brake),
'',
'Collision:',
collision,
'',
'Number of vehicles: % 8d' % len(vehicles)
]
if len(vehicles) > 1: if len(vehicles) > 1:
self._info_text += ['', 'nearby vehicles:'] self._info_text += ['Nearby vehicles:']
distance = lambda l: math.sqrt((l.x - t.location.x)**2 + (l.y - t.location.y)**2 + (l.z - t.location.z)**2) distance = lambda l: math.sqrt((l.x - t.location.x)**2 + (l.y - t.location.y)**2 + (l.z - t.location.z)**2)
vehicles = [(distance(x.get_location()), x) for x in vehicles if x.id != world.vehicle.id] vehicles = [(distance(x.get_location()), x) for x in vehicles if x.id != world.vehicle.id]
for d, vehicle in sorted(vehicles): for d, vehicle in sorted(vehicles):
@ -474,7 +478,7 @@ class CollisionSensor(object):
impulse = event.normal_impulse impulse = event.normal_impulse
intensity = math.sqrt(impulse.x**2 + impulse.y**2 + impulse.z**2) intensity = math.sqrt(impulse.x**2 + impulse.y**2 + impulse.z**2)
self._history.append((event.frame_number, intensity)) self._history.append((event.frame_number, intensity))
if len(self._history) > 2000: if len(self._history) > 4000:
self._history.pop(0) self._history.pop(0)
@ -502,7 +506,7 @@ class LaneInvasionSensor(object):
if not self: if not self:
return return
text = ['%r' % str(x).split()[-1] for x in set(event.crossed_lane_markings)] text = ['%r' % str(x).split()[-1] for x in set(event.crossed_lane_markings)]
self._hud.notification('Crossed lane %s' % ' and '.join(text)) self._hud.notification('Crossed line %s' % ' and '.join(text))
# ============================================================================== # ==============================================================================