added code to make sure TTC is replaced of recomputed and not having a value

Commit 9f1711a85c56 · Nicolas Saunier · 2024-06-19 16:11 -0400

Changeset
9f1711a85c566301f854af5e13c4eddcfd1ad57f

View source at this commit

Comments

No comments yet.

Log in to comment

Diff

diff --git a/trafficintelligence/events.py b/trafficintelligence/events.py
--- a/trafficintelligence/events.py
+++ b/trafficintelligence/events.py
@@ -127,6 +127,10 @@
     def getIndicator(self, indicatorName):
         return self.indicators.get(indicatorName, None)
 
+    def resetIndicator(self, indicatorName):
+        if indicatorName in self.indicators:
+            del self.indicators[indicatorName]
+
     def addIndicator(self, indicator):
         if indicator is not None:
             self.indicators[indicator.name] = indicator
@@ -284,6 +288,9 @@
         if len(TTCs) > 0:
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs, mostSevereIsMax=False))
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[6], collisionProbabilities))
+        else:
+            for i in [6,7]:
+                self.resetIndicator(Interaction.indicatorNames[i])
         
         # crossing zones and pPET
         if computeCZ:
@@ -299,6 +306,8 @@
         pet, t1, t2=  moving.MovingObject.computePET(self.roadUser1, self.roadUser2, collisionDistanceThreshold, computePetWithBoundingPoly)
         if pet is not None:
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[10], {min(t1, t2): pet, max(t1, t2): pet}, mostSevereIsMax = False))
+        else:
+            self.resetIndicator(Interaction.indicatorNames[10])
 
     def setCollision(self, collision):
         '''indicates if it is a collision: argument should be boolean'''
diff --git a/trafficintelligence/tests/events.txt b/trafficintelligence/tests/events.txt
--- a/trafficintelligence/tests/events.txt
+++ b/trafficintelligence/tests/events.txt
@@ -52,6 +52,17 @@
 >>> inter.getIndicator(Interaction.indicatorNames[1])[6] # doctest:+ELLIPSIS
 3.1415...
 
+# test if reseting object
+>>> o2 = MovingObject.generate(2, Point(0.,-5.), Point(0.,-1.), TimeInterval(0,10))
+>>> inter.setRoadUsers([o1,o2])
+>>> ttc = inter.getIndicator("Time to Collision")
+>>> ttc[0]
+5.0
+>>> inter.computeIndicators()
+>>> inter.computeCrossingsCollisions(predictionParams, 0.1, 10)
+>>> inter.getIndicator("Time to Collision") is None
+True
+
 # test low speed
 >>> inter = Interaction(roadUser1 = o1, roadUser2 = o2)
 >>> inter.computeIndicators()