Mercurial > hg > nsaunier > 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): |
