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