diff python/prediction.py @ 946:e5970606066f

bug fix on list filtering (cannot remove while iterating) and motion prediction keeping the same features
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 21 Jul 2017 11:25:20 -0400
parents 05d4302bf67e
children 584b9405e494
line wrap: on
line diff
--- a/python/prediction.py	Thu Jul 20 14:29:46 2017 -0400
+++ b/python/prediction.py	Fri Jul 21 11:25:20 2017 -0400
@@ -575,10 +575,16 @@
         predictedTrajectories = []
         if instant-obj.getFirstInstant()+1 >= self.minFeatureTime:
             if self.useFeatures and obj.hasFeatures():
-                # get current features existing for the most time, sort on first instant of feature and take n first
-                firstInstants = [(f,f.getFirstInstant()) for f in obj.getFeatures() if f.existsAtInstant(instant)]
+                if not hasattr(obj, 'currentPredictionFeatures'):
+                    obj.currentPredictionFeatures = []
+                else:
+                    obj.currentPredictionFeatures[:] = [f for f in obj.currentPredictionFeatures if f.existsAtInstant(instant)]
+                firstInstants = [(f,f.getFirstInstant()) for f in obj.getFeatures() if f.existsAtInstant(instant) and f not in obj.currentPredictionFeatures]
                 firstInstants.sort(key = lambda t: t[1])
-                for f,t1 in firstInstants[:min(self.nPredictedTrajectories, len(firstInstants))]:
+                for f,t1 in firstInstants[:min(self.nPredictedTrajectories, len(firstInstants), self.nPredictedTrajectories-len(obj.currentPredictionFeatures))]:
+                    obj.currentPredictionFeatures.append(f)
+                print len(obj.currentPredictionFeatures), self.nPredictedTrajectories
+                for f in obj.currentPredictionFeatures:
                     self.addPredictedTrajectories(predictedTrajectories, f, instant)
             else:
                 self.addPredictedTrajectories(predictedTrajectories, obj, instant)