Mercurial Hosting > traffic-intelligence
changeset 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 | 8bc632cb8344 |
children | 6e0dedd34920 |
files | python/events.py python/prediction.py scripts/safety-analysis.py |
diffstat | 3 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/python/events.py Tue Jul 23 05:05:06 2013 -0400 +++ b/python/events.py Wed Jul 24 12:48:12 2013 -0400 @@ -87,11 +87,11 @@ collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) # todo shorten the time intervals based on the interaction definition - self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) - self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) - self.addIndicator(indicators.SeverityIndicator('Distance', distances)) - self.addIndicator(indicators.SeverityIndicator('Velocity Angle', velocityAngles)) - self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[0], collisionCourseDotProducts)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[1], collisionCourseAngles)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[2], distances)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[4], velocityAngles)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[5], speedDifferentials)) # todo test for interaction instants and interval, compute indicators @@ -100,7 +100,7 @@ minDistance={} for instant in self.timeInterval: minDistance[instant] = moving.MovingObject.minDistance(self.roadUser1, self.roadUser2, instant) - self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[3], minDistance)) def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None): '''Computes all crossing and collision points at each common instant for two road users. ''' @@ -117,14 +117,14 @@ if len(self.collisionPoints[i]) > 0: TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.collisionPoints[i]) # add probability of collision, and probability of successful evasive action - self.addIndicator(indicators.SeverityIndicator('TTC', TTCs)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs)) if computeCZ: pPETs = {} for i in list(commonTimeInterval)[:-1]: if len(self.crossingZones[i]) > 0: pPETs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.crossingZones[i]) - self.addIndicator(indicators.SeverityIndicator('pPET', pPETs)) + self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[9], pPETs)) def addVideoFilename(self,videoFilename): self.videoFilename= videoFilename
--- a/python/prediction.py Tue Jul 23 05:05:06 2013 -0400 +++ b/python/prediction.py Wed Jul 24 12:48:12 2013 -0400 @@ -313,8 +313,8 @@ '''Prediction parameters of prediction at constant velocity using direct computation of the intersecting point''' - def __init__(self, maxSpeed): - PredictionParameters.__init__(self, 'constant velocity (direct computation)', maxSpeed) + def __init__(self): + PredictionParameters.__init__(self, 'constant velocity (direct computation)', None) def computeCrossingsCollisionsAtInstant(self, currentInstant, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False): collisionPoints = [] @@ -341,10 +341,10 @@ timeInterval1 = moving.TimeInterval(max(0,dist1-halfCollisionDistanceThreshold)/s1, (dist1+halfCollisionDistanceThreshold)/s1) timeInterval2 = moving.TimeInterval(max(0,dist2-halfCollisionDistanceThreshold)/s2, (dist2+halfCollisionDistanceThreshold)/s2) collisionTimeInterval = moving.TimeInterval.intersection(timeInterval1, timeInterval2) - if not collisionTimeInterval.empty(): + if computeCZ and collisionTimeInterval.empty(): + crossingZones = [SafetyPoint(intersection, 1., timeInterval1.distance(timeInterval2))] + else: collisionPoints = [SafetyPoint(intersection, 1., collisionTimeInterval.center())] - else: - crossingZones = [SafetyPoint(intersection, 1., timeInterval1.distance(timeInterval2))] if debug and intersection!= None: from matplotlib.pyplot import plot, figure, axis, title
--- a/scripts/safety-analysis.py Tue Jul 23 05:05:06 2013 -0400 +++ b/scripts/safety-analysis.py Wed Jul 24 12:48:12 2013 -0400 @@ -26,7 +26,7 @@ predictionMethod = params.predictionMethod if predictionMethod == 'cvd': - predictionParameters = prediction.CVDirectPredictionParameters(params.maxPredictedSpeed) + predictionParameters = prediction.CVDirectPredictionParameters() elif predictionMethod == 'cv': predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) elif predictionMethod == 'na':