comparison scripts/safety-analysis.py @ 943:b1e8453c207c

work on motion prediction using motion patterns
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 19 Jul 2017 18:02:38 -0400
parents a2f3f3ca241e
children 84ebe1b031f1
comparison
equal deleted inserted replaced
942:ab13aaf41432 943:b1e8453c207c
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 (cvd: vector computation (approximate); cve: equation solving; cv: discrete time (approximate)), normal adaptation, point set prediction)', choices = ['cvd', 'cve', 'cv', 'na', 'ps', 'proto']) 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', 'mp'])
18 parser.add_argument('--cfg', dest = 'prototypeDatabaseFilename', help = 'name of the database containing the prototypes') 18 parser.add_argument('--prototypeDatabaseFilename', dest = 'prototypeDatabaseFilename', help = 'name of the database containing the prototypes')
19 parser.add_argument('--pet', dest = 'computePET', help = 'computes PET', action = 'store_true') 19 parser.add_argument('--pet', dest = 'computePET', help = 'computes PET', action = 'store_true')
20 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') 20 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true')
21 parser.add_argument('--nthreads', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1) 21 parser.add_argument('--nthreads', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1)
22 args = parser.parse_args() 22 args = parser.parse_args()
23 23
46 accelerationDistribution, 46 accelerationDistribution,
47 steeringDistribution, 47 steeringDistribution,
48 params.useFeaturesForPrediction) 48 params.useFeaturesForPrediction)
49 elif predictionMethod == 'ps': 49 elif predictionMethod == 'ps':
50 predictionParameters = prediction.PointSetPredictionParameters(params.maxPredictedSpeed) 50 predictionParameters = prediction.PointSetPredictionParameters(params.maxPredictedSpeed)
51 elif predictionMethod == 'proto': 51 elif predictionMethod == 'mp':
52 prototypes = storage.loadPrototypesFromSqlite(args.prototypeDatabaseFilename) 52 if args.prototypeDatabaseFilename is None:
53 prototypes = storage.loadPrototypesFromSqlite(params.databaseFilename)
54 else:
55 prototypes = storage.loadPrototypesFromSqlite(args.prototypeDatabaseFilename)
53 for p in prototypes: 56 for p in prototypes:
54 p.getMovingObject().getPositions().computeCumulativeDistances() 57 p.getMovingObject().computeCumulativeDistances()
58 predictionParameters = prediction.PrototypePredictionParameters(prototypes, params.nPredictedTrajectories, 2., 0.5, 'cityblock', 10, params.constantSpeedPrototypePrediction, params.useFeaturesForPrediction)
59 # else:
55 # no else required, since parameters is required as argument 60 # no else required, since parameters is required as argument
56 61
57 # evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, 62 # evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed,
58 # params.nPredictedTrajectories, 63 # params.nPredictedTrajectories,
59 # params.minExtremeAcceleration, 64 # params.minExtremeAcceleration,
60 # params.maxExtremeAcceleration, 65 # params.maxExtremeAcceleration,
61 # params.maxExtremeSteering, 66 # params.maxExtremeSteering,
62 # params.useFeaturesForPrediction) 67 # params.useFeaturesForPrediction)
63 68
64 objects = storage.loadTrajectoriesFromSqlite(params.databaseFilename, 'object', args.nObjects, withFeatures = (params.useFeaturesForPrediction or (predictionMethod == 'ps'))) 69 objects = storage.loadTrajectoriesFromSqlite(params.databaseFilename, 'object', args.nObjects, withFeatures = (params.useFeaturesForPrediction or predictionMethod == 'ps' or predictionMethod == 'mp'))
65 # if params.useFeaturesForPrediction: 70 # if params.useFeaturesForPrediction:
66 # features = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'feature') # needed if normal adaptation 71 # features = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'feature') # needed if normal adaptation
67 # for obj in objects: 72 # for obj in objects:
68 # obj.setFeatures(features) 73 # obj.setFeatures(features)
69 74
70 interactions = events.createInteractions(objects) 75 interactions = events.createInteractions(objects)
71 for inter in interactions: 76 for inter in interactions:
72 inter.computeIndicators() 77 inter.computeIndicators()
73 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, nProcesses = args.nProcesses) 78 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, nProcesses = args.nProcesses, debug = True)
74 79
75 if args.computePET: 80 if args.computePET:
76 for inter in interactions: 81 for inter in interactions:
77 inter.computePET(params.collisionDistance) 82 inter.computePET(params.collisionDistance)
78 83