# HG changeset patch # User Nicolas Saunier # Date 1392318652 18000 # Node ID c59a47ce02092fdb06bc57ac7e0ac3a226469c85 # Parent cd342a7748062b66d459a47c2bf028cef6b2bff4 reorganized interactioninterval (in compute indicators) and comments diff -r cd342a774806 -r c59a47ce0209 python/events.py --- a/python/events.py Thu Feb 13 01:24:27 2014 -0500 +++ b/python/events.py Thu Feb 13 14:10:52 2014 -0500 @@ -86,6 +86,7 @@ velocityAngles = {} distances = {}#[0]*int(self.timeInterval.length()) speedDifferentials = {} + interactionInstants = [] for instant in self.timeInterval: deltap = self.roadUser1.getPositionAtInstant(instant)-self.roadUser2.getPositionAtInstant(instant) v1 = self.roadUser1.getVelocityAtInstant(instant) @@ -95,18 +96,20 @@ collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) distances[instant] = deltap.norm2() speedDifferentials[instant] = deltav.norm2() - #if collisionCourseDotProducts[instant] > 0: + if collisionCourseDotProducts[instant] > 0: + interactionInstants.append(instant) collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) - # todo shorten the time intervals based on the interaction definition + if len(interactionInstants) >= 2: + self.interactionInterval = moving.TimeInterval(interactionInstants[0], interactionInstants[-1]) + else: + self.interactionInterval = moving.TimeInterval() self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[0], collisionCourseDotProducts)) self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[1], collisionCourseAngles)) self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[2], distances)) self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[4], velocityAngles)) self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[5], speedDifferentials)) - # todo test for interaction instants and interval, compute indicators - # if we have features, compute other indicators if self.roadUser1.features != None and self.roadUser2.features != None: minDistance={} @@ -145,18 +148,6 @@ ''' interaction types: conflict or collision if they are known''' self.interactionType= interactionType - def computeInteractionInterval(self): - ''' Computes the times during which the road users are getting closer, - ie the collision course angle is positive - (Other thresholds/indicators could be tried)''' - collisionCourseDotProducts = self.getIndicator(Interaction.indicatorNames[0]) - inter = collisionCourseDotProducts.getTimeInterval() - interactionInstants = [t for t in inter if collisionCourseDotProducts[t] >= 0] - if len(interactionInstants) >= 2: - self.interactionInterval = moving.TimeInterval(interactionInstants[0], interactionInstants[-1]) - else: - self.interactionInterval = moving.TimeInterval() - def createInteractions(objects): '''Create all interactions of two co-existing road users @@ -176,7 +167,8 @@ Returns the prototype indices (in the interaction list) and the label of each indicator (interaction) if an indicator profile (time series) is different enough (