Skip to content

Latest commit

 

History

History
2804 lines (2306 loc) · 165 KB

release_notes.md

File metadata and controls

2804 lines (2306 loc) · 165 KB

esmini release notes

2024-09-13 Version 2.38.5

Improvements and fixes:

  • Bugfix: Restore segment interpolation mode after ghost restart

2024-09-11 Version 2.38.4

Improvements and fixes:

  • Support InRoutePosition/FromRoadCoordinates
  • Support pi and e constants in expressions
  • Add support for trajectory coordinate system distance measurement
  • Add Vector NCAP scenarios to CI smoke test suite (issue #595)
  • Add option to align lateral sign of route positions
    • --align_routepositions
    • consider route direction when evaluating sign of laneId and t
    • use with NCAP scenarios to get it right
  • Change synchronize default distance tolerance from 1.0 to 0.0
  • Fix crash due to empty wheel data vector
    • affecting e.g. ad_hoc_traffic code example
  • Fix crash due to swarm traffic inherit controllers (issue #601)
    • when no vehicle catalog available, central object is used for swarm
    • issue was that controller reference was reused and eventually deleted
    • now controller will be unassigned for the swarm copy vehicle
  • Bugfix: Restore heading interpolation
    • interpolate heading along segments in object trails
    • unintentionally disabled in v2.38.0
  • Bugfix: Avoid route being disabled when position is reported via lib
  • Bugfix: Resolve variable value from parameters, not variables
  • Bugfix: Resolve position dependencies at synchronize start

Build improvements:

  • Add symbols to sanitizer build for increased readability

2024-09-02 Version 2.38.3

Improvements and fixes:

  • Consider trailers for freespace distance calc (issue #594)
  • Add lib function (SE_GetObjectGhostId()) to get ghost ID
  • Support UserDefinedAction in Init section
    • previously only supported in storyboard
  • Adjust order of Init action execution according to OSC xsd sequence
  • Fix parsing bug causing wrong bounding box settings
    • bug was introduced in v2.38.2 (previous version)

2024-08-29 Version 2.38.2

Improvements and fixes:

  • Add further wheel info, not only friction
    • both in lib and OSI
    • see struct for what's populated
    • see API here
  • Add timestamp to ghost trail info
  • Improve route handling
    • always map position to closest point on route
    • fix missing route position update, e.g. for externally reported positions
    • refactor and simplify code
    • add visuals for followRouteController waypoints (dim colored)
    • indicate start and end waypoints by larger scaled visuals
  • Add a few functions for route info
  • Fix elevation mapping bug
    • could cause entity to drop to lowest road, e.g. from bridge
    • bug was introduced in v2.37.0 (Feb 2024)

Build improvements:

  • Establish nightly sanitizer job
  • Add manual CI and sanitizer job triggers
  • Fix download issue for build dependent packages
  • Fix cmake version deprecation

2024-08-16 Version 2.38.1

Improvements and fixes:

  • Accept negative values for deceleration parameters in ALKS controller
    • i.e. consider only absolute values of DriverDeceleration and AEBDeceleration
  • Increase test coverage by enabling all relevant tests also for non OSG builds in CI

2024-08-15 Version 2.38.0

Updated behaviors:

  • Polyline trajectory heading interpolation now purely depends on followingMode

    • "position" -> interpolate only around corner
    • "follow" -> interpolate along whole linear segment
    • not considering whether heading was specified or not
    • see updated table in User guide - Trajectory interpolation and alignment
    • new option, --disable_pline_interpolation, to skip interpolation altogether
  • Adapt Trailer implementation to OpenSCENARIO 1.3

    • changes from previous prototype implementation:
      • rename EntityRef element to TrailerRef
      • Add Trailer parent element for inline and catalog trailers
  • VehicleCatalog updated to match OpenSCENARIO 1.3

    • trailer configurations updated accordingly

Improvements and fixes:

  • Refactor Position implementation and handling
    • simplify and clarify relative/absolute mode handling in code
    • reduce memory leaks

NOTE: Unexpected side effects may have been introduced by the refactorization. Please raise issue if encountered.

2024-08-13 Version 2.37.17

Updated behaviors:

  • Update target speed for relative speed action continuously
    • previously target speed was sampled only once (at start of action)

Improvements and fixes:

  • Fix relative target speed not reset for repeated actions (issue #589)
  • Fix bug in condition group logging (PR #587)
  • Add ref_point.xosc demonstrating effect of various ref points (issue #590)
  • For injected actions, create unique name and replace ongoing similar action
    • compose name of action type and action counter
    • abort any ongoing action of same type and object
  • Fix SUMO controller elevation bug
    • use SUMO z value as is (absolute, not relative)

2024-07-01 Version 2.37.16

Fixes of bugs introduced in v2.37.15:

  • Fix wrong positioning of waypoint and trajectory visualization
  • Fix intermittent coloring issue in viewer (due to scenegraph misconfig)

2024-07-01 Version 2.37.15

Improvements and fixes:

  • Support (partly) string IDs for roads and junctions
    • integer ID is generated and assigned for internal use
    • the integer ID is the one being logged and reported
  • Add arguments to ignore z, pitch and roll inputs (PR #583)
    • aligning the vehicle to the road instead
  • Improve support for distant road networks
    • very high coordinates (>1+E6) previously resulted in shaky graphics
    • now fixed by coordinate transformation
  • Fix outdated C# RMLib wrapper functions (issue #584)
  • Make road alignment on Controller activation optional
    • previously heading was always aligned at activation/deactivation
    • now behavior is set by each controller
  • Fix range for lane Id randomizer in odrviewer
  • Fix bug in junction Id check
    • junction ID 0 mistaken for no junction
  • Accept and adjust lane section s-value beyond road length

2024-06-26 Version 2.37.14

Improvements and fixes:

2024-06-24 Version 2.37.13

Improvements and fixes:

  • Embed execution search paths for dynamic libraries on Linux
    • $origin (location of exe file) and expected lib location
    • applies to esmini-dyn and dynamically linked protobuf
  • Relax (totally remove) replayer dependency to OSI and protobuf
  • Bump OSI lib to Visual Studio toolset v142 and add missing protobuf DLLs
    • remove externals/osi folder and re-run cmake command to get latest
  • Fix wrong filename reference for dynamic protobuf lib on Windows
  • Add minimalistic build example to User guide

2024-06-13 Version 2.37.12

Improvements and fixes:

  • Make the swarm traffic direction based on RHT or LHT (PR #575)
  • Add lib function to get type of lane object is within
    • ignoring any lane type snap settings
    • add to both esmini and esminiRM libs
  • Try any specified scenario file full path first, avoiding wrong file being loaded
  • Ensure normalized normals in scaled 3D models
    • previously lighting could be strange for non-uniform scaled objects
  • Bugfix: Prevent adding duplicate trailers causing segmentation fault at exit
  • Fix FollowRouteController first waypoint to include current position
    • getting rid of "Entity moved out of route" message
  • Restore odrviewer even lane distribution for initial spawning

2024-05-16 Version 2.37.11

Improvements and fixes:

  • Support empty roads, i.e. without geometries and lanes
    • useful for infinite open space with additional properties, e.g. speed limit
    • clarification: esmini also supports skipping OpenDRIVE file altogether
  • Fix TTC calculation issue (issue #569)
    • Consider direction of motion
    • Relative distance based on entity heading instead of lane direction
  • Fix trajectory issues
    • Skip speed update for zero timestep
    • Skip update of non ghost objects during ghost headstart

2024-05-08 Version 2.37.10

Improvements and fixes:

  • Add brief info on custom camera API to User guide - Custom camera positions
  • Apply VisbilityAction to connected tow and trailer vehicles (PR #565)
  • Add missing print camera pose key command ('K') to help
  • Bump jinja2 from 3.1.3 to 3.1.4 (PR #567)
  • Add slight Z offset to road markings, avoiding flickering in exported models
  • Fix bug causing generated objects end up at origin (skip destructive optimization)
  • Add option to skip textures in generated model (--generate_without_textures)

2024-04-26 Version 2.37.9

Improvements and fixes:

  • Add missing esminiLib interface for OSC variables
  • odrviewer bugfix, avoid crash when respawning left hand traffic (issue #563)
    • consider RHT/LFT rule when finding available driving lanes
  • odrviewer bugfix, avoid crash for no driving lane road networks (issue #562)
    • prevent feeding bad range to randomizer
  • Add script for multiple comparison runs (run_repeat_compare.sh).

2024-04-12 Version 2.37.8

Improvements and fixes:

  • Add missing GetObjectAcceleration() declaration to C# wrapper
  • Resolve controller domain conflicts
    • when activating a controller, disable any active one on conflicting domains

2024-04-10 Version 2.37.7

Improvements and fixes:

2024-04-05 Version 2.37.6

New content:

  • Add script, dat2xosc.py, to convert selected dat content to xosc
    • fixates trajectory for one or several actors
    • brief info in file header comment

Improvements and fixes:

  • Add lib function to retrieve object acceleration
  • Add lib function to close log file (issue #556)
    • it will otherwise stay open for concatenating further runs
  • Add Python example, drive.py, using SimpleVehicle model (issue #555)
    • run from esmini/bin:
      python ../EnvironmentSimulator/code-examples/hello_world/drive.py
    • drive using arrow keys
  • Add controller experimental virtual operation mode
    • in this mode the controller only calculates acceleration, not applying it
    • for use cases with an external vehicle dynamics model
    • example code and scenario: mixed_control
    • brief info in mixed_control.cpp file header comment
  • Fix ghost trail issue after long standstill
    • at end of standstill phase, add another sample
    • avoiding slightly wrong interpolated speed
  • Fix controller type not being updated in object state
    • type now set whenever a controller is activated on longitudinal domain
    • not only for the initially assigned controller, which was the case

2024-03-27 Version 2.37.5

New features:

  • Support overlay text scaling (issue #548)
    • launch argument: --text_scale <scale factor>

Improvements and fixes:

  • Indicate ClothoidSpline support in osc_coverage.txt
  • Recommend newer protobuf version for Python scripts
    • root cause is missing builder.py in older versions
    • changing recommended version from 3.19 to 3.20.2
  • Align float precision in print statement (issue #549)
  • Check model id and warn if not matching model3d attribute (issue #547)
    • but only if scenario is being recorded (into a dat file)
  • Fix typo in CSV Logger, replace "Entitity" label by "Entity" (PR #552)
    • might affect processing of files created with --csv_logger argument
  • Add brief info on ideal sensors (issue #553)
  • Add another search path for model_id file, solving load failure
  • Support trajectory pitch and roll interpolation (issue #543)
  • Establish initial speed from trajectories during initialization
  • Avoid crash (null ptr ref) after viewer failure

2024-03-22 Version 2.37.4

Updated behaviors:

  • Injected action cancels any ongoing action of same type
  • Add ground plane when environment is missing, i.e:
    • when no OpenDRIVE specified and specified scenegraph failed to load
    • when neither OpenDRIVE nor scenegraph specified

Improvements and fixes:

  • Fix route catalog parameter handling (issue #544)
  • Add replayer capability to smoke test framework
  • Improve replayer collision detection (issue #483)
    • detect collision between any objects
    • detect multiple simultaneous overlaps
  • Add example how to run all scenarios in a folder
  • Update coverage and osc-extensions info
    • Trailer support now part of OpenSCENARIO (v1.3), add to coverage
    • SteadyState added to SynchronizeAction (osc v1.1), remove from extensions

2024-03-19 Version 2.37.3

Improvements and fixes:

  • Fix ghost controller type wrongly reported as default instead of ghost reserved type
    • bug introduced in v2.37.2
  • Fix pitch/roll mix-up in relative world- and object positions
    • bug introduced in v2.36.0

2024-03-15 Version 2.37.2

New features:

Improvements and fixes:

2024-03-04 Version 2.37.1

New features:

Improvements and fixes:

  • Fix OSI header file dependency for non OSI builds (issue #540)
  • Group sign bounding boxes with odr features, toggle key 'o' (issue #530)
  • In lib header, replace outdated element state description with enum reference (issue #541)

2024-02-26 Version 2.37.0

New features:

  • Add friction support
    • support OpenDRIVE lane material friction
    • populate OSI wheel data (issue #527)
    • visualize low friction as blue, high as red
    • see brief info in User guide - Friction
  • Add duration option (--duration <time>) in odrviewer
    • play for specified duration
    • --duration 0 will quit immediately after one frame
  • Flag to skip create signs when external scene-graph is loaded (issue #530)
    • always create wire-frame sign bounding boxes (toggle 'O')
    • skip load or create sign model when external scene-graph loaded and flag set

Improvements and fixes:

  • New method for controller initialization after player (and viewer) init
    • enables e.g. adding sensors to objects from controller (issue #532)
    • see example in ControllerACC.cpp (enable line 73, and press 'r' to see frustum)
  • Expose visibilityMask in esmini lib (issue #535)
  • Improve LaneChangeAction and fix edge case
    • fix slightly wrong heading calculation
    • ensure total speed (lat + long) is maintained
    • handle edge case of requested lateral movement exceeding speed
    • support only lateral speed component (edge case above)
  • Fix CommonMini version generation (PR #537)

2024-02-10 Version 2.36.5

New features:

  • Support paths in StoryboardElementStateCondition (issue #529)
    • allows for prefix element name with parent name
    • e.g. Event2::MyAction
  • Add odr signal bounding box (issue #530)
    • use as stand-in 3D model if none could be loaded
    • for signal 3D models, optional wire frame bounding box (toggle on key 'O')

New behaviors:

  • Replace storyboard element path separator '/' with '::'
  • Fix OSI stationary object ids, now start at 1 and not 0 (which is reserved for undefined)

Improvements and fixes:

  • Fix issue in calculation of relative orientation components (issue #496)
  • Add position conversion code example (convert_position_type)
    • shows ways to print or convert world positions (x,y) to road coordinates
    • manipulate_positions.py makes trajectories portable wrt road characteristics
  • Fix link issue with gcc 7.5 on Ubuntu

2024-02-02 Version 2.36.4

New features:

  • Add OSI Traffic Command to OSMP
    • initial version with limited coverage
    • only a few actions supported yet (teleport, lane change, speed change)

Improvements and fixes:

  • Fix bugs in World (X,Y) to Road/Route position conversion when off route (issue #523)
    • don't limit search to route roads only
    • especially when current position is out of route bounds
  • Respect full path for permutation artifacts (issue #526)
    • e.g. log, dat, osi and csv files
    • include any specified folder path
  • Maintain longitudinal speed in step (immediate) lane change actions

2024-01-31 Version 2.36.3

New features:

  • Add full element path name to the storyboard element state change callback function
  • Add OSITrafficCommand embryo (issue #499)
    • some initial code outlining a possible approach
    • recent storyboard state handling updates ensures no command is missed
    • code example: osi-traffic_command
  • Respect and apply jerk settings (acc/dec change rate) in LongitudinalDistanceAction
  • Add scooter vehicle
    • add entry in vehicle catalog
    • add simple 3D model to model pack
      • remove esmini/resources/models folder and re-run cmake .. to download
      • or fetch latest pack manually from here

Improvements and fixes:

  • Skip velocity and acceleration updates after teleport action, avoiding spikes
  • Fix bug in DistanceCondition not resolving relative positions correctly
  • Fix presets for Linux VSCode including debug support
  • Major storyboard code refactorization
    • replace mega nested loop with full OO approach
    • improve element state condition handling, no transition misses

2024-01-10 Version 2.36.2

New features:

Improvements and fixes:

  • Fix and update ideal sensor API (issue #514)
    • Fix wrong return code in SE_AddObjSensor, now returning unique sensor ID
    • Add functions to retrieve number of sensors, both total and per object
  • Reset status in SpeedAction for any additional run
    • enables same speed action to be correctly re-triggered
    • example scenario: drive_when_close.xosc, drive while close to another car else stop

Build improvements:

  • Automatically attempt download dependent packages from all (3) available sources
  • Add implot package to CI cache (faster total build time)
  • Exclude implot from slim esmini build (in CI)

2024-01-04 Version 2.36.1

Fixes:

  • Fix and update esminiRMLib functions for recent positioning updates
  • Support trailerRef attribute name in ConnectTrailerAction

Compile and CI updates:

  • Restore default setting not treating warnings as errors (still enabled for CI)
  • Fix compiler warning in OSI + non-OSG builds
  • Run all relevant unit tests also for non-OSG builds

2024-01-03 Version 2.36.0

Improvements and fixes:

  • Fix relative positioning over connections and junctions (issue #502)
    • prioritize own route over referenced object's one
    • if neither entities has assigned route, use default routing
  • Improve route handling, don't get stuck outside defined route path (issue #501)
  • Consider full orientation for relative object positioning (issue #509)
    • align the relative delta x, y, z components with reference entity
  • Accept zero length NURBS trajectories
  • Randomize equal weighting junction choices
    • randomize choice between candidate roads with equal outgoing angle
  • Fix outdated list of storyboard element states in storyboard_state_callback.py
  • Fix --threads mode missing quit request from viewer
  • Cosmetics: Limit steering rate for calculated steering angle

New features:

  • Add --pause launch flag
    • halt after initialization
    • press Space or Enter to continue or step
  • Add runtime control to player server (former action server) (issue #497)
    • new feature: support play, pause, step commands
    • see example: inject_actions.py and video clip
    • improvement: avoid duplicate actions on same object

Updated behaviors:

  • Treat fixed timestep = 0 as non fixed (realtime)

2023-12-16 Version 2.35.0

New features:

Improvements and fixes:

  • Don't automatically stop when all acts are done
    • continue until storyboard stopTrigger hits
    • or, if stopTrigger is missing, continue "for ever"
    • Note: This change might require moving act stop trigger to storyboard

Additional information:

  • Due to a mistake leading to master branch out of synch with dev branch and
    release tag v2.34.1 stuck on dev, it was decided to revert master history back
    to v2.34.0. This might lead to issues when pulling master. If that happens, resync
    your local master branch as described in User guide - Branch strategy.

2023-12-11 Version 2.34.1

Improvements and fixes:

  • Fix bug preventing trigging and evaluation of subsequential stories
    • bug introduced in 2.34.0
  • Improve image handling (fetch or save rendered images) (issue #173)
    • off-screen (to RAM) rendering off by default (for performance)
    • API now allows to activate before init
    • Example how to fetch images from multiple cameras: multiple-cameras.cpp
    • Note: Activating off-screen before init is now required to include initial frame

2023-12-08 Version 2.34.0

New features:

  • Support OpenDRIVE explicit road lines

Improvements and fixes:

  • Fix issue with trajectory relative positions not updating
    • too eager optimization skipped initial evaulation of trajectory
    • bug introduced in v2.33.0
  • Restore OSI optimization and add documentation
    • static OSI content should only written first step (not always been the case lately)
    • add brief info on OSI API for programmers: User guide - OSI data
  • Improve and simplify storyboard state handling
    • identity act complete state
    • support zero stories (Init actions only)
    • make state transitions immediately
      • Note: Might affect trigger timing slightly
    • some code clean-up, e.g. centralize storyboard update
  • Fix low curvature clothoids mistakenly identified as lines
  • Fix position calculation issues
    • skip reference lane in relative laneId calculations
    • fix initialization bugs wrt relative/absolute orientation type
    • fix bugs in relative position
    • Note: These changes might affect pose (pos + rot) behavior
  • Add code example changing catalog parameter values
  • Add rmlib c# example
  • Fix FBX SDK download issue in osg apps build and update info to support DAE
  • Add Python OSI receiver example (issue #500)
  • Add hint how to create .dat files from multiple scenarios in one command -- See end of section User guide - Scenario recording (.dat)
  • Align trailer actions with updated concept (candidate for OpenSCENARIO 1.3)
    • Introduce separate actions for connect and disconnect trailer
    • Add parent umbrella action TrailerAction
    • See updated example trailer_connect.xosc
  • Handle timestamps in ClothoidSpline prototype implementation
    • ClothoidSpline shape is an OpenSCENARIO 1.3 feature candidate
  • Add link to User guide git commit history under Version

2023-11-17 Version 2.33.2

New feature:

Improvements and fixes:

  • Fix graphics flickering of overlapping road, sidewalk, and grass areas
  • Identify bidirectional lane type as drivable
  • Fix wrong position mode setting in Hello World external Ego example

2023-11-10 Version 2.33.1

Updated behaviors:

  • Fix wrong t axis for offset in RelativeLanePosition with dsLane
    • ds will alight s/t to road direction, dsLane will align s/t to lane direction
    • for dsLane, negative offset will be right in lane direction and positive left

Improvements and fixes:

  • Fix missing polyline length causing unintended trajectory loop
  • Improve continuous road objects (issue #489)
    • model as 3D outline object instead of individual bounding boxes
    • when 3D model is provided, individual objects are still populated
    • OSI populated accordingly, as polygon vertices or bounding box
  • Add Python examples on how to initialize esmini with launch arguments
  • Add info on how to change fps with ffmpeg (here)
  • Add OSI UDP socket API to C# wrapper

2023-10-27 Version 2.33.0

New features:

  • Report parking spot on OSI
  • Add support for RelativeLanePosition dsLane mode
  • Add flexible interpolation and positioning modes
    • introduce mode which can be RELATIVE or ABSOLUTE
    • mode can be set per position component Z (elevation), heading, pitch and roll
    • trajectory orientation interpolation
    • see info in User guide - Positioning

Updated behaviors:

  • Camera focus on OSC object bounding box center
    • instead of bounding sphere of object 3D geometry
  • Accept zero stories as introduced in OSC 1.2
  • Output also relative camera position on 'K' key event

Improvements and fixes:

  • Add some more details to the version string
    • most recent tag
    • nr builds from tag
    • indicate local changes (dirty)
    • based on git describe
  • Fix superelevation calculation
    • project along Z instead of rotating road boundaries
    • harmonizing with object orientation and positioning
  • Fix dashed road mark visualization bug
  • Fix condition delay issue preventing looped storyboard elements to trigger
  • Fix bug in cmake contibuting to sanitizer run failure
  • Update recent dropbox links for new policy (issue #482)

2023-09-29 Version 2.32.1

New features:

Updated behaviors:

  • Support activating controller on several domains in mulitple activation steps
    • see example in distance_test.xosc
    • previvious behavior was to reset all domains for each activation

Improvements and fixes:

  • Add esmini, OSI and OSMP version to OSMP_FMU modelDescription.xml (PR #476)
  • Ensure synchronized route position in junctions (scenariogeneration #179)
    • solves intermittent intersection border issue leading to wrong road ID and route failure
  • Avoid additional step after scenario termination
  • Fix plot window crash on added objects
  • Add trailer rotating front axle example
  • Document optional parameters in ReportObjectPos
    • z, p, r can be set to NAN for road alignment (temporary solution)

2023-09-07 Version 2.32.0

New features:

  • Runtime plotting feature based on imgui/implot
  • osi3::TrafficUpdate input to the esmini OSMP FMU (PR #463)
    • esmini can now be used in a closed-loop co-simulation with a traffic participant model
  • UDP action server (issue #465)
    • Inject actions via UDP messages
    • Only a few actions supported so far
    • See issue and example inject_actions.py for more info

Updated behaviors:

  • Relative lane-change/offset direction now based on the referenced entity orientation
  • Add road ID to trajectory vertices
    • purpose is to preserve road ID for trajectory lookup functions, e.g. follow ghost
    • especially useful in intersections where road id is ambiguous due to overlapping roads
  • Reduce lane change jitter
    • apply lateral movement with delta-time of current frame, not previous

Improvements and fixes:

  • Code quality improved by const correctness on class methods (PR #466)
  • Set SUMO vehicles role = CIVIL and category = CAR (previously undefined)
  • Add missing road info for esminiLib road lookahead functions
    • junctionId, roadId, laneId, laneOffset, s and t
  • Update info how to install clang v15 on Linux in User guide - Formatting
  • Fix execution flow bug in the experimental fix_dae_materials.py script

2023-08-04 Version 2.31.10

  • Add SE_AddObjectWithBoundingBox() method to lib API (PR #460)
  • Fix wrong expected swarm central object attribute name (issue #459)
    • correct attribute name is CentralObject
    • previous expected name, CentralSwarmObject, is accepted as well
  • Add combined type and vehicle class to osi2csv
  • Add missing OSI VAN class
  • Add missing fence 3D model to demo package
  • For TTC, calc rel speed along triggering entity velocity vector (issue #445)

2023-07-04 Version 2.31.9

New behaviours:

  • Calculate omitted WorldPosition headings also when trajectory following mode is "position"
    • previously omitted heading was set to "0.0" (default according to standard)

Improvements and fixes:

2023-06-26 Version 2.31.8

New behaviours:

  • Set camera focus on model center instead of referece point (issue #442)
  • Relative lane id/offset based on entity x-axis instead of road ref system (issue #444)
  • Align any missing z (elev), r (roll), and p (pitch) to road surface, skipping default value (0)
    • Note: This is a deviation from the OpenSCENARIO standard motivated by common sense
    • Values can still be set to 0 explicitly

Improvements:

2023-06-09 Version 2.31.7

2023-05-29 Version 2.31.6

New content:

Improvements and fixes:

  • Clarify esmini lane offset handling deviating from OpenDRIVE
  • Make sure lane offset definitions starts from s=0
    • if first entry does not start at s=0, add a copy for s=0
  • Fix bug in heading calculation wrt lane width and offset
  • Fix wrong SE_GetDistanceToObject() return code for case route not found
  • Demonstrate position type conversion (issue #437)

2023-05-25 Version 2.31.5

Improvements and fixes:

  • Add some additional object info to csv_logger (issue #434)
    • bounding box position (relative obj ref point)
    • bounding box dimensions
    • lane id
    • lane offset
  • Add API function SE_GetDistanceToObject() to get delta between objects
    • distance (ds, dt, dx, dy)
    • delta lane id
    • opposite lane flag
    • Note: ds will accumulate over multiple road segments
  • Add motorway type to relevant road segments in Unittest/xodr/highway_exit.xodr
    • affects OSI handling of the junction
  • Reduce grid intensity in plot scripts

2023-05-15 Version 2.31.4

Project updates:

  • Update to macos-11 on github actions

Improvements and fixes:

  • Add custom camera option to look at current entity
    • simply specify --custom_camera <x,y,z> (skip heading and pitch)
  • Fix orientation alignment bug
    • respect individual rotational dimension (h,p,r) alignment setting correctly
  • Add parameter to control accepted lateral distance in ACC Controller (issue #427)
  • Ignore road sign subtypes "none" and "-1" (issue #430)
  • Fix custom camera position behavior
    • camera position affected only by entity position and heading, not roll and pitch
  • Add missing includes to esminiJS CMakeLists.txt

2023-05-03 Version 2.31.3

Improvements and fixes:

  • Support freespace attribute in RelativeClearanceCondition
    • typo in standard, should have been freeSpace
    • esmini now supports both freespace and freeSpace
  • Improve RelativeClearanceCondition
    • consider also empty lane of triggering entity
    • consider opposite lane flag for empty lanes as well
  • Added OpenMSL to related work

2023-04-28 Version 2.31.2

Improvements and fixes:

  • Fix RelativeClearanceCondition missed case of empty lanes within range
  • Support OpenSCENARIO v1.2 override priority, renamed from overwrite
  • Improve LongitudinalDistanceAction
    • make use of any dynamics constraints provided for the action
    • disable dynamics only when all constraints are missing
    • respect vehicle performance settings (limit constraints)
  • exclude odr and model refs from csv file converted from .dat
    • fixes plot_csv.py failing to plot csv files created from dat2csv.py
  • Add some ghost trigger info to User guide, see The ghost concept / Actions and triggers

2023-04-19 Version 2.31.1

New features and behaviors:

Improvements and fixes:

2023-04-18 Version 2.31.0

New features and behaviors:

Improvements and fixes:

  • Add info on blocked files on Windows (see here)
  • Add some COLLADA info related to osgconv (see here)
  • Fix issue with stand still phases on trajectories
    • e.g. allow for rotate heading while stationary
  • Fix curvature direction dependence in esminiRM Unity Util GetLaneInfo()
  • Add info on failed package download to User guide - Various issues
  • Fix/update esmini C# wrapper API documentation (header comments/tooltip))
    • AddObject() returns created object ID (not always 0) on success
    • object_id replacing object index as argument in many functions (use GetId(index) to find out)
  • Improve delta lane ID calculation in Roadmanager::Position::Delta() method
    • based on connected lane id at target position (compare at same road and s-value)
    • remove reference lane from delta (e.g. difference between lanes -2 and +3 is 4, not 5)
    • include flag for vehicle found in opposite lane or not
  • Add another looming controller demo scenario loomingHW.xosc (videoclip)

2023-03-22 Version 2.30.1

Project updates:

New features and behaviors:

  • Support OpenSCENARIO 1.2 and OSI 3.5.0 vehicle role attribute
  • Add simple police car 3D model (model pack updated)
    • easy way to update: Delete resources/models folder and run cmake .. again from build folder
  • Add odrviewer option (--stop_at_end_of_road) to stop instead of respawn at end of road (issue #407)
  • Expose SimpleVehicle class (kinematic "bicycle" model) in C# API

Improvements and fixes:

2023-03-16 Version 2.30.0

Project updates:

  • Bump C++ version from 14 to 17
  • Migrate CI to GitHub actions
    • introducing further checks, e.g. formatting check, build and test more variants
  • Introducing "dev" as main development branch while master will be reserved mainly for releases

New features and behaviors:

  • Add pause and step feature to odrviewer (issue #407)
  • Add some viewer options to replayer and odrviewer
    • odrviewer: --aa_mode, --headless, --custom_fixed_camera
    • replayer: --aa_mode, --headless
    • For complete and updated launch arguments, see User guide - Command reference
  • Add "Looming" driver model controller

Improvements and fixes:

2023-02-20 Version 2.29.3

New features and behaviors:

  • Add lookahead options to followGhost controller
  • Add cmake option (-D OSI_VERSION_3_3_1) to enforce OSI v3.3.1 instead of v3.5.0 (default)

Improvements and fixes:

  • Fix incorrect use of timeout parameter in unix (PR #393)
  • Ghost improvements
    • Support reverse trajectory following (issue #389)
    • Bugfix: Skip ghost time offset for relative timing mode causing an initial jump
  • Fix distance check messing up route (issue #395)
  • Fix missing maneuverGroup reset for multiple executions

2023-02-13 Version 2.29.2

New features and behaviors:

  • Fix wrong ParameterValueSet handling (issue #390)
    • For each scenario run one individual parameter value set is now applied
    • Previous behavior was to apply all value sets at once

Improvements and fixes:

  • ghost fixes:
    • fix wrong sim time in actions at ghost restart, causing corrupt SpeedProfile
    • add default head-start time in ghost controllers
    • Fix issue with ordinary teleport actions by ghost (no restart)
    • restore ghost bounding box visibility

2023-02-09 Version 2.29.1

New features and behaviors:

  • Identify road edges and populate OSI accordingly
    • Road edge is currently defined as boundary of outermost lane considered part of the road pavement
    • Lane types currently considered part of the road pavement:
      • DRIVING
      • ENTRY
      • EXIT
      • OFF_RAMP
      • ON_RAMP
      • ANY_DRIVING
      • RESTRICTED
      • STOP
  • Count total displacement in SpeedAction dynamics (issue #384)
    • for transition dimension = distance (fulfil speed change over specified distance), consider total sum of displacement including motion in opposite directions when speed is changing sign, e.g. from 10 to -5 m/s.

Improvements and fixes:

  • Update OSI to v3.5.0 for scripts as well (forgotten about in v2.29.0)
  • Add player reference in controllers
    • enables more control of visualization from controllers
    • implemented example: Visualize sensor target point in acc controller (key 'o' / --road_features on)
  • Fix coloring of stand-in bounding boxes
  • Fix issues in ad-hoc traffic example
  • Some additional bug fixes

2023-02-02 Version 2.29.0

New features and behaviors:

  • Support for DirectionDimension in relevant conditions (introduced in OSC v1.2)
  • Make AccelerationCondition aware of deceleration
    • Previously only considering absolute value of acceleration. Now signed.
  • Add cmake config presets also for Visual Studio (Windows)

Improvements and fixes:

  • Update to OSI v3.5.0 (from v3.3.1)
  • Major refactorization cleaning up memory leaks and compiler warnings
  • Increase compiler warning sensitivity, add multiple useful warnings
  • For CI builds, treat warnings as errors - zero tolerance
  • Improve OSI build script
  • Restore OSI demo in esmini-dyn

2023-01-24 Version 2.28.0

New features and behaviors:

  • Update OverrideControllerValueAction for OpenSCENARIO v1.2

    • support new attributes like rate, force and automatic gear
    • API (data structs) updated, not backward compatible, see esminiLib.hpp
  • Respect elevation alignment setting

    • enable use cases with external objects not bound to road surface
    • harmonize function prefix, change RM_SetAlignMode* to SE_SetAlignMode*
    • see example in User guide - External control of Ego

2023-01-23 Version 2.27.5

New features and behaviors:

  • support OpenSCENARIO variables (introduced in OSC v1.2)
    • Scenario example: Unittest/xosc/lane_change_trig_by_variable.xosc
    • limitation: Only SetAction supported, not ModifyAction yet
    • external API for setting and reading variables see esminiLib.hpp
    • deprecated ParameterSetAction still supported
    • API for setting and reading parameters still available as well
  • Adjust speed along s to maintain absolute speed
    • In other words: Do not increase total speed during lateral actions
    • Note: This can affect how far an object travels along s for a given duration.
  • Update reference driver in ALKS_R157SM controller, e.g:
    • fulfill reference driver action even if critical situation dissolves
    • add overlap tolerance param to avoid edge cases, e.g. equal sized objects
  • Embryo solution for esmini.js (esmini lib for web usage), see Libraries/esminiJS (PR #356)
  • Add Python OSI example (issue #367)
  • Add collision detection example to Hello World (issue #368)

Improvements and fixes:

  • Fix SE_InitWithArgs whitespace bug (issue #370)
  • Add missing plot.py to demo pack
  • Fix scenario initialization return code (issue #363)
    • return 0 only on success, else -1
  • Fix relative position beyond current road bug (issue #372)
  • Fix typos in User guide (PR #375)
  • Some additional minor bug fixes

2022-12-17 Version 2.27.4

New features and behaviors:

  • Step fwd/back by delta time in replayer instead of fixed nr steps

Improvements and fixes:

  • Fix chopped exe filenames in demo pack for Windows
  • Fix orientation alignment bug (issue #364)
  • Fix visibility mask bug in replayer

2022-12-16 Version 2.27.3

New features and behaviors:

  • Extend plot_dat and add plot_csv script
    • plot_dat.py support all plottable values
    • added plot_csv.py for plotting any csv file
    • this means that osi tracefiles can be plotted (via osi2csv.py and plot_csv.py)
  • Support continuous polyline speed and constant acceleration on segments
    • apply continuous speed / constant acc in FollowMode = follow
    • keep constant speed (zero acc) per segment in FollowMode = position
  • Add grid on plots
  • Update ALKS Reference Driver controller implementation
    • add support for cut-out and deceleration
    • add experimental support for pedestrians
    • add a few scenario examples (alks_*.xosc)
    • adjusted lateral trigger rule for cutting-in motorbikes
    • add overlap check function and apply for ALKS AEB trigger
    • add a few experimental properties, see ALKS_R157SM_Controller in ControllerCatalog.xosc

Improvements and fixes:

  • Update equation link in odr elevation example in straight_500_superelevation_elevation.xodr
  • Hello World updated to make use of existing library and header file (avoid keeping copies)
  • Add info on how to use Visual Studio (and VSCode) with Hello World tutorial
  • Fix shaky heading at end of small segment trajectories
  • Fix failed quit on close window event (issue #363)
  • Fix wrong OSI bbcenter_to_rear values (issue #353)
    • change sign (measure from bb center to read axle)
    • rear axle z relates to actual position, not projected on ground
  • Add correct moving obj z coordinate (issue #355)
  • Fix some additional memory leaks
  • Restore lost OSI files in demo pack

2022-11-25 Version 2.27.2

  • Add script for parallel execution of parameter distributions
  • Add esmini option to just return nr permutations (also as exit code)
  • Add acc and orientation vel/acc to scripts/osi2csv.py script
  • Fix maxDeceleration parse error (PR #354)
  • Fix scripts path issues
    • move osi3 folder up one folder for easier reuse
    • add search path to make scrips executable from anywhere
  • Move binary demo generator scripts to scripts folder

2022-11-18 Version 2.27.1

  • Add missing parameter distribution file cut-in_parameter_set.xosc to demo pack
  • Fix sensor line elevation bug taking vehicle pitch angle into consideration
  • Patch to avoid known VS2019 std::vector issue (issue #335)

2022-11-18 Version 2.27.0

New feature:

Improvements:

Bug fixes:

  • Fix bug messing up auto-calculation of polyline trajectory heading
  • Some additional minor fixes

Additional info:

2022-11-09 Version 2.26.9

  • Make pedestrians snap to sidewalks (issue #343)
  • Enable visualization of road and lane sensors for pedestrians
  • Add GetIdByName function to esminiLib (issue #345)
  • Remove RoadPosition driving direction dependency (issue #340)
  • Remove obsolete SE_RegisterEventCallback (issue #311)
  • Make use of roadmanager detailed return codes in esminiRMLib functions
  • Bugfix: Preserve overlapping road check result until next query
  • Bugfix: Reset lane offset after enforced lane switch (e.g. due to lane end or width become zero)
  • Bugfix: Fix SE_GetRoadInfoAtDistance along route (avoid accumulating distance)
  • Some additional minor fixes

2022-10-31 Version 2.26.8

2022-10-17 Version 2.26.7

  • Update UDPDriverController
    • add new input mode involving only heading, speed and wheelAngle
    • add missing data fields to all example scripts
    • document controller (see User guide - UDPDriverController)
  • Add external trigger example in Python (issue #331)
  • Add Python storyboard event callback example (issue #332)
  • Fix (OSI and tesselation) issue with partial lane segments with intentionally missing/no roadmarks
  • Fix OSG lib build script (generate_osg_libs.sh) issues on Windows

2022-10-07 Version 2.26.6

  • Support Apple Silicon (e.g. M1)
  • Fix build error on Ubuntu 22.04
    • enforce OSG lib to use sched_yield instead of deprecated pthread_yield
    • build scripts updated
    • updated osg lib for Ubuntu available here: osg_linux_glibc_2_31_gcc_7_5_0.7z (now default)
  • Support straight arcs (curvature = 0.0 treated as a line)
  • Add option --extended to dat2csv.py to extract additional data, e.g. road coordinates
    • -e works as well
  • Handle empty or missing road IDs (issue #326)
    • Generate and assign unique IDs (previously all roads got id=0, which caused trouble)
  • Improve road elevation support (issue #327)
    • handle discontinuities in elevation profile and lane widths
    • fix bug causing low tesselation resolution wrt elevation slope changes
  • Fix dat2csv.py (actually dat.py) issue so that it runs also on Python 2.X
  • Fix bugs that could cause a crash when adding/removing entities while co-simulating with SUMO (issue #308)
  • Add missing box 3D model to demo pack

2022-09-22 Version 2.26.5

  • API related changes:

    • Wheel angle (steering) and rotation (revolution) populated in the SE_ScenarioObjectState (pr #323)

      NOTE: Structure on calling side should be updated accordingly. See example get_states.py.

    • If velocity (vector) has been reported but not speed, then speed is calculated based on velocity x,y components (instead of dx, dy movement).

  • Bugfixes:

    • Fix end-of-road detection failure for external entities (x, y -> road coord mapping)

2022-09-15 Version 2.26.4

  • Support some additional expression functions, e.g. sin, sign and atan.
  • Fix lane offset, tolerate discontinuities
    • ensure correct lane tesselation for offset steps, e.g. when lane shift left or right
    • cut lane markings at end of lane sections
  • Calculate speed and wheel orientations if not reported for external vehicles (issue #163)
    • default is to calculate speed and wheel roll and yaw angles based on vehicle motion
    • can be overridden by simply reporting the values, see example in test-driver.cpp
  • Improve world coordinate (x, y) mapping to road coordinates
    • prioritize connected lanes wrt previous known road coordinate
    • for example when entering an intersection with overlapping lanes

2022-09-09 Version 2.26.3

2022-09-05 Version 2.26.2

  • New features:

    • Add FollowRoute controller
    • Add roadworks/construction sign
    • Extend options for logfile and .dat (recording) location and filename
      • specify either of:
        1. Explicit directory and filename
        2. Just directory (ending '/' or '\') (use default filename)
        3. Just filename (use default directory)
      • see details in esminiLib.hpp
  • Fixes:

    • Fix crash when query objects added by SE_AddObject() (issue #263)
    • Fix struct mismatch in Python RoadManager example (issue #318)
  • Other:

2022-08-25 Version 2.26.1

  • Road object updates:
    • Support continuous road objects (e.g. fence, railings)
    • Create stand-in bounding boxes for missing 3D object files, instead of skipping
    • Improve alignment of road object wrt road curvature
    • Note: For correct alignments the model pack needs to be updated
  • Re-add missing files in Mac and Linux demo packages

2022-08-24 Version 2.26.0

  • New features:
    • Add obj id to legend in plot_dat.py (useful for merged data)
    • Add option to plot dots on top of lines in plot_dat.py
    • Add generic StoryBoardElementStateChange callback functionality (pr #314)
    • Add replayer merge dat-files option (see info in User guide)
    • Add alks reg 157 safety models controller
  • Fixes:
    • Support also maneuver element type in StoryboardElementStateCondition
    • Add heading when populating road object to OSI
    • Fix free space distance calc bug (issue #309)
    • Check story stopTrigger before stepping Init actions (issue #313)
    • Consider only private actions in conflict handling (issue #295)
    • Fix Delta function sometimes returning wrong dt/dlane in junction (pr #283)
    • Update OSC coverage, clarify version
    • Add box and cones to model_id file
    • Consider speedProfileAction in ghost setup
    • Fix corrupt search path for traffic sign files
  • Minor updates hopefully not causing side effects:
    • Prevent controller step completely during ghost restart
    • Update Hello World tutorial OSI example info regarding platform differences
    • Rework lane change action to preserve position info

2022-07-08 Version 2.25.1

  • Add info on update road sign framework to User guide - Road signs
  • Relax country code interpretation, support both upper and lower case (e.g. se and SE will both work)
  • Extend search locations, increasing chances to find the traffic signal catalogs
  • Add missing speed signs to release package (update cache on build server)

2022-07-08 Version 2.25.0

  • Update road sign framework

    • clarifies interpretation of country code, type, subtype and value
    • 3D model filename derived from type definition (name now only used as fallback)
    • add embryo catalog for swedish road signs
    • ensure correct lookup when mixing country codes
    • update examples in OpenDRIVE file straight_500m_signs.xodr
    • update model pack with new German speed signs and updated and renamed Swedish ones

    Note:

    Due to new sign name convention model pack has been updated. Get it from here.

    Also, to enable frequent updates of the model pack it has been removed from github. Which means that also cmake build script has been updated. If trouble arise, the easiest solution is to grab a fresh clone of esmini: git clone https://github.com/esmini/esmini.git.

2022-07-06 Version 2.24.0

  • Support lane discontinuities and improve road 3D model tesselation
    • refactorize OSI lane points to support discontinuities, e.g. step laneWidth changes
    • optimize tesselation reducing unnecessary polygons
  • Add high precision (64 bit double) GetSimulationTime function
  • Add vehicle 3D model bounding box dimensions info to vehicle catalog
  • Support inline trailer definitions
  • Add followingMode to FollowTrajectoryAction
    • followingMode follow: Calculate and interpolate heading in case heading is not explicitly set (overriding OpenSCENARIO 1.1+ default values)
    • followingMode position: Strictly follow the standard, e.g. missing heading is interpreted as 0.0
  • Improve heading interpolation (decrease radius/ duration)
  • Populate stationary objects, including outlines, to OSI stream
  • Add misc object to example scenario and fix miscObjectCategory typo
  • Add info to User guide on how to make osgconv deal with repeated objects
    • see about FLATTEN_STATIC_TRANSFORMS_DUPLICATING_SHARED_SUBGRAPHS here
  • Add info on sharp braking speed profiles
  • Add info on how to suppress Windows console (issue #294)
  • Add derivative feature to plot_dat.py
    • plot first derivative (instead of original value) of parameters wrt x axis (typically time)
    • activate with --derive argument
  • Accept roadMark type none
    • This change enables empty road mark segments within same lane section
  • Accept unsorted (sOffset) roadMark entries
  • Fix min time-step glitch causing esmini to be really slow
  • Fix error messages to show junction id (pr #297)
  • Fix invalid warning of unknown argument when using SE_InitWithArgs()
  • Fix elevation jump bug at trajectory end (issue #293)
  • Fix performance setting log message bug
  • Fix crash due to referencing deactivated ghost (nullptr)
    • this fix makes it possible to toggle on/off controllers involving ghost

2022-06-20 Version 2.23.4

  • Fix wrong successor selection at junction on route (pr #292)
  • Fix intermittent speed spike at end of synchronize action
  • Updated Linux OSG libs for increased compatibility
    • previous version, updated for esmini v2.23.3, was compiled with g++ v9.4
    • current version is compiled with g++ v7.5
    • either pick from here or delete externals/OpenSceneGraph and re-run cmake .. to download

2022-06-15 Version 2.23.3

  • Add dead-reckoning option to UDP controller
  • Add optional on-screen info per entity
    • activate with --info_text 2 or --info_text 3
    • toogle info_text mode on key 'i'
    • Note: OSG libs for linux update needed. Either pick from here or delete externals/OpenSceneGraph and re-run cmake .. to download.
  • Populate wheel angle in osi2csv.py script
  • Disable off-screen rendering by default
  • Bugfix: Cancel conflicting actions only for same entity (issue #289, pr #290)
  • Fix esminiRMLib SetRoadId() bug sometimes resulting in wrong road
  • Fix intermittent crash at viewer initialization Refactor viewer thread initialization using semaphores
  • Fix relative road position issue #253
    • consider road plane in lane change action

2022-05-27 Version 2.23.2

  • Updated SpeedProfileAction to respect initial acceleration
  • Improve multi-replayer support for different timesteps
  • Fix direct junction bug missing some counter connections
  • Fix route finding failure due to changing lane id
    • consider that lane ids might change over lane sections
  • Improve route end checks
    • Detect route end in junctions
    • Fix bug in route length calculation

2022-05-13 Version 2.23.1

  • Updated SpeedProfileAction handling of single entry cases
  • Populate OSI wheel angle (yaw/heading)
  • Increase internal precision for time and positions (float -> double)
  • Improve stepping, avoid one step diff between external and internal entities
  • Add API to flush OSI file
  • Refactor csv_logger to support multiple runs with different sets of entities
  • Fix a few ghost controller bugs
  • Fix pline interpolation bug
  • Fix collision log bug and align collision timestamps

2022-04-29 Version 2.23.0

  • New feature: Speed profile
    • specify multiple speed targets over time in one single action
    • optional dynamic constraints
    • more info in User guide - Speed profile
    • preliminary and experimental implementation
  • Add RMlib method to enforce road ID (RM_SetRoadId())
  • Remove Parking from set of drivable lane types
  • Fix handling of entering non drivable lane
    • when switching lane section and valid driving lane or link is missing, snap to closest valid lane.
  • Bugfix: updateObjectSpeed() only affect longitudinal domain
  • Bugfix: Fix wrong reported curvature of perfectly straight clothoids

2022-04-13 Version 2.22.1

  • Fix wrong RelativeLanePos interpretation (issue #267)
    • offset should be relative to center of new lane, not relative offset of the related position
    • in contrast to dt in RelativeRoadPosition which is relative t of the related position Note: This can affect existing scenarios. Use RelativeRoadPosition with ds="0.0" and dt="0.0" to get same longitudinal and lateral position as the related entity.
  • Support ManeuverGroup multiple executions (issue #269)
  • Log scenario parameter names and values
  • Add event and condition callbacks to C# wrapper (issue #257)
  • Fix wrong condition delay by relaxing floating point tolerance (issue #270)
  • Place intermediate waypoints at 1/3 road length instead of at s=0
  • Bugfix: Avoid crash on missing incoming road in junctions
  • Tolerate init position at waypoint road but outside route s range
    • internal route s value will simply be < 0 or > length_of_route

2022-04-08 Version 2.22.0

  • User guide published: https://esmini.github.io
    • Initial experimental embryo version
    • Focus on use cases
    • Hello World code tutorial moved to User guide
    • Build guides moved to User guide
  • New feature: Custom cameras with fixed position and optionally fixed orientation (issue #264)
    --custom_camera <position>
        Additional custom fixed camera position <x,y,z,h,p> (multiple occurrences supported)
    --custom_fixed_camera <position and optional orientation>
        Additional custom camera position <x,y,z>[,h,p] (multiple occurrences supported)
    --custom_fixed_top_camera <position and rotation>
        Additional custom top camera <x,y,z,rot> (multiple occurrences supported)
    
  • Add odometer to replayer
  • Update RMLib C# wrapper
  • Propagate scaled bounding box to .dat file
  • Align and change default headstart in ghost controllers to 3s
  • Add example scenario acc-toggle.xosc to demonstrate switching between controllers (issue #259)
  • Add odrplot to demo package
  • Fix bug in route path calculation (issue #265)
  • Fix condition edge check bug that in some cases prevented multiple story element executions
  • Fix bug in position delta calculation sometimes flipping dLaneId (PR #266)
  • Bugfix: Add missing initial frame (t=0) to OSI trace file
  • Fix malfunctioning replayer start and stop time options
  • Fix unintentional toggling of route waypoints (toggle key 'R')
  • Remove obsolete EgoSimulator (it was just a duplicate of esmini application)

2022-03-28 Version 2.21.2

  • Add RMLib methods to get road lane width and type
  • Add roadmanager API to fetch all roads overlapping current position (can be useful in junctions)
  • Extend roadmanager return code to indicate whenever
    • moved into a new road segment (return code 1)
    • moved into a junction and made a choice (return code 2)
    • See full list of return codes here
    • NOTE: This change might need code updates. Previously only 0 meant OK and negative return values indicated some error. If code == 0 is used to check OK, it should be changed to code >= 0.
  • Add state handling to ManeuverGroups
    • supporting storyBoardState condition on ManeuverGroup level
  • Improve xy -> trackpos mapping at road endpoints (using actual road normals instead of OSI points to ensure continuity between roads)
  • Fix relativeRoadPos relative heading bug (issue #253)
  • Log complete path for loaded files (OpenSCENARIO, OpenDRIVE and scenegraph)
  • Ghost controller improvements:
    • move any AssignRouteAction to ghost. Enables routing for ghost controllers.
    • restart ghost from Ego after triggered events from other entities
    • parameterize followGhost mode: position (default) or time
    • assign unique route object to ghost, solving issue with FollowRoute actions defined in Init
  • Fix wheel-angle calculation
    • also update some car models fixing right front wheel issue
    • grab updated model package from here
  • Make road object LOD distance dependent also on object size

2022-03-16 Version 2.21.1

  • Add ground plane option
    • add launch flag --ground_plane to put a large gray surface under the roads
  • Fix and improve road object handling
    • Fix repeat object lengthStart/End bug
    • Fix inter-distance affected by road curvature and lateral position
    • Populate length, width and height from bounding box if attributes not set
    • Add hedge and fence models Note: To fetch updated models, remove resources/models folder and run cmake .. again, or get the package from here
    • Set color of based on type (for objects lacking explicit 3D model)
      • building, barrier: light gray
      • tree, vegetation: green
      • obstacle: red
      • all other: dark gray
    • xodr/crest-curve.xodr updated to show some of the features
  • Reduce OSI file size (again)
    • Save size by save static data only first frame
    • This was implemented in v2.17.4 but unfortunately disabled by a bug introduced in v2.20.6

2022-03-14 Version 2.21.0

  • New feature: Trailer support
  • Support for multiple Repeat objects (PR #251)
  • Support simple OpenDRIVE bounding box objects (when no osgb filename or outline specified)
  • SwarmAction updated to spawn only relevant, specified vehicle types
  • Respect vehicle acceleration and deceleration constraints in InteractiveDriver controller
  • Add lib method to set SimpleVehicle wheel status: SE_ReportObjectWheelStatus()
  • Add lib API for pause flag: SE_GetPauseFlag()
  • Parameterize steering rate for InteractiveDriver controller
  • Add C# API to get parameter names (PR #252)
  • Optimize muli-replayer feature, now supporting much larger and/or more scenarios
  • Generalize 3D model wheel handling
    • Support any number of front and rear wheels
    • Identify front wheels as wheel_f*
    • Identity rear wheels as wheel_r*
    • All wheels will roll, only front wheels will change heading/steer

2022-03-07 Version 2.20.10

  • Add methods to register callbacks for triggered conditions and event start/end (PR #249)
  • Add Python variant of ad_hoc_traffic example (see here)
  • Set controller type for externally added objects (via SE_AddObject())
  • Fix AcquirePositionAction issues, e.g. when destination is on same road (PR #247)
  • Fix ghost trail reset issues (at ghost restart)
  • Optimize polyline trajectory parsing and ghost trail following
  • Fix error in speed calculation for absolute time trajectory

2022-02-25 Version 2.20.9

2022-02-21 Version 2.20.8

  • Support MSYS2 / MinGW-w64 (issue #239). See brief info here.
  • Eliminate need for garbage collection in C# wrapper
    • greatly improves esmini performance e.g. in Unitu
  • Fix freeze at time=0 when init with XML (issue #235)
  • Bugfix: Ensure deleted objects not involved in condition evaluations
  • Bugfix: Disregard waypoints with invalid road IDs

2022-02-16 Version 2.20.7

  • Change lib functions to handle id instead of index
    • Note: This can affect user applications making use of esminiLib object query functions. Especially for scenarios making use of Add/DeleteEntityActions.
    • New function SE_GetId(index) to find out id of objects. Example:
      for (int i = 0; i < SE_GetNumberOfObjects(); i++)
      {
      	SE_ScenarioObjectState state;
      	SE_GetObjectState(SE_GetId(i), &state);
      }
    • Complete API see esminiLib/esminiLib.hpp
    • More examples, see Hello-World_coding-example
  • Fix condition timer bug (issue #237)
  • Improve replayer multi-recording functionality to handle dat files with some variation in terms of timings and number of entities.
  • Fix orientation reference for RelativeRoadPosition (issue #228)
    • Orientation relates to road s/t system, not driving direction
    • Note: RelativeLanePosition still relates to driving direction, but will be changed as well when lane coordinate system has been fully implemented
  • CSV logger typo fix and added units to header (PR #238)
  • Fix issue which could cause simulation to freeze after calling SE_Step()

2022-02-11 Version 2.20.6

  • Fix wrong ParamPoly3 curvature calculation
  • Increase expression precision (issue #225)
    • internal representation in double (64 bits) instead of float (32 bits)
  • Add option to enforce creation of road 3D model (issue #227)
  • Fix OSI GT reset between runs in same session (issue #229)
  • Improve RoadManager OSI robustness (issue #212)
  • Fix lookahead direction
    • correctly consider driving direction and vehicle heading
  • Add lib API to get ghost state by time (as alternative to by distance)
  • Fix condition issues
    • Fix timer on falling edge
    • Add precision tolerance to < and > conditions
  • Added setting of OSI lane subtype
  • Updated OSG apps build script to support all platforms
  • Improve ghost execution
    • e.g. reduce spikes in velocity and acceleration at ghost restarts

2022-02-02 Version 2.20.5

  • Add route waypoint visualization
    • disable by launch argument --hide_route_waypoints
    • toggle on key 'R' (shift 'r')
  • Add replayer support for optional external model_id mapping file
  • Update ECE ALKS reference driver controller
    • Support some corner cases, e.g. narrow lanes, high lateral velocities and large timesteps.
  • Add API to retrieve speed unit (see esminiLib.hpp)
  • Fix corner case of failed conflict detection (issue #218)
  • Remove pedestrian performance limits (issue #224)
  • Bugfix: Remove trajectory visualization of deleted entity (issue #208)
  • Bugfix: Fix malfuncting left-shift-tab on Linux. It now jump to previous entity.
  • Bugfix: Fix quit by close window event issue (Linux)
  • Added a guide on how to bring osgb 3D models into Unity

2022-01-28 Version 2.20.4

  • Fix replayer rewind all way to start, including negative ghost headstart time
  • Fix crash on missing roadmark color attribute (issue #221)
  • Add value conditions to cause a ghost teleport
  • Fix initial speed and acceleration spikes with ghost

2022-01-25 Version 2.20.3

  • Fix wrong EntityAction interpretation
    • entityRef an attribute of the EntityAction not its child elements
  • Change timer expire condition from > to >=
  • Evaluate complete story before stepping it (issue #216)
  • Change id of OSI objects to be concistent, use scenario entity id
  • Prevent default controller (trying to) use invalid routes

2022-01-24 Version 2.20.2

  • New replayer feature: Play multiple recordings in parallel
    • example: replayer --window 60 60 800 400 --res_path ./resources --dir ./dat --file variant
    • above command will load and play all variant*.dat files found in ./dat folder, simultanously
    • Note: Intented for .dat files of same length and timesteps, e.g. using fixed timestep: esmini --headless --fixed_timestep 0.01 --osc variant1.xosc --record variant1.dat
  • Updated behavior: Disable global collision detection by default
    • saving performance for huge scenarios
    • activate with launch flag --collision
  • Updated roadmark support (issue #215):
    • solid_solid and broken_broken roadmarks
    • yellow colored roadmarks
    • apply width (optional) and weight (if width is missing)
  • Fix LaneOffsetAction final value bug (issue #213)
  • Optimize evaluation of AND:ed conditions (conditions within same condition group)
  • Ensure all timesteps are saved with --capture_screen in replayer

2022-01-21 Version 2.20.1

  • Add replayer option to hide ghost models but still show their trajectories
  • Add OSI lane id to route info
  • Relax replayer, run even if OpenDRIVE file missing
  • RoadmarkType rule made optional according to standard (skip scary warnings)
  • Hand over also AccelerationCondition to ghost
    • The pattern is to hand over all non relative conditions
    • Acceleration conditions were unintentially not handed over
  • Fix SpeedAction continuous mode bug

2022-01-19 Version 2.20.0

NOTE: To support entity actions, e.g. adding entities at any time, a change of initialization behavior was necessary. Previously all entities were instantiated at start of the scenario, regardless of presence in Init section. Now the following applies: Only entities involved in the Init section, e.g. by a TeleportAction, will be instantiated from start. Other entities can be added later by the AddEntityAction. This change might affect some scenarios and use cases.

2022-01-17 Version 2.19.3

  • Support OpenDRIVE 1.7 Direct Junctions
  • Fix ghost condition handling issues (issue #210)
    • Avoid nullptr crash for non event conditions (e.g. act condition)
    • Hand over also SpeedCondition, EndOfRoadCondition, OffRoadCondition and StandStillCondition to ghost

2022-01-13 Version 2.19.2

  • New esmini feature: Pause and step simulation
    • Press space to toggle pause/play
    • Press return to step (forward only) Note: In replayer similar feature is space for pause/play and arrow right/left to step forward and backwards.
  • Fix maneuver event order dependency
    • When an event overwrites another it could happen that both step methods were applied. Now its first sorted out what events to run, then they are stepped.
  • Fix replayer bug when ghost involved, causing really slow progress at negative time
  • Update Python info and scripts
    • A more flexible variant the basic scenario player script esmini-player.py
      • providing scenario via argument
      • quit at press Escape or end of scenario
      • work on all supported platforms
    • Add example Python launcher for esmini executable: scripts/esmini-launcher.py

2022-01-09 Version 2.19.1

  • Add global collision detection (issue #206)
    • Evaluate all entities for collision detection (not only those subject to CollisionCondition)
    • Result will be logged in console and log file
    • Collision status added to csv log (activate with --csv_logger <filename>)
    • Disable the feature with flag --disable_collision_detection

2022-01-05 Version 2.19.0

  • New feature: Off-screen rendering
    • Fetch rendered images via esminiLib API (synchronous or via callback) (issue #173)
    • Example code: image-capture.cpp
    • Off-screen rendering without GFX system (e.g. headless Ubuntu):
      • Windows using Mesa3D: Put opengl32.dll in same folder as esmini exec.
      • Linux using xvfb: Xvfb :99 -screen 0 1920x1080x24+32 & export DISPLAY=:99 then run esmini as ususal.
    • Disable feature with launch flag --disable_off_screen (potentially gaining performance)
  • Lossless screen-capture in TGA format instead of JPG
    • Disadvantage: larger files
    • Advantage: Videoclips created from uncompressed files better quality/size ratio
    • Anyway it's easy to convert TGA to JPG in a post process step
    • Reminder: Add launch flag --capture_screen for continuous capture
  • Extended screen-capture control
    • Specify exact number of frames to capture, or continuous mode (-1)
    • Note that esminiLib API for screen-capture has changed, examples (old => new):
      • SE_CaptureContinuously(true) => SE_SaveImagesToFile(-1)
      • SE_CaptureContinuously(false) => SE_SaveImagesToFile(0)
      • SE_CaptureNextFrame() => SE_SaveImagesToFile(1)
  • New replayer features:
    • Collision detection. Log events and pause player. Activate with launch flag --collision
    • Quit at end of scenario. Activate with launch flag --quit_at_end
  • Add route API to esminiLib.
  • Reworked action dynamics. Hopefully more correct math and behavior.
    • e.g. Lane change trajectory affected by (long) speed if and only if Dimension = time
    • LaneOffset maxLateralAcc respected (issue #201)
    • Note that behavior might differ from previous versions
    • Changed behavior is either intentional or not, so please report suspected bugs.
    • Respect vehicle performance specification (max speed, acc, dec)
  • Improved LaneChangeAction: Handle lane split cases, e.g. highway exit.
  • Improved route handling: Relax lane requirement, e.g. maintain route during and after lane changes, when possible.
  • Fix lost trajectory during laneChange (issue #203)
  • Add esmini root folder to binary release packages (issue #204)
  • Update ALKS scenarios to v0.4.1.
  • Fix wrong pitch calculation (issue #197)
  • Improve tesselation wrt elevation and roll rates (issue #197)
  • Add rounding tolerance to condition rules greaterOrEqual and lessOrEqual
  • Updated behavior: Update simulation time after storyboard evalulation (not before)
  • Fix typo messing up DistanceCondition (issue #200)
  • Some additional minor fixes

2021-12-09 Version 2.18.2

  • Replace plot_csv.py with plot_dat.py
    • No need to create intermediate csv file
    • Increased precision (since not limited by csv file)
  • Extend trajectory to complete final step
    • When reaching the end of a trajectory, move the remaning step in the extended line from trajectory end-point and heading.
    • The purpose is to avoid discontinuous velocity (and acceleration spikes)
  • Add example scenario (lane-change_clothoid_based_trajectory.xosc) for clothoid based trajectory
  • Rename udp-driver subfolder to udp_driver to support Python sub module import

2021-12-06 Version 2.18.1

  • Improve laneChangeAction behavior with junctions
    • Handle road split case, e.g. highway exit
  • Add missing cone model to demo packages
  • Add API functions to get object type and 3D model filename (issue #193)
  • Add launch flag for continuous screen capture in replayer (--capture_screen)
  • Update dat2csv.py script for current dat version (v2)
  • Fix bug causing crash when reset to defaultController

2021-12-03 Version 2.18.0

  • Support global actions in the Init section of the scenario
  • Bump dat file format v1->2. Support object visibility.
  • Do not calculate polyline trajectory heading when specified explicitly
  • Add cone models cone-45.osgb and cone-100.osgb
  • Add --hide_trajectories launch flag to esmini (already available in replayer)
  • Reduce default steering sensitivity of simple vehicle model

2021-11-29 Version 2.17.6

  • Add optional angular check to ReachPositionCondition
    • If Orientation element is added, then it is checked in addition to position
    • For now using hardcoded tolerance of 0.05 radians (~3 degrees)
    • See examples in scenario Unittest/xosc/traj-heading-trig.xosc.
  • Updated behavior: Raise exception/quit on missing required attribute
  • Move remaining full step after reaching end of trajectory, avoiding velocity spikes
  • Fix replayer bug causing sporadic crash

2021-11-26 Version 2.17.5

  • Add fixed timestep option to odrviewer (all options see odrviewer/readme.txt)
  • Add missing comparison operators (issue #191)
  • Bugfix: Fix string converted to low precision type (issue #192)

2021-11-23 Version 2.17.4

  • Expose GeoReference data to esminiRM (RoadManager) API
  • Add ParameterDeclarationCallback API to C# wrapper (issue #190)
  • Reduce OSI log size by storing static data only once
  • Consider lane offset (and curvature) for steplen calculation (issue #187)

2021-11-16 Version 2.17.3

  • Add more tuneable parameters to SimpleVehicle and expose in API
  • Add framework for country typed traffic signs (from OpenDRIVE to OSI)

2021-11-15 Version 2.17.2

  • Add missing OSI files to demo packages

2021-11-15 Version 2.17.1

  • Add API for get and set seed
  • Fix ghost on trajectory timing issue
  • Fix ECE_ALKS_RefDriverController catalog parameters (issue #182)
  • Add dependent osi files for UDPDriverController examples

2021-11-12 Version 2.17.0

Bugfixes

  • Fix highway type of junctions to have the correct lane-pairing
  • Don't reset ghost on traveledDistance trigger
  • Fix steering calculation in Vehicle::DrivingControlTarget

2021-11-08 Version 2.16.2

  • Ghost vehicle concept updated to handle greater variation of triggers
    • Relative triggers handled using a combination with the teleportAction
    • ResetEvent added to make sure events don't go missing in a teleportation
    • Time handling added to handle the difference between ghost and ego
  • Add projection to the geo reference string
  • Fix LaneOffsetAction relative target bug (issue #183)
  • Bugfix: Raise exception on invalid condition instead of crash

2021-11-01 Version 2.16.1

  • Add ECE ALKS reference driver controller (PR #181)
  • Separate material for border, sidewalk and biking lane types
    • inner border lanes: dark gray
    • if outmost lane is border: grass
    • sidewalk and biking lanes: light gray
  • Fix default mode and init speed issue for ACC/ALKS controllers
  • Delete duplicate timestamps in dat files

2021-10-28 Version 2.16.0

  • Add UDPDriverController
    • Provide an UDP interface to control entities, e.g. for external driver models.
    • Either by explicit position (variants of x,y,z,h,p,r) or driver input (throttle, steering...)
    • Synchronous (blocking) or asynchronous (non-blocking) mode
    • Works both on same or different host (than esmini running on)
    • For more info, see example python scripts in scripts\udp-driver.
  • Initial implementation of geo reference
  • Add lib API for custom camera positions
  • Support additive mode for ACCController
    • In override mode setSpeed is explicitly stated as a property
    • In additive mode setSpeed will adapt to external modifications to speed, e.g. SpeedAction
  • Option to remove ghost vehicle info from OSI groundtruth dynamic
  • Fix disable_controllers ghost bug
  • Fix OSI lane left/right, predecessor/successor and some other OSI related bugs

Note: To support the external driver controller some changes to gateway was needed (e.g. extended dirty bit strategy to keep track of what parts of entity states has been updated or not). These changes might affect behavior of existing integrations with esmini, e.g. how and when esmini will align entities to road elevation and/or pitch. Please report any new (undesired) behavior.

2021-10-18 Version 2.15.3

  • Extend screen capture functionality
    • Support continuous screen capture (individual images though)
    • Add continuous screen capture argument (see docs/commands.txt)
    • Add screen capture API to esminiLib
  • Support multiple option occurrences
    • e.g. multiple paths can be set by adding several --path <path to directory>
  • Add support for custom camera positions (partly issue #173)
    • New command line option --custom_camera <x,y,z,h,p,r>
    • Multiple custom cameras supported, add any number of custom_camera arguments
    • Make first custom camera default by argument --camera_mode custom
    • Switch camera during simulation with key "k"
  • Parse vehicle Performance element
    • so far applied only in the ACC controller
  • Improve and simplify ACC controller
    • Respect vehicle max acceleration and deceleration Performance properties
    • Simplistic long control based on relative distance and speed
  • Add ALKS controller
    • initial dummy implementation inheriting the ACC controller
    • longitudinal domain handled in the same way as the ACC controller
    • lateral domain handled by the default controller (follow lane at current offset)
  • Extend use of path(s) for locating files
    • Now both filename with and without any leading relative or absolute path will be concatenated with the path entries and tested
  • Rework disable controllers strategy
    • Only controllers activated explicitly by the scenario affected
    • Implicit controllers used by e.g. TrafficSwarmAction not affected
  • Support OSC 1.1 AssignController activate attributes
    • controllers can be activated when assigned
  • Fix missing euclidianDistance support in RelativeDistanceCondition
  • Bugfix: Add missing boolean support in setParameterValue()
  • Fix missing dummy boundingbox when model failed to load
    • the bug was introduced in v2.14.0
  • Catch missing junction error and continue anyway (issue #174)

2021-10-07 Version 2.15.2

  • Fix alternating lane offset issue in routes, e.g. AcquirePosition (PR #167)
  • Fix random way selector issue resulting in always same choice in intersections
  • Add missing bounding box

2021-10-05 Version 2.15.1

  • Add missing motorbike 3D model

2021-10-04 Version 2.15.0

  • Add limited support for TrafficSwarmAction
    • TrafficDefinition not supported yet
    • Vehicle models picked randomly from specified catalogs
    • Simplified driver model only based on ACC-Controller, not traffic rules
    • Experimental implementation, expect bugs and shortcomings
    • Example scenario swarm.xosc
  • Added option --seed <number> to specify random seed from a previous runs
    • seed is always printed to console/log file, so it can be grabbed from there
    • seed reuse only per platform (e.g. Windows seed gives different result on Linux)
    • see docs/commands.txt for all launch options
  • Support temporary objects in replayer
    • Show only active objects at given time frame
    • Show only active trajectories at given time frame
  • Fix some issues in entity freespace distance calculations
  • ACC adjustments slightly reducing intersection deadlocks
  • Fix crash due to unsupported OpenSCENARIO condition
  • Fix wheel rotations in esminiLib

2021-09-30 Version 2.14.2

  • Fix some action failures in repeated events (maximumExecutionCount > 1)
    • Root cause: Internal timer not reset between runs
  • Fix ACC controller issue for scenarios with multiple vehicles

2021-09-29 Version 2.14.1

  • Add visualization of externally reported OSI sensorView
    • Add argument --sensors or just press 'r' to view
  • Add support for motorbike modelId=10 in replayer
  • mc.osgb added to model pack models.7z
    • cyclist.osgb updated wrt reference point (rear axle projected on ground)
  • Fix OverrideControllerValueAction domain handling
    • Assigned control strategy depends on type of controller value (e.g. steering is lateral, throttle is longitudinal)
  • Fix issue with controllers being aborted by conflicting actions
    • ActivateControllerAction itself does not assign any control strategy

2021-09-23 Version 2.14.0

  • Add entity 3D model and bounding box scale options
    • optional property "scaleMode" for scenario objects. Values:
      • None (default) = Don't scale 3D model or bounding box
      • BBToModel = Scale bounding box to fit loaded 3D model
      • ModelToBB = Scale model to fit specified bounding box see examples in VehicleCatalog
    • scaleMode added to .dat files as well for scenario replay Note: .dat file format has been updated, dat files created in previous versions of esmini will not play.
  • dat fileformat version control
    • replayer and dat2csv now checking for supported version instead of crashing
  • Support ScenarioObject attribute "model3d", added in OpenSCENARIO v1.1
    • "File filepath" property still supported as well (if model3d missing)
  • Support Clothoid attribute curvaturePrime (renamed from curvatureDot in OSC v1.1)
    • curvatureDot attribute still supported as well (if curvaturePrime missing)
  • Fix bug that in rare cases prevented init actions from reaching complete state

2021-09-17 Version 2.13.6

  • Fix OSI angle ranges to [-pi, pi]
    • current range [0, 2pi] is not aligned with OSI standard

2021-09-15 Version 2.13.5

  • Stop conflicting actions when starting new ones (issues #155 and #157)
  • Add velocity to CSV log (issue #156)

2021-09-10 Version 2.13.4

  • Fix SetLanePos s truncation bug
    • reaching end of road or route not handled as error
  • Fix trajectory time handling and add timref check
    • Don't assume first timestamp to be 0.0
    • If trajectory duration (from timestamps) is 0, set timeref=NONE
  • Fix and sync C# wrappers
  • OSI driving side fixed for Right and Left hand traffic
  • Separate logfile for roadmanager lib (esminiRM_log.txt)
  • Fix trajectory findClosestPoint bug
  • Explicitly specify Xcode generator for cmake on macOS
  • Some code improvements:
    • Some improved type checking for enum types
    • Some added safeguarding of uninitialized scenario and road objects

2021-08-31 Version 2.13.3

  • Add build option for dynamic protobuf linking (see more info here)
  • Add junction ID to position object
    • can be used to determine whether in a junction or not (-1 => not in junction)
    • see code example here
  • Parse OpenDRIVE controllers. See code example in test case TestControllers.
  • Fix odrplot bug with roads < 1m

2021-08-27 Version 2.13.2

  • Bugfix for osi intersections

2021-08-26 Version 2.13.1

  • Fix collision condition parsing bug causing crash for the ByType option (issue #149)

2021-08-24 Version 2.13.0

  • Add a simple ACC-Controller
  • Extend CSV logger with acc and yaw rate (issue #145)
  • Add support for MiscObject catalogs (not tested yet, issue #146)
  • Use controller's name for missing esminiController property
    • E.g. by naming the controller "ExternalController", the line: <Property name="esminiController" value="ExternalController" /> can be omitted.
  • Update roadmanager junction strategy using angle instead of limited discreet choices
    • Road with closest heading direction will be selected (can be randomized as well)
  • Add event default trigger if missing (issue #147)

2021-08-18 Version 2.12.6

  • Fix major bug causing lane width issue for roads with more than one laneSection
    • The bug was introduced 2021-07-02 in commit 4e95a09 and release v2.11.3.
  • Improve nurbs heading (#144)
    • Calculate heading from actual nurbs instead of polyline approximation
  • Traffic sign added to OSI ground truth
  • Add OSI lane pairing
  • Fix condition timer restart issue
    • Old behavior prevents timer from restarting. This commit fix so that timer restarts if condition becomes true again from being false.
  • Support halt/pause at end of trajectory
    • When trajectory control points includes time stamps, end of trajectory should be based on time instead of actually reaching full length.

2021-08-13 Version 2.12.5

  • Fix nurbs heading issues (#144)
    • Interpolate heading from polyline approximation
    • Fix bug reusing heading of second vertex to first one
  • Add road object lane validity support (issue #143)
  • Add show version option (--version)

2021-08-03 Version 2.12.4

  • Fix csv-logger missing first entry (issue #137)
  • Fix relative distance issue (#139)
    • Consider heading when determine entities inter-displacement

2021-07-27 Version 2.12.3

  • Fix LongitudinalDistanceAction bugs
    • Use correct distance mode
    • Time gap based on referenced enity's speed instead of own speed

2021-07-26 Version 2.12.2

  • Support OpenSCENARIO 1.1 LongitudinalDistanceAction / displacement attribute
  • Improve expression support (e.g. handle "not()" )
  • Custom OSI trace filename (see docs/commands.txt)
  • Center lane logic for broken solid and solid broken
  • Some additional minor fixes

2021-07-13 Version 2.12.1

  • Restore support for "$" prefix in parameter names
  • Catch and log expression errors

2021-07-13 Version 2.12.0

  • Support OpenSCENARIO 1.1 expressions
    • e.g. <AbsoluteTargetSpeed value="${$EgoSpeed / 3.6}"/>
  • Fix nested parameter declarations issue, ensure limited scope
  • Do not reset heading at end of trajectory
    • If alignment is desired, add explicit TeleportAction/RelativeLanePosition with relative h = 0. See example here.
  • Some OSI refactorization and optimization, static data only sent first time

2021-07-06 Version 2.11.4

  • Fix bug preventing OSC 1.1 controller activation
  • Warn for cond edges at simTime 0 (might be missed since edge can not be defined)
  • Some additional minor fixes

2021-07-05 Version 2.11.3

  • Add support for solid/broken roadmark combinations
  • Fix issue with multiple waypoints per road
    • Remove any additional waypoints on same road
    • Keep only first on first road, and last on following roads
  • Bugfixes:
    • Fix expected location of ActivateControllerAction in OSC 1.1 (issue #133)
    • Fix issue with final double entry in .dat files
    • Bugfix causing zero lanewidth reported at edge cases where s > length of road

2021-06-24 Version 2.11.2

  • Fix issue in LaneSection::GetClosestLaneIdx() sometimes returning wrong lane (PR #131)
  • Update ALKS scenarios to b03cc8a
  • Fix bug missing ghost coming to a stop
  • Some additional minor fixes

2021-06-21 Version 2.11.1

  • Fix file path issue in sumo-test config

2021-06-18 Version 2.11.0

  • Update behavior of the Default Controller
    • Entities will still be aligned to the road direction, but the relative heading will be respected.
      • To have a vehicle heading in driving direction (as defined by lane Id and road rule) simply set relative heading=0, or omit it since 0 is default.
      • To have a vehicle heading in opposite driving direction, set relative heading = 3.14159 (PI/180 deg)
      • To have an entity facing 90 deg left, set relative heading = 1.57 (PI/2)
      • The entity will be moved in the road direction closest to its heading, so
      • To have an entity facing 90 deg left, set relative heading slightly less than PI/2 ~ 1.57. I.e NOT > PI/2 because then it will got the other way.
    • This behaviour allows for flexible control of the orientation more independent of driving direction, see new scenario example drop-bike.xosc / run_drop-bike.bat
  • Fix some SUMO integration issues
  • Fix and improve relative distance calculations in road coordinates cars.
  • Fix grass color when texture not available (from white to green)
  • Update ALKS tests, confirming esmini still works with latest ALKS version.
  • Some additional minor fixes

2021-06-14 Version 2.10.2

  • Fix condition delay issue Previous behavior was to return true only once after timer expired. Then, if condition still true, restart the timer. Now the behavior is:
    • Timer is started when condition is evaluated to true. No more evaluations will be done from this point.
    • When timer has expired the condition will always return true
  • Set correct required cmake version for FILTER feature
  • Some additional minor fixes

2021-06-14 Version 2.10.1

  • Bugfixes:
    • Fix typecast bug in esminiLib GetRoadInfoAtDistance/SE_RoadInfo (roadId and laneId)
    • Avoid crash on road object load failure, e.g. when road sign .osgb file is not found
  • Support slimmed esmini by making OSG, OSI, SUMO and googletest optional
    • see more info here
  • Add relevant modules to non OSG build
    • E.g. odrplot (not OSG dependent) and dat2csv
  • Add missing "driver" option to --camera_mode usage help text (esmini and replayer)
  • Add xodr coverage file

2021-06-10 Version 2.10.0

2021-06-04 Version 2.9.0

  • Support simpler route definitions
    • Resolve, if possible, any number intermediate waypoints
    • Only start and end is needed, shortest route will be resolved
    • User can specify additional intermediate waypoints for desired explicit routing
    • Shortest path will only be searched for in forward (vehicle heading) direction
  • Add AcquirePositionAction
  • Support OpenDRIVE road "rule" attribute
  • Fix bug that could cause SpeedAction to not terminate

2021-05-26 Version 2.8.4

  • Updated OSI and Protobuf versions (v3.3.1 / v3.15.2)
  • End AssignRouteAction immediately according to standard
  • Add useful OSG options to help (issue #119)
  • Some additional minor fixes

2021-05-19 Version 2.8.3

  • Bugfix: Fix road model generator issue
    • tesselation error could cause application crash or dark model
    • the bug was introduced in 2.8.2, so avoid that release.

2021-05-17 Version 2.8.2

  • Add first person "driver" view
  • Add reverse junction links for left hand traffic (related issue #114)
  • Fix nan compile error (issue #115)
  • Add experimental Abs2Rel Controller
  • Some additional minor fixes

2021-05-07 Version 2.8.1

  • Add some accessors to RMObject, e.g. GetType(), GetLength()... (issue #109)
  • Increase precision in csv files (created by dat2csv and dat2csv.py)
  • Bugfixes:
    • Fix LaneChange issue over end-to-end/start-to-start road succession (PR #110)
    • Update filename container size in dat2csv.py
    • Fix wrong nurbs trajectory time interpolation
    • Improve action timings (push interpolations one time step)
    • Fix SE_ReportObject* functions, prevent values getting overwritten
  • Some additional minor fixes

2021-04-29 Version 2.8.0

  • New feature in odrplot: Indicate road ID and direction
  • odrviewer update: Respawn vehicles at open road ends (if any)
  • Bugfix: Remove 0.5m trajectory end tolerance causing wrong end position
  • Add API for simple vehicle performance
  • Improve replayer file path handling for odr and osgb
    • Expand filename container and store complete file paths in .dat file NOTE: This change affects .dat file format - old recordings files will not play
    • If absolute path not found, test combinations using res_path argument
  • Added mandatory field maxAcceleration to the vehicle catalog

2021-04-26 Version 2.7.4

  • Add func to set explicit OSI timestamp
  • Fix issues in OverrideControllerValueAction
    • Correct wrong override action element name
    • Quit action immediately (as clarified in OSC v1.1 User Guide)
  • Improve scroll wheel handling (issue #105)
    • inverse wheel in OSG default camera models
    • add scroll wheel zoom to esmini camera models
  • Add ideal-sensors code example
  • Fix odrplot step-length bug (issue #100)
  • Add brief info on 3D model conversion to readme (issue #63)
  • Some additional minor fixes

2021-04-16 Version 2.7.3

  • API to get object properties
  • Extend road sign API (more attributes, e.g. height), see example use in rm-basic.cpp.
  • Fix wrong OverrideControllerValueAction type names
  • New feature: Print help text to console, trig on key 'H' (shift 'h')
  • Some additional minor fixes

2021-04-14 Version 2.7.2

  • Fix bug so roads without type can be used with osi intersections

2021-04-14 Version 2.7.1

  • Fix wrong parameter type preventing synchronize example scenario to run

2021-04-13 Version 2.7.0

  • Support selected parts of OpenSCENARIO v1.1 for example:

    • TrajectoryPosition
    • FollowTrajectory with initialDistanceOffset
    • SynchronizeAction with steady state option
    • CoordinateSystem and RelativeDistanceType in distance operations

    Most significant limitations:

    • Logical scenarios not supported yet (e.g. ParameterValueDistribution and StochasticDistribution)
    • Expressions not supported yet (Arithmetic calculations and logical expressions)

    OpenSCENARIO v1.1 examples runs (with above limitations)

Other updates:

  • Support OSI intersections
  • Implement OverrideControllerValueAction
  • Add typed Get and Set functions for named parameters
  • Add Vehicle ParameterDeclaration support
  • Add support for boolean parameter type in conditions
  • Add "--disable_stdout" option to prevent log messages being written to console
  • Remove debug trace (code module, code line...) as default setting
  • Clean up log messages
  • Add scenarioEngine unit test module, with one initial test
  • Fix road::GetWidth both-sides bug (issue #96)
  • Fix trajectory heading interpolation issue
  • Add a few basic code examples, e.g. how to use esminiRMLib

2021-04-01 Version 2.6.1

  • New feature: Visualize complete driving trajectories in replayer
  • Improve dat2csv.py and align to behavior of dat2csv.cpp
  • Add object type and category to esminiLib API
  • Add funct to get all named parameter names (and type)
  • Fix replayer issue with time < 0 (ghost use cases)
  • Support parameterRef with and without prefix '$' (in ParameterAssignment)
  • Fix heading bug in ghost trail

2021-03-26 Version 2.6.0

  • Support nurbs trajectories

  • Visualization active trajectory

  • Improve object heading when following polyLine trajectory

    • Instead of interpolating heading all the way between two control points, follow the angle of the line and just interpolate a few meters before and after control point.
  • Fix object orientation limitations

    • Fully separate object orientation from road pitch and bank to support correct object rotations on any road and trajectory
    • Correct pitch and roll angles will now also be recorded into .dat files
  • Fix precision issue in odrplot

  • Fix issue with too large OSI UDP messages

  • Add option to remove objects in replayer (see replayer/readme.txt for more info)

  • Add dat2csv Python script (similar to C++ application dat2csv.cpp)

  • Update .dat file format to simplify parsing in Python

    • Also ensuring portablility between Windows and Linux
    • NOTE: This change is NOT backward compatible (old .dat file not supported in this and future esmini versions)
    • Hopefully format will now stabilize so .dat files can be used between esmini versions
  • Add OSI sensorData to example code

  • Some additional minor fixes

2021-03-18 Version 2.5.2

  • Add shortcut keys in replayer app for jumping to start and end of scenario
    • Ctrl + Left (arrow): Jump to start
    • Ctrl + Right (arrow): Jump to end
    • see updated readme.txt
  • Fix lateralprofile bug
    • All child elements to <lateralProfile> was incorrectly assumed to be of type <superelevation>. Which is wrong, and any <shape> element would cause broken road and popcorn effect on road users.
    • Now any <shape> elements are ignored (until being supported).

2021-03-16 Version 2.5.1

  • Improve error handling
    • Always log exception messages
    • Handle (quit with log message) invalid object references
  • Update Unity wrappers (align to current API)
  • Add OSI groundtruth example to Hello World tutorial
  • Add brief info on OSI to README, including OSI/Protobuf versions

2021-03-12 Version 2.5.0

  • Support freespace distance measurement

    Some conditions and actions offer a choice on how to measure distance:

    • freespace = false: Distance between the reference points of objects (low fidelity)
    • freespace = true: Distance between closest bounding box points (high fidelity)

    So far esmini has accepted freespace=true without actually implementing it, leading to no effect but the same result as for freespace=false. Now it is implemented and applied accordingly.

    Conditions with freespace option:

    • TimeHeadwayCondition
    • TimeToCollisionCondition
    • DistanceCondition
    • RelativeDistanceCondition

    Actions with freespace option:

    • LongitudinalDistanceAction
    • (LateralDistanceAction - not implemented in esmini yet)
  • Fix road mark bug (issue #83) The bug could cause visual defects on roads with multiple lane sections.

  • Fix relative orientation bug (PR #85) Could result in wrong vehicle heading caused by referring to road heading before known.

2021-03-05 Version 2.4.4

  • Further log file improvements
    • Option to disable logfile
    • Support custom log filename
    • These features available both from command line and API
  • Stabilize lane matching
    • Increase tension in ZY2Road mapping, add 2m threshold before snapping to another lane. Purpose is to stay in current path for driver models.
  • Fix bug in Road Manager causing XY2Road to (sometimes) match the wrong road
  • Add some recent esminiLib features to esminiRMLib as well

2021-03-03 Version 2.4.3

  • Improved log file handling
    • If default log file can't be created for some reason, try with system provided temp filename. Last resort is to run without logfile, just logging to console.
  • Fix Event and Action life cycle issues
    • Default maximumExecutionCount for Event and ManeuverGroup is now 1 (instead of infinity)
    • Finished Action will move to Complete state instead of Standby, making it possible to trig on Action being completed.
    • Note: This change CAN have impact on scenarios which might need to be updated, e.g. excplicitly specifying maximumExecutionCount.

2021-03-02 Version 2.4.2

  • Improve dat file format
    • Decouple dat format from Position class
    • Reduce file size by factor 4
    • Stabilize format: dat files can be saved and run in later versions of esmini, to greater extent than before.

2021-03-01 Version 2.4.1

  • Add API for reporting actual acceleration and velocity of external objects
  • Improve lane matching in XY2Road position mapping
  • Optimize road manager XY2Road mapping (simplify road width calculations)
  • Add options related to road lookahead functions
    • Lock object to current lane. Flag that will preserve lane ID regardless of lateral position. Useful for driving models, where look-ahead normally should start from the original lane.
    • Option in LookAhead function to look along actual driving direction or along road primary driving direction.
    • Function returns additional info: roadId, laneId, laneOffset, s, t.
  • Update Hello World driver model example, utilizing new options in look-ahead function

2021-02-22 Version 2.4.0

  • New feature: Support for OpenDRIVE road object outlines

    • support open and closed shapes
    • support both cornerRoad and cornerLocal specifications
    • add a "roof" mesh on closed shapes

    see example OpenDRIVE crest-curve.xodr used in scenario lane_change_crest.xosc. To run it, go to esmini/run/esmini and run the script run_lane_change_crest.bat.

  • Improve OSI performance

    • Static and dynamic groundthruth data updated separately
    • OSI API new functions: SE_UpdateOSIStaticGroundTruth and SE_UpdateOSIDynamicGroundTruth
    • Old function SE_UpdateOSIGroundTruth depricated, will be removed enventually
  • Add option to tune OSI tolerances for road points (and 3D model generator)

2021-02-17 Version 2.3.2

  • Fix issue with normalized ParamPoly3
  • Relax StandStillCondition - allow for minor "noise"
  • Moved OSI ref point to center of vehicle bounding box (instead of OSC rear axel ref. point)
  • Add smoke tests and ALKS scenarios test suite as acceptance steps in the CI service
  • Some additional minor fixes

2021-02-10 Version 2.3.1

  • Fix SpeedAction distance dimension issue

  • Fix ParamPoly3 arc length issue

    Motion along paramPoly3 geometries has wrongly been based on the curve parameter which leads to wrong speed. Now the arc length is calculated and is used instead as basis for motion along the curve.

  • Some additional minor fixes

2021-02-08 Version 2.3.0

  • Add support for cubic dynamics in Speed, LaneChange and LaneOffset actions.
  • Complete implementation of laneOffset and laneChange actions
    • Obey max_lateral_acc in LaneOffset action (previously ignored)
    • Calculate correct LaneChange duration/distance based on (lateral) rate
  • Minor fix: Set default value 250 kph for LongitudinalDistanceAction/maxSpeed

2021-02-04 Version 2.2.0

  • New feature: Support visualization of OpenDRIVE road signs and objects

    The OpenDRIVE signal attribute name is used for 3D model reference. So far only Swedish speed signs are distributed with esmini. But the concept is generic and allows for customized database of many signs. The pole is separated and handled as an OpenDRIVE object, which is also supported in similar way: Name referring to 3D model.

    Updated complete model pack can be downloaded from here, unpack into esmini/resources/models.

    See example straight_500m_signs.xodr which is used in updated scenarios:

    How to get information on road signs via API, see example usage in esmini-dyn/main.cpp

    Please note that esmini OSI output is not yet propagating signal and object info.

  • Add argument for adding search path prefix. (see launch commands)

  • Calculate pline trajectory headings if Orientation missing

  • Add odometer to overlay info text

  • Add overlay info text to odrviewer

  • Fix pline trajectory heading interpolation bug

  • Fix lane change on route issue (not well tested)

  • Some additional minor fixes

2021-01-26 Version 2.1.5

  • Fix typo ParameterSetAction -> SetAction
  • Fix pitch and roll initialization issue, now aligned to road as default
  • Update and extend the Driver model chapter in Hello-World examples.
  • Some additional minor fixes

2021-01-20 Version 2.1.4

  • Support for OpenDRIVE road superelevation (lateral inclination) - thanks cfschaller
  • Add a few missing modes and shapes to SpeedAction, now aligned with osg_coverage.txt

2021-01-15 Version 2.1.3

  • Fix macOS Big Sur issue, avoid crash by moving window position
  • Add option for custom steplength in odrplot
  • Some additional minor fixes

2021-01-11 Version 2.1.2

  • Improve collision detection (in CollisionCondition) now based on bounding boxes
  • Fix ghost controller bug causing premature stop trigger
  • Some additional minor fixes

2021-01-08 Version 2.1.1

  • Add ground surface textures for road model generator
  • Add the textures to demo pack

Updated complete model pack can be downloaded from here

The road model generator is exercised by the following example scripts:

  • run/esmini/run_lane_change.bat
  • run/esmini/run_dist_test.bat
  • run/odrviewer/run_e6mini.bat

2021-01-07 Version 2.1.0

  • New feature: Generate simple road 3D model if missing.
  • Adapt to compiler warning level 4 (Win/VisualStudio)

2021-01-04 Version 2.0.15

  • Updates to get RControlStation integration back on feet
  • Some additional minor fixes

2020-12-22 Version 2.0.14

  • Fix OSI output to support all OpenSCENARIO vehicle types
  • Option to specify custom OSI tracefile filename and path
  • Add plot script to demo pack
  • Some additional minor fixes

2020-12-17 Version 2.0.13

  • All EntityConditions now supported by addition of the following remaining ones (scenario demonstrating the condition in parenthesis):

    • Offroad (lane_change.xosc)
    • Acceleration (cut-in_simple.xosc)
    • StandStill (synchronize.xosc)
    • Speed (ltap-od.xosc)
    • RelativeSpeed (slow-lead-vehicle.xosc)
  • All Position types now supported by addition of the following remaining ones:

    • RelativeRoadPosition
    • RoadPosition

2020-12-13 Version 2.0.12

  • Add SynchronizeAction with SteadyState example scenario to demo package
  • Improve world to road coordinate mapping (thanks brifsttar, for input & support)

2020-12-11 Version 2.0.11

  • Allow storyboard element end transition directly from Standby to Complete state (when no run time needed)
  • Added example scenario to demonstrate SynchronizeAction with SteadyState extension
  • Fix a link issue that can appear with Visual Studio and vcpkg in Windows
  • Some code clean up and other minor fixes

2020-12-08 Version 2.0.10

  • Changed storyboard element maximumExecutionCount default value from 1 to infinite
  • Improved trigger logging, including all involved conditions and triggering entities
  • Updated Unity integration files and added example package, see here
  • Added support for CollisionCondition ByType (previously only EntityRef supported)
  • Added brief info on OSG tools (e.g. converting 3D models .osgb <-> .fbx), see here
  • Fixed an xy2road issue (finding closest road coord from arbitrary x,y position)
  • Some additional minor fixes

2020-12-04 Version 2.0.9

  • Add support for named parameters. See InnerWorkings/parameters.
  • Add experimental steady state to SynchronizeAction, see osc-extensions.xml and example usage in pedestrian_traj_synch.xosc.
  • Visualize all lanes, including non drivable (e.g. border)
  • Support space in filenames and file paths (with --osc, enclose with "")
  • Some additional minor fixes

2020-11-27 Version 2.0.8

  • Fix multi-session issues
    • Add method to clear paths between scenarios.
    • Reset controllers between scenario runs (fixes issue with --disable_controllers not having effect)
  • Fix relative position bug (which caused wrong lateral position in mapping x,y to road coordinates)
  • Fix typos in scenario files

2020-11-26 Version 2.0.7

  • Add position to on-screen info
  • Fix end position issue in FollowTrajectory (issue appeared when connecting multiple trajectories)
  • odrplot improvements:
    • plot lane boundary instead of lane center
    • plot non drivable lanes in gray
    • maximize axis to simplify panning and zooming
  • Fix LaneChange relative lane bug (when relative target lane is on other side of reference line)
  • Add search path support for OpenDRIVE and models
  • Some additional minor fixes

2020-11-17 Version 2.0.6

  • Fixed minor issues in Hello World tutorial
  • Set correct direction for OSI lanes
  • Fix pedestrian catalog path for demo package

2020-11-15 Version 2.0.5

  • Added a simple vehicle and driver model example to Hello World code guide
  • Change interpretation of relative lane in LaneChangeAction. Now sign of relative lane is always according to reference line, regardless of driving direction. To our understanding better complying with OpenSCENARIO 1.0.
  • Add analog driver control to the simple vehicle model class
  • Improve XYZ2Track method. Now consider overlapping roads (in junctions) when searching best match (not just first hit).
  • Add missing pedestrian catalog
  • Fix a memory bug potentially causing crash when --disable_controllers flag is set
  • Added a small curvy road with and without elevation profile
  • Some additional minor fixes

2020-11-13 Version 2.0.4

  • Align Hello World instructions with updated API
  • Fix OpenDRIVE poly3 issues
  • Adjust keepDistance tension proportional to MaxAcc (experimental)
  • Add position to on-screen info
  • Some additional minor fixes

2020-11-09 Version 2.0.3

  • Fix model ID issue in replayer (caused crash when scenario involves pedestrians)
  • Adjusted syntax (XSD) for optional SynchronizeAction tolerances (OpenSCENARIO extension)

2020-11-09 Version 2.0.2

  • Added pause and step features to replayer
  • Solved issue with ghost vehicles in replayer
  • Improved end criterias for SynchronizeAction end, detecting when destination gas been passed (increasing dsistance)
  • SynchronizeAction: Added tolerances to target positions. Can be set with attribute. Default 1m.
  • Corrected some paths in HelloWorld code example
  • Some additional minor fixes

2020-11-02 Version 2.0.1

  • Fixed issue with syncronizeAction and trajectory following entities
  • Added correctly dimensioned (according to OSC entity def) bounding box. Toggle show on key ',' (comma)
  • Fixed execution order so that controllers and callback are applied AFTER default controller
  • Some additional minor fixes

2020-10-23 Version 2.0.0

The major functional change is the implementation of the OpenSCENARIO controller concept. A side effect is that much of the functionality such as Ghost concept, interactive driving and external control previously assiciated and hardcoded in different applications now has moved out from the application(s) core and into different controllers which can be activated on demand in a more flexible way.

The actual application code gets much simpler and it makes no sense to have different applications for different use cases. As a result we decided to slim down to only two applications:

  1. esmini linking internal modules statically providing full access to internal API's
  2. esmini-dyn demonstrating use of the high-level dynamic shared library.

While doing such major reworks we also took the opportunity to rename applications and some modules, hopefully making things a little bit clearer, at least for newcomers. The changes breaks backward compatibility, calling for the update of major version number.

Controller details:

  • Controller catalogs supported
  • The following controllers, in addition to default controller, have been implemented:
    • ExternalController Vehicle will not be updated by the scenario. It's state is expected to be reported via gateway. The optional Ghost feature will launch a fore-runner vehicle to perform the scenario and create a trajectory for the external driver model to follow.
    • FollowGhostController An example of a (simple) vehicle and driver model using a Ghost as reference.
    • InteractiveController A simple vehicle model controlled by the user via keyboard (arrow keys)
    • SloppyDriverController Another example of a driver model, adding some random speed and lateral deviation to the default road following behavior. This controller is useless, it's pure purpose is to provide an example of separating lontitudinal and lateral control.
    • SumoController A way to integrate SUMO simulation. OpenSCENARIO vehicles are reported to SUMO, and SUMO vehicles are reported back to esmini.

These controllers can now be utilized also via the shared library. As OpenSCENARIO actions they are activated/deactivated dynamically by means of OSC triggers.

For more information about esmini controllers please see Controllers.md

Other new featuers:

  • VisibilityAction - makes object visible or invisible for sensors and/or graphics (visual presentation)

Structural changes:

  • Special control modes External, Internal and Hybrid have been removed (replaced by controllers)
  • ScenarioEngineDLL renamed to esminiLib
  • RoadManagerDLL renamed to esminiRMLib
  • EnvironmentSimulator removed (with controllers this got identical with the EgoSimulator)
  • EgoSimulator renamed to esmini (since it now is the recommended application)
  • ScenarioViewer renamed to esmini-dyn (kept as an example of using esminiLib)
  • OpenDriveViewer renamed to odrviewer
  • Replayer renamed to replayer
  • osi_receiver renamed to osireceiver

Note:

  • Previous use of control modes, e.g. external for interactive driving, now has to be specified in terms of controllers in the OpenSCENARIO file. Two steps needed: 1. AssignController and 2. ActivateController. See sloppy-driver.xosc for an example.
  • These changes affects some headerfile names, which might need to be updated in custom code.
  • Scripts referring to executables need updates, e.g. change any "EgoSimulator" or "EnvironmentSimulator" to "esmini" (however EgoSimulator will be provided as a raw copy of esmini executable during a deprecation period of a few releases)

2020-10-09 Version 1.7.13

  • Added support for lane change dynamics by rate

2020-10-06 Version 1.7.12

  • Fix pedestrian catalog support

2020-10-02 Version 1.7.11

  • Fix bug deleting any entity with defined controller
  • Add another OpenDriveViewer example run script

2020-10-02 Version 1.7.10

  • Fix assumption that all controllers are SUMO config type
  • Fix parameter name bug
  • Add OpenDriveViewer to demo package
  • Some additional minor bug fixes

2020-10-01 Version 1.7.9

  • Improved OSI performance
  • Added pedestrian example scenario

2020-09-30 Version 1.7.8

  • Support correct parameter names excluding the "$" prefix (old way still supported as well)
  • TimeToCollision condition
  • Collision condition
  • Improved road and lane connectivity w.r.t. preserve direction
  • Additional bugfixes and improvements

2020-09-23 Version 1.7.7

  • OSI raw struct output option
  • OSI sensor view in local coordinates
  • Callback mechanism to override (part of) entity states
  • Improved WorldCoordinate(x, y, z) to RoadCoordinate(road, lane, offset) mapping
  • Many minor bugfixes and improvements (and probably a few new bugs)

2020-09-04 Version 1.7.6

  • Added trajectory clothoid support

2020-08-31 Version 1.7.5

  • Added Hello World coding example
  • Fixed a bug preventing shared library (ScenarioEngineDLL) to run with viewer on Mac
  • Fixed crash when running with only OpenDRIVE road description (i.e. without scenegraph 3D model).

2020-08-26 Version 1.7.2

  • CSV logging feature
  • EndOfRoad trigger
  • Unit test framework based on Google Test
  • Cleaned irrelevant error messages

2020-08-21 Version 1.7.0

  • SUMO support integrated (via libsumostatic), first limited shot.
    • SUMO vehicles created by means of object controller. See example cut-in_sumo.xosc.
    • NOTE that you need to re-run cmake script in order to fetch SUMO dependency package (including headers and pre-built libraries).
  • Further OSI values populated, e.g. velocity and acceleration
  • OSI trace file not created by default, activated with argument "--osi_file on"
  • Condition/trigger timer now based on simulation time instead of system time

2020-07-24 Version 1.6.3

  • OSI support extended with road information (lane and road marks)
  • Bugfix: RelativeTargetLane (used in LaneChangeAction) is now calculated correctly, skipping reference lane and considering vehicle orientation so that positive lane changes will go left and negative to the right. Scenarios making use of RelativeTargetLane might need to be updated accordingly.

2020-06-18 Version 1.6.0

  • OSI support, initial framework established.
  • So far population of OSI global groundtruth moving objects.
  • OSI data is populated and provided to user in three ways:
    1. OSI trace file (always created, in folder where application was started)
    2. UDP messages (option to send OSI messages to specified host/IP address)
    3. API to fetch OSI data via function call (in ScenarioEngineDLL)
  • osi_receiver is a minimalistic demo-application showing how to receive OSI over UDP

2020-05-19 Version 1.5.0

  • Updated to support OpenSCENARIO 1.0. Note: no legacy support for 0.9.1
  • Updated demo scenarios to v1.0
  • Improved condition handling, fully supporting AND (within ConditionGroup) and OR (Multiple ConditionGroups) combinations
  • Refactored runtime model supporting StoryBoardElement states, also obeying nrOfExecutions attribute
  • Initial Trajectory support. PolyLine only, so far and limited testing performed.
  • Added support for TraveledDistance condition

2020-05-05 Version 1.4.6

  • Added heading to sensors so that one entity can have multiple sensors in different directions
  • Improved position Delta functionality. It will calculate shortest path and distance between two positions more generically and correctly.
  • Added road model (multi_intersections.xodr/osgb) with multiple junctions. Useful for testing the shortest path functionality.
  • Added new camera mode: top view (press 'k' multiple times to toggle or specify "--camera_mode top" as command line argument).
  • Some bugfixes. E.g. ParamPoly3 with Normalized parameter range.

2020-03-25 Version 1.4

  • Demos (and binaries) supplied for Mac (Catalina) and Linux (Ubuntu 18.04 and Kubuntu 18.04) in addition to Windows.
  • jpeg screenshot. User can save a screen shot at any time by pressing key 'c'.
  • QuitAction. User can specify when to quit the scenario (and application) by means of OSC conditions, just as any OSC action.
  • Fixed timestep (--fixed_timestep ). Enabling scenarios to be executed in split of a second and, by using the recording feature, it can be replayed in viewer afterwards.
  • Threads (--threads). Put scenario execution into a separate thread, decoupled from the viewer. Example of potential use case: Make it possible to pause scenario while moving camera.
  • New keyboard shortcut commands, and some moved to new key. Please see run/readme.txt for complete set.

2020-03-08 Version 1.3

  • Anti-Alias filter control
    • EgoSimulator now takes argument aa_mode 0 means no Anti-Alias. 4 is default.
    • One use case is when running esmini (EgoSimulator) within docker on Linux - which seem to not support AntiAlias.
  • Mac CI build environment added. However only RoadManager and ScenarioEngine as shared libraries, and without graphics (OSG) support.
  • Linux binaries now includes graphics (OSG) support.
  • Demo package for Linux added. Now CI builds and deploy demo for both Windows and Linux (Ubuntu 18.04).

2019-12-06 Version 1.2

  • Catalog handling updates
    • Parameter assignment implemented (enabling variants or configuration of re-used catalog items)
    • Name and structure updates: When a scenario refers to a catalog entry esmini will first locate the catalog by searching all specified catalog directories for a file named "catalog name".xosc. So a catalog name is defined by the base file name. Filename extension .xosc is mandatory. The actual Catalog XML element attribute "name" is ignored. See synchronize.xosc for an example on how to (re-)use manuever catalog entries.
  • Trail visualization can be switched off by application argument (--trail <on/off>) and toggled by pressing key "t" in viewer window.

2019-11-20 Version 1.1

  • External control flag replaced by enumeration Available modes: internal, external, hybrid EgoSimulator and EnvironmentSimulator argument syntax changed from --ext_control <on|off> to --control <internal|external|hybrid>