Mercurial Hosting > traffic-intelligence
comparison python/events.py @ 387:91679eb2ff2c
cleaning up safety analysis and the new traditional constant velocity method
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 24 Jul 2013 12:48:12 -0400 |
parents | ba813f148ade |
children | 6e0dedd34920 |
comparison
equal
deleted
inserted
replaced
386:8bc632cb8344 | 387:91679eb2ff2c |
---|---|
85 speedDifferentials[instant] = deltav.norm2() | 85 speedDifferentials[instant] = deltav.norm2() |
86 #if collisionCourseDotProducts[instant] > 0: | 86 #if collisionCourseDotProducts[instant] > 0: |
87 collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) | 87 collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) |
88 | 88 |
89 # todo shorten the time intervals based on the interaction definition | 89 # todo shorten the time intervals based on the interaction definition |
90 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) | 90 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[0], collisionCourseDotProducts)) |
91 self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) | 91 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[1], collisionCourseAngles)) |
92 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) | 92 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[2], distances)) |
93 self.addIndicator(indicators.SeverityIndicator('Velocity Angle', velocityAngles)) | 93 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[4], velocityAngles)) |
94 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) | 94 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[5], speedDifferentials)) |
95 | 95 |
96 # todo test for interaction instants and interval, compute indicators | 96 # todo test for interaction instants and interval, compute indicators |
97 | 97 |
98 # if we have features, compute other indicators | 98 # if we have features, compute other indicators |
99 if self.roadUser1.features != None and self.roadUser2.features != None: | 99 if self.roadUser1.features != None and self.roadUser2.features != None: |
100 minDistance={} | 100 minDistance={} |
101 for instant in self.timeInterval: | 101 for instant in self.timeInterval: |
102 minDistance[instant] = moving.MovingObject.minDistance(self.roadUser1, self.roadUser2, instant) | 102 minDistance[instant] = moving.MovingObject.minDistance(self.roadUser1, self.roadUser2, instant) |
103 self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) | 103 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[3], minDistance)) |
104 | 104 |
105 def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None): | 105 def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None): |
106 '''Computes all crossing and collision points at each common instant for two road users. ''' | 106 '''Computes all crossing and collision points at each common instant for two road users. ''' |
107 self.collisionPoints={} | 107 self.collisionPoints={} |
108 self.crossingZones={} | 108 self.crossingZones={} |
115 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors | 115 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors |
116 self.collisionPoints[i], self.crossingZones[i] = predictionParameters.computeCrossingsCollisionsAtInstant(i, self.roadUser1, self.roadUser2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) | 116 self.collisionPoints[i], self.crossingZones[i] = predictionParameters.computeCrossingsCollisionsAtInstant(i, self.roadUser1, self.roadUser2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) |
117 if len(self.collisionPoints[i]) > 0: | 117 if len(self.collisionPoints[i]) > 0: |
118 TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.collisionPoints[i]) | 118 TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.collisionPoints[i]) |
119 # add probability of collision, and probability of successful evasive action | 119 # add probability of collision, and probability of successful evasive action |
120 self.addIndicator(indicators.SeverityIndicator('TTC', TTCs)) | 120 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs)) |
121 | 121 |
122 if computeCZ: | 122 if computeCZ: |
123 pPETs = {} | 123 pPETs = {} |
124 for i in list(commonTimeInterval)[:-1]: | 124 for i in list(commonTimeInterval)[:-1]: |
125 if len(self.crossingZones[i]) > 0: | 125 if len(self.crossingZones[i]) > 0: |
126 pPETs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.crossingZones[i]) | 126 pPETs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.crossingZones[i]) |
127 self.addIndicator(indicators.SeverityIndicator('pPET', pPETs)) | 127 self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[9], pPETs)) |
128 | 128 |
129 def addVideoFilename(self,videoFilename): | 129 def addVideoFilename(self,videoFilename): |
130 self.videoFilename= videoFilename | 130 self.videoFilename= videoFilename |
131 | 131 |
132 def addInteractionType(self,interactionType): | 132 def addInteractionType(self,interactionType): |