maxTime = 100 # seconds ## run simulation while ttime < maxTime and err == 0 and np.any(cars['status']<=0): # create new vehicles for carID in np.where(cars['status']<0)[0]: car = cars.iloc[carID] if car['time'] <= ttime: err += Sim.createVehicle(str(carID), car['lane'], 0.) # need to create an Agent? cars['status'].iloc[carID] = 0 # gather vehicle info for carID in np.where(cars['status']==0)[0]: carLane,carLanePos,carPos,carAngle = Sim.getVehicleState(str(carID)) if carLane[1] == 'o': cars['status'] = 1 cars['lane'].iloc[carID] = carLane cars['lanepos'].iloc[carID] = carLanePos cars['x'].iloc[carID] = carPos[0] cars['y'].iloc[carID] = carPos[1] cars['angle'].iloc[carID] = carAngle if carLane[1] == 'i': # not in intersection yet cars['ilane'].iloc[carID] = next((k for i,j,k in intersectionLookUp if i==carLane and j==cars['dest'].iloc[carID])) else: cars['ilane'].iloc[carID] = carLane # check for collisions
err += Sim.createVehicle('ego','1i_0',0.) egoSpeed = 25. err += Sim.createVehicle('left','3i_1',0.) leftSpeed = 20. params_iter = pd.DataFrame([[egoSpeed, leftSpeed, 0., 0., -1., 'na']], columns=ParameterColumns) output = None ttime = 0 maxTime = 100 # seconds ## run simulation while ttime < maxTime: # get info on this step egoLane,egoLanePos,egoPos,egoAngle = Sim.getVehicleState('ego') leftLane,leftLanePos,leftPos,leftAngle = Sim.getVehicleState('left') # save egoState = [ttime, 'ego', egoPos[0], egoPos[1], egoAngle, egoSpeed] leftState = [ttime, 'left', leftPos[0], leftPos[1], leftAngle, leftSpeed] if output is None: output = pd.DataFrame([egoState, leftState]) else: output = output.append([egoState, leftState]) # check for first collision - others too difficult to store.. if params_iter['Collision Time'].iloc[0] < 0: egoObject = pd.Series(egoState[2:5] + list(VEHsize), index=collisionCheck.collisionVars) leftObject = pd.Series(leftState[2:5] + list(VEHsize),
# egoControl.accel, leadControl.accel, # leadControl.brakeMagnitude, leadControl.brakeTime, # -1.]], columns=ParameterColumns) params_iter = pd.DataFrame([[egoControl.speed, leadControl.speed, -1.]], columns=ParameterColumns) output = None ttime = 0 maxTime = 100 # seconds lanelength = Sim.getLaneInfo('main_0')[0] ## run simulation while ttime < maxTime: # get info on this step aa,egoLanePos,egoPos,egoAngle = Sim.getVehicleState('ego') aa,leadLanePos,leadPos,leadAngle = Sim.getVehicleState('lead') egoControl.update(DELTAT) leadControl.update(DELTAT) egoSpeed = egoControl.nextStep() leadSpeed = leadControl.nextStep() # save egoState = [ttime, 'ego', egoPos[0], egoPos[1], egoAngle, egoSpeed] leadState = [ttime, 'lead', leadPos[0], leadPos[1], leadAngle, leadSpeed] if output is None: output = pd.DataFrame([egoState, leadState]) else: output = output.append([egoState, leadState]) # check for first collision - others too difficult to store..
err += Sim.createVehicle('ego', '1i_0', 0.) egoSpeed = 25. err += Sim.createVehicle('left', '3i_1', 0.) leftSpeed = 20. params_iter = pd.DataFrame([[egoSpeed, leftSpeed, 0., 0., -1., 'na']], columns=ParameterColumns) output = None ttime = 0 maxTime = 100 # seconds ## run simulation while ttime < maxTime: # get info on this step egoLane, egoLanePos, egoPos, egoAngle = Sim.getVehicleState('ego') leftLane, leftLanePos, leftPos, leftAngle = Sim.getVehicleState('left') # save egoState = [ttime, 'ego', egoPos[0], egoPos[1], egoAngle, egoSpeed] leftState = [ ttime, 'left', leftPos[0], leftPos[1], leftAngle, leftSpeed ] if output is None: output = pd.DataFrame([egoState, leftState]) else: output = output.append([egoState, leftState]) # check for first collision - others too difficult to store.. if params_iter['Collision Time'].iloc[0] < 0: egoObject = pd.Series(egoState[2:5] + list(VEHsize),
maxTime = 100 # seconds ## run simulation while ttime < maxTime and err == 0 and np.any(cars['status'] <= 0): # create new vehicles for carID in np.where(cars['status'] < 0)[0]: car = cars.iloc[carID] if car['time'] <= ttime: err += Sim.createVehicle(str(carID), car['lane'], 0.) # need to create an Agent? cars['status'].iloc[carID] = 0 # gather vehicle info for carID in np.where(cars['status'] == 0)[0]: carLane, carLanePos, carPos, carAngle = Sim.getVehicleState( str(carID)) if carLane[1] == 'o': cars['status'] = 1 cars['lane'].iloc[carID] = carLane cars['lanepos'].iloc[carID] = carLanePos cars['x'].iloc[carID] = carPos[0] cars['y'].iloc[carID] = carPos[1] cars['angle'].iloc[carID] = carAngle if carLane[1] == 'i': # not in intersection yet cars['ilane'].iloc[carID] = next( (k for i, j, k in intersectionLookUp if i == carLane and j == cars['dest'].iloc[carID])) else: cars['ilane'].iloc[carID] = carLane # check for collisions
# -*- coding: utf-8 -*- """ Created on Tue Nov 17 20:13:37 2015 @author: motro """ from sumoMethods import Sumo configuration = 'emptyhighway' sim = Sumo(configuration, gui=True) sim.createVehicle('a','main_0',40) [lane,lanex,xy] = sim.getVehicleState('a') print 'a, 0: '+str(xy[0]) sim.createVehicle('b','main_0') [lane,lanex,xy] = sim.getVehicleState('b') print 'b, 0: '+str(xy[0]) sim.moveVehicleAlong('b',38) [lane,lanex,xy] = sim.getVehicleState('a') print 'a, 1: '+str(xy[0]) [lane,lanex,xy] = sim.getVehicleState('b') print 'b, 1: '+str(xy[0]) sim.end()
err = 0 Sim = Sumo(configuration,gui=True) # first gather the possible positions/angles of each intersection lane allcars = {} for start, end, road in intersectionLookUp: print "at "+road err += Sim.createVehicle(road, start, 90.) err += Sim.moveVehicleAlong(road, 0.1, end) thisdf = WriteFrame(['x','y','angle','length','width','lp']) dist = 1. status = -1 totaldist = 0 while status < 1 and totaldist < 50: lane,lanepos,pos,angle = Sim.getVehicleState(road) status = (lane[1]=='o')-(lane[1]=='i') if status == 0: #add vehicle info to the dataframe thisdf.add([[pos[0],pos[1],angle,VEHsize[0],VEHsize[1],lanepos]]) Sim.moveVehicleAlong(road, dist) totaldist += dist time.sleep(.05) # might guard against freeze allcars[road] = thisdf.out() Sim.removeVehicle(road) Sim.end() # now use dataframes of position+angle to find collision points collisions = WriteFrame(['lane','lane2','begin_lp','end_lp']) for an in range(len(intersectionLookUp)): for bn in range(an):