Mercurial Hosting > traffic-intelligence
comparison scripts/safety-analysis.py @ 357:e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 11 Jul 2013 00:07:47 -0400 |
parents | 72aa44072093 |
children | 619ae9a9a788 |
comparison
equal
deleted
inserted
replaced
356:15fac9c45feb | 357:e5fe0e6d48a1 |
---|---|
1 #! /usr/bin/env python | 1 #! /usr/bin/env python |
2 | 2 |
3 import utils, storage, prediction, events | 3 import utils, storage, prediction, events, moving |
4 | 4 |
5 import sys, argparse | 5 import sys, argparse |
6 | 6 |
7 import matplotlib.pyplot as plt | 7 import matplotlib.pyplot as plt |
8 import numpy as np | 8 import numpy as np |
9 | 9 |
10 # todo: very slow if too many predicted trajectories | |
11 # add computation of probality of unsucessful evasive action | |
12 | |
10 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') |
11 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file') | 14 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file') |
12 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity, normal adaptation, point set prediction)', choices = ['cv', 'na', 'ps']) | 15 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity, normal adaptation, point set prediction)', choices = ['cv', 'na', 'ps']) |
16 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points') | |
13 args = parser.parse_args() | 17 args = parser.parse_args() |
14 | 18 |
15 params = utils.TrackingParameters() | 19 params = utils.TrackingParameters() |
16 params.loadConfigFile(args.configFilename) | 20 params.loadConfigFile(args.configFilename) |
17 | 21 |
48 features = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'feature') # needed if normal adaptation | 52 features = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'feature') # needed if normal adaptation |
49 for obj in objects: | 53 for obj in objects: |
50 obj.setFeatures(features) | 54 obj.setFeatures(features) |
51 | 55 |
52 interactions = events.createInteractions(objects) | 56 interactions = events.createInteractions(objects) |
53 for inter in interactions[:1]: | 57 for inter in interactions: |
54 inter.computeIndicators() | 58 inter.computeIndicators() |
55 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones) | 59 inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones) |
56 | 60 |
57 storage.saveIndicators(params.databaseFilename, interactions) | 61 storage.saveIndicators(params.databaseFilename, interactions) |
58 | 62 |
59 if False: | 63 if args.displayCollisionPoints: |
60 plt.figure() | 64 plt.figure() |
61 plt.axis('equal') | 65 allCollisionPoints = [] |
62 for inter in interactions: | 66 for inter in interactions: |
63 for collisionPoints in inter.collisionPoints.values(): | 67 for collisionPoints in inter.collisionPoints.values(): |
64 for cp in collisionPoints: | 68 allCollisionPoints += collisionPoints |
65 plt.plot([cp.x], [cp.y], 'x') | 69 moving.Point.plotAll(allCollisionPoints) |
70 plt.axis('equal') | |
66 | 71 |