Beispiel #1
0
def main(beamng, scenario_name):
    # Find a scenario in the smallgrid level called 'Case4'
    level = 'smallgrid'
    scenario = Scenario(level, scenario_name)
    # Update the scenario instance with its path
    scenario.find(beamng)

    bng = beamng.open(launch=True)
    bng.hide_hud()
    bng.set_deterministic()  # Set simulator to be deterministic mode

    # Load and start the scenario
    bng.load_scenario(scenario)

    # Gets vehicles placed in the scenario
    vehicle_bng = 'BeamNGVehicle'
    vehicles = create_vehicle(bng.find_objects_class(vehicle_bng))

    # bng.set_steps_per_second(10)
    for vehicle in vehicles:
        bng.connect_vehicle(vehicle)
        assert vehicle.skt

    bng.step(75, wait=True)
    bng.start_scenario()
    for _ in range(64):
        bng.step(30)
        s1 = bng.poll_sensors(vehicles[0])
        s2 = bng.poll_sensors(vehicles[1])
        print(s1)
        print(s2)
        print('------')
Beispiel #2
0
def test_find_scenario(beamng):
    with beamng as bng:
        scenario = Scenario('west_coast_usa', 'derby_asphalt')
        scenario.find(bng)
        assert scenario.get_info_path() is not None
        bng.load_scenario(scenario)
        assert bng.get_scenario_name(
        ) == 'scenarios.west_coast_usa.derby_asphalt.title'
Beispiel #3
0
    def execute_scenario(self, bng):
        scenario = Scenario(self.level, self.scenario)
        # Update the scenario instance with its path
        scenario.find(bng)

        # Configures BeamNG client
        bng.open(launch=True)
        bng.hide_hud()
        bng.set_deterministic()  # Set simulator to be deterministic mode

        # Load and start the scenario
        bng.load_scenario(scenario)

        # Gets vehicles placed in the scenario
        vehicle_bng = 'BeamNGVehicle'
        self.create_vehicle(bng.find_objects_class(vehicle_bng))

        # bng.set_steps_per_second(10)
        for car in self.cars:
            vehicle = car.vehicle
            bng.connect_vehicle(vehicle)
            assert vehicle.skt

        # Wait for 50 steps before start
        waiting_steps = 50
        bng.step(waiting_steps, wait=True)
        bng.start_scenario()  # Start scenario

        accident_log = {}
        for _ in range(self.timeout):
            empty = not bool(accident_log)
            if empty:
                # Collects sensor data every 30 steps
                bng.step(30)
                for car in self.cars:
                    vehicle = car.vehicle
                    sensor = bng.poll_sensors(vehicle)['damage']
                    if (sensor['damage'] != 0):  # Crash detected
                        print("Crash detected!")
                        self.isCrash = True
                        accident_log.update(
                            {vehicle.vid: sensor['part_damage']})
                        car.damage = sensor['part_damage']
            else:
                self.write_log(accident_log)  # Write log file
                waiting_steps = 175
                bng.step(waiting_steps, wait=True)
                print("Within time!")
                break

        # Timeout
        if not self.isCrash:
            print("Timed out!")
        self.close_scenario(bng)
Beispiel #4
0
def test_find_scenario(beamng):
    with beamng as bng:
        scenario = Scenario('west_coast_usa', 'derby_asphalt')
        assert scenario.find(bng) is not None
        bng.load_scenario(scenario)
        assert 'derby' in bng.get_scenario_name().lower()
        try:
            bng.start_scenario()
            assert True
        except socket.timeout:
            assert False