Great, thank you very much, you’ve been very helpful Jakob !
Have a good day and a good weekend,
Adrien
De : sumo-dev <sumo-dev-bounces@xxxxxxxxxxx>
De la part de Jakob Erdmann
Envoyé : Thursday, November 11, 2021 5:20 PM
À : sumo developer discussions <sumo-dev@xxxxxxxxxxx>
Objet : Re: [sumo-dev] Retrieving the type of Junction
Q1: yes. The length always corresponds to the length of the state string for that junction.
Thank you very much again for your time Jakob !
I have probably what should be my last 2 questions about this subject.
For example, with this junction ID “108103” :
{
"crosswalks_lanes_id": [
"-4259614#1_1",
"-4259614#1_1",
"-4259614#1_1",
"-4259614#1_1",
"102950257#4_1",
"102950257#4_1",
"102950257#4_1",
"102950257#4_1",
"320718063#10_1",
"320718063#10_1",
"320718063#10_1",
"320718063#10_1",
"-102950257#7_1",
"-102950257#7_1",
"-102950257#7_1",
"-102950257#7_1",
":108103_w1_0",
":108103_w2_0",
":108103_w3_0",
":108103_w0_0"
],
"crosswalks_link_fromLane": [
"-4259614#1_1",
"-4259614#1_1",
"-4259614#1_1",
"-4259614#1_1",
"102950257#4_1",
"102950257#4_1",
"102950257#4_1",
"102950257#4_1",
"320718063#10_1",
"320718063#10_1",
"320718063#10_1",
"320718063#10_1",
"-102950257#7_1",
"-102950257#7_1",
"-102950257#7_1",
"-102950257#7_1",
":108103_w1_0",
":108103_w2_0",
":108103_w3_0",
":108103_w0_0"
],
"crosswalks_link_toLane": [
"102950257#6_1",
"-320718063#11_1",
"-102950257#5_1",
"4259614#0_1",
"4259614#0_1",
"102950257#6_1",
"-320718063#11_1",
"-102950257#5_1",
"-102950257#5_1",
"4259614#0_1",
"102950257#6_1",
"-320718063#11_1",
"-320718063#11_1",
"-102950257#5_1",
"4259614#0_1",
"102950257#6_1",
":108103_c0_0",
":108103_c1_0",
":108103_c2_0",
":108103_c3_0"
],
"crosswalks_link_viaLane": [
":108103_0_0",
":108103_1_0",
":108103_2_0",
":108103_3_0",
":108103_4_0",
":108103_5_0",
":108103_6_0",
":108103_7_0",
":108103_8_0",
":108103_9_0",
":108103_10_0",
":108103_11_0",
":108103_12_0",
":108103_13_0",
":108103_14_0",
":108103_15_0",
"",
"",
"",
""
],
"junction_id": "108103"
}
It looks like that junction has a total (cars + pedestrians) of 20 lanes.
Q1 – it seems the number of lanes (20) is the same for "crosswalks_lanes_id", "crosswalks_link_fromLane", "crosswalks_link_toLane" and "crosswalks_link_viaLane",
the only difference being that some are empty strings for that last “category”. Does that mean it’s the same for all junctions ?
Q2 – I retrieved the traffic light state for that junction and it gave me “rrrrgGggrrrrgGggrrrr”
at some time, then “rrrrgGggrrrrgGggGrGr” later on.
If I refer to your previous emails, should I understand that :
-
The state of crossing ":108103_c0_0” is the one I highlighted in yellow ?
-
The state of crossing ":108103_c1_0” is the one I highlighted in green ?
-
The state of crossing ":108103_c2_0” is the one I highlighted in blue ?
-
The state of crossing ":108103_c3_0” is the one I highlighted in purple ?
Regards,
Adrien
In all "default" networks generated by netconvert, you only need to consider the state of the connection that targets a crossing.
For this you must locate the index of the crossing within the list returned by trafficlight.getControlledLinks. (crossings will be at the end of the list).
This index corresponds to the index within the 'state' string of the current phase and the state code (G/r) will describe both sides of the crossing.
Caveat: It is possible two control both sides of a pedestrian crossing with different signal states. Contrary to my previous message, this will lead to controlled
links of the form where the crossings is the fromLane:
[[('EC_0', 'CW_0', ':C_0_0')], [('EC_1', 'CW_1', ':C_0_1')], [('WC_0', 'CE_0', ':C_2_0')], [('WC_1', 'CE_1', ':C_2_1')], [(':C_w2_0', ':C_c1_0', '')],
[(':C_c1_0', ':C_w0_0', '')], [(':C_w1_0', ':C_c2_0', '')], [(':C_c2_0', ':C_w2_0', '')]]
If I want to retrieve the signal state of each pedestrians crosswalk light, do I need to focus on anything else than the state of the <JUNCTIONID>_c<index>_0
IDs ?
For example, for this junction :
{
"crosswalks_lanes_id": [
"230506730#1_0",
":4350193651_w1_0"
],
"crosswalks_link_fromLane": [
"230506730#1_0",
":4350193651_w1_0"
],
"crosswalks_link_toLane": [
"332620704#2_0",
":4350193651_c0_0"
],
"crosswalks_link_viaLane": [
":4350193651_0_0",
""
],
"junction_id": "4350193651"
}
Do I only need to get the state of “:4350193651_c0_0” to get the state of that crosswalk light ?
Regards,
Adrien
Yes. The crossings will only show up as "toLane" IDs (even though both sides are controlled by a traffic light and can even have different signal states).
Hi Jakob,
I’m now using a SUMO scenario that has pedestrians crosswalks.
I’ve been able to extract a new JSON file in which I list the junction ID, the lanes ID and the links ID.
The object I retrieve when calling getControlledLinks is a vector of TraCILink, on which I iterate to retrieve the elements “fromLane”, “toLane” and “viaLane”.
From what I see, the crosswalks seem to be only listed in the “toLane” elements.
Can I base myself only on “toLane” IDs then to map out the crosswalks of each junction ?
Attached is the JSON file I extracted.
Thank you for your help,
Adrien
This a simple JSON file I created while running SUMO.
In there, I write the traffic light ID and then the controlled lanes ID in that traffic light.
However, I don’t see the format you were mentioning in your previous email.
I also tried to go through the list of controlled links but it’s the same format.
See the second file attached.
I’m guessing this is because the naming convention in the osm.net.xml file might not be correct ?
This is how a junction is defined in the osm.net.xml file:
<junction id="10018180" type="dead_end" x="9550.31" y="6845.42" incLanes="260842179_0" intLanes="" shape="9549.40,6845.01 9551.22,6845.82"/>
Thank you for your help,
Adrien
You can use traci.trafficlight.getControlledLanes and getControlledLinks
Lanes with ids of the form :<JUNCTIONID>_w<index>_0 are walkingareas
Lanes with ids of the form :<JUNCTIONID>_c<index>_0 are crossings
The index in the result lists corresponds to the index in the phase state.
Hi Jakob,
Thank you for your reply, I only just see it now because your emails were considered as spams by my company’s IT department …
It looks like I’ve been able to extract those controlled junctions, perfect.
I have another question. I’m interested in retrieving the state of the traffic lights associated to pedestrian crosswalks.
In the documentation, it says that the crosswalks’ states are at the end of “state” string when calling “getRedYellowGreenState()”.
Is there a way to know where do the pedestrian crosswalks start in that string ? Or is there a way to identify those crosswalks ?
Thank you,
Adrien
ATTENTION : Ce courriel provient de l’extérieur de l’organisation. Ne cliquez pas sur les liens ni sur les pièces jointes à moins que vous reconnaissiez l’expéditeur
et que vous sachiez que le contenu est sûr.
CAUTION : This email originated from outside the organization. Do not click links or open attachments unless you recognize the
sender and know the content is safe.
If you only need to identify traffic light junctions, you can use the functions in TrafficLight.h to retrieve this information:
- all traffic light controllers with getIDList
- all junction ids controller by a given controller with getControlledJunctions
Hi,
I’m trying to retrieve the type of a Junction, I’m using the C++ library.
In an osm.net.xml file which lists all junctions, I see there are some different node types (https://sumo.dlr.de/docs/Networks/PlainXML.html#node_types)
:
<junction id="101335548"
type="traffic_light" x="9587.74" y="5049.51" incLanes="-770022998#1_0 480644124#1_0 690226256#9_0 -11661029#1_0" intLanes=":101335548_0_0 :101335548_1_0 :101335548_16_0 :101335548_17_0 :101335548_4_0 :101335548_5_0
:101335548_18_0 :101335548_19_0 :101335548_8_0 :101335548_9_0 :101335548_20_0 :101335548_21_0 :101335548_12_0 :101335548_13_0 :101335548_22_0 :101335548_23_0" shape="9587.30,5041.43 9593.31,5043.64 9592.97,5045.85 9593.23,5046.73 9593.79,5047.47 9594.63,5048.06
9595.77,5048.51 9593.99,5054.65 9591.44,5054.42 9590.39,5054.75 9589.50,5055.38 9588.76,5056.31 9588.18,5057.54 9582.17,5055.32 9582.52,5053.10 9582.26,5052.21 9581.71,5051.46 9580.87,5050.85 9579.74,5050.39 9581.63,5044.27 9584.11,5044.53 9585.13,5044.20
9586.00,5043.58 9586.72,5042.65">
I looked in the C++ classes / headers, mostly in “Junction” class, and I didn’t find anything related to that type, while we can get the Position or the Shape
for example.
Does anyone have an idea on how to get this data ?
Thank you,
Adrien
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-dev
|