Commit e421a450 authored by Erik Andresen's avatar Erik Andresen

Merge branch 'develop'

# Conflicts:
#	CMakeLists.txt

Conflicts solved
parents 4bee5b55 a05c2c21
...@@ -2,3 +2,4 @@ build/ ...@@ -2,3 +2,4 @@ build/
Makefile Makefile
bin/ bin/
ui_* ui_*
.idea/
# Change Log # Change Log
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## v0.8.1 [Unreleased]
## v0.8.0 [Unreleased] ### Added
### Changed
### Bugs fixed
Heap error when using undo/redo while drawing
### Bugs
Several heap errors
Autosave not working properly
DXF-Import restricted
## v0.8.0 [05.03.2016]
### Added ### Added
#### JPSEDITOR
- 1.2.16 Undo/Redo when Line was edited - 1.2.16 Undo/Redo when Line was edited
- 1.2.16 Change Info Text - 1.2.16 Change Info Text
- 1.2.16 Load HLines - 1.2.16 Load HLines
...@@ -23,103 +37,4 @@ All notable changes to this project will be documented in this file. ...@@ -23,103 +37,4 @@ All notable changes to this project will be documented in this file.
- Length of line is displayed - Length of line is displayed
- Show origin - Show origin
- ... - ...
- Room and door declarations - Room and door declarations
# Change Log \ No newline at end of file
All notable changes to this project will be documented in this file.
## v0.8.0 [Unreleased]
### Added
#### JPSCORE
- CI with travis and Gitlab CI
- Compilation checked on Visual Studio 12 2013
- Added more validation tests
- Added statistics (calculate exit usage) for all exits
- Added voronoi based algorithm for inserting agents coming from the source or from matsim
- New option for the quickest path router. Sample options are:
```<parameters default_strategy="local_shortest">```
```<parameters default_strategy="global_shortest">```
``` <parameters cba_gain="0.15" reference_peds_selection="single" congestion_ratio="0.8" queue_vel_escaping_jam="0.2"
queue_vel_new_room="0.7" visibility_obstruction="4">
```
- New model with the generic name `Tordeux2015` and `id=3`. For use check the ini-files in the Utest-validation tests.
- Tests are sorted in `rimea_tests`, `juelich_tests` and `validation_tests`.
- Periodic boundary conditions with the option `<periodic>1</periodic>`.Works only with model 3.
- Added Floorfield to all exits, providing direction to target, direction to closest wall and cost estimates. Parameter to control wall-avoidance included.
#### JPSVIS
- Added option to load vtk files. Need to add the line ``` <gradient_field filename="floorfield.vtk">
``` in the header of the trajectory file. Alternatively drag and drop a vtk file on JPSvis.
- Fixed error displaying the total number of frames when using the scroolbar
#### JPSREPORT
- Added geometry information while plotting the voronoi cells
- Added option to disable plotting
- Issue a warning when the voronoi cell cannot be calculated
- Fixed error where all trajectories were colinear
#### JPSEDITOR
## v0.7.0 [2015-07-15]
### New Module
- JuPedSim: Editor for the geometry
### Added
- Risk tolerance factor (value in [0 1]) for pedestrian. Pedestrians with high values are likely to take more risks.
- Added pre-movement time of the agents. Only after this time, the concerned agents will start moving.
- Sources for generating agents at runtime. Parameter are frequency (agents per seconds) and maximum number
- Option to color the pedestrians by group, spotlight, velocity, group, knowledge, router, final\_goal, intermediate\_goal. Usage: (
```<trajectories format="xml-plain" fps="8" color_mode="group"> ```)
- More control over the triangulation specially to avoid skinny triangles. Usage: ```<navigation_mesh method="triangulation" minimum_distance_between_edges="0.5" minimum_angle_in_triangles="20" use_for_local_planning="true" />```
- Improved statistics. The flow curve for the different exits can be computed at runtime.
- Changelog file
- Rimea testcases
- Unit tests are now based on the Boost testing engine
#### JPSVIS
- Display the geometry structure individual room/subroom.
- Now build on OSX/Linux/Windows
### Changed
-
-
### Fixed
- Visiblity in 3D
- Numerous geometrical operations
## v0.6.0 - 2015-01-31
### Added
- Steering the simulation with predefined events (closing or opening doors during the simulation)
- Information sharing between the pedestrians. The agents now share their knowledge about closed doors.
- Pre evacuation time for groups of agents.
- Adjustable velocities on stairs and even terrain for group of agents.
- Stability and performance improvement. The simulation is approx 40% faster for larger scenarios and you will notice it
- New route choice model, cognitive map, giving agents the possibility to explore the environment and discover doors for instance.
- Different sensors for improving the navigation of pedestrians (smoke/jam sensor).
- New verification and validation tests.
- General statistics over the evacuation (for instance areas egress time and door usage)
- Support for Visual Studio and Xcode compilers.
### Changed
- refactor NumCPU and ExitCrossingStrategy tags to `num_threads and exit_crossing_strategy`
## v0.5.0 - 2014-08-05
First release of the the Juelich Pedestrian Simulator. Most noteworthy features:
- Simulate pedestrians movement in a space continuous geometry
- Forces based models for describing the pedestrians interactions
- Shortest and quickest path route choice strategies
- Loading and visualizing trajectories and geometries
- Easy to use visualization interface
- Making high quality videos directly from the visualization interface or generating png sequences
- XML based input files
\ No newline at end of file
...@@ -107,11 +107,12 @@ set( SRCS ...@@ -107,11 +107,12 @@ set( SRCS
src/widgetsettings.cpp src/widgetsettings.cpp
src/jpsyahpointer.cpp src/jpsyahpointer.cpp
src/jpsconnection.cpp src/jpsconnection.cpp
src/UndoFramework/action.cpp src/jpsregion.cpp
src/UndoFramework/lineaction.cpp
src/UndoFramework/actionstack.cpp
dxflib/src/dl_writer_ascii.cpp dxflib/src/dl_writer_ascii.cpp
dxflib/src/dl_dxf.cpp dxflib/src/dl_dxf.cpp
src/UndoFramework/action.cpp
src/UndoFramework/actionstack.cpp
src/UndoFramework/lineaction.cpp
) )
# all header files that should be treated with moc # all header files that should be treated with moc
set( HDR set( HDR
...@@ -131,9 +132,7 @@ set( HDR ...@@ -131,9 +132,7 @@ set( HDR
src/widgetsettings.h src/widgetsettings.h
src/jpsyahpointer.h src/jpsyahpointer.h
src/jpsconnection.h src/jpsconnection.h
src/UndoFramework/action.h src/jpsregion.h
src/UndoFramework/lineaction.h
src/UndoFramework/actionstack.h
dxflib/src/dl_writer_ascii.h dxflib/src/dl_writer_ascii.h
dxflib/src/dl_writer.h dxflib/src/dl_writer.h
dxflib/src/dl_global.h dxflib/src/dl_global.h
...@@ -145,6 +144,9 @@ set( HDR ...@@ -145,6 +144,9 @@ set( HDR
dxflib/src/dl_creationadapter.h dxflib/src/dl_creationadapter.h
dxflib/src/dl_codes.h dxflib/src/dl_codes.h
dxflib/src/dl_attributes.h dxflib/src/dl_attributes.h
src/UndoFramework/action.h
src/UndoFramework/actionstack.h
src/UndoFramework/lineaction.h
) )
...@@ -458,6 +460,7 @@ if(APPLE OR WIN32) ...@@ -458,6 +460,7 @@ if(APPLE OR WIN32)
if(${QT4_INSTALLED}) if(${QT4_INSTALLED})
include(DeployQt4) include(DeployQt4)
install_qt4_executable("${EXECUTABLE}" "qsqlite") install_qt4_executable("${EXECUTABLE}" "qsqlite")
elseif(${QT5_INSTALLED}) elseif(${QT5_INSTALLED})
include(DeployQt5) include(DeployQt5)
install_qt5_executable("${EXECUTABLE}" "qsqlite") install_qt5_executable("${EXECUTABLE}" "qsqlite")
......
#-------------------------------------------------------------
# - build:
# docker build -t jupedsim/jpseditor .
# - run:
# 1. socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
# 2. docker -it -e DISPLAY=<your ip address> jupedsim/jpseditor
#-------------------------------------------------------------
FROM ubuntu:14.04
MAINTAINER Erik Andresen <e.andresen@uni-wuppertal.de>
# install required packages
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
g++ \
git \
lcov \
doxygen \
qt5-default qttools5-dev-tools \
# python \
# python-dev \
# python-pip \
&& apt-get clean
# set environment
ENV HOME /home/jupedsim
# add user
RUN groupadd -r -g 1000 jupedsim && useradd -r -g jupedsim -u 1000 -m jupedsim
USER jupedsim
# install jpscore
RUN mkdir -p /home/jupedsim/workspace
RUN cd /home/jupedsim/workspace \
&& git clone --depth=5 https://cst.version.fz-juelich.de/jupedsim/jpseditor.git \
&& cd jpseditor \
&& mkdir -p build \
&& cd build \
&& cmake -D DESIRED_QT_VERSION=5 ..\
&& make
# by default /bin/bash is executed
CMD $HOME/workspace/jpseditor/bin/JPSeditor
\ No newline at end of file
...@@ -33,9 +33,10 @@ ...@@ -33,9 +33,10 @@
</property> </property>
<addaction name="action_ffnen_xml"/> <addaction name="action_ffnen_xml"/>
<addaction name="action_ffnen"/> <addaction name="action_ffnen"/>
<addaction name="action_ffnen_cogmap"/>
<addaction name="actionSpeichern"/> <addaction name="actionSpeichern"/>
<addaction name="actionSpeichern_dxf"/> <addaction name="actionSpeichern_dxf"/>
<addaction name="separator"/> <addaction name="actionSpeichern_cogmap"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionSettings"/> <addaction name="actionSettings"/>
<addaction name="separator"/> <addaction name="separator"/>
...@@ -55,6 +56,7 @@ ...@@ -55,6 +56,7 @@
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionUndo"/> <addaction name="actionUndo"/>
<addaction name="actionRedo"/> <addaction name="actionRedo"/>
<addaction name="actionCopy"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionWall"/> <addaction name="actionWall"/>
<addaction name="actionDoor"/> <addaction name="actionDoor"/>
...@@ -67,6 +69,8 @@ ...@@ -67,6 +69,8 @@
<addaction name="actionDelete_single_line"/> <addaction name="actionDelete_single_line"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionRoom"/> <addaction name="actionRoom"/>
<addaction name="actionLandmark"/>
<addaction name="actionLandmarkWidget"/>
</widget> </widget>
<widget class="QMenu" name="menuView"> <widget class="QMenu" name="menuView">
<property name="title"> <property name="title">
...@@ -560,6 +564,47 @@ ...@@ -560,6 +564,47 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
</action> </action>
<action name="actionSpeichern_cogmap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset resource="Ressource.qrc">
<normaloff>:/filesave.png</normaloff>:/filesave.png</iconset>
</property>
<property name="text">
<string>Save CognitiveMap</string>
</property>
<property name="toolTip">
<string>Save CognitiveMap</string>
</property>
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="action_ffnen_cogmap">
<property name="icon">
<iconset resource="Ressource.qrc">
<normaloff>:/open.png</normaloff>:/open.png</iconset>
</property>
<property name="text">
<string>Load Cognitive Map</string>
</property>
<property name="toolTip">
<string>Load Cognitive Map</string>
</property>
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="actionCopy">
<property name="text">
<string>Copy</string>
</property>
<property name="shortcut">
<string>Ctrl+C</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="Ressource.qrc"/> <include location="Ressource.qrc"/>
......
...@@ -16,56 +16,255 @@ ...@@ -16,56 +16,255 @@
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="widget"> <widget class="QWidget" name="tab_2">
<attribute name="title"> <attribute name="title">
<string>Landmark</string> <string>Cognitive Map</string>
</attribute> </attribute>
<widget class="QLabel" name="label"> <widget class="QTextEdit" name="textEdit">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>30</x> <x>10</x>
<y>30</y> <y>70</y>
<width>191</width> <width>291</width>
<height>161</height>
</rect>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The purpose of this widget is to create one or multiple cognitive maps. The maps can be used as a representation of the agents' knowledge degree in JuPedSim. Use tabs Landmarks/Connections/Regions to make your specifications. If you need help have a look at the tutorial on our YouTube-Channel. (coming soon)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>241</width>
<height>31</height> <height>31</height>
</rect> </rect>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>14</pointsize>
</font> </font>
</property> </property>
<property name="lineWidth">
<number>6</number>
</property>
<property name="text"> <property name="text">
<string>Landmark:</string> <string>Cognitive Map</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property> </property>
</widget> </widget>
<widget class="QLabel" name="label_Waypoints2"> <widget class="Line" name="line_9">
<property name="geometry">
<rect>
<x>-10</x>
<y>250</y>
<width>341</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>10</x>
<y>280</y>
<width>241</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="lineWidth">
<number>6</number>
</property>
<property name="text">
<string>Save the current map</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>20</x>
<y>390</y>
<width>241</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="lineWidth">
<number>6</number>
</property>
<property name="text">
<string>Save the current and x similar maps</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<widget class="QPushButton" name="save_button_cogmap">
<property name="geometry">
<rect>
<x>20</x>
<y>330</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
<widget class="Line" name="line_10">
<property name="geometry">
<rect>
<x>-10</x>
<y>540</y>
<width>341</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QPushButton" name="cogmap_closeButton">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>110</x>
<y>570</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>Close</string>
</property>
</widget>
<widget class="QSpinBox" name="spinBox_numberMaps">
<property name="geometry">
<rect>
<x>170</x>
<y>440</y>
<width>61</width>
<height>31</height>
</rect>
</property>
<property name="maximum">
<number>100000000</number>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>10</x>
<y>440</y>
<width>151</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="lineWidth">
<number>6</number>
</property>
<property name="text">
<string>How many maps in total?</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<widget class="Line" name="line_11">
<property name="geometry">
<rect>
<x>-10</x>
<y>370</y>
<width>341</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property> </property>
</widget>
<widget class="QPushButton" name="save_button_multiple_maps">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>20</x> <x>20</x>
<y>470</y> <y>500</y>
<width>291</width> <width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>Make it fuzzy!</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="widget">
<attribute name="title">
<string>Landmarks</string>
</attribute>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>40</x>
<y>20</y>
<width>191</width>
<height>31</height> <height>31</height>
</rect> </rect>
</property> </property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Press Add and throw rect!</string> <string>Landmark:</string>
</property> </property>
</widget> </widget>
<widget class="QListWidget" name="listWaypoints"> <widget class="QLabel" name="label_Waypoints2">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>true</bool>
</property> </property>
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>10</x>
<y>360</y> <y>440</y>
<width>291</width> <width>291</width>
<height>91</height> <height>31</height>
</rect> </rect>
</property> </property>
<property name="text">
<string>Press Set and throw rect!</string>
</property>