Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [sumo-user] Unexplainable behaviour for lane change mode

The commit hash is embedded in the version info 'ea251014638'. It points to a version that is 20hrs old (https://github.com/eclipse/sumo/commit/ea251014638)
This means there must be some difference between the scenario inputs and options we used.
I've only added the line
'traci.start(['sumo-gui', '-c', 'sumo.cfg.xml'])'
to the script you pasted above as "My TraCI code" and otherwise used the files you attached.
What I observe is a continuous waving pattern of left and right changing but no blockage.


Am Mi., 23. Feb. 2022 um 16:39 Uhr schrieb Hriday Sanghvi via sumo-user <sumo-user@xxxxxxxxxxx>:
Hello Jakob, thank you for your reply.

This is what I got when I ran 'sumo' on the command line from within the docker container:

Eclipse SUMO sumo Version v1_12_0+0785-ea251014638
 Build features: Linux-5.4.0-99-generic x86_64 GNU 7.4.0 Release FMI Proj GUI SWIG GDAL FFmpeg
 Copyright (C) 2001-2022 German Aerospace Center (DLR) and others; https://sumo.dlr.de
 License EPL-2.0: Eclipse Public License Version 2 <https://eclipse.org/legal/epl-v20.html>
 Use --help to get the list of options

I follow a modified version of the Dockerfile as in https://github.com/lcodeca/rllibsumodocker/blob/master/docker-image-linux/Dockerfile so yes, it does build after cloning!

Please advise on how I can get the commit hash?

Thank you.

Sincerely,
Hriday


On Wed, 23 Feb 2022 at 15:25, Jakob Erdmann <namdre.sumo@xxxxxxxxx> wrote:
Depends. Do you actually build sumo after cloning the repo? If not, your traci scrip is still calling an old version from somewhere.
If in doubt, call 'sumo' on the commandline and check the exact version it returns (down to the commit hash).

Am Mi., 23. Feb. 2022 um 15:19 Uhr schrieb Hriday Sanghvi via sumo-user <sumo-user@xxxxxxxxxxx>:
What I am currently using on my Dockerfile is

RUN git clone --recursive --branch main https://github.com/eclipse/sumo.git sumo
 
That still does not solve the https://github.com/eclipse/sumo/issues/10060 problem for me. So am I doing something wrong regarding the updating itself? So would I actually have to download the "zip" file and then unzip it from there locally?

Thank you.

Sincerely,
Hriday


On Wed, 23 Feb 2022 at 13:35, Jakob Erdmann <namdre.sumo@xxxxxxxxx> wrote:
The nightly version is build from branch 'main' at https://github.com/eclipse/sumo and is therefore identical with the "main" branch version (unless the build fails as happened last weekend). Downloading the nightly from today gives you an updated main version that contains all patches for https://github.com/eclipse/sumo/issues/10060
This is in contrast to the release version 1.12.0 which doesn't have those patches.

Am Mi., 23. Feb. 2022 um 14:24 Uhr schrieb Hriday Sanghvi via sumo-user <sumo-user@xxxxxxxxxxx>:
Hello Jakob,

Do I still have to get the nightly version, or can I use the "main" branch version?

Thank you.

Sincerely,
Hriday

On Wed, 23 Feb 2022 at 13:14, Jakob Erdmann <namdre.sumo@xxxxxxxxx> wrote:
I think your video was running with an older version of sumo. The likely reason for this is that our night-build failed for several days in a row.
Running your setup with laneChangeMode=0 now runs to completion without blockage.


Am Mo., 21. Feb. 2022 um 16:11 Uhr schrieb Hriday Sanghvi via sumo-user <sumo-user@xxxxxxxxxxx>:
I am attaching the other relevant files associated with the above Python code!

Thank you.

Sincerely,
Hriday


On Mon, 21 Feb 2022 at 12:26, Jakob Erdmann <namdre.sumo@xxxxxxxxx> wrote:
Looks buggy. Please provide all relevant files for reproducing your scenario.

Am Fr., 18. Feb. 2022 um 14:31 Uhr schrieb Hriday Sanghvi via sumo-user <sumo-user@xxxxxxxxxxx>:
Hello,

As per my understanding, the "duration" argument in the change lane command would keep attempting to change lane to the target lane until the end of that duration or if another TraCI change lane command overrides it. If I set my Lane change mode to 0 (all safety checks and any control by SUMO is gone), then I would expect the below code to get all the vehicles to the end (with collisions).

I have attached a short video to show the behaviour that is observed. Not sure why the vehicles closest to the blockage do not turn to the free lane? (even though their indicator is yellow and shows that they want to change lane?)

My TraCI code:

step = 0
GHOST_POS = 750.0
END = 86400.0
BLOCK_LENGTH = 300

traci.vehicle.add(vehID='ghost', routeID='r0', typeID='veh', depart=0, departLane=0, departPos=GHOST_POS, departSpeed='random', arrivalLane='current', arrivalPos=GHOST_POS)
traci.vehicle.setColor(vehID='ghost',color=(255,0,0))
traci.vehicle.setLength(vehID='ghost',length=BLOCK_LENGTH)

traci.vehicle.setStop(vehID='ghost', edgeID='1f2', pos=GHOST_POS, duration=10, until=END)# flags=0, startPos=0, until=120)

# duration - min duration for stopping
# until - timestep at which the route continues

lane_ids = list(traci.lane.getIDList())

BLOCKED_LANE = 0
FREE_LANE = 1
LC_MODE = 0 # 512 # 1621 # 0 # 512 # 256 # 1109 #
S_MODE = 0
NUMBER_OF_VEH = 100
LC_MAX_DURATION = END

def take_step(step=1):

    lane_info = dict()
    for li in lane_ids:

        lane_info[li] = {
            'mean_speed' : traci.lane.getLastStepMeanSpeed(laneID=li),
            'vehicle_ids' : traci.lane.getLastStepVehicleIDs(laneID=li),
        }

    for vh in lane_info['1f2_1']['vehicle_ids']: # free lane
        if vh == 'ghost':
            continue
        traci.vehicle.setLaneChangeMode(vehID=vh, lcm=LC_MODE)

        traci.vehicle.changeLane(vehID=vh, laneIndex=BLOCKED_LANE, duration=LC_MAX_DURATION)
        print('Vehicle {} will try to move to BLOCKED lane'.format(vh))
 

    for vh in lane_info['1f2_0']['vehicle_ids']: # blocked lane
        if vh == 'ghost':
            continue
       
        traci.vehicle.setLaneChangeMode(vehID=vh, lcm=LC_MODE)
        traci.vehicle.changeLane(vehID=vh, laneIndex=FREE_LANE, duration=LC_MAX_DURATION)
        print('Vehicle {} will try to move to FREE lane'.format(vh))
 

arrived = 0
while arrived < NUMBER_OF_VEH:

    print('################ SIM TIME: {} ##################'.format(traci.simulation.getTime()))
    print('################ SIM STEP COUNT: {} ################'.format(step))
    step+=1
    print('\n')

    take_step(step)
   
    print('Arrived: {}'.format(arrived))
    traci.simulationStep()
 
traci.close()

Thank you.

Sincerely,
Hriday
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user

Back to the top