changeset 306:93d851d0d21e

bug correction, minor work on indicators
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 02 Apr 2013 15:27:42 -0400
parents ca9131968bce
children f7ca78a11ea6 539e2b4cfaa3
files python/events.py python/indicators.py python/ubc_utils.py
diffstat 3 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/python/events.py	Fri Mar 29 21:20:12 2013 -0400
+++ b/python/events.py	Tue Apr 02 15:27:42 2013 -0400
@@ -3,6 +3,7 @@
 Interactions, pedestrian crossing...'''
 
 import numpy as np
+from numpy import arccos
 
 import multiprocessing
 import itertools
@@ -50,17 +51,19 @@
             deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant)
             deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant)
             collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav)
-            distances[instant] = deltap.norm2()
+            distances[instant] = deltap.norm2() # todo compute closest feature distance, if features
             speedDifferentials[instant] = deltav.norm2()
             if collisionCourseDotProducts[instant] > 0:
-                collisionCourseCosines[instant] = collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])
+                collisionCourseCosines[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant]))
+
         # todo shorten the time intervals based on the interaction definition
-        # todos change cosines to angles
         self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts))
         self.addIndicator(indicators.SeverityIndicator('Distance', distances))
         self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials))
         self.addIndicator(indicators.SeverityIndicator('Collision Course Cosine', collisionCourseCosines))
 
+        # todo test for interaction instants and interval, compute indicators
+
 
 def createInteractions(objects):
     '''Create all interactions of two co-existing road users
--- a/python/indicators.py	Fri Mar 29 21:20:12 2013 -0400
+++ b/python/indicators.py	Tue Apr 02 15:27:42 2013 -0400
@@ -18,7 +18,7 @@
     
     def __init__(self, name, values, timeInterval=None, maxValue = None):
         self.name = name
-        self.isCosine = name.find('Cosine')
+        self.isCosine = (name.find('Cosine') >= 0)
         if timeInterval:
             assert len(values) == timeInterval.length()
             self.timeInterval = timeInterval
@@ -78,7 +78,7 @@
         (no transformation otherwise)'''
         from numpy import arccos
         values = self.getValues()
-        if self.isCosine >= 0:
+        if self.isCosine:
             return [arccos(c) for c in values]
         else: 
             return values
--- a/python/ubc_utils.py	Fri Mar 29 21:20:12 2013 -0400
+++ b/python/ubc_utils.py	Tue Apr 02 15:27:42 2013 -0400
@@ -170,7 +170,7 @@
 
 def loadInteractions(filename, nInteractions = -1):
     'Loads interactions from the old UBC traffic event format'
-    from event import Interaction 
+    from events import Interaction 
     from indicators import SeverityIndicator
     file = utils.openCheck(filename)
     if (not file):
@@ -184,7 +184,6 @@
         inter = Interaction(interactionNum, TimeInterval(parsedLine[1],parsedLine[2]), parsedLine[3], parsedLine[4], categoryNum = parsedLine[5])
         
         indicatorFrameNums = [int(n) for n in lines[1].split(' ')]
-        inter.indicators = []
         for indicatorNum,line in enumerate(lines[2:]):
             values = {}
             for i,v in enumerate([float(n) for n in line.split(' ')]):