comparison scripts/safety-analysis.py @ 881:8ba82b371eea

work on storing PET
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 14 Mar 2017 17:48:40 -0400
parents 6d89520e269f
children e2452abba0e7
comparison
equal deleted inserted replaced
880:000555430b28 881:8ba82b371eea
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('-n', dest = 'nObjects', help = 'number of objects to analyse', type = int) 15 parser.add_argument('-n', dest = 'nObjects', help = 'number of objects to analyse', type = int)
16 # TODO analyze only 16 # TODO analyze only
17 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']) 17 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (cvd: vector computation (approximate); cve: equation solving; cv: discrete time (approximate)), normal adaptation, point set prediction)', choices = ['cvd', 'cve', 'cv', 'na', 'ps'])
18 parser.add_argument('--pet', dest = 'computePET', help = 'computes PET', action = 'store_true')
18 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') 19 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true')
19 parser.add_argument('--nthreads', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1) 20 parser.add_argument('--nthreads', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1)
20 args = parser.parse_args() 21 args = parser.parse_args()
21 22
22 params = storage.ProcessParameters(args.configFilename) 23 params = storage.ProcessParameters(args.configFilename)
30 def accelerationDistribution(): 31 def accelerationDistribution():
31 return random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.) 32 return random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.)
32 def steeringDistribution(): 33 def steeringDistribution():
33 return random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.) 34 return random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.)
34 35
35 if predictionMethod == 'cvd': # TODO add cve: constant velocity exact (Sohail's) 36 if predictionMethod == 'cvd':
36 predictionParameters = prediction.CVDirectPredictionParameters() 37 predictionParameters = prediction.CVDirectPredictionParameters()
38 if predictionMethod == 'cve':
39 predictionParameters = prediction.CVExactPredictionParameters()
37 elif predictionMethod == 'cv': 40 elif predictionMethod == 'cv':
38 predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) 41 predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed)
39 elif predictionMethod == 'na': 42 elif predictionMethod == 'na':
40 predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, 43 predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed,
41 params.nPredictedTrajectories, 44 params.nPredictedTrajectories,
62 interactions = events.createInteractions(objects) 65 interactions = events.createInteractions(objects)
63 for inter in interactions: 66 for inter in interactions:
64 inter.computeIndicators() 67 inter.computeIndicators()
65 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, nProcesses = args.nProcesses) 68 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, nProcesses = args.nProcesses)
66 69
70 if args.computePET:
71 for inter in Interactions:
72 inter.computePET()
73
67 storage.saveIndicators(params.databaseFilename, interactions) 74 storage.saveIndicators(params.databaseFilename, interactions)
68 75
69 if args.displayCollisionPoints: 76 if args.displayCollisionPoints:
70 plt.figure() 77 plt.figure()
71 allCollisionPoints = [] 78 allCollisionPoints = []