Ejemplo n.º 1
0
 def addObstacle(self,vstate):
     
     # model all sensor errors as Gaussian
     positionErrorSD = 4. * .25 / 2.  # meters
     speedErrorSD = 5.*.447 * .25 / 2. # meters/second
     
     detected = (distance(self.state, vstate) <= self.commRange1 and
                 self.inScope(vstate,self.scope1) ) or (
                 distance(self.state, vstate) <= self.commRange2 and
                 self.inScope(vstate,self.scope2) )
     
     if not detected:
         if self.allowComm:   # using DSRC instead
             positionErrorSD = 4. * 1.1 / 2.
             speedErrorSD = 5.*.447 * 1.1 / 2.
         else:
             return
     
     if self.realign:
         trueObstacle = realignV(self.state, vstate)
     else:
         trueObstacle = vstate.copy()
     trueObstacle.x = random.gauss(trueObstacle.x, positionErrorSD)
     trueObstacle.y = random.gauss(trueObstacle.y, positionErrorSD)
     trueObstacle.speed = random.gauss(trueObstacle.speed, speedErrorSD)
     
     
     self.obstacles.append(trueObstacle)
Ejemplo n.º 2
0
    def addObstacle(self, vstate):

        # model all sensor errors as Gaussian
        positionErrorSD = 4. * .25 / 2.  # meters
        speedErrorSD = 5. * .447 * .25 / 2.  # meters/second

        detected = (distance(self.state, vstate) <= self.commRange1
                    and self.inScope(vstate, self.scope1)) or (
                        distance(self.state, vstate) <= self.commRange2
                        and self.inScope(vstate, self.scope2))

        if not detected:
            if self.allowComm:  # using DSRC instead
                positionErrorSD = 4. * 1.1 / 2.
                speedErrorSD = 5. * .447 * 1.1 / 2.
            else:
                return

        if self.realign:
            trueObstacle = realignV(self.state, vstate)
        else:
            trueObstacle = vstate.copy()
        trueObstacle.x = random.gauss(trueObstacle.x, positionErrorSD)
        trueObstacle.y = random.gauss(trueObstacle.y, positionErrorSD)
        trueObstacle.speed = random.gauss(trueObstacle.speed, speedErrorSD)

        self.obstacles.append(trueObstacle)
Ejemplo n.º 3
0
    def addObstacle(self,vstate):
        
        # model all sensor errors as Gaussian
        positionErrorSD = 4. * self.noiseLevel / 2.  # meters
        speedErrorSD = 5.*.447 * self.noiseLevel / 2. # meters/second
        #angleErrorSD = .1 * self.noiseLevel       # radians
        #accelErrorSD = .2 * self.noiseLevel      # meters/second^2
        # not sending acceleration atm...       
        
#        if vstate.vehID == self.state.vehID: # accidentally sensing yourself
#            return
        if distance(self.state, vstate) > self.maxCommunicationRange:
            return
        if random.uniform(0,1) < self.packetLossRate:
            return
        
        if self.realign:
            trueObstacle = realignV(self.state, vstate)
        else:
            trueObstacle = vstate.copy()
        trueObstacle.x = random.gauss(trueObstacle.x, positionErrorSD)
        trueObstacle.y = random.gauss(trueObstacle.y, positionErrorSD)
        trueObstacle.speed = random.gauss(trueObstacle.speed, speedErrorSD)
        # for now ignore angle error, since we're dealing with straight roads
        
        
        self.obstacles.append(trueObstacle)
Ejemplo n.º 4
0
    def addObstacle(self, vstate):
                # model all sensor errors as Gaussian
        positionErrorSD = 2. * self.noiseLevel / 2.  # meters
        speedErrorSD = 2.*.447 * self.noiseLevel / 2. # meters/second
        #angleErrorSD = .1 * self.noiseLevel       # radians
        #accelErrorSD = .2 * self.noiseLevel      # meters/second^2
        # not sending acceleration atm...       
        
        unitThatWorks = None
        unitsThatWork = (unit for unit in self.units if
                                self._withinRSUrange(unit, vstate))
        try:
            while unitThatWorks is None:
                unit = unitsThatWork.next()
                #unitState = {'x':unit[0], 'y':unit[1], 'angle':unit[2]}
                unitState = Series(unit,index=['x','y','angle'])                
                if distance(self.state, unitState) <= self.maxCommunicationRange:
                    unitThatWorks = unit
        except StopIteration:
            return   # no units detected this vehicle, and can communicate

        if random.uniform(0,1) < self.packetLossRate:
            return
        
        if self.realign:
            trueObstacle = realignV(self.state, vstate)
        else:
            trueObstacle = vstate.copy()
        trueObstacle.x = random.gauss(trueObstacle.x, positionErrorSD)
        trueObstacle.y = random.gauss(trueObstacle.y, positionErrorSD)
        trueObstacle.speed = random.gauss(trueObstacle.speed, speedErrorSD)
        #trueObstacle.Acceleration is same
        # for now ignore angle error, since we're dealing with straight roads
        
        self.obstacles.append(trueObstacle)
Ejemplo n.º 5
0
 def addObstacle(self,vstate):
     radius = 20   # meters
     positionSD = .25
     
     if vstate.vehID == self.state.vehID:
         return
     if distance(self.state, vstate) > radius:
         return
     trueObstacle = realignV(self.state, vstate)
     trueObstacle.x = random.gauss(trueObstacle.x, positionSD)
     trueObstacle.y = random.gauss(trueObstacle.y, positionSD)
     self.obstacles.append(trueObstacle)
Ejemplo n.º 6
0
    def addObstacle(self, vstate):
        radius = 20  # meters
        positionSD = .25

        if vstate.vehID == self.state.vehID:
            return
        if distance(self.state, vstate) > radius:
            return
        trueObstacle = realignV(self.state, vstate)
        trueObstacle.x = random.gauss(trueObstacle.x, positionSD)
        trueObstacle.y = random.gauss(trueObstacle.y, positionSD)
        self.obstacles.append(trueObstacle)
Ejemplo n.º 7
0
 def addObstacle(self,vstate):
     
     # model all sensor errors as Gaussian
     positionErrorSD = 4. * self.noiseLevel / 2.  # meters
     speedErrorSD = 5.*.447 * self.noiseLevel / 2. # meters/second
     
     if distance(self.state, vstate) > self.maxCommunicationRange:
         return
     if not self.inRange(realignV(self.state,vstate)):
         return
     if random.uniform(0,1) < self.packetLossRate:
         return
     
     if self.realign:
         trueObstacle = realignV(self.state, vstate)
     else:
         trueObstacle = vstate.copy()
     trueObstacle.x = random.gauss(trueObstacle.x, positionErrorSD)
     trueObstacle.y = random.gauss(trueObstacle.y, positionErrorSD)
     trueObstacle.speed = random.gauss(trueObstacle.speed, speedErrorSD)
     # for now ignoring angle error
     
     
     self.obstacles.append(trueObstacle)