Dear friends and users,
we are happy to announce the release of SUMO version 1.9.0.
The download links are at
https://sumo.dlr.de/docs/Downloads.htmlThis release brings you a wide array of new options, input elements
and tools. It also brings the long-promised compatibility of sublane-model and
opposite-direction driving, fixing many bugs related to both topics in the
process. Another area with improvements is taxi/DRT simulation.
There are many more features and fixes in this release and the most important ones are listed below. For a full list of changes, as always see
http://sumo.dlr.de/wiki/ChangeLog=== Enhancements ===
- Simulation
- Sublane model can now be used together with overtaking through the opposite direction.
- Added new option --collision-output to write information on collisions to an XML file.
- Added option --fcd-output.attributes to set the list of attributes which are included in fcd-output.
- Taxi device now supports option --device.taxi.idle-algorithm [stop|randomCircling] to control the behavior of idle taxis.
- Added vehicle attribute 'arrivalEdge' and 'departEdge' which can be used to start/end the route with an edge index offset
- Now supporting element <containerFlow> to define multiple containers.
- PersonFlow now supports attribute begin="triggered" number="..." to start a number of persons in the same vehicle.
- Added option --device.battery.track-fuel to track fuel level for other fuels besides electricity
- Added option --stop-output.write-unfinished to write stops that are not ended at simulation end.
- Vehicle Class specific speed limits are now interpolated onto junctions.
- sumo-gui
- Vehicle lengths will now be scaled according to custom edge lengths to avoid confusing visual overlap. A new vehicle visualization setting checkbox 'scale length with geometry' is provided to disable scaling.
- Asymmetrical lane-change restrictions are now indicated by a combination of broken and unbroken divider lines.
- Add vehicle drawing style 'draw as circles'.
- BusStop parameter dialog now includes a summary of lines which are being waited for.
- Improved visualization of containers waiting at containerStop.
- netedit
- In move mode, exact coordinates for a geometry point can be set via right-click menu.
- Selected edges and junctions can now be moved in z-direction (absolutely or relatively) via move mode frame controls.
- Shapes of selected edges can now be shifted orthogonally to their driving direction via move mode frame controls.
- Polygons can now be moved without changing their shape (with new move mode checkbox).
- Lane attribute 'type' can now be edited.
- netconvert
- Lanes and connections now support attributes 'changeLeft' and 'changeRight' to configure lane-change restrictions.
- Lane changing restrictions are now imported from OSM. To achieve legacy behavior, set option --ignore-change-restrictions all.
- Element <laneType> is now supported in an edge <type> to pre-configure speed, width and permissions for individual lanes.
- Using options --junctions.join-same --edges.join can now be used to merge overlapping networks with modified ids
- Public transport edges that are disconnected from the main road network (in particular railways) are now included in the output when using option --keep.edges.components 1 as long as they have public transport stops that are written via option --ptstop-output.
- The behavior of option --geometry.remove (merging subsequent edges with common attributes) no longer depends on written --ptstop-output (stops will be remapped onto merged edges). To enable legacy behavior, the option --geometry.remove.keep-ptstops may be set.
- Added option --osm.extra-attributes to import additional edge attributes (osm tags) as generic parameters.
- Option --output.street-names is now working for VISUM network.
- marouter has new option --ignore-taz to route individual trips written by od2trips between their assigned edges.
- od2trips has new option --junctions which interprets the loaded source and sink ids as fromJunction and toJunction ids.
- dfrouter has new option --vclass to filter eligible edges in a multi-modal network.
- TraCI
- libtraci is now the "officially supported" library for the Java, Python and C++ TraCI clients, providing (functional) identical interfaces for all three languages. TraaS and the old C++ TraCI API are considered deprecated.
- Added function 'traci.simulation.getCollisions' to retrieve a list of collision objects for the current time step.
- vehicle.dispatchTaxi now supports re-dispatching a taxi that is already in pickup or occupied mode.
- Vehicles that are accumulating insertion delay can now be retrieved using the functions 'traci.simulation.getPendingVehicles', 'traci.edge.getPendingVehicles' and 'traci.lane.getPendingVehicles.
- Taxi customers (including those that shall be picked up but are not yet on board) can now be retrieved using traci.vehicle.getParameter(vehID, "device.taxi.currentCustomers").
- The reservation objects returned by traci.person.getTaxiReservations now includes persons that are eligible for re-dispatch and includes the state of the reservation (new, assigned, on board).
- Added function 'traci.person.splitTaxiReservation' to transport pre-made groups with multiple vehicles.
- Tools
- Added tools to support GTFS import.
- The tool gridDistricts.py can be used to generated a grid of districts (TAZs) for a given network.
- Added new tool splitRandom.py. to split route files into random subsets.
- Added new tool changeAttribute.py to add/change/remove xml attributes.
- Added new tool computeStoppingPlaceUsage.py to compute running occupancy of parking ares from stop-output.
- traceExporter.py now supports SSAM trajectories.
=== Bugfixes ===
- Simulation
- Many sublane model fixes and opposite-direction-driving fixes (collisions, deadlocks, ...)
- Fixed collisions between pedestrians and vehicles on shared space
- Fixed emergency stop when vehicles are caught in the "Yellow Light Dilemma Zone".
- Fixed bug where an emergency vehicle does not advance in the rescue lane.
- Fixed emergency braking when approaching zipper link.
- Vehicle type attribute containerCapacity is now supported when using taxi device for container logistics
- Fixed invalid chargingSstation-output in subsecond simulation
- Fixed invalid jam-front back-propagation speed in meso simulation. (Regression in 1.7.0)
- netedit
- Fixed invalid E2 detector shape (Regression in 1.7.0)
- Fixed invalid rendering layer of polygons below roads. (Regression in 1.7.0)
- netconvert
- Fixed duplicate public transport stops when importing public transport lines from OSM.
- Fixed high running time when using option --geometry.remove on large networks.
- Fixed missing bus-permissions when importing OSM.
- dfrouter now supports intermodal networks
- randomTrips.py now generates multi-stage plans when combining option --intermediate with options that generated persons (i.e. --persontrips).
- Fixed "Error: Cannot get file attributes" when loading large files on Windows and macOS.
- sumo-gui: Fixed long pause on right-click in large networks. (Regression in 1.4.0)
- TraCI
- Fixed several crashes
- Fixed several problems when calling simulation.loadState
- Function 'vehicle.getSpeedWithoutTraCI' now returns original model speeds after calling moveToXY.
- Fixed location and speed when using person.moveToXY
- Function vehicle.getNeighbors now correctly handles neighbors that changed lane after the ego vehicle in the same simulation step.
- Function 'trafficlight.setProgramLogic' new resets phase duration.
- Function 'trafficlight.setPhaseDuration' now works for actuated traffic lights.
- Fixed failure to add stop when close to the stop position (but not quite too close). Also affected taxi re-dispatch.
- Looped taxi-dispatch now picks up persons in the intended order.
- Fixed bug where traci.vehicle.dispatchTaxi could generate non-continuous routes.
- Fixed invalid traceFile output.
=== Other ===
- Python3 is now the default and recommended python
- netedit: When using rectangle selection, junctions of selected edges are now added to the selection by default.
- netconvert: Parallel turn lanes are no longer written as distinct edges but are instead written as multi-lane edge with different lane lengths. As before, lane-changing on an intersection is not permitted on a turn lane.
- Tools
- Some obsolete tools were moved to tools/purgatory (let us know if you were using them).
- Several tools were renamed/relocated to help new users in finding the right tool and to provide an egg-hunt for long-time users (full list at
https://sumo.dlr.de/docs/ChangeLog.html#other)
- randomTrips.py option -c is no longer a shortcut for option --vclass. Instead it is used to load a configuration file (written via -C).
- osmBuild.py option -c is no longer a shortcut for option --vehicle-classes. Instead it is used to load a configuration file (written via -C).
Have fun with the new release,
Johannes, Matthias, Michael, Yun-Pang, Angelo, Laura, Pablo, Jakob, Robert, Giuliana and Melanie.