vadere merge requestshttps://gitlab.lrz.de/vadere/vadere/-/merge_requests2019-07-30T15:09:52+02:00https://gitlab.lrz.de/vadere/vadere/-/merge_requests/65Resolve "New flag to compute metric for the quality of the StepCircleOptimizer"2019-07-30T15:09:52+02:00Ghost UserResolve "New flag to compute metric for the quality of the StepCircleOptimizer"Closes #241
Closes #256
## TODO
* [x] use new scenarios and measure optimal/found solution
* [x] write test processor
* compute max/min/mean/stddev between optimal and found solution
* write tests that check for certa...Closes #241
Closes #256
## TODO
* [x] use new scenarios and measure optimal/found solution
* [x] write test processor
* compute max/min/mean/stddev between optimal and found solution
* write tests that check for certain values
* [x] Change the footstep processor to the new `EventtimePedestrianIdKey`, this makes reading data a lot easier (no variable column size for each row).
* [x] There needs to be a configuration to turn this feature on (IMPORTANT: for testing, the feature is set to true hard coded!!)
* [x] Integrate TestProcessor which checks that all pedestrians get to the source. -> Not possible, processors are buggy #249
* [x] First solve #256, otherwise the vadere.conf files break without manual adaptation on local computer
Wait for #242 and #243 to be solved.
https://gitlab.lrz.de/vadere/vadere/-/merge_requests/81Misc gui fixes2019-07-31T18:06:16+02:00Schuhbaeck, StefanMisc gui fixes* make SplitPane's resizable (close #24)
* introduce line numbers to json text views
* introduce code folding to json text views* make SplitPane's resizable (close #24)
* introduce line numbers to json text views
* introduce code folding to json text viewshttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/82Coordiate reference2019-07-31T18:33:03+02:00Schuhbaeck, StefanCoordiate reference* add coordinate reference to topography (close #251)
* refactor osm2vadere.py and add additional features to convert openstreetmap xml data into vadere topography
* new version 1.3* add coordinate reference to topography (close #251)
* refactor osm2vadere.py and add additional features to convert openstreetmap xml data into vadere topography
* new version 1.3https://gitlab.lrz.de/vadere/vadere/-/merge_requests/84Rename class "LastFootSteps" to "FootstepHistory"2019-09-16T13:13:56+02:00Ghost UserRename class "LastFootSteps" to "FootstepHistory"- [x] Rename class `LastFootSteps` to `FootstepHistory`
- [x] Move usage of renamed class `FootstepHistory` from `VTractory` to `Pedestrian`
- [x] Implement migration `JsonTransformationV1_3ToV1_4` to update all scenario files
- [x] Appl...- [x] Rename class `LastFootSteps` to `FootstepHistory`
- [x] Move usage of renamed class `FootstepHistory` from `VTractory` to `Pedestrian`
- [x] Implement migration `JsonTransformationV1_3ToV1_4` to update all scenario files
- [x] Apply migration `JsonTransformationV1_3ToV1_4` to all scenario files
Watch out: Everywhere were `VTrajectory.add()` is called, additionally call "FootstepHistory.add()" now.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/83Resolve "Change PedestrianPositionProcessor to use interpolation of Pedestria...2019-09-17T15:25:10+02:00Ghost UserResolve "Change PedestrianPositionProcessor to use interpolation of PedestrianFootStepProcessor"Closes #260
Closes #262
* [x] Simplify tests
* [x] Write text into CHANGELOG
* [x] Write tests for the interpolation method
* [x] overwrite `Pedestrian.getPosition()` with `Pedestrian.getPosition(simTimeSec)`, which would then u...Closes #260
Closes #262
* [x] Simplify tests
* [x] Write text into CHANGELOG
* [x] Write tests for the interpolation method
* [x] overwrite `Pedestrian.getPosition()` with `Pedestrian.getPosition(simTimeSec)`, which would then use the interpolation method?
* [x] in `clearFootSteps()` should we keep the last entry (which can be used for interpolation)? --> No, new field `currentFootStep`, this is because there the whole list is saved & used in "FootStepProcessors" and they would need to make sure to ignore double occurrences
* [x] Look at code where pedestrian.getPosition() would make sense to get exchanged to the interpolated position? E.g. in NelderMead or OverlapProcessor? --> This would be in a new issue/branch then
* [x] Remove the "currentFootStep" field in Pedestrian again and use the "LastFootSteps" provided in VTrajectory (then with a minimum capacity of 1)?
* [x] resolve #263 first
* [x] How to deal with requested interpolation if a Pedestrian has an outdated FootStep? Check with @hm-kleinmei
```
if(currentFootStep == null){
return getPosition();
}else{
if(time > currentFootStep.getEndTime()){
// This happens for example if a pedestrian is waiting (see Events)
// TODO: check with Bene K. if this is okay, or a better way?
return currentFootStep.getEnd();
}else{
return FootStep.interpolateFootStep(currentFootStep, time);
}
}
```https://gitlab.lrz.de/vadere/vadere/-/merge_requests/85Use FootStepProcessor in Postviz and as default trajectory output processor2019-10-08T08:28:49+02:00Ghost UserUse FootStepProcessor in Postviz and as default trajectory output processorCloses #253Closes #253https://gitlab.lrz.de/vadere/vadere/-/merge_requests/87remove hard coded path from test client. add short api name to easy use of cm...2019-10-28T11:29:22+01:00Schuhbaeck, Stefanremove hard coded path from test client. add short api name to easy use of cmdClienthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/89[GUI] Visualization: make interpolation configurable.2019-11-04T16:29:47+01:00Zoennchen, Benedikt[GUI] Visualization: make interpolation configurable.The interpolation for the visualization can now be deactivated and activated (for the PostVis and OnlineVis). For the PostVis it is active by default. For the OnlineVis it is inactive by default.The interpolation for the visualization can now be deactivated and activated (for the PostVis and OnlineVis). For the PostVis it is active by default. For the OnlineVis it is inactive by default.Zoennchen, BenediktZoennchen, Benedikthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/90remove fine tune condition in brute force2019-11-05T18:25:30+01:00Ghost Userremove fine tune condition in brute forceClose #278Close #278https://gitlab.lrz.de/vadere/vadere/-/merge_requests/91TraCI and Cache handling update2019-11-15T13:48:38+01:00Schuhbaeck, StefanTraCI and Cache handling update### Added
- TraCI commands:
* getHash: return Scenario hash for given scenario
* CompoundObject implementation to allow complex get/set commands (i.e. create pedestrian hat
random location during simulation run)
- osm2vadere ...### Added
- TraCI commands:
* getHash: return Scenario hash for given scenario
* CompoundObject implementation to allow complex get/set commands (i.e. create pedestrian hat
random location during simulation run)
- osm2vadere converter:
* it is possible to specify a way with the tag `area-of-intrest` (AOI). If this is present and the
corresponding command line argument is given, only elements within the bounding box of the
AOI will be converted.
- Add INET environment export:
* create an INET environment xml file based on the current topography. For now only prism shapes
are possible with a fixed height of 5m.
- vadere-console `utils` subCommand:
* A miscellaneous collector of simple function operating on a single scenario file.
* -f (input [required])
* -o (ouput file or directory depending on method m [optional])
* -m (name of method.) See subparser help for allowed functions.
* currently implementd:
* `getHash`: Hash value of given scenario. (-o option ignored)
* `binCache`: calculate binary cache (-o must be a directory. If missing it will be created)
* `txtCache`: calculate text based cache (-o must be a directory. If missing it will be created)
### Changed
- CachePath lookup:
The new cache lookup now allows a 'global' lookup. Previously all cache files are saved in
a `__cache__` folder relative (as sibling) to the currently running scenario file. This works
good for local testing and runs. However, if one scenario is duplicated and integrated in other
projects the same cache would be created at multiple locations. The current solution would be
to enter an absolute path as the `cacheDir` but this will break interoperatbility between
windows and linux as well as sharing scenario files with other users. CacheDir Lookup order:
1. `cacheDir` is an absolute path: Use it; and log the path to console.
2. `cacheDir` is relative and `Vadere.cache.useGlobalCacheBaseDir=false` (default):
save cache in a `__cache__` folder relative (as sibling) to the currently running scenario file
3. `cacheDir` is relative and `Vadere.cache.useGlobalCacheBaseDir=true`:
Lookup `Vadere.cache.flobalCacheBaseDir` and use this as the base path for the relative
`cacheDir` path. `Vadere.cache.flobalCacheBaseDir` defaults to `${user.home}\.cache\vadere`Schuhbaeck, StefanSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/92Test client stsc2019-11-18T19:05:25+01:00Schuhbaeck, StefanTest client stschttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/93fix #280 nullpointer in gui while simulation setup2019-11-28T14:19:24+01:00Schuhbaeck, Stefanfix #280 nullpointer in gui while simulation setupThe problem occurred because the OnlineVisualization model is setup
during gui startup but was only valid after the first call to
OnlineVisualization#postUpdate where the DrawData object is created.
Only then was the OnlineVisualization ...The problem occurred because the OnlineVisualization model is setup
during gui startup but was only valid after the first call to
OnlineVisualization#postUpdate where the DrawData object is created.
Only then was the OnlineVisualization valid and capable of answering
all callbacks.
This commit will fix the problem but does not fix the design the problem.
The OnlineVisualization is still created at gui startup but all
callbacks to the model are removed util the OnlineVisualization model is
fully initialized.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/95Code cleaning and order of time and state update in Simulation.run()2019-11-29T15:48:17+01:00Ghost UserCode cleaning and order of time and state update in Simulation.run()Merge request to improve the readability of the main simulation run and clarify aspects?
* [ ] Why is `processManager.update` after `step++` and refreshing the `simulationState` state? This causes step in output to start at 1 and not ...Merge request to improve the readability of the main simulation run and clarify aspects?
* [ ] Why is `processManager.update` after `step++` and refreshing the `simulationState` state? This causes step in output to start at 1 and not 0. Could the `processManager.update` also be in `updateCallbacks` ? (cc @hm-mgoedel )
https://gitlab.lrz.de/vadere/vadere/-/merge_requests/98Dev/remove time credit2019-11-29T18:18:14+01:00Zoennchen, BenediktDev/remove time creditZoennchen, BenediktZoennchen, Benedikthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/96call fireChangeViewportEvent from awt Event Thread2019-12-02T12:06:59+01:00Schuhbaeck, Stefancall fireChangeViewportEvent from awt Event Thread@BZoennchen does that makes sense?
I had the issue that the packaged vadere GUI sometimes stoped after the first simulation step. After looking at
the threads via `jconsole` it seems that `fireChangeViewportEvent` (marked with `**` in...@BZoennchen does that makes sense?
I had the issue that the packaged vadere GUI sometimes stoped after the first simulation step. After looking at
the threads via `jconsole` it seems that `fireChangeViewportEvent` (marked with `**` in first stack trace) will
synchronize on the model and the awt event thread will do the same --> deadlock. This only happed for big scenarios
for what I saw.
If the fix is correct just merge it :)
```
Name: Thread-0
State: BLOCKED on java.awt.Component$AWTTreeLock@7d505529 owned by: AWT-EventQueue-0
Total blocked: 1 Total waited: 0
Stack trace:
java.awt.Component.resize(Component.java:2241)
java.awt.Component.setSize(Component.java:2227)
java.awt.Component.resize(Component.java:2275)
java.awt.Component.setSize(Component.java:2262)
javax.swing.JViewport.setViewSize(JViewport.java:1139)
org.vadere.gui.components.control.ViewportChangeListener.viewportChange(ViewportChangeListener.java:50)
org.vadere.gui.components.model.DefaultModel.notifyViewportListeners(DefaultModel.java:182) - locked org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel@6ce9b79f
** org.vadere.gui.components.model.DefaultModel.fireChangeViewportEvent(DefaultModel.java:268) - locked org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel@6ce9b79f
** org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel.popDrawData(OnlineVisualizationModel.java:143) - locked java.lang.Object@746b397e
org.vadere.gui.onlinevisualization.OnlineVisualization.postUpdate(OnlineVisualization.java:112)
org.vadere.simulator.control.simulation.Simulation.run(Simulation.java:279)
org.vadere.simulator.control.simulation.ScenarioRun.run(ScenarioRun.java:158)
java.lang.Thread.run(Thread.java:834)
```
```
Name: AWT-EventQueue-0
State: BLOCKED on org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel@6ce9b79f owned by: Thread-0
Total blocked: 123 Total waited: 433
Stack trace:
org.vadere.gui.components.model.DefaultModel.setViewportBound(DefaultModel.java:273) <--- needs lock on Model (not possible see above fireChangeViewportEvent)
org.vadere.gui.components.control.JViewportChangeListener.stateChanged(JViewportChangeListener.java:50)
javax.swing.JViewport.fireStateChanged(JViewport.java:1490)
javax.swing.JViewport.reshape(JViewport.java:954)
java.awt.Component.setBounds(Component.java:2326)
java.awt.Component.setBounds(Component.java:2477)
javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:888)
java.awt.Container.layout(Container.java:1537)
java.awt.Container.doLayout(Container.java:1526)
java.awt.Container.validateTree(Container.java:1722)
java.awt.Container.validate(Container.java:1657) - locked java.awt.Component$AWTTreeLock@7d505529
javax.swing.RepaintManager$3.run(RepaintManager.java:745)
javax.swing.RepaintManager$3.run(RepaintManager.java:743)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:742)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1889)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
java.awt.EventQueue$4.run(EventQueue.java:721)
java.awt.EventQueue$4.run(EventQueue.java:715)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
```Zoennchen, BenediktZoennchen, Benedikthttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/99Resolve "Measurements if no Agent is in the measurement area"2019-12-05T14:28:35+01:00Ghost UserResolve "Measurements if no Agent is in the measurement area"Closes #287Closes #287https://gitlab.lrz.de/vadere/vadere/-/merge_requests/100new tasks2019-12-06T17:59:22+01:00Schuhbaeck, Stefannew taskshttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/104Traci single client server2019-12-16T20:22:02+01:00Schuhbaeck, StefanTraci single client serverhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/106Python Based TraCI Client for Vadere2020-01-13T08:51:15+01:00Schuhbaeck, StefanPython Based TraCI Client for Vaderepython based TraCI client for vadere.
main authors hm-schuegra / hm-schubae
* [misc] apply styleguide to VadereManager module
* [misc] autopep vadere-lauchner.py
* [pythontraciwrapper] Added second start method to Py4jClient
* [...python based TraCI client for vadere.
main authors hm-schuegra / hm-schubae
* [misc] apply styleguide to VadereManager module
* [misc] autopep vadere-lauchner.py
* [pythontraciwrapper] Added second start method to Py4jClient
* [pythontraciwrapper] Adding PythonTraCIWrapper to tools with git subtree
* [pythontraciwrapper] Extending pythontraciwrapper
* [pythontraciwrapper] Implemented _polygonapi_wrapper
* [pythontraciwrapper] Implemented a basic py4j client
* [pythontraciwrapper] Implemented pytraci controll commands
* [pythontraciwrapper] Improving py4j client
* [pythontraciwrapper] Move Py4jClient to pythontraciwrapper
* [pythontraciwrapper] Removing PythonTraCIWrapper from tools
* [pythontraciwrapper] Skeleton py4j TraCI Wrapper
* [pythontraciwrapper] apply code formatting
* [pythontraciwrapper] set version to 0.2
* [pythontraciwrapper] use list in subprocess instead of string. fix for linux.
* [TraCI] Adapt new createNew such that it uses the type of the peds in the simulation when reading the minimal attributes from JSON
* [TraCI] Add new start method to client to access sendFileFromPath via
the Py4j wrapper
* [TraCI] Add processors to scenario
* [TraCI] Added scenarios for ReinforcementLearning
* [TraCI] Allow multiple py4j clients to interact with vadere via traci, each client having its own manager
* [TraCI] Annotated some methods of polygonapi
* [TraCI] Automated start of manager and entrypoint in Py4jClient just for developement.
* [TraCI] Extending personapi on python side
* [TraCI] Find explanation for redundant command identifier byte in getVersion
* [TraCI] Fix bug in createTargetChanger builder
* [TraCI] Fix bug in poly.getIDList
* [TraCI] Fix getVersion bug
* [TraCI] Fix tests
* [TraCI] Implement more tests
* [TraCI] Implement pers.getMaximumSpeed
* [TraCI] Implement pers.getVelocity
* [TraCI] Implement poly.getTopographyBounds # Conflicts: # Tools/PythonTraCIWrapper/pythontraciwrapper/_personapi_wrapper.py
* [TraCI] Implement some tests for setters, extend tests for getters by one check
* [TraCI] Implemented createWaitingArea for traci, Example
* [TraCI] Implemented getSimTime for python wrapper
* [TraCI] Implemented getter and setter for nextTargetListIndex to make a workaround Issue #285 of possible
* [TraCI] Implemented getter for hasNextTarget
* [TraCI] Implemented poly.getCentroid, implemented poly.getDistance with a workaround
* [TraCI] Implemented py4j-wrapper for getter and setter of nextTargetListIndex
* [TraCI] Implemented setStimulusInfo, removed add/remove WaitingArea
* [TraCI] Implemented some methods of traci polygonapi
* [TraCI] Implemented some tests
* [TraCI] Integrated VadereAPI
* [TraCI] Kill entrypoint process when python program terminates withatexit
* [TraCI] Made py4j_client take either the parsed args or the raw args from the command line from the instantiator.
* [TraCI] Make createTargetChanger take json
* [TraCI] Make sendFile more flexible
* [TraCI] Make sendFileFromPath public to make API more flexible
* [TraCI] Make test for process_getCacheHash platform independent
* [TraCI] Move argParsing to py4j_client in the pythontraciwrapper package.
* [TraCI] Parameterised port of TraCIEntryPoint
* [TraCI] Refactor tests, implement new tests
* [TraCI] Refactored poly.getDistance
* [TraCI] Refactoring
* [TraCI] Refactoring & fixing a bug in client-side of removeTargetChanger and removeWaitingArea
* [TraCI] Refactoring VadereApi
* [TraCI] Removed hard-coded path and port number, inserted a check into test of process_getCacheHash
* [TraCI] Removed hard-coded paths from TraCIEntryPoint
* [TraCI] Resolving some problems in the python interface
* [TraCI] Test process_getCacheHash
* [TraCI] WIP reimplementing Polygon Api
* [TraCI] Workaround for ctr.getVersion bug
* [TraCI] Working on traci controll commands for python client
* [TraCI] add generic Json compound object
* [TraCI] create and add TargetChangerController process_addTargetChanger
* [TraCI] wrote test for getAllStimulusInfos
* [ReinforcementLearning] Adding scenarios with small crowd
* [ReinforcementLearning] Increase number of targets.
* [ReinforcementLearning]Add scenario as demo and test case forSchuhbaeck, StefanSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/107checkbox to deactivate ScenarioChecker in GUI.2020-01-13T11:19:57+01:00Schuhbaeck, Stefancheckbox to deactivate ScenarioChecker in GUI.Before save actions and simulation run actions the
ScenarioChecker is still executed *once* to inform the
user of any errors. (deault = ScenarioChecker Off)
The checkbox setting is saved in the vadere config.Before save actions and simulation run actions the
ScenarioChecker is still executed *once* to inform the
user of any errors. (deault = ScenarioChecker Off)
The checkbox setting is saved in the vadere config.