diff python/prediction.py @ 460:55b424d98b68

change of interface, distributions are now passed to the prediction paramters constructors if needed
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sat, 22 Feb 2014 01:18:16 -0500
parents 91679eb2ff2c
children dcc821b98efc
line wrap: on
line diff
--- a/python/prediction.py	Thu Feb 20 09:37:12 2014 -0500
+++ b/python/prediction.py	Sat Feb 22 01:18:16 2014 -0500
@@ -215,20 +215,19 @@
                                                maxSpeed = self.maxSpeed)]
 
 class NormalAdaptationPredictionParameters(PredictionParameters):
-    def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False):
+    def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
+        '''An example of acceleration and steering distributions is
+        lambda: random.triangular(-self.maxAcceleration, self.maxAcceleration, 0.)
+        '''
         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, 
-                                                               self.maxSteering, 0.)
+        self.accelerationDistribution = accelerationDistribution
+        self.steeringDistribution = steeringDistribution
         
     def __str__(self):
         return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, 
@@ -271,21 +270,19 @@
         return predictedTrajectories
 
 class EvasiveActionPredictionParameters(PredictionParameters):
-    def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False):
+    def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
+        '''Suggested acceleration distribution may not be symmetric, eg
+        lambda: random.triangular(self.minAcceleration, self.maxAcceleration, 0.)'''
+
         if useFeatures:
             name = 'point set evasive action'
         else:
             name = 'evasive action'
         PredictionParameters.__init__(self, name, maxSpeed)
         self.nPredictedTrajectories = nPredictedTrajectories
-        self.minAcceleration = minAcceleration
-        self.maxAcceleration = maxAcceleration
-        self.maxSteering = maxSteering
         self.useFeatures = useFeatures
-        self.accelerationDistribution = lambda: random.triangular(self.minAcceleration, 
-                                                                  self.maxAcceleration, 0.)
-        self.steeringDistribution = lambda: random.triangular(-self.maxSteering, 
-                                                               self.maxSteering, 0.)
+        self.accelerationDistribution = accelerationDistribution
+        self.steeringDistribution = steeringDistribution
 
     def __str__(self):
         return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering)