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':