Thank you Jakob for your time.
Based on your answer#1 below, I create my scenario with count 0 while checking the box
"pedestrians". Sumo run the generated scenario without any errors. But when we run sumo with adding external pedestrians sumo crash with the following error:
terminate called after throwing an instance of 'tcpip::SocketException'
what(): tcpip::Socket::recvAndCheck @ recv: peer shutdown
FYI, We use the following Sumo’s APis to add Update and remove external pedestrians:
externalPersonID = 999999
ADD:
libsumo::TraCIRoadPosition
wEdge = Simulation::convertRoad(iLong,
iLat,
true,
“pedestrian”);
double wPosition =
iEdge.pos – 0.01;
Person::add(externalPersonID,
wEdge.edgeID , wPosition, libsumo::DEPARTFLAG_NOW);
Person::appendWalkingStage(externalPersonID,
{ wEdge.edgeID
}, wPosition,
-1,
-1,
“”);
UPDATE:
libsumo::TraCIPosition
wCartesianPos = Simulation::convertGeo(iLong,
iLat,
true);
double wAngle = libsumo::INVALID_DOUBLE_VALUE;
int wkeepRoute = 1;
double wMatchThreshold = 100;
Person::moveToXY(externalPersonID,
, { wEdge.edgeID
}, wCartesianPos.x, wCartesianPos.y, wAngle,
wKeepRoute,
wMatchThreshold);
Person::setSpeed(externalPersonID,
0.0);
REMOVE :
while
(1 < Person::getRemainingStages(externalPersonID))
{
Person::removeStage(externalPersonID,
1);
}
Person::removeStage(externalPersonID,
0);
}
Before every step() we add a new pedestrian and we update the existing ones and remove pedestrians when a decision is made (outside sumo).
Then after Simulation::Step() is called.
The mentioned error is generated at the second call of Simulation::step().
Would you please advice.
NB: that code works well with scenarios where the checkbox
"pedestrians" is not checked.
Regards,
Mell
From: Jakob Erdmann <namdre.sumo@xxxxxxxxx>
Sent: Sunday, November 7, 2021 4:56 AM
To: Melhem Tawk <melhem.tawk@xxxxxxx>
Subject: Re: [sumo-dev] Retrieving the type of Junction
1. The easiest way to get crosswalks into your scenario is the set the checkbox "pedestrians" in the traffic tab of osmWebWizard and set the 'count' field to 0. This will set the appropriate netconvert options for adding
sidewalks and crossings to the network without adding any pedestrians to the simulation.
2. Simulation::load reloads the whole network. If you call Simulaton::loadState only the state is reset and the network is kept. However, this only makes a difference when having lots of short simulations (rather than
2 hour simulations as in your case).
Dear Jakob,
Thank you for you answer mentioning than there are no crosswalks in our scenario.
Attached is the screen shot of files list of our scenario generated via OSMWebWizad script. By the way we have vehicles in the scenarios but the pedestrians are
inserted remotely from external simulator during the simulation using the following as you told me in a previous email:
***********************************************
Hello,
- the easiest way to couple with a pedestrian simulator is to remote-control each person using the traci function person.moveToXY (after adding it with person.add
and person.appendWalkingStage)
- if your original network data (probably OSM) does not contain sidewalk information, there are various ways to add sidwalks. See
https://sumo.dlr.de/docs/Simulation/Pedestrians.html#building_a_network_for_pedestrian_simulation
- you can obtain permission data using traci.lane.getAllowed
regards,
Jakob
******************************
First, Based on what we have could you please explain to us how we can generate the cross walks. By the way we despite that there are no crosswlaks in our scenario,
we can see in sumo the pedestrian coming from external simulator on crosswalk.
Second Point, we are using the c++ api to start sumo
Simulation::Start({“sumo”, “-c”, “osm.sumocfg”, “--load-state” , “statetakenat750SimulationTimename”,
“--step-length”, “0.5”}).
This will run for 7200 simulation time then we use
Simulation::Load(({“sumo”, “-c”, “osm.sumocfg”, “--load-state” , “statename”, “--load-state.offset”,
“7200”)
to reload the simulation without restaring the full scenario.
Do you think this the best way to reload the simulation in an efficient way or there is another way ?
Please advice
Mell
Thank you for answer

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
|