EASTING replaces NORTHING in Scalar3D, Speed3D, Acceleration3D, Clothoid, AngleUnits.
DSOL version 3.03.06 to allow for introspection of Maps and ImmutableCollections.
NodeAnimation now work with a delegate animation class (new in DSOL 3.03.06) to allow for increasing the
Z-value for display, but not increasing it in the Node itself. When introspecting the
NodeAnimation.ElevatedNode, the information of the actual Node that delegated the animation is
shown instead.
Extensive work on the xsd files to parse complex files. All categories of the xsd have been changed.
The old parser is still present, and will be removed in one of the future versions.
OvertakingConditions have been removed from the Lane. Overtaking is not something that concerns
single lanes.
ots.xsd and this changes file got an xml:space="preserve" tag to indicate that the formatter
should not mess with text strings. A changed xsd=file is therefore included in the changes folder.
The GTUType does not have static definitions anymore, to allow alternative GTUTypes for different situations.
An enum called GTUType.DEFAULTS has been added that indicates the names of the GTUTypes that are defined by default.
GTUTypes are registered in the Network, and can be retrieved from the network. A method called
addDefaultGtuTypes() has been added to the network to instantiate all default types in a default way.
The LinkType does not have static definitions anymore, to allow alternative LinkTypes for
different situations. An enum called LinkType.DEFAULTS has been added that indicates the names of
the LinkTypes that are defined by default. LinkTypes are registered in the Network, and can be retrieved
from the network. A method called addDefaultLinkTypes() has been added to the network to instantiate all default
types in a default way.
An interface called 'Definitions' has been added that allows to retrieve the LinkTypes and GTUTypes defined in the
current context. Both the Network interface and the PerceivableContext interface inherit from Definitions, so both
the GTUs and the Nodes/Links have access to the definitions that exist in the current simulation context.
The constructor of the OTSNetwork (and OTSRoadNetwork) has been given an boolean whether to construct the defaults or not.
The LaneType does not have static definitions anymore, to allow alternative LaneTypes for different situations.
An enum called LaneType.DEFAULTS has been added that indicates the names of the LaneTypes that are defined by default.
LaneTypes are registered in the RoadNetwork, and can be retrieved from the road network.
A method called addDefaultLaneTypes() has been added to the RoadNetwork to instantiate all default types in a default way.
In order to give specific definitions to the network for Roads, a RoadNetwork interface and an
OTSRoadNetwork class have been added. These hold for instance information about the LaneTypes.
An interface called 'RoadDefinitions' has been added that allows to retrieve the LaneTypes defined in the
current context. The RoadNetwork interface inherit from Definitions (and therefore the OTSRoadNetwork class implements
the interfaces), so both the LaneBasedGTUs and the Nodes/Links have access to the Lane definitions that exist in the
current simulation context. As RoadDefinitions inherits from Definitions, LinkTypes and GTUTypes are also accessible.
All code and demos has been adapted to work with the new GTUType, LinkType, LaneType, Definitions, and RoadDefinitions.
XSDs versioned.
New folder for xsds on the Web: https: https://opentrafficsim.org/docs/xsd/
All demos now reference the new xsds (and the old parser).
All xmls and xsds (including pom.xml, site.xml, and others) are error free
with validation.
ots-xsd: bindings.xsd renamed to bindings.xml (it is an xml...)
ots-xsd: pom.xml updated with latest changes.
ots-xsd: ROADTYPE renamed to LINKTYPE, consistent with java naming.
ots-xsd: defaults files for definitions added.
Naming of a few GTUTypes changed (WATER_WAY => WATERWAY; RAIL_WAY => RAILWAY)
Default GTUTypes XML file added to ots-xsd project.
In order to do so,
GTUTYPES tag with multiple
GTUTYPE entries added to DEFINITIONS.
djunits version has been updated to 3.01.01, which includes Scalar.stringOf(SomeScalar) and e.g., Length.valueOf(String).
djutils version has been updated to 1.00.05, which includes the ImmutableCollections (static) class.
In XML-parsing, the use of nodes and links has been simplified. All nodes have to be given full
coordinates. Slope and direction are calculated automatically. Lengths for links do not have
to be provided as a result; they will be calculated and correspond to the actual lengths of what is drawn,
not the theoretical lengths. An arc has a theoretical length that is different from the e.g., 32 or 64, segments
from which it is created, and algorithms make false calculations based on the difference between the length of
OTSLine3D and the provided length of the link. Arcs, Bezier curves, clothoids, polylines and straight segments
can have a slope. The correct length including the slope is calculated (note that this this differs from the length of
the projection in the animation).
In XML-parsing, directions are taken as ENU (East=x, North=y, z=up) coordinates, where absolute
direction goes counter-clockwise. E = +x = 0 degrees, N = +y = 90 degrees, W = -x = 180 degrees,
S = -y = 270 degrees. See https://en.wikipedia.org/wiki/Axes_conventions
ots-types.xsd got several changes: DURATIONTYPE has been added, and all relative times in
ots-network.xsd have been changed to DURATIONTYPE. PERTIMETYPE has been renamed to FREQUENCYTYPE.
VEHICLESTYPE has been renamed to VEHICLEINTENSITYTYPE. VEHICLESPERTIMETYPE has been renamed to
VEHICLEFREQUENCYTYPE. DIRECTIONTYPE has been added. ANGLETYPE has been replaced by DIRECTIONTYPE where an
absolute angle was intended.
The old DIRECTIONTYPE that indicated the driving direction of a vehicle has been renamed to DRIVINGDIRECTIONTYPE.
JAXB parsing has been introduced in the new ots-xsd project.
OTS-383. Develop fixed time traffic light control
OTS-382. Apply lazy evaluation and memoization in perception categories
OTS-381. Allow Anticipation Reliance in the Mental module
ots-core was dependent on the heavyweight geotools project. Except for the projects where maps
are parsed, 99% of geotools was not used. Therefore, ots-core has been made dependent on the
jts project instead. The version of jts that is used is compatible with geotools. Therefore,
ots-parser-shape and ots-demo can easily use the geotools extension, while still being compatible
with definitions for Point, Coordinate, Geometry, etc. in ots-core.
A small typo was made in the url of the osgeo repository. This has now been corrected.
All demos and tests have been updated and repaired to be in line with DSOL version 3.03.
GTUIDColorer used the following formula for the color:
LEGEND.get(gtu.getId().hashCode() % LEGEND.size()).getColor()
]]>
However, (-2 % 10) returns -2 in Java. Therefore, the GTUIDColorer failed.
Changed to always return a positive number using Math.abs().
The OTSReplication now has a compulsory id. This is in line with the new DSOL 3.03 Replication class.
DSOL version has been updated to 3.03.05.
djutils version has been updated to 1.00.02.
HexDump class and package have been moved to djutils.
The means package has been moved from ots to the djutils project.
Copyright years updated to 2019.
The DSOL version has been updated to 3.03. This has quite a number of consequences.
Examples are anew use of the DSOLModel, more time-based inner classes of the Simulators,
DistContinuousTime has been renamed intoDistContinuousSimulationTime, models have
specified input parameters and output parameters, which makes the use of the
ModelPropertiessuperfluous, charts have been moved into one class each, etc.
See https://simulation.tudelft.nl/dsol/3.0/changes-report.html#a3.03.00
for more information.
Three projects for OTS animation have been added. ots-swing for animation
using Swing and ots-web for animation using the Web. The generic drawing clases that
are used for ots-swing and ots-web (using a virtual screen for ots-web)
are in the project ots-draw-swing.
The swing-specific classes of ots-core and ots-road have been moved to the
ots-swing project. This makes the core OTS classes independent from swing,
so versions running on servers, or using the web or sim0mq can guarantee no swing
code is executed.
Because the animation classes have been moved from the dsol-core and dsol-road project,
code such as the following in one of the base packages or in the parsers is not possible
anymore:
if (simulator instanceof AnimatorInterface)
new LaneAnimation(newLane, simulator, color, false);
]]>
Instead, animation has to be added in the application, specifically for Swing, JavaFX,
or the Web. If drawing data has to be stored for specific types of objects or for
specific instances (line width, outline color, drawing color, etc.), this has to be
done in separate objects, which are e.g., accessible via a Map<Road, DrawingInfo>
or a Map<Class<?>, DrawingInfo>, where the DrawingInfo can be specified
by the user. A first implementation of DrawingInfo has been included in ots-core, in the
[ots].core.animation package. This object can be used by different visualizations.
The Try class has been moved to the DJUTILS project.
The demo in the ots-parser-shape project and the A58 data has been moved to
the src/test/java and src/test/resources locations.
The [ots].gtu.animation package has been renamed to [ots].gtu.colorer.
The destroy() method of DefaultCarAnimation is repaired to not call
Renderable2D.destroy() twice.
A program called ParamComments has been added in ots-build-tools to help
enter/repair the correct types in the @param entries in the method comments.
All classes have been repaired using this program. After running the utility, do a
refresh on all projects, followed by a Source - Format.
The .classpath files have a classpathentry for /src/main/resources after a
Maven Update with an entry 'excluding="**" kind="src"'. The exclusion means that the export of a Runnable jar
in Eclipse does not work. Therefore this update on svn ensures that the export of a jar file
works. Ensure that after each Maven Update in Eclipse, the "Excludes:" entry for
/src/main/resources in each project's Properties - Build path - Source is set to (None)
before committing the sources!
A small program called CleanClassfileFiles has been added to ots-build-tools
to help in setting the exclusions correctly in the build path. After running this program, do a
Project - Clean - All.
The pom file in aimsun-proto was not properly compiling the proto-files
within Eclipse. Following the suggestions in https://github.com/trustin/os-maven-plugin
the problem was solved. A readme.txt in the root of the ots-aimsun-proto
project provides instructions.
The CategoryLogger and SimLogger have been moved to dsol-base, so dsol can
use the same loggers.
As a result it becomes easier to e.g., suppress dsol logger-messages and still see ots
logger messages.
ots-core: toString() method of OTSCapacityNode made non-final.
ots-ntm project updated to latest ots, dsol, and djunits version.
Recent Java-8 compilers are more strict on generics. Therefore the class
definition of ToledoPerception has been adapted as follows: public class ToledoPerception extends
LaneBasedAbstractPerceptionCategory implements LaneBasedPerceptionCategory.
DirectEgoPerception's class definition has been updated to:
public class DirectEgoPerception<G extends GTU, P extends Perception<G>>
extends AbstractPerceptionCategory<G, P> implements EgoPerception<G, P>
The projects have been adapted to the latest Eclipse version (4.8; Photon).
Test sources and classes are more strictly separated from regular classes.
This asked for several small changes in the Eclipse environment that have
been included in the .classpath file in the root folder of the projects.
Demo CircularRoad + LMRS fixed; dynamic extension of the LaneStructure was not
correct.
Demo Merge 1 plus 1 into 1: CanPlaceDemoCode replaced by CFRoomChecker;
CanPlaceDemoCode still used IDMOld.
Demo LoadXML with an aimsun network has been repaired.
ots-aimsun-proto, ots-aimsun-demo and ots-aimsun projects are now part of
ots. The proto-compiler is loaded dynamically based on the OS version and
protobuf-version. protobuf compiles into src/main/java so other projects can use
the generated code.
ots-base now has a logger package, where proper logging using tinylog will be
developed. Instead of system.out.println, system.err.println, DEBUG messages,
and other output that cannot be sent to file or a Console will be removed
step-by-step and replaced by calls to the Logger.
Using newest version of DSOL. Removing several classes for OTSSimulator as
these are perfectly covered using DJUNITS by DSOL 3.02 and up.
Updating all used jars to the latest version. Updating all Maven packages to
the latest version.
The mocking package jmockit needs to set agent-injections for junit tests in
the latest version.
Therefore jmockit has been replaced by Mockito + Powermock (also known as PowerMockito).
The mocking structure for the tests had to be adapted to this new structure.
As log4j2 is quite complicated to configure, it has been replaced by the
faster and smaller tinylog package.
As a result of the above updates, around 3000 smaller and larger changes had
to be made to the code base.
Site structure and Velocity files changed to comply with the latest
maven-site plugin.
OTS-331. Change ParameterTypes to referenced Types.
OTS-337. RoadSampler that starts for t>0s may give a NullPointer
OTS-333. Create interface for getId()
OTS-332. Make GTUType and LaneType hierarchal
OTS-345. Create utility to apply an OD matrix on the network
OTS-346. Streamline parameter creation using factories
OTS-347. Create Generator<O> for constant values
OTS-349. Provide default GTUCharacteristics for GTUTypes
OTS-350. Acceleration <-10m/s^2 at vehicle generation with LMRS
OTS-353. Markov chains in vehicle generation
OTS-352. Division of origin demand over multiple links and lanes
OTS-354. Remove initial speed and position from LaneBasedGTUCharacteristics
OTS-358. Different simulation outcome in debugger mode
OTS-359. Add origin and destination to strategical planner
OTS-360. Clean up GTU Renderable2D raw code
OTS-361. No lane change distance in LaneBasedGTUGenerator and ODOptions
OTS-147. Tactical planner methods for GTU generation
OTS-355. Tools for perception in the recent past
OTS-364. Dynamic LaneStructure
OTS-365. Historical Collections
OTS-366. Iterable perception
OTS-372. Add detector
OTS-373. GTU initialization; events and operational plan
OTS-374. Gradual lane changes and exact lane and sensor events
OTS-375. Add lane choice at split function to tactical planner
OTS-376. Offset at start and end for all cross-section elements
OTS377. Add YIELD and TOR to priority
OTS378. Allow demand to be split over several connectors
OTS380. GTU-Lane connections with instantaneous lane changes
OTS-126. Add class for a speed sign.
OTS-156. Make conflicts GTUType dependent. Priority at conflicts may depend on
the GTUType, e.g. at some conflicts, trams have absolute priority over cars,
but cars may behave according to a right-has-priority rule.
OTS-217. Initial operational plans and lane changes. In some cases, tactical
planners should not create an operational plan containing a lane change.
E.g. filling the network at t=0, some surrounding GTUs may not yet be generated.
OTS-319. Alignment with DJUNITS 3.00. Units for absolute and relative values
have been separated.
They are truly different and should never have been mixed. As an example, an
AbsoluteTemperature of 10 degrees Celsius has an offset of 283.15 Kelvin from absolute zero.
A relative temperature of 10 degrees Celsius, however, is equivalent to 10 Kelvin, and does not
have any offset. The same holds for Direction, Time, and Position. This has quite some effects
on the code, as TimeUnits in Durations had to be replaced with a DurationUnit. Same for Directions
that now have their own DirectionUnit (e.g., NORTH_RADIANS: radians relative
to NORTH, or EAST_DEGREES: degrees relative to EAST). Time can be stated relative to the POSIX
Epoch (1-1-1970), AD 1, or the J2000.1 Epoch.
OTS-320. SpeedSign ENDOFDAY
OTS-321. AIMSUN classes have to go into ots-aimsun project.
ots-aimsun for aimsun classes on the OTS side.
ots-aimsun-demo for demos with aimsun classes.
ots-aimsun-proto for proto files and generated classes.
The last one is important to separate because of suppression of javadoc and formatting error
messages because of checkstyle.
OTS-325. Toledo demos complain about missing TacticalPlanner
OTS-327. Demo Crossing with Traffic Lights has a casting error. There was
still a reference to the TimeUnit in the typed distributions, where a DurationUnit
should have been used. This has been solved in all four typed Distributions.
OTS-328. TRAFCOD2 demo does not start anymore. To make the registration work
better in the OTSNetwork, the name of any registered object should be unique within a lane.
In order to make a) inspecting ids easy, while b) still registering full ids with a cross
section name and a cross section element name, the method getFullId() has been added in addition to
getId(). When displaying objects, getId() is used. When registering objects, getFullId() is used.
OTS-329. N201 XML Parser demo throws error. All sensor, trafficlight, and
sensor objects in XML files have to be globally unique in the network.
N201v8.xml in the ots-parser-xml project test has been updated to make the names of
Lane objects unique.
OTS-330. Directions not interpreted correctly when parsing. This was caused by
the fact that the DirectionUnit uses NORTH_RADIANS as the BASE, and EAST_RADIANS
is -90 degrees rotated with respect to NORTH_RADIANS. Instead of using
getSI() or .si for the direction, getInUnit() should be used in Links.java.
Updated to DJUNITS version 3.00.01.
OTS-269. Settable deletion of GTU's if in trouble.
OTS-265. BLOCK should have a cloneable class and should have animation
capabilities.
OTS-263. Fixed bug in detection of intersecting lines (shapes).
OTS-273. XML parser parsed wrong value for use as Z-coordinate.
OTS-279. Added BusStop.
OTS-280. Added BusSchedule.
OTS-277. Removed LaneBlock.
OTS-295. PRIORITY added to LINK tag in xml parser.
OTS-299. Method projectedPosition was actually translatedPosition; method name
fixed. Added new method projectedPosition.
OTS-297. DJUNITS version 2.01.03 used. Scalars in SI units with the exception
of Money scalars can now be created with e.g., Length len = Length.createSI(5.0).
OTS-298. DJUNITS version 2.01.03 used. Constants NaN, POSITIVI_INFINITY,
NEGATIVE_INFINITY, POS_MAXVALUE and NEG_MAXVALUE have been added to scalars,
with the exception of Money scalars.
OTS-278. Scheduled busses and bus stops.
OTS-316. Allow non default GTU colorers in visualization.
OTS-267. Researched parallelization of the gtu's move() method and provided
options for synchronized update of the GTU's positions as well as position caching.
Updated to DJUNITS version 2.02.00 and DSOL version 3.01.05.
OTS-156. Make conflicts GTUType dependent.
OTS-246. Demo model XMLNetworks merge with LMRS throws error.
OTS-250. Interaction conflicts and traffic lights.
OTS-251. Memory leak in simulation when GTUs leave the system.
DefaultCarAnimation object changed.
OTS-252. GTUs do not have a hashCode function
OTS-253. Memory leak in infrastructure animation after cloning. Extra
functions in OTSNetwork to clone and destroy networks.
OTS-254. ToggleAnimationButtons should be aligned to the left.
OTS-255. As a result of update OTS-253, the constructor of the OTSLink and CrossSectionLink have
changed to include the simulator.
Default jog4j-2 configuration file added.
Updated to use DSOL version 3.01.03, which allows to override the Renderable2D.destroy()
function.
OTS-244. OTSNetwork.shortestPath does not calculate shortest route when
direction is BOTH.
OTS-245. Several methods of AbstractGTU and AbstractLaneBasedGTU should be declared
non-final to allow extensions.
OTS-242. Repair of Bezier curve.
toString() methods added to several classes in ots-core.
Throw.when(...) added to constructor of Distribution.java.
Unit tests added for several classes in ots-core.
Hierarchical GTUType class.
OTS-235: Arc with variable radius.
OTS-236: Bezier SHAPE and control points limited to intersection of control
lines.
OTS-237: Clone of CrossSectionLink added CrossSectionElements twice.
OTS-238: GTU should not immediately change lane on initialization with the DirectedLaneChange
tactical planner.
OTS-239: Time to not change lanes after a lane change with the DirectedLaneChange tactical planner
should be settable.
OTS-240: The threshold distance for differences between initial locations of the GTU on
different lanes should be settable.
OTS-64: LMRS - Relaxation.
OTS-65: Level of lane change desire by other drivers.
OTS-66: Relaxation response to lane change in front.
OTS-200: Implement TrafCOD traffic controller.
OTS-214: TrafficLight implementation for car following + instantaneous lane
change
model.
OTS-215: TrafficLight implementation for LMRS.
OTS-218: Automatically register LaneBasedObject on their Lane.
OTS-219: Store the GTUs that trigger a Sensor in the Sensor and not in the
Lane.
OTS-221: Bring back LaneBasedGTUFollowingDirectedChangeTacticalPlanner.
OTS-222: Z-order drawing.
OTS-223: Repair parsing for ARC.
OTS-224: Allow for selection of layers in animation.
OTS-225: Provide default zoom for animation, and fix zoomAll method.
OTS-226: Allow animation of ids for Node, Link, Lane, Sensor, TrafficLight,
and GTU.
Moved ImmutableCollections to DSOL version 3.01.01.
Updated to use DSOL version 3.01.01.
OTS-87 Implement mandatory incentives for LMRS.
OTS-88 Implement voluntary incentives for LMRS.
OTS-160 Categorize perception.
OTS-216 Added neg() function to djunits and updated djunits in ots to version
2.01.01.
OTS-213 Change SimpleWeightedGraph in OTSNetwork into
SimpleDirectedWeightedGraph
OTS-214 TrafficLight implementation for car following + instantaneous lane
change
model
OTS-215 TrafficLight implementation for LMRS
OTS-106 Traffic lights as separate objects that can be observed instead of a
'fake'
GTU
OTS-181 Observable object hierarchy
OTS-174 Retrieve network saved with xstream for a new simulation
OTS-151 Simplify registration of GTU on lanes
OTS-209 DJUNITS Scalars should import Comparable individually
OTS-210 GTU to handle its own instantaneous lane change
OTS-211 GTU should be able to provide its reference position
Separate project 'ots' to act as the root instead of ots-base as ots-base now contains code
OTS-104 XML parser dependent on order of parsing
OTS-115 Repair error with lane direction in parser while link direction not
yet set
OTS-128 Add ROADCLASS definition in XML and as element under ROADTYPE
OTS-177 Make a list of changes based on JIRA sprints in POM file
OTS-179 OD Matrix class
OTS-180 IMB Callback for SimSmartMobility
OTS-173 Add events for adding/removing and for triggering of sensors
OTS-182 Links and Nodes should automatically be added to a Network
OTS-183 Simplify IMB connection in OTS demos
OTS-184 SimSmartMobility: SimulationTransceiver: add comments about payload
OTS-185 SimSmartMobility: IMB NetworkTransceiver
OTS-186 SimSmartMobility: IMB NodeTransceiver
OTS-187 SimSmartMobility: IMB LinkGTUTransceiver
OTS-188 SimSmartMobility: IMB LaneGTUTransceiver
OTS-189 SimSmartMobility: IMB GTUTransceiver conform SSM v1 standard
OTS-190 IMB SensorGTUTransceiver
OTS-192 XML parser has to be adapted to latest changes in the way a network is
built
OTS-193 Sampling framework to calculate KPIs
OTS-194 ImmutableCollections have to be updated
OTS-84 Demo simulations don't check for sufficient headway.
OTS-148 Direction should not implement >, >=, <, <=.
OTS-150 min and max functions for djunit scalars.
OTS-154 getLength() in Headway.
OTS-155 Add split as merge type.
OTS-158 Method to add default values of parameters defined in given class.
OTS-159 Add first offramp info in perception.
OTS-161 Replace Velocity by Speed in all code.
OTS-163 Save network with xstream.
OTS-164 POLYLINE element for LINK in XML.
OTS-165 Tidy up XML definitions.
OTS-169 Split ots-road project: separate projects for the different parsers.
OTS-171 Create separate ots-imb project.
OTS-172 Pub/sub between GTU, Lane and Graphs.
OTS-107 Unit test verifies equals(), hashCode(), toString(), Serializable.
OTS-111 DJUNITS names of Abs quantities.
OTS-116 Animation objects not shown after toString() changes in OTS.
OTS-118 Change Velocity to Speed in GTU methods.
OTS-120 Create a getCenter() method in all GTUs.
OTS-123 Exception.throwIf() method to separate class.
OTS-131 Add class for speed limit types with static defaults and uniqueness.
check
OTS-133 Add utility class for tactical planners for current active speed
limit.
types
OTS-134 Add interface for perception with common lane change and
car-following.
info
OTS-135 Throw.when cannot throw Exceptions that can be internally thrown.
OTS-137 Immutable collection classes.
OTS-138 Implement GTUType as a Type.
OTS-139 LinkType and LaneType should become Types.
OTS-17 Zoom whole network, zoom to home extent, toggle grid on/off.
OTS-50 Mouse-centered zoom in animation panel.
OTS-55 Some demos don't check room for generated GTUs.
OTS-63 Display x and y coordinates on animation screen.
OTS-89 Runtime error in dsol repaint.
OTS-90 Play and pause buttons should be merged.
OTS-101 Create list of driver characteristics.
OTS-102 New implementations of IDM and car-following interface.
OTS-103 Create a runUpToAndIncluding method for the dsol DEVSSimulator.
OTS-108 New implementation of headway algorithms.
OTS-109 Link new algorithms to RTI software for Nissan.
OTS-76 Circular road demo gives errors around simulation time 10 minutes.
ots-core: Perception added.
ots-core: OperationalPlan, TacticalPlanner, and StrategicalPlanner added.
ots-core, ots-road: All GTUs are free ranging; Lane-based behavior is just a constraint.