Mercurial Hosting > traffic-intelligence
diff python/extrapolation.py @ 266:aba9711b3149
small modificatons and reorganization
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 27 Jul 2012 10:29:24 -0400 |
parents | 7a3bf04cf016 |
children | 32e88b513f5c |
line wrap: on
line diff
--- a/python/extrapolation.py Thu Jul 26 19:46:36 2012 -0400 +++ b/python/extrapolation.py Fri Jul 27 10:29:24 2012 -0400 @@ -63,8 +63,12 @@ return moving.NormAngle(self.accelerationDistribution(),self.steeringDistribution()) class ExtrapolationParameters: - def __init__(self, name): + def __init__(self, name, maxSpeed): self.name = name + self.maxSpeed = maxSpeed + + def __str__(self): + return '{0} {1}'.format(self.name, self.maxSpeed) def createExtrapolatedTrajectories(extrapolationParameters, obj, instant): '''extrapolationParameters specific to each method (in name field) ''' @@ -102,16 +106,20 @@ self.probability = probability self.indicator = indicator -def saveSafetyPoints(out, objNum1, objNum2, instant, points): - for p in points: - out.write('{0} {1} {2} {3} {4} {5} {6}\n'.format(objNum1, objNum2, instant, p.x, p.y, p.probability, p.indicator)) + @staticmethod + def save(out, points, objNum1, objNum2, instant): + for p in points: + out.write('{0} {1} {2} {3} {4} {5} {6}\n'.format(objNum1, objNum2, instant, p.x, p.y, p.probability, p.indicator)) def computeExpectedIndicator(points): from numpy import sum return sum([p.indicator*p.probability for p in points])/sum([p.probability for p in points]) -def computeCrossingsCollisionsAtInstant(extrapolatedTrajectories1, extrapolatedTrajectories2, collisionDistanceThreshold, timeHorizon): +def computeCrossingsCollisionsAtInstant(i, obj1, obj2, extrapolationParameters, collisionDistanceThreshold, timeHorizon): '''returns the lists of collision points and crossing zones ''' + extrapolatedTrajectories1 = createExtrapolatedTrajectories(extrapolationParameters, obj1, i) + extrapolatedTrajectories2 = createExtrapolatedTrajectories(extrapolationParameters, obj2, i) + collisionPoints = [] crossingZones = [] for et1 in extrapolatedTrajectories1: @@ -155,16 +163,13 @@ commonTimeInterval = obj1.commonTimeInterval(obj2) for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors print(obj1.num, obj2.num, i) - extrapolatedTrajectories1 = createExtrapolatedTrajectories(extrapolationParameters, obj1, i) - extrapolatedTrajectories2 = createExtrapolatedTrajectories(extrapolationParameters, obj2, i) - - collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(extrapolatedTrajectories1, extrapolatedTrajectories2, collisionDistanceThreshold, timeHorizon) + collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(i, obj1, obj2, extrapolationParameters, collisionDistanceThreshold, timeHorizon) # if len(collisionPoints[i]) > 0: # TTCs[i] = extrapolation.computeExpectedIndicator(collisionPoints[i]) # if len(crossingZones[i]) > 0: # pPETs[i] = extrapolation.computeExpectedIndicator(crossingZones[i]) - saveSafetyPoints(outCP, obj1.num, obj2.num, i, collisionPoints[i]) - saveSafetyPoints(outCZ, obj1.num, obj2.num, i, crossingZones[i]) + SafetyPoint.save(outCP, collisionPoints[i], obj1.num, obj2.num, i) + SafetyPoint.save(outCZ, crossingZones[i], obj1.num, obj2.num, i) if debug: from matplotlib.pyplot import figure, axis, title