diff python/prediction.py @ 352:72aa44072093

safety analysis script with option for prediction method
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Thu, 27 Jun 2013 01:35:47 -0400
parents 7e9ad2d9d79c
children 41e31d8c4383
line wrap: on
line diff
--- a/python/prediction.py	Thu Jun 27 00:25:51 2013 -0400
+++ b/python/prediction.py	Thu Jun 27 01:35:47 2013 -0400
@@ -80,11 +80,16 @@
                                                maxSpeed = self.maxSpeed)]
 
 class NormalAdaptationPredictionParameters(PredictionParameters):
-    def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False
-        PredictionParameters.__init__(self, 'normal adaptation', maxSpeed)
+    def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False):
+        if useFeatures:
+            name = 'point set normal adaptation'
+        else:
+            name = 'normal adaptation'
+        PredictionParameters.__init__(self, name, maxSpeed)
         self.nPredictedTrajectories = nPredictedTrajectories
         self.maxAcceleration = maxAcceleration
         self.maxSteering = maxSteering
+        self.useFeatures = useFeatures
         self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, 
                                                                    self.maxAcceleration, 0.)
         self.steeringDistribution = lambda: random.triangular(-self.maxSteering, 
@@ -92,17 +97,25 @@
         
     def __str__(self):
         return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, 
-                                                                           self.maxAcceleration, 
-                                                                           self.maxSteering)
+                                                                        self.maxAcceleration, 
+                                                                        self.maxSteering)
 
     def generatePredictedTrajectories(self, obj, instant):
         predictedTrajectories = []
+        if self.useFeatures:
+            features = [f for f in obj.features if f.existsAtInstant(instant)]
+            positions = [f.getPositionAtInstant(instant) for f in features]
+            velocities = [f.getVelocityAtInstant(instant) for f in features]
+        else:
+            positions = [obj.getPositionAtInstant(instant)]
+            velocities = [obj.getVelocityAtInstant(instant)]
         for i in xrange(self.nPredictedTrajectories):
-            predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(obj.getPositionAtInstant(instant), 
-                                                                                   obj.getVelocityAtInstant(instant), 
-                                                                                   self.accelerationDistribution, 
-                                                                                   self.steeringDistribution, 
-                                                                                   maxSpeed = self.maxSpeed))
+            for initialPosition,initialVelocity in zip(positions, velocities):
+                predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(initialPosition, 
+                                                                                 initialVelocity, 
+                                                                                 self.accelerationDistribution, 
+                                                                                 self.steeringDistribution, 
+                                                                                 maxSpeed = self.maxSpeed))
         return predictedTrajectories
 
 class PointSetPredictionParameters(PredictionParameters):