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
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
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
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:
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