Mercurial Hosting > traffic-intelligence
comparison python/events.py @ 317:d280b881e860
added indicator min distance
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 12 Apr 2013 18:03:04 -0400 |
parents | f7ca78a11ea6 |
children | 419f30491a4b 4b5fe2de1e8d |
comparison
equal
deleted
inserted
replaced
316:c5518a35df5f | 317:d280b881e860 |
---|---|
49 speedDifferentials = {} | 49 speedDifferentials = {} |
50 for instant in self.timeInterval: | 50 for instant in self.timeInterval: |
51 deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant) | 51 deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant) |
52 deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant) | 52 deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant) |
53 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) | 53 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) |
54 distances[instant] = deltap.norm2() # todo compute closest feature distance, if features | 54 distances[instant] = deltap.norm2() |
55 speedDifferentials[instant] = deltav.norm2() | 55 speedDifferentials[instant] = deltav.norm2() |
56 if collisionCourseDotProducts[instant] > 0: | 56 if collisionCourseDotProducts[instant] > 0: |
57 collisionCourseCosines[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) | 57 collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) |
58 | 58 |
59 # todo shorten the time intervals based on the interaction definition | 59 # todo shorten the time intervals based on the interaction definition |
60 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) | 60 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) |
61 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) | 61 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) |
62 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) | 62 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) |
63 self.addIndicator(indicators.SeverityIndicator('Collision Course Cosine', collisionCourseCosines)) | 63 self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) |
64 | 64 |
65 # todo test for interaction instants and interval, compute indicators | 65 # todo test for interaction instants and interval, compute indicators |
66 | |
67 # if we have features, compute other indicators | |
68 if self.movingObject1.features and self.movingObject2.features: | |
69 from scipy.spatial.distance import cdist | |
70 minDistance={} | |
71 for instant in self.timeInterval: | |
72 positions1 = [f.getPositionAtInstant(instant).astuple() for f in self.movingObject1.features if f.existsAtInstant(instant)] | |
73 positions2 = [f.getPositionAtInstant(instant).astuple() for f in self.movingObject2.features if f.existsAtInstant(instant)] | |
74 distance = cdist(positions1, positions2, metric = 'euclidean') | |
75 minDistance[instant] = distance.min() | |
76 self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) | |
77 | |
78 def computeCollisionPoints(self, predictionParameters, collisionDistanceThreshold, timeHorizon): | |
79 if self.movingObject1.features and self.movingObject2.features: | |
80 collisionPoints = prediction.computeCollisions(self.movingObject1, self.movingObject2, predictionParameters, collisionDistanceThreshold, timeHorizon) | |
81 self.addIndicator(indicators.SeverityIndicator('collisionPoints', collisionPoints)) | |
82 else: | |
83 print('Features not associated with objects') | |
66 | 84 |
67 def addVideoFilename(self,videoFilename): | 85 def addVideoFilename(self,videoFilename): |
68 self.videoFilename= videoFilename | 86 self.videoFilename= videoFilename |
69 | 87 |
70 def addInteractionType(self,interactionType): | 88 def addInteractionType(self,interactionType): |