It doesn't help, using right-hand drive is giving me that error. Can you
please go through the python code once. Corrected attachment is sent with
this mail.
Regards

On Wed, Aug 1, 2018 at 2:27 AM Jakob Erdmann <[email protected]> wrote:

> The right of way rules are obviously different but apart from that, the
> largest difference is the lane numbering which you already encountered.
>
> 2018-07-31 19:19 GMT+02:00 himanshu soni <[email protected]>:
>
>> Yes, it's left hand drive. Can you tell me what all things change in left
>> hand drive?
>> Thank you
>>
>> On Tue, Jul 31, 2018, 10:28 PM Jakob Erdmann <[email protected]>
>> wrote:
>>
>>> Are you simulating left-hand traffic? In that case the lane numbering
>>> would be reversed.
>>>
>>> 2018-07-31 18:03 GMT+02:00 himanshu soni <[email protected]>:
>>>
>>>> I don't understand why I'm getting the error in using the function
>>>> couldChangeLane(), the error gets resolved when I define the right lane
>>>> with value 1 and left with -1, but the converse is the true version of it.
>>>> Help me understand if this is kind of logical error or something else.
>>>>
>>>>
>>>> _______________________________________________
>>>> sumo-user mailing list
>>>> [email protected]
>>>> To change your delivery options, retrieve your password, or unsubscribe
>>>> from this list, visit
>>>> https://dev.eclipse.org/mailman/listinfo/sumo-user
>>>>
>>>>
>>> _______________________________________________
>>> sumo-user mailing list
>>> [email protected]
>>> To change your delivery options, retrieve your password, or unsubscribe
>>> from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/sumo-user
>>>
>>
>> _______________________________________________
>> sumo-user mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/sumo-user
>>
>>
> _______________________________________________
> sumo-user mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/sumo-user
>
from __future__ import absolute_import
from __future__ import print_function

import os
import sys
import optparse

# we need to import python modules from the $SUMO_HOME/tools directory
try:
    sys.path.append(os.path.join(os.path.dirname(
        __file__), '..', '..', '..', '..', "tools"))  # tutorial in tests
    sys.path.append(os.path.join(os.environ.get("SUMO_HOME", os.path.join(
        os.path.dirname(__file__), "..", "..", "..")), "tools"))  # tutorial in 
docs
    from sumolib import checkBinary  # noqa
except ImportError:
    sys.exit(
        "please declare environment variable 'SUMO_HOME' as the root directory 
of your sumo installation (it should contain folders 'bin', 'tools' and 
'docs')")
import sumolib
import traci

net = sumolib.net.readNet("net6.net.xml", withInternal=True)


def run():
    step = 0
    # time t = 150s, vehicle is added to the traffic.
    while step < 150:
        traci.simulationStep()
        step += 1
        # no_of_vehicle = traci.vehicle.getIDCount()
        # obj = open("no_of_vehicle.txt", 'a')
        # obj.write(str(step) + "," + str(no_of_vehicle) + '\n')
        # obj.close()
    traci.route.add("trip1", ["gneE4", "gneE20"])
    traci.vehicle.add("newVeh1", "trip1", typeID="reroutingType")

    # time t = 3000s, the simulation is ended.
    while step < 3000:
        traci.simulationStep()
        step += 1
        # no_of_vehicle = traci.vehicle.getIDCount()
        # obj1 = open("no_of_vehicle.txt", 'a')
        # obj1.write(str(step) + "," + str(no_of_vehicle) + '\n')

        # to get instantaneous speed and distance for "newVeh1" vehicle.
        if "newVeh1" in traci.vehicle.getIDList():
            # speed = traci.vehicle.getSpeed("newVeh1")
            # distance = traci.vehicle.getDistance("newVeh1")
            # obj2 = open("distanceInfo.txt", 'a')
            # obj2.write(str(step) + "," + str(distance) + '\n')
            # obj3 = open("speedInfo.txt", 'a')
            # obj3.write(str(step) + "," + str(speed) + '\n')

            # to check the condition for Lane Change.
            leaderVehicle = traci.vehicle.getLeader("newVeh1")
            currentLane = traci.vehicle.getLaneIndex("newVeh1")

            defaultMinGap = traci.vehicle.getMinGap("newVeh1")
            safetyOffset = 10
            definedMinGap = defaultMinGap + safetyOffset
            if leaderVehicle == None:
                pass
            else:
                leaderVehicleDistance = leaderVehicle[1]
                if leaderVehicleDistance <= 100:
                    if currentLane == 0:
                        # int = 1 is for the left lane change state
                        changeLeftLaneState0 = 
traci.vehicle.couldChangeLane("newVeh1", 1)
                        if changeLeftLaneState0 == True:
                            currentLane = currentLane + 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        else:
                            pass
                    elif currentLane == 1:
                        # int = -1 is for the right lane change state
                        changeRightLaneState1 = 
traci.vehicle.couldChangeLane("newVeh1", -1)
                        # int = 1 is for the left lane change
                        changeLeftLaneState1 = 
traci.vehicle.couldChangeLane("newVeh1", 1)
                        if changeRightLaneState1 == True:
                            currentLane = currentLane - 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        elif changeLeftLaneState1 == True:
                            currentLane = currentLane + 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        else:
                            pass
                    elif currentLane == 2:
                        # int = 1 is for the left lane change state
                        changeLeftLaneState2 = 
traci.vehicle.couldChangeLane("newVeh1", 1)
                        # int = -1 is for the right lane change state
                        changeRightLaneState2 = 
traci.vehicle.couldChangeLane("newVeh1", -1)
                        if changeLeftLaneState2 == True:
                            currentLane = currentLane + 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        elif changeRightLaneState2 == True:
                            currentLane = currentLane - 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        else:
                            pass
                    elif currentLane == 3:
                        # int = 1 is for the left lane change state
                        changeLeftLaneState3 = 
traci.vehicle.couldChangeLane("newVeh1", 1)
                        # int = -1 is for the right lane change state
                        changeRightLaneState3 = 
traci.vehicle.couldChangeLane("newVeh1", -1)
                        if changeLeftLaneState3 == True:
                            currentLane = currentLane + 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        elif changeRightLaneState3 == True:
                            currentLane = currentLane - 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        else:
                            pass
                    elif currentLane == 4:
                        # int = 1 is for the left lane change state
                        changeLeftLaneState4 = 
traci.vehicle.couldChangeLane("newVeh1", 1)
                        # int = -1 is for the right lane change state
                        changeRightLaneState4 = 
traci.vehicle.couldChangeLane("newVeh1", -1)
                        if changeLeftLaneState4 == True:
                            currentLane = currentLane + 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        elif changeRightLaneState4 == True:
                            currentLane = currentLane - 1
                            traci.vehicle.changeLane("newVeh1", currentLane, 
2000)
                        else:
                            pass
                    else:
                        pass
                else:
                    pass

            # t = traci.vehicle.couldChangeLane("newVeh1", 0)
            # lane = traci.vehicle.getRoadID("newVeh1")
            # lane  = lane + "_0"
            # lane = traci.vehicle.getLanePosition("newVeh1")
            # print(str(step) + "," + str(width))
            # print(str(step) + "," + str(t))

    # obj1.write("\n")
    # obj2.write("\n")
    # obj3.write("\n")
    # obj1.close()
    # obj2.close()
    # obj3.close()
    traci.close()
    sys.stdout.flush()


def get_options():
    optParser = optparse.OptionParser()
    optParser.add_option("--nogui", action="store_true",
                         default=False, help="run the commandline version of 
sumo")
    options, args = optParser.parse_args()
    return options


if __name__ == "__main__":
    options = get_options()

    if options.nogui:
        sumoBinary = checkBinary('sumo')
    else:
        sumoBinary = checkBinary('sumo-gui')

    # traci.start(
    #    [sumoBinary, "-c", "config_file5.sumocfg", "--tripinfo-output", 
"tripinfo.xml", "--netstate-dump",
    #     "netstate_dump.xml", "--ignore-route-errors"])
    traci.start(
        [sumoBinary, "-c", "config_file5.sumocfg", "--tripinfo-output", 
"tripinfo.xml", "--ignore-route-errors"])
    run()
_______________________________________________
sumo-user mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/sumo-user

Reply via email to