comparison python/events.py @ 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 7e5fb4abd070
children f7ca78a11ea6
comparison
equal deleted inserted replaced
305:ca9131968bce 306:93d851d0d21e
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 '''Libraries for events 2 '''Libraries for events
3 Interactions, pedestrian crossing...''' 3 Interactions, pedestrian crossing...'''
4 4
5 import numpy as np 5 import numpy as np
6 from numpy import arccos
6 7
7 import multiprocessing 8 import multiprocessing
8 import itertools 9 import itertools
9 10
10 import moving 11 import moving
48 speedDifferentials = {} 49 speedDifferentials = {}
49 for instant in self.timeInterval: 50 for instant in self.timeInterval:
50 deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant) 51 deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant)
51 deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant) 52 deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant)
52 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) 53 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav)
53 distances[instant] = deltap.norm2() 54 distances[instant] = deltap.norm2() # todo compute closest feature distance, if features
54 speedDifferentials[instant] = deltav.norm2() 55 speedDifferentials[instant] = deltav.norm2()
55 if collisionCourseDotProducts[instant] > 0: 56 if collisionCourseDotProducts[instant] > 0:
56 collisionCourseCosines[instant] = collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant]) 57 collisionCourseCosines[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant]))
58
57 # todo shorten the time intervals based on the interaction definition 59 # todo shorten the time intervals based on the interaction definition
58 # todos change cosines to angles
59 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) 60 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts))
60 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) 61 self.addIndicator(indicators.SeverityIndicator('Distance', distances))
61 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) 62 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials))
62 self.addIndicator(indicators.SeverityIndicator('Collision Course Cosine', collisionCourseCosines)) 63 self.addIndicator(indicators.SeverityIndicator('Collision Course Cosine', collisionCourseCosines))
64
65 # todo test for interaction instants and interval, compute indicators
63 66
64 67
65 def createInteractions(objects): 68 def createInteractions(objects):
66 '''Create all interactions of two co-existing road users 69 '''Create all interactions of two co-existing road users
67 70