changeset 692:9a258687af4c dev

corrected some errors for ttc
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 29 Jun 2015 23:09:58 -0400
parents fa9aa5f08210
children 5ee22bf7e4d5
files python/events.py python/indicators.py python/prediction.py
diffstat 3 files changed, 11 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/python/events.py	Mon Jun 29 16:15:04 2015 -0400
+++ b/python/events.py	Mon Jun 29 23:09:58 2015 -0400
@@ -217,7 +217,8 @@
         self.collisionPoints, crossingZones = predictionParameters.computeCrossingsCollisions(self.roadUser1, self.roadUser2, collisionDistanceThreshold, timeHorizon, computeCZ, debug, commonTimeInterval, nProcesses,usePrototypes,route1,route2,prototypes,secondStepPrototypes,nMatching,objects,noiseEntryNums,noiseExitNums,minSimilarity,mostMatched,useDestination,useSpeedPrototype,acceptPartialLength, step)
         for i, cp in self.collisionPoints.iteritems():
             TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(cp)
-        self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs, mostSevereIsMax=False))
+        if len(TTCs) > 0:
+            self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs, mostSevereIsMax=False))
         
         # crossing zones and pPET
         if computeCZ:
--- a/python/indicators.py	Mon Jun 29 16:15:04 2015 -0400
+++ b/python/indicators.py	Mon Jun 29 23:09:58 2015 -0400
@@ -152,6 +152,13 @@
         else:
             return None
 
+    def getInstantOfMostSevereValue(self):
+        '''Returns the instant at which the indicator reaches its most severe value'''
+        if self.mostSevereIsMax:
+            return max(self.values, key=self.values.get)
+        else:
+            return min(self.values, key=self.values.get)
+
 # functions to aggregate discretized maps of indicators
 # TODO add values in the cells between the positions (similar to discretizing vector graphics to bitmap)
 
--- a/python/prediction.py	Mon Jun 29 16:15:04 2015 -0400
+++ b/python/prediction.py	Mon Jun 29 23:09:58 2015 -0400
@@ -321,8 +321,8 @@
         if nProcesses == 1:
             if usePrototypes:
                 firstInstant= next( (x for x in xrange(commonTimeInterval.first,commonTimeInterval.last) if x-obj1.getFirstInstant() >= acceptPartialLength and x-obj2.getFirstInstant() >= acceptPartialLength), commonTimeInterval.last)
-                commonTimeIntervalList1= list(xrange(firstInstant,commonTimeInterval.last-1)) # do not look at the 1 last position/velocities, often with errors
-                commonTimeIntervalList2= list(xrange(firstInstant,commonTimeInterval.last-1,step)) # do not look at the 1 last position/velocities, often with errors
+                commonTimeIntervalList1= range(firstInstant,commonTimeInterval.last-1) # do not look at the 1 last position/velocities, often with errors
+                commonTimeIntervalList2= range(firstInstant,commonTimeInterval.last-1,step) # do not look at the 1 last position/velocities, often with errors
                 for i in commonTimeIntervalList2: 
                     i, cp, cz = self.computeCrossingsCollisionsAtInstant(i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug,usePrototypes,route1,route2,prototypes,secondStepPrototypes,nMatching,objects,noiseEntryNums,noiseExitNums,minSimilarity,mostMatched,useDestination,useSpeedPrototype)
                     if len(cp) != 0:
@@ -533,19 +533,6 @@
                             crossingZones = [SafetyPoint(intersection, 1., timeInterval1.distance(timeInterval2))]
                     else:
                         collisionPoints = [SafetyPoint(intersection, 1., collisionTimeInterval.center())]
-            # elif computeCZ and (dot1 > 0 or dot2 > 0):
-            #     if dot1 > 0:
-            #         firstUser = obj2 # first through crossingzone
-            #         secondUser = obj1 # second through crossingzone
-            #     elif dot2 > 0:
-            #         firstUser = obj1
-            #         secondUser = obj2
-            #     p2 = secondUser.getPositionAtInstant(currentInstant)
-            #     v2 = secondUser.getVelocityAtInstant(currentInstant)
-            #     indices, intersections = firstUser.getPositions().getLineIntersections(p2, p2+v2)
-            #     if indices is not None:
-            #         pass
-            #     else: # one has to predict !!!
     
         if debug and intersection is not None:
             from matplotlib.pyplot import plot, figure, axis, title