Mercurial > hg > nsaunier > 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() |
