Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
NLDetectorBuilder.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2026 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
21// Builds detectors for microsim
22/****************************************************************************/
23#pragma once
24#include <config.h>
25
26#include <string>
30// #include <microsim/output/MSMultiLaneE2Collector.h>
31
32// ===========================================================================
33// class declarations
34// ===========================================================================
36class MSLane;
37class MSEdge;
38
39class MEInductLoop;
40class MESegment;
41
42
43// ===========================================================================
44// class definitions
45// ===========================================================================
54public:
60
61
63 virtual ~NLDetectorBuilder();
64
65
68
91 Parameterised* buildInductLoop(const std::string& id,
92 const std::string& lane, double pos, double length, SUMOTime splInterval,
93 const std::string& device, bool friendlyPos,
94 const std::string name, const std::string& vTypes, const std::string& nextEdges, int detectPersons);
95
96
113 Parameterised* buildInstantInductLoop(const std::string& id,
114 const std::string& lane, double pos,
115 const std::string& device, bool friendlyPos,
116 const std::string name, const std::string& vTypes,
117 const std::string& nextEdges,
118 int detectPersons);
119
120
132 Parameterised* buildE2Detector(const std::string& id, MSLane* lane, double pos, double endPos, double length,
133 const std::string& device, SUMOTime frequency,
134 SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
135 const std::string name, const std::string& vTypes,
136 const std::string& nextEdges,
137 int detectPersons, bool friendlyPos, bool showDetector,
138 MSTLLogicControl::TLSLogicVariants* tlls = 0, MSLane* toLane = 0);
139
140 Parameterised* buildE2Detector(const std::string& id, std::vector<MSLane*> lanes, double pos, double endPos,
141 const std::string& device, SUMOTime frequency,
142 SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
143 const std::string name, const std::string& vTypes,
144 const std::string& nextEdges,
145 int detectPersons, bool friendlyPos, bool showDetector,
146 MSTLLogicControl::TLSLogicVariants* tlls = 0, MSLane* toLane = 0);
147
148
162 Parameterised* beginE3Detector(const std::string& id, const std::string& device, SUMOTime splInterval,
163 double haltingSpeedThreshold, SUMOTime haltingTimeThreshold,
164 const std::string name, const std::string& vTypes,
165 const std::string& nextEdges,
166 int detectPersons, bool openEntry, bool expectArrival);
167
168
181 void addE3Entry(const std::string& lane, double pos, bool friendlyPos);
182
183
196 void addE3Exit(const std::string& lane, double pos, bool friendlyPos);
197
198
208 void endE3Detector();
209
210
218 std::string getCurrentE3ID() const;
219
220
234 void buildVTypeProbe(const std::string& id,
235 const std::string& vtype, SUMOTime frequency,
236 const std::string& device);
237
238
253 void buildRouteProbe(const std::string& id, const std::string& edge,
254 SUMOTime frequency, SUMOTime begin,
255 const std::string& device,
256 const std::string& vTypes);
258
259
260
265
277 virtual MSDetectorFileOutput* createInductLoop(const std::string& id,
278 MSLane* lane, double pos,
279 double length,
280 const std::string name, const std::string& vTypes,
281 const std::string& nextEdges,
282 int detectPersons,
283 bool show);
284
285
295 virtual MSDetectorFileOutput* createInstantInductLoop(const std::string& id,
296 MSLane* lane, double pos, const std::string& od,
297 const std::string name, const std::string& vTypes,
298 const std::string& nextEdges,
299 int detectPersons);
300
301
308 virtual MSE2Collector* createE2Detector(const std::string& id,
309 DetectorUsage usage, MSLane* lane, double pos, double endPos, double length,
310 SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
311 const std::string name, const std::string& vTypes,
312 const std::string& nextEdges,
313 int detectPersons, bool showDetector);
314
315 virtual MSE2Collector* createE2Detector(const std::string& id,
316 DetectorUsage usage, std::vector<MSLane*> lanes, double pos, double endPos,
317 SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
318 const std::string name, const std::string& vTypes,
319 const std::string& nextEdges,
320 int detectPersons, bool showDetector);
321
332 virtual MSDetectorFileOutput* createE3Detector(const std::string& id,
333 const CrossSectionVector& entries, const CrossSectionVector& exits,
334 double haltingSpeedThreshold, SUMOTime haltingTimeThreshold,
335 const std::string name, const std::string& vTypes,
336 const std::string& nextEdges,
337 int detectPersons, bool openEntry, bool expectArrival);
338
339
358 void createEdgeLaneMeanData(const std::string& id, SUMOTime frequency,
359 SUMOTime begin, SUMOTime end, const std::string& type,
360 const bool useLanes, const bool withEmpty, const bool printDefaults,
361 const bool withInternal, const bool trackVehicles, const int detectPersons,
362 const double maxTravelTime, const double minSamples,
363 const double haltSpeed, const std::string& vTypes,
364 const std::string& writeAttributes,
365 std::vector<MSEdge*> edges,
366 AggregateType aggregate,
367 const std::string& device);
369
370
371protected:
377 public:
385 E3DetectorDefinition(const std::string& id,
386 const std::string& device, double haltingSpeedThreshold,
387 SUMOTime haltingTimeThreshold, SUMOTime splInterval,
388 const std::string name, const std::string& vTypes,
389 const std::string& nextEdges,
390 int detectPersons, bool openEntry, bool expectArrival);
391
393 virtual ~E3DetectorDefinition();
394
396 const std::string myID;
398 const std::string myDevice;
410 std::string myName;
412 const std::string myVehicleTypes;
414 const std::string myNextEdges;
422
423 private:
426
429
430 };
431
432
433protected:
450 double getPositionChecking(double pos, MSLane* lane, bool friendlyPos,
451 SumoXMLTag tag,
452 const std::string& detid);
453
454
457
464 MSEdge* getEdgeChecking(const std::string& edgeID, SumoXMLTag type,
465 const std::string& detid);
466
467public:
474 MSLane* getLaneChecking(const std::string& laneID, SumoXMLTag type,
475 const std::string& detid);
476
477protected:
485 void checkSampleInterval(SUMOTime splInterval, SumoXMLTag type, const std::string& id);
487
488
489protected:
492
493
494private:
497
498
499private:
502
505
506};
long long int SUMOTime
Definition GUI.h:36
std::vector< MSCrossSection > CrossSectionVector
SumoXMLTag
Numbers representing SUMO-XML - element names.
AggregateType
Numbers representing special SUMO-XML-attribute values Information on edgeData/laneData output should...
An induction loop for mesoscopic simulation.
A single mesoscopic segment (cell)
Definition MESegment.h:50
Base of value-generating classes (detectors)
An areal detector corresponding to a sequence of consecutive lanes.
A road/street connecting two junctions.
Definition MSEdge.h:77
Representation of a lane in the micro simulation.
Definition MSLane.h:84
The simulated network and simulation perfomer.
Definition MSNet.h:89
Storage for all programs of a single tls.
Holds the incoming definitions of an e3 detector unless the detector is build.
const std::string myVehicleTypes
The types to filter.
CrossSectionVector myEntries
List of detector's entries.
E3DetectorDefinition & operator=(const E3DetectorDefinition &)
Invalidated assignment operator.
const std::string myID
The id of the detector.
SUMOTime mySampleInterval
The aggregation interval.
bool myOpenEntry
Whether the detector is declared as having incomplete entry detectors.
E3DetectorDefinition(const E3DetectorDefinition &)
Invalidated copy constructor.
const std::string myNextEdges
The route edges to filter by.
double myHaltingSpeedThreshold
The speed a vehicle's speed must be below to be assigned as jammed.
bool myExpectArrival
Whether the detector expects vehicles to arrive inside (and doesn't issue a warning in this case)
const std::string myDevice
The device the detector shall use.
SUMOTime myHaltingTimeThreshold
The time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed.
CrossSectionVector myExits
List of detector's exits.
Builds detectors for microsim.
NLDetectorBuilder & operator=(const NLDetectorBuilder &)
Invalidated assignment operator.
void checkSampleInterval(SUMOTime splInterval, SumoXMLTag type, const std::string &id)
Checks whether the given frequency (sample interval) is valid.
void endE3Detector()
Builds of an e3 detector using collected values.
MSNet & myNet
The net to fill.
MSLane * getLaneChecking(const std::string &laneID, SumoXMLTag type, const std::string &detid)
Returns the named lane.
void createEdgeLaneMeanData(const std::string &id, SUMOTime frequency, SUMOTime begin, SUMOTime end, const std::string &type, const bool useLanes, const bool withEmpty, const bool printDefaults, const bool withInternal, const bool trackVehicles, const int detectPersons, const double maxTravelTime, const double minSamples, const double haltSpeed, const std::string &vTypes, const std::string &writeAttributes, std::vector< MSEdge * > edges, AggregateType aggregate, const std::string &device)
Creates edge based mean data collector using the given specification.
double getPositionChecking(double pos, MSLane *lane, bool friendlyPos, SumoXMLTag tag, const std::string &detid)
Computes the position to use.
Parameterised * buildInstantInductLoop(const std::string &id, const std::string &lane, double pos, const std::string &device, bool friendlyPos, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons)
Builds an instantenous induction and adds it to the net.
virtual MSE2Collector * createE2Detector(const std::string &id, DetectorUsage usage, MSLane *lane, double pos, double endPos, double length, SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool showDetector)
Creates a MSE2Collector instance, overridden by GUIE2Collector::createE2Detector()
void buildVTypeProbe(const std::string &id, const std::string &vtype, SUMOTime frequency, const std::string &device)
Builds a vTypeProbe and adds it to the net.
void addE3Exit(const std::string &lane, double pos, bool friendlyPos)
Builds an exit point of an e3 detector.
virtual MSDetectorFileOutput * createInductLoop(const std::string &id, MSLane *lane, double pos, double length, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool show)
Creates an instance of an e1 detector using the given values.
virtual ~NLDetectorBuilder()
Destructor.
MSEdge * getEdgeChecking(const std::string &edgeID, SumoXMLTag type, const std::string &detid)
Returns the named edge.
void buildRouteProbe(const std::string &id, const std::string &edge, SUMOTime frequency, SUMOTime begin, const std::string &device, const std::string &vTypes)
Builds a routeProbe and adds it to the net.
virtual MSDetectorFileOutput * createE3Detector(const std::string &id, const CrossSectionVector &entries, const CrossSectionVector &exits, double haltingSpeedThreshold, SUMOTime haltingTimeThreshold, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool openEntry, bool expectArrival)
Creates an instance of an e3 detector using the given values.
void addE3Entry(const std::string &lane, double pos, bool friendlyPos)
Builds an entry point of an e3 detector.
Parameterised * buildInductLoop(const std::string &id, const std::string &lane, double pos, double length, SUMOTime splInterval, const std::string &device, bool friendlyPos, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons)
Builds an e1 detector and adds it to the net.
NLDetectorBuilder(const NLDetectorBuilder &)
Invalidated copy constructor.
virtual MSDetectorFileOutput * createInstantInductLoop(const std::string &id, MSLane *lane, double pos, const std::string &od, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons)
Creates an instance of an e1 detector using the given values.
Parameterised * buildE2Detector(const std::string &id, MSLane *lane, double pos, double endPos, double length, const std::string &device, SUMOTime frequency, SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool friendlyPos, bool showDetector, MSTLLogicControl::TLSLogicVariants *tlls=0, MSLane *toLane=0)
Builds a new E2 detector and adds it to the net's detector control. Also performs some consistency ch...
Parameterised * beginE3Detector(const std::string &id, const std::string &device, SUMOTime splInterval, double haltingSpeedThreshold, SUMOTime haltingTimeThreshold, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool openEntry, bool expectArrival)
Stores temporary the initial information about an e3 detector to build.
E3DetectorDefinition * myE3Definition
definition of the currently parsed e3 detector
std::string getCurrentE3ID() const
Returns the id of the currently built e3 detector.
An upper class for objects with additional parameters.