Mercurial Hosting > traffic-intelligence
comparison trafficintelligence/prediction.py @ 1269:ca70a79688ae
adding a speed threshold to avoid computing TTC at very low speeds
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 05 Jun 2024 10:12:43 -0400 |
parents | 1b472cddf9b1 |
children |
comparison
equal
deleted
inserted
replaced
1268:27b206d118b7 | 1269:ca70a79688ae |
---|---|
353 if debug: | 353 if debug: |
354 savePredictedTrajectoriesFigure(currentInstant, obj1, obj2, predictedTrajectories1, predictedTrajectories2, timeHorizon) | 354 savePredictedTrajectoriesFigure(currentInstant, obj1, obj2, predictedTrajectories1, predictedTrajectories2, timeHorizon) |
355 | 355 |
356 return collisionPoints, crossingZones | 356 return collisionPoints, crossingZones |
357 | 357 |
358 def computeCrossingsCollisions(self, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None):#, nProcesses = 1): | 358 def computeCrossingsCollisions(self, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None, speedThreshold = 0.): |
359 '''Computes all crossing and collision points at each common instant for two road users. ''' | 359 '''Computes all crossing and collision points at each common instant for two road users. |
360 No movement prediction below a certain speedThreshold for both objects''' | |
360 collisionPoints = {} | 361 collisionPoints = {} |
361 if computeCZ: | 362 if computeCZ: |
362 crossingZones = {} | 363 crossingZones = {} |
363 else: | 364 else: |
364 crossingZones = None | 365 crossingZones = None |
365 if timeInterval is not None: | 366 if timeInterval is not None: |
366 commonTimeInterval = timeInterval | 367 commonTimeInterval = timeInterval |
367 else: | 368 else: |
368 commonTimeInterval = obj1.commonTimeInterval(obj2) | 369 commonTimeInterval = obj1.commonTimeInterval(obj2) |
369 #if nProcesses == 1: | 370 speedThreshold2 = max(0,speedThreshold)**2 |
370 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors | 371 for t in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors |
371 cp, cz = self.computeCrossingsCollisionsAtInstant(i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) | 372 if obj1.getVelocityAtInstant(t).norm2Squared() > speedThreshold2 and obj2.getVelocityAtInstant(t).norm2Squared() > speedThreshold2: |
372 if len(cp) != 0: | 373 cp, cz = self.computeCrossingsCollisionsAtInstant(t, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) |
373 collisionPoints[i] = cp | 374 if len(cp) != 0: |
374 if computeCZ and len(cz) != 0: | 375 collisionPoints[t] = cp |
375 crossingZones[i] = cz | 376 if computeCZ and len(cz) != 0: |
377 crossingZones[t] = cz | |
376 return collisionPoints, crossingZones | 378 return collisionPoints, crossingZones |
377 | 379 |
378 def computeCollisionProbability(self, obj1, obj2, collisionDistanceThreshold, timeHorizon, debug = False, timeInterval = None): | 380 def computeCollisionProbability(self, obj1, obj2, collisionDistanceThreshold, timeHorizon, debug = False, timeInterval = None): |
379 '''Computes only collision probabilities | 381 '''Computes only collision probabilities |
380 Returns for each instant the collision probability and number of samples drawn''' | 382 Returns for each instant the collision probability and number of samples drawn''' |