def setLaneChangeMode(vehID, lcm): """setLaneChangeMode(string, integer) -> None Sets the vehicle's lane change mode as a bitset. """ traci._sendIntCmd( tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_LANECHANGE_MODE, vehID, lcm)
def setSignals(vehID, signals): """setSignals(string, integer) -> None Sets an integer encoding the state of the vehicle's signals. """ traci._sendIntCmd( tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SIGNALS, vehID, signals)
def doStep(): state.step += 1 if setting.verbose: print("step", state.step) traci.simulationStep() # adding new vehicles, if any departed = traci.simulation.getSubscriptionResults()[ tc.VAR_DEPARTED_VEHICLES_IDS] for v in departed: traci.vehicle.subscribe(v, dataFromTraciState) vehicleSetParams[v] = getSetParams(v) if v == 'ego': thisv = egov else: thisv = alterv controllers[v] = Controllers.Inter1Constant(v, thisv) #getController(v, vehicleSetParams[v]) if controllers[v] is not None: if setting.verbose: print("allowing forward and lane crashes for", v) traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SPEEDSETMODE, v, controllers[v].speedMode) traci.vehicle.setLaneChangeMode(v, controllers[v].laneChangeMode) # gather vehicle states for this step vStates = {} for vehID, subs in traci.vehicle.getSubscriptionResults().iteritems(): tempParams = getFromSubscription(vehID, subs, dataFromTraciState) vStates[vehID] = VState(tempParams + vehicleSetParams[vehID]) # for vehID, vState in vStates.iteritems(): sensor = sensorToUse(vState, realign=True) # for otherID, otherState in vStates.iteritems(): if vehID != otherID: # # check for collisions if collisionCheck.check(vState, otherState): #print "collision! pos",vState.x,vState.y,"step",state.step if state.collisionOccurred <= 0: state.collisionOccurred = state.step * .1 break # # update sensor sensor.addObstacle(otherState) # if setting.verbose: for vstat in sensor.getObstacles(): print(vehID, "detects", vstat.x, vstat.y, "speed", vstat.speed) # store this vehicle movement output.add([[ state.step * .1, vehID, vState.x, vState.y, vState.angle, vState.speed ]]) # use data to decide speed if controllers[vehID] is not None: controllers[vehID].updateSpeed(vState.speed) commandedSpeed = controllers[vehID].nextStep(sensor.getObstacles()) traci.vehicle.setSpeed(vehID, commandedSpeed) if setting.verbose: print("setting speed", commandedSpeed)
def setSpeedMode(vehID, sm): """setLaneChangeMode(string, integer) -> None Sets the vehicle's speed mode as a bitset. """ traci._sendIntCmd( tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SPEEDSETMODE, vehID, sm)
def setSignals(vehID, signals): """setSignals(string, integer) -> None Sets an integer encoding the state of the vehicle's signals. """ traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SIGNALS, vehID, signals)
def setLaneChangeMode(vehID, lcm): """setLaneChangeMode(string, integer) -> None Sets the vehicle's lane change mode as a bitset. """ traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_LANECHANGE_MODE, vehID, lcm)
def _createVehicle(self, vehID, laneID, pos=0): routeID = _edge(laneID) laneIndex = int(laneID[laneID.rfind('_') + 1:]) traci.vehicle.add(vehID, routeID, pos=pos, lane=laneIndex) traci._sendIntCmd(traci.constants.CMD_SET_VEHICLE_VARIABLE, traci.constants.VAR_SPEEDSETMODE, vehID, 0) traci.vehicle.setLaneChangeMode(vehID, 0) traci.simulationStep()
def _createVehicle(self,vehID, laneID, pos=0): routeID = _edge(laneID) laneIndex = int( laneID[laneID.rfind('_')+1:] ) traci.vehicle.add(vehID,routeID,pos=pos,lane=laneIndex) traci._sendIntCmd(traci.constants.CMD_SET_VEHICLE_VARIABLE, traci.constants.VAR_SPEEDSETMODE, vehID, 0) traci.vehicle.setLaneChangeMode(vehID, 0) traci.simulationStep()
def doStep(): state.step += 1 if setting.verbose: print("step",state.step) traci.simulationStep() # adding new vehicles, if any departed = traci.simulation.getSubscriptionResults()[tc.VAR_DEPARTED_VEHICLES_IDS] for v in departed: traci.vehicle.subscribe(v,dataFromTraciState) vehicleSetParams[v] = getSetParams(v) if v=='ego': thisv = egov else: thisv = alterv controllers[v] = Controllers.Inter1Constant(v, thisv) #getController(v, vehicleSetParams[v]) if controllers[v] is not None: if setting.verbose: print("allowing forward and lane crashes for",v) traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SPEEDSETMODE, v, controllers[v].speedMode) traci.vehicle.setLaneChangeMode(v, controllers[v].laneChangeMode) # gather vehicle states for this step vStates = {} for vehID, subs in traci.vehicle.getSubscriptionResults().iteritems(): tempParams = getFromSubscription(vehID, subs, dataFromTraciState) vStates[vehID] = VState( tempParams + vehicleSetParams[vehID] ) # for vehID, vState in vStates.iteritems(): sensor = sensorToUse(vState, realign=True) # for otherID, otherState in vStates.iteritems(): if vehID != otherID: # # check for collisions if collisionCheck.check(vState, otherState): #print "collision! pos",vState.x,vState.y,"step",state.step if state.collisionOccurred <= 0: state.collisionOccurred = state.step*.1 break # # update sensor sensor.addObstacle(otherState) # if setting.verbose: for vstat in sensor.getObstacles(): print(vehID, "detects", vstat.x, vstat.y,"speed",vstat.speed) # store this vehicle movement output.add([[state.step*.1, vehID, vState.x, vState.y, vState.angle, vState.speed]]) # use data to decide speed if controllers[vehID] is not None: controllers[vehID].updateSpeed(vState.speed) commandedSpeed = controllers[vehID].nextStep(sensor.getObstacles()) traci.vehicle.setSpeed(vehID, commandedSpeed) if setting.verbose: print("setting speed", commandedSpeed)
def doStep(): step.step += 1 if setting.verbose: print "step", step.step traci.simulationStep() # adding new vehicles, if any departed = traci.simulation.getSubscriptionResults()[tc.VAR_DEPARTED_VEHICLES_IDS] for v in departed: traci.vehicle.subscribe(v,dataFromTraciState) vehicleSetParams[v] = getSetParams(v) controllers[v] = getController(v, vehicleSetParams[v]) if controllers[v] is not None: #True if setting.verbose: print "allowing forward and lane crashes for",v traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SPEEDSETMODE, v, 22) traci.vehicle.setLaneChangeMode(v, 85) #traci.vehicle.changeLane(v, 0, 10000) # gather vehicle states for this step vStates = {} for vehID, subs in traci.vehicle.getSubscriptionResults().iteritems(): tempParams = getFromSubscription(vehID, subs, dataFromTraciState) vStates[vehID] = VState( tempParams + vehicleSetParams[vehID] ) # for vehID, vState in vStates.iteritems(): sensor = sensorToUse(vState) # for otherID, otherState in vStates.iteritems(): if vehID != otherID: # # check for collisions if collisionCheck.check(vState, otherState): print "collision! pos",vState.x,vState.y,"step",step.step setting.collisionOccurred = True break # # update sensor sensor.addObstacle(otherState) # if setting.verbose: for vstat in sensor.getObstacles(): print vehID, "detects", vstat.x, vstat.y,"speed",vstat.speed # use data to decide speed if controllers[vehID] is not None: controllers[vehID].updateSpeed(vState.speed) commandedSpeed = controllers[vehID].nextStep(sensor.getObstacles()) traci.vehicle.setSpeed(vehID, commandedSpeed) if setting.verbose: print "setting speed", commandedSpeed
def setPhase(tlsID, index): traci._sendIntCmd(tc.CMD_SET_TL_VARIABLE, tc.TL_PHASE_INDEX, tlsID, index)
def setPhaseDuration(tlsID, phaseDuration): traci._sendIntCmd(tc.CMD_SET_TL_VARIABLE, tc.TL_PHASE_DURATION, tlsID, int(1000*phaseDuration))
def setPhase(tlsID, index): """setPhase(string, integer) -> None . """ traci._sendIntCmd(tc.CMD_SET_TL_VARIABLE, tc.TL_PHASE_INDEX, tlsID, index)
def setSignals(vehID, signals): traci._sendIntCmd(tc.CMD_SET_VEHICLE_VARIABLE, tc.VAR_SIGNALS, vehID, signals)
def setPhaseDuration(tlsID, phaseDuration): traci._sendIntCmd(tc.CMD_SET_TL_VARIABLE, tc.TL_PHASE_DURATION, tlsID, int(1000 * phaseDuration))