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()