vadere merge requestshttps://gitlab.lrz.de/vadere/vadere/-/merge_requests2022-06-21T15:47:41+02:00https://gitlab.lrz.de/vadere/vadere/-/merge_requests/202Add new scenario test for intersecting pedestrian streams.2022-06-21T15:47:41+02:00Rahn, SimonAdd new scenario test for intersecting pedestrian streams.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/243Add model descriptions to psychology layer models2023-08-21T09:22:29+02:00Mayr, Christina MariaAdd model descriptions to psychology layer modelsHi Ludwig,
I have added some descriptions. Please note that I did not commented any single method. I focused on the scope of the models.
Hope this is helpful for you.
Cheers,
ChristinaHi Ludwig,
I have added some descriptions. Please note that I did not commented any single method. I focused on the scope of the models.
Hope this is helpful for you.
Cheers,
ChristinaJaeck, LudwigJaeck, Ludwighttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/221add missing updateFromOutside flag toggel.2022-10-04T09:46:35+02:00Schuhbaeck, Stefanadd missing updateFromOutside flag toggel.- Small update to VadereContex
- Move Reflection calls to dedicated TreeModelCache to speed up attribute table view creation
- fix sole '-' minus in Int/Double spinner
- fix json view update during typing
- fix/workaround to mirror json ...- Small update to VadereContex
- Move Reflection calls to dedicated TreeModelCache to speed up attribute table view creation
- fix sole '-' minus in Int/Double spinner
- fix json view update during typing
- fix/workaround to mirror json changes in arrays (edit of existing items did not work)Schuhbaeck, StefanRahn, SimonSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/125Add knowledge base2020-04-22T19:11:07+02:00Schuhbaeck, StefanAdd knowledge baseadd KnowledgeBase to PsychologyStatus
allows to add multiple Knowledge items to a pedestrian. These are
used to filter pedestrians based on some knowledge pedestrians have.add KnowledgeBase to PsychologyStatus
allows to add multiple Knowledge items to a pedestrian. These are
used to filter pedestrians based on some knowledge pedestrians have.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/50Add keyboard shortcuts to play, pause and stop animation in post visualization2019-03-18T11:08:50+01:00Ghost UserAdd keyboard shortcuts to play, pause and stop animation in post visualizationFixes #81.Fixes #81.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/76add features to TikzGenerator2019-07-12T18:33:27+02:00Schuhbaeck, Stefanadd features to TikzGenerator* Add config to choose if all or only alive trajectories are drawn
* Draw walking direction in Tikz
* create nodes for pedestrian instead of circles. Each pedestrian node
has a name 'ped_ID' to reference the node in tikz.
* add named c...* Add config to choose if all or only alive trajectories are drawn
* Draw walking direction in Tikz
* create nodes for pedestrian instead of circles. Each pedestrian node
has a name 'ped_ID' to reference the node in tikz.
* add named coordinate at Centroid for all scenario elements:
* source: (src_<ID>)
* target: (trg_<ID>)
* absorbingArea: (absorb_<ID>)
* obstacle: (obs_<ID>)
* stairs: (str_<ID>)
* measurementArea: (mrmtA_<ID>)
* add style classes:
* trajectory: i.e. thickness
* pedestrian: default color
* ped_circle: defines shape of circular pedestrians (not for groups)
* selected: style for selected pedestrian
* group: styl (all) groups.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/22add feature: it is now possible to display the target potential field of a…2018-01-11T18:31:05+01:00Zoennchen, Benediktadd feature: it is now possible to display the target potential field of a…add feature: it is now possible to display the target potential field of a specific agent if the main model is a potential field model.add feature: it is now possible to display the target potential field of a specific agent if the main model is a potential field model.Zoennchen, BenediktZoennchen, Benedikthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/59Add BonnMotion processor2019-05-09T14:56:58+02:00Schuhbaeck, StefanAdd BonnMotion processorAdd DataProcessor to create trace files based on the BonnMotion [1] mobility scenario generation and analysis tool.
Used is the processor mainly to import vadere trace data into omnet++[2]
File Layout:
* No Header
* No Key Column
* Eac...Add DataProcessor to create trace files based on the BonnMotion [1] mobility scenario generation and analysis tool.
Used is the processor mainly to import vadere trace data into omnet++[2]
File Layout:
* No Header
* No Key Column
* Each line represents the trace of *one* pedestrian with concatenated 3-tuples
`(t, x, y)` where ...
* `t` is the real simulation time in sec. (double)
* `x` the x coordinate at time t. (double)
* `y` the y coordiante at time t. (double)
[1]: https://sys.cs.uos.de/bonnmotion/
[2]: https://doc.omnetpp.org/inet/api-current/neddoc/inet.mobility.single.BonnMotionMobility.htmlhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/143Add artery support2020-09-09T19:22:07+02:00Schuhbaeck, StefanAdd artery support* add additional TraCI API calls to support coordinate transformation on both client and server side.
* add trace logging for TraCI
* use VadereArgumentParser for vadere-server.jar (log additional TraCI version)* add additional TraCI API calls to support coordinate transformation on both client and server side.
* add trace logging for TraCI
* use VadereArgumentParser for vadere-server.jar (log additional TraCI version)https://gitlab.lrz.de/vadere/vadere/-/merge_requests/227add argument groups to seperate requiered from optional arguments fixes #3332023-04-26T20:08:00+02:00Schuhbaeck, Stefanadd argument groups to seperate requiered from optional arguments fixes #333https://gitlab.lrz.de/vadere/vadere/-/merge_requests/112Add argparser argument2020-01-29T19:57:16+01:00Schuhbaeck, StefanAdd argparser argumenthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/138[V1_14] Add strategy layer to allow crowd control2020-08-10T13:38:35+02:00Mayr, Christina Maria[V1_14] Add strategy layer to allow crowd controlThe strategy layer can be used to change the behavior of crowds on a strategy level.
For that purpose, a java file needs to be provided which contains the strategy.
A simple example for such a strategy is a crowd management application...The strategy layer can be used to change the behavior of crowds on a strategy level.
For that purpose, a java file needs to be provided which contains the strategy.
A simple example for such a strategy is a crowd management application which redirects agents.
Use version >= 1.14 for the new functionality.Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/230[Simulator] Extend traci2023-05-26T19:16:01+02:00Mayr, Christina Maria[Simulator] Extend traciadded warnings and additional methods to traci for communication with flowcontroladded warnings and additional methods to traci for communication with flowcontrolhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/233[Scenarios] Fix broken scenarios and remove deprecated scenarios2023-07-21T08:53:11+02:00Rahn, Simon[Scenarios] Fix broken scenarios and remove deprecated scenarios- Remove several deprecated scenarios / non-working examples.
- In `Scenarios/ModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario`, simulation threw java.lang.ClassCastException probably due to wrong datakey. Adapt d...- Remove several deprecated scenarios / non-working examples.
- In `Scenarios/ModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario`, simulation threw java.lang.ClassCastException probably due to wrong datakey. Adapt datakey to the same key used in the other scenarios of this project (EventtimePedestrianIdKey).
Complements !232 to close #360https://gitlab.lrz.de/vadere/vadere/-/merge_requests/190[Scenario-Reader] Force same behavior for reading vadere projects and single ...2022-04-15T22:24:39+02:00Mayr, Christina Maria[Scenario-Reader] Force same behavior for reading vadere projects and single scenario files**Current behavior**
The static methods in IOVadere are used to read in Vadere projects and the scenario files they contain.
_**1 vadere project**_
If a Vadere project is opened in the Vadere gui, the scenario files are migrated for t...**Current behavior**
The static methods in IOVadere are used to read in Vadere projects and the scenario files they contain.
_**1 vadere project**_
If a Vadere project is opened in the Vadere gui, the scenario files are migrated for the first time in the IOVadere class.
This ensures that the read jsons can be deseralized. In a second step, the scenario files are actually migrated.
_**2 single scenario file**_
If Vadere is controlled via Traci, only one scenario file has to be read in. During the read-in itself, no migration is performed, which may cause the deseralization to fail.
If deserealization is possible, the actual migration takes place in step two.
**Problem**
Due to the missing migration in 2, the deserialization can fail.
**Goal**
same behavior for 1 and 2
**Procedure**
I added the migration to 1https://gitlab.lrz.de/vadere/vadere/-/merge_requests/158[Remote] Fix bug in remote simulation run2021-07-07T09:24:56+02:00Mayr, Christina Maria[Remote] Fix bug in remote simulation runProblem:
The vadere thread is not closed properly.
Simulation output is not written. See #327
The thread is still running after the sim time limit has been reached.
Solution:
adjust the method that terminates the thread
adjust the s...Problem:
The vadere thread is not closed properly.
Simulation output is not written. See #327
The thread is still running after the sim time limit has been reached.
Solution:
adjust the method that terminates the thread
adjust the simulation step methodMayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/208[Psychology] avoid empty attributes list by adding default attributes to list2022-08-11T12:57:57+02:00Mayr, Christina Maria[Psychology] avoid empty attributes list by adding default attributes to listcloses #338closes #338https://gitlab.lrz.de/vadere/vadere/-/merge_requests/174[PSYCHOLOGY, TraCI] Communicate social distancing measures2021-11-17T18:31:11+01:00Mayr, Christina Maria[PSYCHOLOGY, TraCI] Communicate social distancing measuresI have introduced a new `CognitionModel` that allows us to dynamically introduce social distancing in the simulation.I have introduced a new `CognitionModel` that allows us to dynamically introduce social distancing in the simulation.Schuhbaeck, StefanMayr, Christina MariaSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/165[Psychology Layer] Add probabilistic perception model + [Post-vis] Fix footst...2021-07-16T19:07:43+02:00Mayr, Christina Maria[Psychology Layer] Add probabilistic perception model + [Post-vis] Fix footstep bug## Psychology Layer
### Add a new perception model
Add probabilistic perception model.
The new model allows to assign a probability for each stimulus.
The default probability is `p=1.0`.
p defines how likely it is that this stimulus is ...## Psychology Layer
### Add a new perception model
Add probabilistic perception model.
The new model allows to assign a probability for each stimulus.
The default probability is `p=1.0`.
p defines how likely it is that this stimulus is the most important stimulus.
If there are multiple stimuli defined, the sum of p_i must not exceed 1.
### Move methods from `SimplePerceptionModel` to `StimulusController`
Following methods have been moved:
* `selectClosestAndPerceptibleThreat(Pedestrian pedestrian, List<Stimulus> threatStimuli)`
* `selectWaitInAreaContainingPedestrian(Pedestrian pedestrian, List<Stimulus> waitInAreaStimuli)`
**Why?**
The `StimulusController` provides a list of stimuli that is available for an agent. It acts like a filter.
In the old setting, the filtering was done in two steps:
* 1. filter: **time** -> `StimulusController`
* 2. filter: **space/proximity** ( ->` WaitInArea`, `Threat` ) -> `SimplePerceptionModel`
In the old settings, this was suitable, because the stimulusController only provided stimuli that are perceived by all the agents.
Since !162, the stimulusController also provides agent specific stimuli e.g. information that is received at different times.
Therefore, I propose that the filtering is directly done in the `StimulusController`:
* 1. filter: **time** -> `StimulusController`
* 2. filter: **space/proximity** ( ->` WaitInArea`, `Threat` ) -> `StimulusController`
This has two advantages:
* The overall filtering is done in the same place. This avoids code duplication (if one adds a IPerceptionModel, they would need to inherit or copy the filtering algorithm from` SimplePerceptionModel`).
* It simplifies the `SimplePerceptionModel`. Same behavior for all types of stimuli.
### ControlModel
In the old setting, the `ReactionModel` draw from a BernoulliDistribution (probability p) to decide whether a agent reacts or not.
**What is new?**
If the psyhchologylayer is used, the ReactionModel does not decide, but passes the probability to the stimulus.
## Post-vis:
Bug: Agents disappeared in `WAIT` mode.
If the last position is not set, `pedestrian.getLastPosition()` provides a the origin.
It must be `pedestrian.getPosition()`.Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/216[PROCESSORS] BonnMotionTrajectoryProcessor changes trajectories in FootStepPr...2022-08-25T13:11:33+02:00Mayr, Christina Maria[PROCESSORS] BonnMotionTrajectoryProcessor changes trajectories in FootStepProcessor**Observation:**
'Wrong' trajectories, see scenario vadere/Scenarios/Demos/test_project/one_way_lane_wait_with_bonnmotion.scenario
![agent_in_obstacle](/uploads/a388db423f9933f01a989144be65f9a2/agent_in_obstacle.png)
**Problem:**
Th...**Observation:**
'Wrong' trajectories, see scenario vadere/Scenarios/Demos/test_project/one_way_lane_wait_with_bonnmotion.scenario
![agent_in_obstacle](/uploads/a388db423f9933f01a989144be65f9a2/agent_in_obstacle.png)
**Problem:**
The `BonnMotionTrajectoryProcessor` changes the trajectories stored in the `FootStepProcessor`:
```
Map<TimestepPedestrianIdKey, VPoint> trajectories = this.pedestrianPositionProcessor.getData();
trajectories.entrySet().forEach(e -> {
int pedId = e.getKey().getPedestrianId();
double time = e.getKey().getTimestep() * simTimeStepLength;
VPoint point = e.getValue();
if (attr.getOrigin().equals("upper left")){
point.y = boundHeight - point.y;
}
if(attr.isApplyOffset() && coordRef != null){
point = point.add(coordRef.getTranslation());
}
point = point.multiply(attr.getScale());
point = point.add(attr.getTranslate());
Pair<Double, VPoint> wayPoint = Pair.of(time, point);
addWayPoint(pedId, wayPoint); // HERE THE TRAJECTORY IS CHANGED
```
**Solution:**
The `BonnMotionTrajectoryProcessor` has to work on a deepcopy of the trajectories or the footsteps.
I suggest to clone the footstep:
```
for (TimestepPedestrianIdKey e : trajectories.keySet()) {
int pedId = e.getPedestrianId();
double time = e.getTimestep() * simTimeStepLength;
VPoint point = trajectories.get(e).clone(); // CLONE!!!
```
####
**Notes:**
* the BonnMotionTrajectoryProcessorTest is currently not running neither in the master branch nor in this branch, see #344 .
**Before merging:**
* please remove the example scenario files under `vadere/Scenarios/Demos/test_project`Schuhbaeck, StefanSchuhbaeck, Stefan