Mercurial Hosting > traffic-intelligence
comparison python/events.py @ 338:f3aceea2afbb
first safety analysis script
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 17 Jun 2013 16:26:11 -0400 |
parents | 6c9c7c956926 |
children | 9c1818a71c9c |
comparison
equal
deleted
inserted
replaced
337:dc2e68e936c7 | 338:f3aceea2afbb |
---|---|
85 positions2 = [f.getPositionAtInstant(instant).astuple() for f in self.roadUser2.features if f.existsAtInstant(instant)] | 85 positions2 = [f.getPositionAtInstant(instant).astuple() for f in self.roadUser2.features if f.existsAtInstant(instant)] |
86 distance = cdist(positions1, positions2, metric = 'euclidean') | 86 distance = cdist(positions1, positions2, metric = 'euclidean') |
87 minDistance[instant] = distance.min() | 87 minDistance[instant] = distance.min() |
88 self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) | 88 self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) |
89 | 89 |
90 def computeCollisionPoints(self, predictionParameters, collisionDistanceThreshold, timeHorizon): | 90 def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None): |
91 if self.roadUser1.features and self.roadUser2.features: | 91 '''Computes all crossing and collision points at each common instant for two road users. ''' |
92 collisionPoints = prediction.computeCollisions(self.roadUser1, self.roadUser2, predictionParameters, collisionDistanceThreshold, timeHorizon) | 92 self.collisionPoints={} |
93 self.addIndicator(indicators.SeverityIndicator('Collision Points', collisionPoints)) | 93 TTCs = {} |
94 if computeCZ: | |
95 self.crossingZones={} | |
96 | |
97 if timeInterval: | |
98 commonTimeInterval = timeInterval | |
94 else: | 99 else: |
95 print('Features not associated with objects') | 100 commonTimeInterval = self.timeInterval |
101 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors | |
102 self.collisionPoints[i], self.crossingZones[i] = prediction.computeCrossingsCollisionsAtInstant(i, self.roadUser1, self.roadUser2, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ, debug) | |
103 TTCs[i] = prediction.computeExpectedIndicator(self.collisionPoints[i]) | |
104 self.addIndicator(indicators.SeverityIndicator('TTC', TTCs)) | |
105 | |
106 if computeCZ: | |
107 pPETs = {} | |
108 for i in list(commonTimeInterval)[:-1]: | |
109 pPETs[i] = prediction.computeExpectedIndicator(self.crossingZones[i]) | |
110 self.addIndicator(indicators.SeverityIndicator('pPET', pPETs)) | |
96 | 111 |
97 def addVideoFilename(self,videoFilename): | 112 def addVideoFilename(self,videoFilename): |
98 self.videoFilename= videoFilename | 113 self.videoFilename= videoFilename |
99 | 114 |
100 def addInteractionType(self,interactionType): | 115 def addInteractionType(self,interactionType): |