diff python/prediction.py @ 661:dc70d9e711f5

some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 18 May 2015 13:53:25 +0200
parents 335f6641bf7a
children 72174e66aba5
line wrap: on
line diff
--- a/python/prediction.py	Fri May 15 23:09:49 2015 +0200
+++ b/python/prediction.py	Mon May 18 13:53:25 2015 +0200
@@ -410,8 +410,8 @@
 
     def generatePredictedTrajectories(self, obj, instant):
         predictedTrajectories = []
-        if self.useFeatures:
-            features = [f for f in obj.features if f.existsAtInstant(instant)]
+        if self.useFeatures and obj.hadFeatures():
+            features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
             positions = [f.getPositionAtInstant(instant) for f in features]
             velocities = [f.getVelocityAtInstant(instant) for f in features]
         else:
@@ -433,15 +433,19 @@
         #self.nPredictedTrajectories = nPredictedTrajectories
     
     def generatePredictedTrajectories(self, obj, instant):
-        predictedTrajectories = []        
-        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]
-        #for i in xrange(self.nPredictedTrajectories):
-        for initialPosition,initialVelocity in zip(positions, velocities):
-            predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 
-                                                                     maxSpeed = self.maxSpeed))
-        return predictedTrajectories
+        predictedTrajectories = []
+        if obj.hasFeatures():
+            features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
+            positions = [f.getPositionAtInstant(instant) for f in features]
+            velocities = [f.getVelocityAtInstant(instant) for f in features]
+            #for i in xrange(self.nPredictedTrajectories):
+            for initialPosition,initialVelocity in zip(positions, velocities):
+                predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 
+                                                                         maxSpeed = self.maxSpeed))
+            return predictedTrajectories
+        else:
+            print('Object {} has no features'.format(obj.getNum()))
+            return None
 
 class EvasiveActionPredictionParameters(PredictionParameters):
     def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
@@ -463,8 +467,8 @@
 
     def generatePredictedTrajectories(self, obj, instant):
         predictedTrajectories = []
-        if self.useFeatures:
-            features = [f for f in obj.features if f.existsAtInstant(instant)]
+        if self.useFeatures and obj.hasFeatures():
+            features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
             positions = [f.getPositionAtInstant(instant) for f in features]
             velocities = [f.getVelocityAtInstant(instant) for f in features]
         else: