From 750279003214c7da67a39664b4d7e06dfdf6e71f Mon Sep 17 00:00:00 2001 From: Tarang Shah Date: Fri, 2 Apr 2021 19:02:03 -0400 Subject: [PATCH] Adding ability to configure Traffic Manager for Speed Limit and Traffic Light violations --- src/scenic/simulators/carla/actions.py | 15 ++++++++++++++- src/scenic/simulators/carla/behaviors.scenic | 14 +++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/scenic/simulators/carla/actions.py b/src/scenic/simulators/carla/actions.py index 202a205e3..a977e1a9c 100644 --- a/src/scenic/simulators/carla/actions.py +++ b/src/scenic/simulators/carla/actions.py @@ -96,13 +96,26 @@ def applyTo(self, obj, sim): traffic_light.set_state(self.color) class SetAutopilotAction(VehicleAction): - def __init__(self, enabled): + def __init__(self, enabled, ignore_lights_percentage=0, vehicle_percentage_speed_difference=30): + """Enable or Disable the Autopilot for the current agent. Also allows to set certain TrafficManager + parameters to configure the Autopilot behavior. + The default values of the Traffic Manager parameters are set to their Carla defaults + + Arguments + :param enabled: True if you want to turn on autopilot + :param ignore_lights_percentage: Between 0 and 100. Amount of times traffic lights will be ignored. + :param vehicle_percentage_speed_difference: Percentage difference between intended speed and the current limit. Can be negative to exceed the limit. + """ if not isinstance(enabled, bool): raise RuntimeError('Enabled must be a boolean.') self.enabled = enabled + self.ignore_lights_percentage = ignore_lights_percentage + self.vehicle_percentage_speed_difference = vehicle_percentage_speed_difference def applyTo(self, obj, sim): vehicle = obj.carlaActor + sim.tm.ignore_lights_percentage(vehicle, self.ignore_lights_percentage) + sim.tm.vehicle_percentage_speed_difference(vehicle, self.vehicle_percentage_speed_difference) vehicle.set_autopilot(self.enabled, sim.tm.get_port()) ################################################# diff --git a/src/scenic/simulators/carla/behaviors.scenic b/src/scenic/simulators/carla/behaviors.scenic index 8e68b4988..8c6600147 100644 --- a/src/scenic/simulators/carla/behaviors.scenic +++ b/src/scenic/simulators/carla/behaviors.scenic @@ -8,9 +8,17 @@ try: except ModuleNotFoundError: pass # ignore; error will be caught later if user attempts to run a simulation -behavior AutopilotBehavior(): - """Behavior causing a vehicle to use CARLA's built-in autopilot.""" - take SetAutopilotAction(True) +behavior AutopilotBehavior(ignore_lights_percentage=0, vehicle_percentage_speed_difference=30): + """ + Behavior causing a vehicle to use CARLA's built-in autopilot. + This also, optionally, allows setting some [TrafficManager](https://carla.readthedocs.io/en/latest/python_api/#carlatrafficmanager) parameters. + + Args: + ignore_lights_percentage(float): Between 0 and 100. Amount of times traffic lights will be ignored. + vehicle_percentage_speed_difference(float): Percentage difference between intended speed and the current limit. Can be negative to exceed the limit. + + """ + take SetAutopilotAction(True, ignore_lights_percentage, vehicle_percentage_speed_difference) behavior WalkForwardBehavior(speed=0.5): take SetWalkingDirectionAction(self.heading), SetWalkingSpeedAction(speed)