changeset 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
files python/cvutils.py python/extrapolation.py python/utils.py
diffstat 3 files changed, 31 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/python/cvutils.py	Thu Jul 26 19:46:36 2012 -0400
+++ b/python/cvutils.py	Fri Jul 27 10:29:24 2012 -0400
@@ -156,7 +156,9 @@
                             draw(img, obj.projectedPositions, cvRed, frameNum-obj.getFirstInstant())
                             cv2.putText(img, '{0}'.format(obj.num), obj.projectedPositions[frameNum-obj.getFirstInstant()].asint().astuple(), cv2.FONT_HERSHEY_PLAIN, 1, cvRed)
                     cv2.imshow('frame', img)
-                    key = cv2.waitKey(50)
+                    key = cv2.waitKey()
+                    if key == 115:
+                        cv2.imwrite('image.png', img)
                     frameNum += 1
     
 def printCvMat(cvmat, out = stdout):
--- 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
--- a/python/utils.py	Thu Jul 26 19:46:36 2012 -0400
+++ b/python/utils.py	Fri Jul 27 10:29:24 2012 -0400
@@ -300,7 +300,7 @@
 
 def cleanFilename(s):
     'cleans filenames obtained when contatenating figure characteristics'
-    return s.replace(' ','-').replace('.','')
+    return s.replace(' ','-').replace('.','').replace('/','-')
 
 def listfiles(dirname, extension, remove = False):
     '''Returns the list of files with the extension in the directory dirname
@@ -313,11 +313,22 @@
     else:
         return tmp
 
+def mkdir(dirname):
+    'Creates a directory if it does not exist'
+    import os
+    if not os.path.exists(dirname):
+        os.mkdir(dirname)
+    else:
+        print(dirname+' already exists')
+
 def removeFile(filename):
     '''Deletes the file while avoiding raising an error 
     if the file does not exist'''
+    import os
     if (os.path.exists(filename)):
         os.remove(filename)
+    else:
+        print(filename+' does not exist')
 
 def plotPolygon(poly, options = ''):
     from numpy.core.multiarray import array