예제 #1
0
 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
예제 #2
0
    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),
예제 #3
0
#                                 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..
예제 #4
0
    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),
예제 #5
0
파일: Qsim.py 프로젝트: xjtuwh/carstop
    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
예제 #6
0
# -*- 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()
예제 #7
0
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):