Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[sumo-announce] Version 1.0.0 released

Dear friends and users,
we are glad to announce the release of SUMO version 1.0.0.
The download links are at
There are many new features and fixes in this release and the most important ones are listed below. For a full list of changes, see
There are also some compatibility changes that affect default application behavior and TraCI clients. These are listed below in full.

--- Enhancements ---

All applications
- All time values in options and xml inputs can now be specified in the format h:m:s and d:h:m:s where the values for days, hours and minutes are all positive integers and seconds may also be a positive floating point number.  Note: This does not apply to the python tools.
 - Added option --human-readable-time (short -H) that causes all time values to be written in h:m:s (or d:h:m:s) format.

- Implemented SSM Device, which allows output of saftey related quantities.
- Added driver state device for modelling imperfect driving.
- Added a new car-following model "ACC" based on [Milanés et al. "Cooperative Adaptive Cruise Control in Real Traffic Situations." IEEE Trans. Intelligent Transportation Systems 15.1 (2014): 296-305.]
- FCD-output can now be switched on selectively for a subset of vehicles and the reporting period can be configured.
- FCD-output can now be restricted to a subset of network edges loaded from a file with option --fcd-output.filter-edges.input-file <FILE>. The file format is that of an edge selection as saved by NETEDIT.
- A pedestrian crossings can now have different signal states for both directions.
- The default lane-changing model LC2013 now supports parameter lcAssertive to
  model aggressive lane change maneuvers.
- Vehroute-output now includes the reason for rerouting.
- Tripinfo-output now includes the attribute stopTime which records the time spent with intentional stopping.
- Added optional attribute visible to <parkingAreaReroute> (default false). This controls whether occupancy is known before reaching the parkingArea edge and can be used to model incomplete knowledge in parking reroute choice.
- Rerouters now support the attribute vTypes which restricts their effect to vehicles from the given list of vehicle type IDs.
- Vehicles are forming a corridor for emergency vehicles equipped with
  device.bluelight in sublane simulation
- Added lane/edge-attribute stopOffset for defining vClass specific stopping positions in front of traffic lights.

- Added control for scaling traffic demand dynamically (next to the delay control).
- The simulation view can now be rotated via the new gui-settings attribute angle in the
  <viewport> element or via the viewport dialog.
- The simulation state can now be saved via the Simulation Menu.
- Object tracking can now be aborted via double-click.
- Person plans can now be inspected via the right-click menu.
- Object name rendering size can now be toggled between constant pixel size (all visible when zoomed out) and constant network size (invisible when zoomed out).

- Simulation of persons and public transport is now supported.

- Added Prohibition-mode for checking right-of-way at junctions (hotkey 'w'). Thanks to Mirko Barthauer for the contribution.
- Now ParkingAreas and ParkingSpaces can be created in netedit.
- Added support for BusStops Acces.
- Now Generic Parameters can be loaded, saved and edited. 5
- When adding a new phase to a traffic light, the new phase will now have a plausible successor state depending on the selected previous phase (rather the being a copy).
- Added function 'split' to junction context menu. This can be used to disaggregated joined junctions.
- Re-organized options in the options-dialog (F10). Option help is shown in the status bar
- Custom edge geometry endpoints can now be manipulated in Move mode.

- Improved heuristics for options --junctions.join. Issue #876
- Improved computation of intermodal junctions imported from OSM.
- Improved computation of junction shapes.
- Added option --junctions.limit-turn-speed <FLOAT> which sets an upper bound on speed while passing an intersection based on the turning radius. To account for imperfect road geometry, the option --junctions.limit-turn-speed.min-angle can be used to avoid speed limits for small turns.
- Geo-referenced networks (i.e. from OSM) can now be merged by loading them together (-s,
- Element <crossing> now supports attribute linkIndex2 to specify a custom signal index for the reverse direction.
- Added option --proj.rotate <FLOAT> for rotating the network.
- Sidewalk information is now imported from OSM for road types that have a positive sidewalkWidth attribute (e.g. by using typemap osmNetconvertPedestrians.typ.xml).
- Geo-reference information is now imported from OpenDRIVE input.
- Importing VISUM networks up to format version 10 is now support.

- Added option --rand.grid to place generated junctions on a regular grid
- Added options --turn-lanes <INT> and --turn-lanes.length <FLOAT> to add left-turn lanes to generated networks.

- Intended departure times (attribute depart) and intended vehicle id (attribute intended) are now added to vehroute-output of public transport rides.

- libsumo can now be used in place of the TraCI client libraries to increase execution speed of TraCI-Simulations by directly linking against SUMO for all SWIG-supported languages. Graphical simulation with libsumo is not yet supported.
- added functions simulation.getCollidingVehiclesNumber and simulation.getCollidingVehiclesIDList to track collisions.
- added functions simulation.getEmergencyStoppingVehiclesNumber and simulation.getEmergencyStoppingVehiclesIDList to track emergency stops.
- added function edge.getLaneNumber to retrieve the number of lanes of an edge.
- added function vehicle.getAcceleration to retrieve the acceleration in the previous step.
- TraCI now allows to update a vehicle's best lanes (vehicle.updateBestLanes).
- added function gui.hasView to determine whether graphical capabilities exist.
- function simulation.getMinExpectedNumber() now includes persons that are still active in the simulation.
- added function traci.getLabel to the python client to help working with multiple connections.
- When adding a vehicle with a disconnected 2-edge route, it will be treated like a <trip> and rerouted automatically.
- function vehicle.add now supports using the empty string ("") as a route id to insert the vehicle on an arbitrary valid edge. This makes it easier to remote-control vehicles using moveToXY without defining an initial route.
- added functions vehicle.getRoutingMode and vehicle.setRoutingMode. When setting routing mode to traci.constants.ROUTING_MODE_AGGREGATED, smoothed travel times are used instead of current travel times.

- added script which allows plotting various combinations of time, distance, speed and acceleration for all trajectories in a given --fcd-output file.
- added script for running a scenario multiple times with different random seeds and computing trip statistics
- Additional options for that make it suitable for generating various kind of junction related output.
- Added function simpla.createGap() to the Simpla library
- now also allows to generate vehicle parameter distributions.

--- Bugfixes ---

- All car-following models now respect the vType-attribute emergencyDecel as an absolute bound on deceleration.
- Fixed various issues when using the simple continous lane change model.
- Fixed invalid vehicle counts by E2-detector
- Fixed bug that was causing invalid slowdown while passing an intersection.
- Fixed invalid deceleration at yellow traffic light.
- Fixed right-of-way rules for vehicles standing next to each other on the same lane and driving towards different edges.
- Fixed crash within intersection between vehicles coming from the same lane.
- Fixed (near) infinite loop when specifying invalid speed distribution.
- Option --carfollow.model is now working.
- Car-follow models IDM and IDMM no longer fail to reach an exact stop position. Issue #658
- Strategic look-ahead is now working as expected in networks with many short edges.
- Switching a traffic light to the "off" definition now sets the correct right-of-way rules.
- Fixed abrupt emergency braking when violating safe gape slightly

- Fixed crashing due to concurrent access to vehicle numbers.
- Fixed crashing and visualization problems when using the 3D-view. ,
- Fixed glitch where persons would appear to jump around while riding in a vehicle across an intersection.
- ChargingStation are visible again (regression in 0.32.0)
- Fixed invalid vehicle blinkers in lefthand simulation.
- Fixed vehicle positions when using the sublane model in lefthand networks.
- Vehicles that were not inserted (i.e. due to option --scale or --max-depart-delay) no longer count as arrived in the simulation parameter dialog. Instead the are counted under the new item discarded vehicles.

- Fixed deadlock at roundabouts when running with option or --meso-junction-control false.

- Splitting edges, deleting individual edges and lanes or adding lanes via the duplicate menu option no longer resets connections and traffic light plans.
- The viewing area and zoom loaded via option --gui-settings-file is no longer ignored
- Fixed bug where connections on large junctions did not register clicks or were not drawn.
- Fixed various bugs that led to re-computation of signal plans when modifying connections or tls indices. ,
- Fixed bug that could lead to the creation of invalid networks when adding and removing connections. ,
- Moving geometry no longer removes z-data.
- Splitting edges no longer introduces unnecessary custom endpoints.
- Fixed crash when deleting one of multiple signal programs for the same junction.

- Fixed bug that was causing invalid link states at intermodal junctions. 
- Fixed invalid junction logic in lefthand networks.
- Generated signal plans will no longer have a protected left-turn phase if there is no dedicated left-turn lane.
- Fixed invalid intermodal junction logic that could cause collisions and deadlocks. ,

- Fixed crash on intermodal routing.

- Fixed crash when trying to access empty subscription result list using the C++ client.
- Fixed invalid results when calling simulation.findIntermodalRoute
- Fixed bug where vehicle.couldChangeLane returned True immediately after a lane change even though the requested target lane did not exist.
- Function vehicle.getLaneChangeMode now returns correct values for the original lane change state when the state is affected by vehicle.setLaneChangeMode.
- Fixed collisions when combining vehicle.slowDown with ballistic update.
- Fixed python client bug in traci.lane.getLinks which returned always true for isOpen, hasFoe and hasPrio.
- traci.person.setColor was fixed (was a noop before)

- webWizard now correctly builds regions with left-hand traffic

---  Documentation ---
- Added documentation on joined traffic lights and defining signal groups.
- Added documentation on the simple continous lane-change model.
- Documented all supported routing algorithms.

---  Compatibility Changes ---
Below is a list of options to restore compatibility with 0.32.0 behavior in regard to changed option defaults.
The explanations are given in detail below
  --default.junctions.radius 1.5
  --junctions.limit-turn-speed -1
  --junctions.corner-detail 0
  --roundabouts.guess False

  --default.speeddev 0
  --default.emergencydecel decel
  --device.rerouting.pre-period 1

All Applications
- The space character ' ' is no longer allowed in xml option values when separating file names. Instead the comma ',' must be used. Files with space in their path are now supported.

- The default speed deviation has been changed to 0.1. When defining a new <vType> with attribute vClass, this also influences the default speed deviation:
 - truck, trailer, coach, delivery: 0.05
 - tram, rail, rail_electric, rail_urban, emergency: 0
 - everything else 0.1
- Added option --default.speeddev <FLOAT> to control the default speed deviation of all vehicle types that do not define it.
- The default arrival position for person walks is now the middle of the destination edge. This reduces the assymetry from arriving in forward or backward direction.
- tripinfo-output attribute waitSteps which counts the number of simulation steps in which the vehicle was below a threshold speed of 0.1m/s was replaced by attribute waitingTime which measures the same time in seconds. This gives results which are independent of the --step-length simulation parameter.
- The default value for option --device.rerouting.pre-period was changed from 1 to 60 to speed up simulation.
- vTypeProbe is now deprecated in favor of fcd-output filters
- vaporizers are now deprecated in favor of calibrators

- The Delay value is now invariant with regard to the simulation step length and always denotes delay per simulated second.
- Default color for persons is now 'blue' to better distinguish them from vehicles. 

- The alphanumerical junction naming scheme is active by default (the option for enabling the old scheme was renamed from grid.alphanumerical-ids to --alphanumerical-ids).
- The alphanumerical junction naming scheme now supports arbitrary grid sizes (using ids like XY23)
- The alphanumerical junction naming scheme also extends to spider networks
- When using alphanumerical junction ids, the intermediate string 'to' is omitted from edge names because the edge ID already allows unambiguous determination of its junctions without it

- There is no longer an offset of 0.1m between lanes. This means the total visual width of an edge is now the sum of all lane widths. This also fixes an inconsistency between visualization and simulation as the vehicles always ignored this offset anyway. Road markings are now drawn on top of the lanes rather than between them. This causes small visual gaps in old networks (fixable by calling netconvert -s -o
- The default value for option --default.junctions.radius was increased from 1.5 to 4 in order to improve realism of turning angles.
- The default value for option --default.junctions.corner-detail was increased from 0 to 5 to improve the visual realism of larger intersections.
- Option --ramps.guess is now enabled by default
- Vehicle speed while turning at intersections is now limited via the new option default --limit-turn-speed 5.5. To obtain the old behavior, this value can be set to -1.

- TraCI Version is now 18
- embedded python mode is now deprecated in favour of libsumo
- TraCI now consistently represents time in seconds as a double precision floating point. This affects all client implementations. Modifying your scripts should be necessary only for the methods given  below:
    - traci.simulationStep (when used with a time argument)
    - traci.vehicle.slowDown
    - traci.vehicle.changeLane
    - traci.vehicle.setStop
    - traci.simulation.getDeltaT
    - traci.trafficlight.getNextSwitch
    - traci.trafficlight.getPhaseDuration
    - traci.trafficlight.setPhaseDuration
  For the following methos, only client developoers need to adapt to protocol changes
    - traci.edge.getTravelTime
    - traci.edge.getEffort
    - traci.edge.adaptTravelTime
    - traci.edge.setEffort
    - traci.person.add
    - traci.vehicle.getAdaptedTravelTime
    - traci.vehicle.getEffort
    - traci.vehicle.adaptTravelTime
    - traci.vehicle.setEffort
    - traci.simulation.findRoute
    - traci.simulation.findIntermodalRoute
    - traci.trafficlight.getCompleteRedYellowGreenDefinition
    - traci.trafficlight.setCompleteRedYellowGreenDefinition
    - All protocol functions returning single bytes now return integers (lane.getLinkNumber, polygon.getFilled, vehicle.isRouteValid, vehicle.getStopState)
- traci.simulation.getCurrentTime still returns ms as int but has been deprecated in favor of traci.simulation.getTime
- The TraCI boundary type has been replaced by a position list of 2 positions
- The TraCI float type has been removed
- In the C++ client the function vehicle.getEdges was renamed to getRoute to be consistent with other clients
- The order of error checks in the TraCI server changed so that unknown object errors show up before unknown variable / command errors
- Changes to the python client
    - the function vehicle.add was replaced by the function addFull. The old "add" is still present and can be reactivated by monkey patching the module (traci.vehicle.add=traci.vehicle.addLegacy). The only difference to traci users is that the old version inserted vehicles at position 0 by default whereas the new version inserts them at the 'base' position (fully on the first edge if possible).
    - constants which were previously available in the single domains have moved to traci.constants
    - now returns tuples instead of lists for all getIDList and several other calls

Have fun with the new release,
Robert, Michael, Yun-Pang, Laura, Leo, Pablo  and Jakob

Back to the top