Mercurial Hosting > traffic-intelligence
comparison scripts/safety-analysis.py @ 559:806df5f61c03
adapted safety-analysis script to use multi-threading
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 15 Jul 2014 01:25:33 -0400 |
parents | a80ef6931fd8 |
children | 6d89520e269f |
comparison
equal
deleted
inserted
replaced
558:a80ef6931fd8 | 559:806df5f61c03 |
---|---|
12 | 12 |
13 parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') | 13 parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') |
14 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) | 14 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) |
15 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (vector computation), constant velocity, normal adaptation, point set prediction)', choices = ['cvd', 'cv', 'na', 'ps']) | 15 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (vector computation), constant velocity, normal adaptation, point set prediction)', choices = ['cvd', 'cv', 'na', 'ps']) |
16 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') | 16 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') |
17 parser.add_argument('-n', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int) | 17 parser.add_argument('-n', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1) |
18 args = parser.parse_args() | 18 args = parser.parse_args() |
19 | 19 |
20 params = storage.ProcessParameters(args.configFilename) | 20 params = storage.ProcessParameters(args.configFilename) |
21 | 21 |
22 # parameters for prediction methods | 22 # parameters for prediction methods |
23 if args.predictionMethod: | 23 if args.predictionMethod: |
24 predictionMethod = args.predictionMethod | 24 predictionMethod = args.predictionMethod |
25 else: | 25 else: |
26 predictionMethod = params.predictionMethod | 26 predictionMethod = params.predictionMethod |
27 | 27 |
28 accelerationDistribution = lambda: random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.) | 28 def accelerationDistribution(): |
29 steeringDistribution = lambda: random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.) | 29 return random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.) |
30 def steeringDistribution(): | |
31 return random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.) | |
30 | 32 |
31 if predictionMethod == 'cvd': # TODO add cve: constant velocity exact (Sohail's) | 33 if predictionMethod == 'cvd': # TODO add cve: constant velocity exact (Sohail's) |
32 predictionParameters = prediction.CVDirectPredictionParameters() | 34 predictionParameters = prediction.CVDirectPredictionParameters() |
33 elif predictionMethod == 'cv': | 35 elif predictionMethod == 'cv': |
34 predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) | 36 predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) |
56 obj.setFeatures(features) | 58 obj.setFeatures(features) |
57 | 59 |
58 interactions = events.createInteractions(objects) | 60 interactions = events.createInteractions(objects) |
59 for inter in interactions: | 61 for inter in interactions: |
60 inter.computeIndicators() | 62 inter.computeIndicators() |
61 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, params.nProcesses) | 63 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, nProcesses = args.nProcesses) |
62 | 64 |
63 storage.saveIndicators(params.databaseFilename, interactions) | 65 storage.saveIndicators(params.databaseFilename, interactions) |
64 | 66 |
65 if args.displayCollisionPoints: | 67 if args.displayCollisionPoints: |
66 plt.figure() | 68 plt.figure() |