Mercurial > hg > nsaunier > traffic-intelligence
comparison python/prediction.py @ 290:df58d361f19e
refactoring of Interval and TimeInterval using class methods (intersection, union)
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 29 Jan 2013 18:23:47 -0500 |
| parents | e56c34c1ebac |
| children | 9f81218e497a |
comparison
equal
deleted
inserted
replaced
| 289:e56c34c1ebac | 290:df58d361f19e |
|---|---|
| 202 for et1 in predictedTrajectories1: | 202 for et1 in predictedTrajectories1: |
| 203 for et2 in predictedTrajectories2: | 203 for et2 in predictedTrajectories2: |
| 204 t, p1, p2 = computeCollisionTime(et1, et2, collisionDistanceThreshold, timeHorizon) | 204 t, p1, p2 = computeCollisionTime(et1, et2, collisionDistanceThreshold, timeHorizon) |
| 205 | 205 |
| 206 if t <= timeHorizon: | 206 if t <= timeHorizon: |
| 207 collisionPoints.append(SafetyPoint((p1+p2).multiply(0.5), currentInstant, et1.probability*et2.probability, t)) | 207 collisionPoints.append(SafetyPoint((p1+p2).multiply(0.5), et1.probability*et2.probability, t)) |
| 208 else: # check if there is a crossing zone | 208 else: # check if there is a crossing zone |
| 209 # TODO? zone should be around the points at which the traj are the closest | 209 # TODO? zone should be around the points at which the traj are the closest |
| 210 # look for CZ at different times, otherwise it would be a collision | 210 # look for CZ at different times, otherwise it would be a collision |
| 211 # an approximation would be to look for close points at different times, ie the complementary of collision points | 211 # an approximation would be to look for close points at different times, ie the complementary of collision points |
| 212 cz = None | 212 cz = None |
| 247 commonTimeInterval = timeInterval | 247 commonTimeInterval = timeInterval |
| 248 else: | 248 else: |
| 249 commonTimeInterval = obj1.commonTimeInterval(obj2) | 249 commonTimeInterval = obj1.commonTimeInterval(obj2) |
| 250 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors | 250 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors |
| 251 print(obj1.num, obj2.num, i) | 251 print(obj1.num, obj2.num, i) |
| 252 collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(obj1, obj2, predictionParameters, collisionDistanceThreshold, timeHorizon, debug) | 252 collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(i, obj1, obj2, predictionParameters, collisionDistanceThreshold, timeHorizon, debug) |
| 253 | 253 |
| 254 return collisionPoints, crossingZones | 254 return collisionPoints, crossingZones |
| 255 | 255 |
| 256 def computeCollisionProbability(obj1, obj2, predictionParameters, collisionDistanceThreshold, timeHorizon, debug = False, timeInterval = None): | 256 def computeCollisionProbability(obj1, obj2, predictionParameters, collisionDistanceThreshold, timeHorizon, debug = False, timeInterval = None): |
| 257 '''Computes only collision probabilities | 257 '''Computes only collision probabilities |
