Skip to content

Commit

Permalink
Fixed CARLA lags due to too many vehicle light updates
Browse files Browse the repository at this point in the history
Change-Id: Ie68952d0cd76543fe392b3197babf1de54bd5a26
  • Loading branch information
fabianoboril authored Aug 26, 2021
1 parent 8cd7035 commit 9861385
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 deletions.
17 changes: 12 additions & 5 deletions srunner/scenariomanager/actorcontrols/npc_vehicle_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ def __init__(self, actor, args=None):
if self._waypoints:
self._update_plan()

self._brake_lights_active = False

def _update_plan(self):
"""
Update the plan (waypoint list) of the LocalPlanner
Expand Down Expand Up @@ -123,10 +125,15 @@ def run_step(self):
vy = math.sin(yaw) * target_speed
self._actor.set_target_velocity(carla.Vector3D(vx, vy, 0))

light_state = self._actor.get_light_state()
if current_speed >= target_speed:
# Change Brake light state
if (current_speed > target_speed or target_speed < 0.2) and not self._brake_lights_active:
light_state = self._actor.get_light_state()
light_state |= carla.VehicleLightState.Brake
else:
light_state &= ~carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
self._brake_lights_active = True

self._actor.set_light_state(carla.VehicleLightState(light_state))
if self._brake_lights_active and current_speed < target_speed:
self._brake_lights_active = False
light_state = self._actor.get_light_state()
light_state &= ~carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
18 changes: 12 additions & 6 deletions srunner/scenariomanager/actorcontrols/simple_vehicle_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ def __init__(self, actor, args=None):

self._visualizer = None

self._brake_lights_active = False

if args and 'consider_obstacles' in args and strtobool(args['consider_obstacles']):
self._consider_obstacles = strtobool(args['consider_obstacles'])
bp = CarlaDataProvider.get_world().get_blueprint_library().find('sensor.other.obstacle')
Expand Down Expand Up @@ -283,16 +285,20 @@ def _set_new_velocity(self, next_location):
target_speed = 0

if target_speed < current_speed:
light_state = self._actor.get_light_state()
light_state |= carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
if not self._brake_lights_active:
self._brake_lights_active = True
light_state = self._actor.get_light_state()
light_state |= carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
if self._max_deceleration is not None:
target_speed = max(target_speed, current_speed - (current_time -
self._last_update) * self._max_deceleration)
else:
light_state = self._actor.get_light_state()
light_state &= ~carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
if self._brake_lights_active:
self._brake_lights_active = False
light_state = self._actor.get_light_state()
light_state &= ~carla.VehicleLightState.Brake
self._actor.set_light_state(carla.VehicleLightState(light_state))
if self._max_acceleration is not None:
tmp_speed = min(target_speed, current_speed + (current_time -
self._last_update) * self._max_acceleration)
Expand Down

0 comments on commit 9861385

Please sign in to comment.