Пример #1
0
def generateScene():
    startTime = time.time()
    scene, iterations = errors.callBeginningScenicTrace(
        lambda: scenario.generate(verbosity=args.verbosity)
    )
    if args.verbosity >= 1:
        totalTime = time.time() - startTime
        print(f'  Generated scene in {iterations} iterations, {totalTime:.4g} seconds.')
        if args.show_params:
            for param, value in scene.params.items():
                print(f'    Parameter "{param}": {value}')
    return scene, iterations
Пример #2
0
def generateScene(scenario, args):
    startTime = time.time()
    verbosity = 3 if args.verbose else 1
    scene, iterations = errors.callBeginningScenicTrace(
        lambda: scenario.generate(verbosity=verbosity))
    totalTime = time.time() - startTime
    logger.debug(
        f'  Generated scene in {iterations} iterations, {totalTime:.4g} seconds.'
    )
    if args.show_params:
        for param, value in scene.params.items():
            logger.debug(f'    Parameter "{param}": {value}')
    return scene, iterations
Пример #3
0
def runSimulation(scene):
    startTime = time.time()
    if args.verbosity >= 1:
        print(f'  Beginning simulation of {scene.dynamicScenario}...')
    try:
        result = errors.callBeginningScenicTrace(
            lambda: simulator.simulate(scene, maxSteps=args.time, verbosity=args.verbosity,
                                       maxIterations=args.max_sims_per_scene)
        )
    except SimulationCreationError as e:
        if args.verbosity >= 1:
            print(f'  Failed to create simulation: {e}')
        return False
    if args.verbosity >= 1:
        totalTime = time.time() - startTime
        print(f'  Ran simulation in {totalTime:.4g} seconds.')
    return result is not None
Пример #4
0
translator.dumpTranslatedPython = args.dump_initial_python
translator.dumpFinalAST = args.dump_ast
translator.dumpASTPython = args.dump_python
translator.verbosity = args.verbosity
translator.usePruning = not args.no_pruning
if args.seed is not None and args.verbosity >= 1:
    print(f'Using random seed = {args.seed}')
    random.seed(args.seed)

# Load scenario from file
if args.verbosity >= 1:
    print('Beginning scenario construction...')
startTime = time.time()
scenario = errors.callBeginningScenicTrace(
    lambda: translator.scenarioFromFile(args.scenicFile,
                                        params=dict(args.param),
                                        model=args.model,
                                        scenario=args.scenario))
totalTime = time.time() - startTime
if args.verbosity >= 1:
    print(f'Scenario constructed in {totalTime:.2f} seconds.')

if args.simulate:
    simulator = errors.callBeginningScenicTrace(scenario.getSimulator)


def generateScene():
    startTime = time.time()
    scene, iterations = errors.callBeginningScenicTrace(
        lambda: scenario.generate(verbosity=args.verbosity))
    if args.verbosity >= 1:
Пример #5
0
def main():
    args = setup_arg_parser()
    setup_logging(args.verbose)

    delay = args.delay
    errors.showInternalBacktrace = args.full_backtrace
    if args.pdb:
        errors.postMortemDebugging = True
        errors.showInternalBacktrace = True
    translator.dumpTranslatedPython = args.dump_initial_python
    translator.dumpFinalAST = args.dump_ast
    translator.dumpASTPython = args.dump_python
    translator.verbosity = 3 if args.verbose else 1
    translator.usePruning = not args.no_pruning
    if args.seed is not None:
        logger.info(f'Using random seed = {args.seed}')
        random.seed(args.seed)

    with open(args.input, 'r') as f:
        input_objects = yaml.load(f)
    input_dir = os.path.dirname(args.input)
    models_dir = input_objects.get('models_dir', '')

    if not args.load:
        load_module('gzscenic/base.scenic')
        if args.dump:
            with open(args.dump, 'w') as f:
                f.write('from gzscenic.base import *\n\n')
        for obj in input_objects['models']:
            print(generate_model(obj, input_dir, models_dir, args.dump))
    else:
        if args.load.rpartition('.')[-1] not in ['sc', 'scenic']:
            raise Exception('The file to be loaded needs to be .sc or .scenic')
        load_module(args.load)

    # Load scenario from file
    logger.info('Beginning scenario construction...')
    startTime = time.time()
    scenario = errors.callBeginningScenicTrace(
        lambda: translator.scenarioFromFile(args.scenicFile,
                                            params=dict(args.param),
                                            model=args.model,
                                            scenario=args.scenario))
    totalTime = time.time() - startTime
    logger.info(f'Scenario constructed in {totalTime:.2f} seconds.')

    if not args.noplt:
        import matplotlib.pyplot as plt
    success_count = 0
    while not args.scenes_num or success_count < args.scenes_num:
        scene, _ = generateScene(scenario, args)
        if not args.noplt:
            if delay is None:
                scene.show(zoom=args.zoom)
            else:
                scene.show(zoom=args.zoom, block=False)
                plt.pause(delay)
                plt.clf()

        scene_to_sdf(scene, input_dir, input_objects['world'], models_dir,
                     args.outputPath)
        success_count += 1