예제 #1
0
    def test_invalid_weather(
            self
    ):  # Check that the API/Unity properly handles unexpected inputs
        with SimConnection() as sim:
            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness

            self.assertAlmostEqual(rain, 0)
            self.assertAlmostEqual(fog, 0)
            self.assertAlmostEqual(wetness, 0)

            sim.weather = lgsvl.WeatherState(rain=1.4, fog=-3, wetness="a")

            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness

            self.assertAlmostEqual(rain, 1)
            self.assertAlmostEqual(fog, 0)
            self.assertAlmostEqual(wetness, 0)

            sim.weather = lgsvl.WeatherState(rain=True, fog=0, wetness=0)

            rain = sim.weather.rain
            self.assertAlmostEqual(rain, 0)
예제 #2
0
    def test_reset_weather(
            self):  # Check that reset sets the weather variables back to 0
        with SimConnection() as sim:
            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness
            self.assertAlmostEqual(rain, 0)
            self.assertAlmostEqual(fog, 0)
            self.assertAlmostEqual(wetness, 0)

            sim.weather = lgsvl.WeatherState(rain=0.5, fog=0.3, wetness=0.8)
            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness
            self.assertAlmostEqual(rain, 0.5)
            self.assertAlmostEqual(fog, 0.3)
            self.assertAlmostEqual(wetness, 0.8)

            sim.reset()
            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness
            self.assertAlmostEqual(rain, 0)
            self.assertAlmostEqual(fog, 0)
            self.assertAlmostEqual(wetness, 0)
예제 #3
0
    def test_weather(
            self
    ):  # Check that the weather state can be read properly and changed
        with SimConnection() as sim:
            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness

            self.assertAlmostEqual(rain, 0)
            self.assertAlmostEqual(fog, 0)
            self.assertAlmostEqual(wetness, 0)

            sim.weather = lgsvl.WeatherState(rain=0.5,
                                             fog=0.3,
                                             wetness=0.8,
                                             cloudiness=0,
                                             damage=0)

            rain = sim.weather.rain
            fog = sim.weather.fog
            wetness = sim.weather.wetness

            self.assertAlmostEqual(rain, 0.5)
            self.assertAlmostEqual(fog, 0.3)
            self.assertAlmostEqual(wetness, 0.8)
예제 #4
0
 def step(self, waypoint):
     '''
     move npc to new waypoint, adjust to new weather and time of day
     return reward (1/ttc) & done
     '''
     self.npc.follow([waypoint])
     sim.weather = lgsvl.WeatherState(rain=self.rain_rate,
                                      fog=self.fog_rate,
                                      wetness=self.wetness_rate)
     # sim.set_time_of_day(self.timeofday)
     if self.collided:
         reward = 100
         done = True
     else:
         reward = 1 / self.calculate_ttc()
         done = False
     return reward, done
예제 #5
0
sim = cf.Simulator()

startTime = time.time()
index = 1

while len(scenarios) > 0:
    before = time.time()
    cur = scenarios.pop(0)

    # Load Map
    cf.LoadOrResetScene(sim, "BorregasAve")

    # Weather
    if "Weather" in cur:
        sim.weather = lgsvl.WeatherState(cur["Weather"]["Rain"],
                                         cur["Weather"]["Fog"],
                                         cur["Weather"]["Wetness"])

    # Weather
    if "Time" in cur:
        sim.set_time_of_day(cur["Time"]["TimeOfDay"])

    # TrafficLight
    if "TrafficLight" not in cur:
        cf.All_Green_Light(sim)
    else:
        pass
        # TODO

    # Log duration and index
    print("scenario: ", index)
예제 #6
0
for time in time_of_day:
  for weatherInfo in weather:

    # ego vehicle
    state = copy.deepcopy(lgsvl.AgentState())
    state.transform = copy.deepcopy(spawns[0])
    state.velocity = ego_speed * forward
    ego = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO, state)
    print("ego spawn", state.transform)

    turn()

    #set time of day
    sim.set_time_of_day(time)

    #set weather of day  ## rainy day
    sim.weather = lgsvl.WeatherState(rain=weatherInfo[0], fog=weatherInfo[1], wetness=weatherInfo[2])


    vehicles = {
      ego: "EGO",
    }

    input("Press Enter to run next scenario")
    print("The time is {} ".format(time_of_day))
    print("The weather condition is rain={}, fog={}, wetness={}".format(weatherInfo[0],weatherInfo[1],weatherInfo[2]))
    sim.run(time_limit = 8.0)
    sim.reset()


else:
    sim.load("BorregasAve")

spawns = sim.get_spawn()

state = lgsvl.AgentState()
state.transform = spawns[0]
sim.add_agent(env.str("LGSVL__VEHICLE_0", "Lincoln2017MKZ (Apollo 5.0)"), lgsvl.AgentType.EGO, state)

print(sim.weather)

input("Press Enter to set rain to 80%")

# Each weather variable is a float from 0 to 1
# There is no default value so each varible must be specified
sim.weather = lgsvl.WeatherState(rain=0.8, fog=0, wetness=0, cloudiness=0, damage=0)
print(sim.weather)

sim.run(5)

input("Press Enter to set fog to 50%")

sim.weather = lgsvl.WeatherState(rain=0, fog=0.5, wetness=0, cloudiness=0, damage=0)
print(sim.weather)

sim.run(5)

input("Press Enter to set wetness to 50%")

sim.weather = lgsvl.WeatherState(rain=0, fog=0, wetness=0.5, cloudiness=0, damage=0)
print(sim.weather)
예제 #8
0
sim = cf.Simulator()
cf.LoadOrResetScene(sim, "BorregasAve")

spawns = sim.get_spawn()

state = lgsvl.AgentState()
state.transform = spawns[0]
a = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO, state)

print(sim.weather)

input("Press Enter to set rain to 80%")

# Each weather variable is a float from 0 to 1
# There is no default value so each varible must be specified
sim.weather = lgsvl.WeatherState(rain=0.8, fog=0, wetness=0)
print(sim.weather)

sim.run(5)

input("Press Enter to set fog to 50%")

sim.weather = lgsvl.WeatherState(rain=0, fog=0.5, wetness=0)
print(sim.weather)

sim.run(5)

input("Press Enter to set wetness to 50%")

sim.weather = lgsvl.WeatherState(rain=0, fog=0, wetness=0.5)
print(sim.weather)
예제 #9
0
import os
import lgsvl

sim = lgsvl.Simulator(os.environ.get("SIMULATOR_HOST", "127.0.0.1"), 8181)
if sim.current_scene == "Borregas Avenue":
    sim.reset()
else:
    sim.load("Borregas Avenue")

spawns = sim.get_spawn()
state = lgsvl.AgentState()
state.transform = spawns[0]
state.transform.position.y = state.transform.position.y
state.transform.position.x = state.transform.position.x
state.transform.position.z = state.transform.position.z
forward = lgsvl.utils.transform_to_forward(spawns[0])
state.velocity = 5 * forward
agent = sim.add_agent("Lexus", lgsvl.AgentType.EGO, state)
agent.connect_bridge(os.environ.get("BRIDGE_HOST", "127.0.0.1"), 9090)

sim.weather = lgsvl.WeatherState(rain=0.8, fog=0.6, wetness=0.6)
sim.set_time_of_day(12)
sim.run(time_limit=30.0)
예제 #10
0
print("Bridge connected:", ego.bridge_connected)
# The EGO is now looking for a bridge at the specified IP and port
ego.connect_bridge("127.0.0.1", 9090)
print("Waiting for connection...")
while not ego.bridge_connected:
    time.sleep(1)
print("Bridge connected:", ego.bridge_connected)
print("Initializing simulation")
sim.run(1)
input("Press Enter to run")
sim.run(1)
ttc()
sim.run(1)
ttc()
input("Press Enter to change weather")
sim.weather = lgsvl.WeatherState(rain=0.9, fog=0.3, wetness=0.1)
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
ttc()
sim.run(1)
예제 #11
0
파일: scenarios.py 프로젝트: KunSu/cmpe295
# Scenario
cf = config.Config()
sim = cf.Simulator()
cf.LoadOrResetScene(sim, "BorregasAve")

spawns = sim.get_spawn()
state = lgsvl.AgentState()
state.transform = spawns[0]
a = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO, state)

startTime = time.time()
while len(queue) > 0:
    before = time.time()
    cur = queue.pop(0)

    sim.weather = lgsvl.WeatherState(cur["weather"]["rain"],
                                     cur["weather"]["fog"],
                                     cur["weather"]["wetness"])
    print(sim.weather)

    sim.run(1)

    # Time of day can be set from 0 ... 24
    sim.set_time_of_day(cur["time"]["time_of_day"])
    print("Time of Day:", sim.time_of_day)

    sim.run(1)
    print("Time spent:", time.time() - before)

print("Total time spent:", time.time() - startTime)
예제 #12
0
    static_time = env.bool("LGSVL__TIME_STATIC", True)
    if date_time == "1970-01-01T00:00:00":
        time_of_day = clamp(env.float("LGSVL__TIME_OF_DAY", 12), 0, 24)
        sim.set_time_of_day(time_of_day, static_time)
    else:
        sim.set_date_time(
            datetime.strptime(date_time[:19], '%Y-%m-%dT%H:%M:%S'),
            static_time)

rain = clamp(env.float("LGSVL__ENVIRONMENT_RAIN", 0), 0, 1)
fog = clamp(env.float("LGSVL__ENVIRONMENT_FOG", 0), 0, 1)
wetness = clamp(env.float("LGSVL__ENVIRONMENT_WETNESS", 0), 0, 1)
cloudiness = clamp(env.float("LGSVL__ENVIRONMENT_CLOUDINESS", 0), 0, 1)
damage = clamp(env.float("LGSVL__ENVIRONMENT_DAMAGE", 0), 0, 1)

sim.weather = lgsvl.WeatherState(rain, fog, wetness, cloudiness, damage)

spawns = sim.get_spawn()
spawn_index = random.randrange(len(spawns))

state = lgsvl.AgentState()
state.transform = spawns[
    spawn_index]  # TODO some sort of Env Variable so that user/wise can select from list
ego = sim.add_agent(
    env.str("LGSVL__VEHICLE_0",
            lgsvl.wise.DefaultAssets.ego_lincoln2017mkz_apollo5_full_analysis),
    lgsvl.AgentType.EGO, state)

# The EGO is now looking for a bridge at the specified IP and port
BRIDGE_HOST = env.str("LGSVL__AUTOPILOT_0_HOST", "127.0.0.1")
ego.connect_bridge(BRIDGE_HOST, env.int("LGSVL__AUTOPILOT_0_PORT", 9090))
예제 #13
0
    3: {
        'ego_speed': 5,
        'weather': 1,
        'npc_type': "SUV",
        'npc_speed': 20.0
    }
}

cf = config.Config()
sim = cf.Simulator()
cf.LoadOrResetScene(sim, "BorregasAve")
cf.All_Green_Light(sim)

for i in range(1, 4):

    sim.weather = lgsvl.WeatherState(rain=dict[i]['weather'], fog=0, wetness=0)

    spawns = sim.get_spawn()

    sx = spawns[0].position.x
    sz = spawns[0].position.z
    ry = spawns[0].rotation.y

    # ego vehicle

    state = lgsvl.AgentState()
    state.transform = spawns[0]
    forward = lgsvl.utils.transform_to_forward(spawns[0])
    right = lgsvl.utils.transform_to_right(spawns[0])
    state.velocity = dict[i]['ego_speed'] * forward
    ego = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO,