Dear friends and users,
we are glad to announce the release of SUMO version 1.0.0.
The download links are at
http://sumo.dlr.de/wiki/DownloadThere are many new features and fixes in this release and the most important ones are listed below. For a full list of changes, see
http://sumo.dlr.de/wiki/ChangeLogThere 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.
Simulation
- 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.
SUMO-GUI
- 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).
MESO
- Simulation of persons and public transport is now supported.
NETEDIT
- 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.
NETCONVERT
- 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 net1.net.xml,net2.net.xml).
- 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.
NETGENERATE
- 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.
DUAROUTER
- Intended departure times (attribute depart) and intended vehicle id (attribute intended) are now added to vehroute-output of public transport rides.
TraCI
- 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.
Tools
- added script plot_trajectories.py which allows plotting various combinations of time, distance, speed and acceleration for all trajectories in a given --fcd-output file.
- added script averageRuns.py for running a scenario multiple times with different random seeds and computing trip statistics
- Additional options for generateTLSE3Detectors.py that make it suitable for generating various kind of junction related output.
- Added function simpla.createGap() to the Simpla library
- createVehTypeDistributions.py now also allows to generate vehicle parameter distributions.
- Default color for persons is now 'blue' to better distinguish them from vehicles.
- 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