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