nsaunier/traffic-intelligence
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
Comments
No comments yet.
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()