- New Australia and US traffic signs
- New lanelet type:
restricted_area
LaneletNetwork.create_from_lanelet_network
now also includes intersections- Support for Python 3.13
- TR2 cost function enum value
DynamicObstacle
cannot be hashed if some optional attributes are missingTrafficLightCycle
does not invalidate cached cycle init timesteps after modification
- Github actions for ubuntu, windows, and macOS
- Gitlab runner for arm64 ubuntu
- Support for reading xml and protobuf byte streams
- Support for numpy
>=2.0
- Adjustable zorder for dynamic obstacle & lanelet visualization
- AreaBorder can have multiple adjacent lanelets
- Performance regression for occupancy_set lookups in TrajectoryPrediction
- Matplotlib
>=3.9.0
support
- Support for Python 3.8
- Country-independent traffic sign enum
- Missing country-specific max speed sign IDs
- Automatically generated TrafficSignIDCountries enum for importing in other scripts
- GroundTruthPredictor class to use stored trajectories as prediction
- Function to append a state to a trajectory
- Typo:
TrafficSigInterpreter
→TrafficSignInterpreter
- Typo EMERGENCY_STOP traffic sign enum name
- Activation condition for drawing occupancies
- Traffic sign with first occurrence set to None can be hashed
- Traffic light can be plotted without a TrafficLightCycle
- Optimization-based planner tutorial now uses planner and predictor interfaces
- Simplified traffic sign matching in FileReader
- The occupancy set, initial time step, and final time step are now computed properties of TrajectoryPrediction
- Trajectory now allows direct access to the state list
- Drawing occupancies by default false
- Improved visual appearance of notebooks
- Setters for initial and final time step in predictions
- Setter for occupancy_set in TrajectoryPrediction
- Function to convert 3D scenarios to 2D scenarios
- Support for Python 3.12
- Function to retrieve all lanelets referencing a given traffic sign/light
- New line marking types
- Traffic light shape
- Conversion to initial state in function create_dynamic_obstacle of solution object
- Traffic signs for Zamunda now use images of German traffic signs
- Code formatting (flake8, black, isort)
- Images for Zamunda traffic signs
- Function commonorad.common.util.interpolate_angle
- Type information for lanelet init function
- Dynamic obstacles can now store a history of their states
- Function to update the initial state of a dynamic obstacle while storing the previous state in the history
- Function to update behavior predictions of dynamic obstacles
- Function to find lanelet predecessors in range to lanelet network
- Function to compute all predecessor lanelets starting from a provided lanelet and merge them to a single lanelet for each route.
- Documentation for renderers (including video creation)
- Abstract interfaces for motion planner and prediction for usage in other tools
- New ExtendedPMState to support states with position, velocity, orientation, and acceleration
- Orientation property to PMState
- Hash and equality functions for area
- Function create_from_lanelet_network deletes references to removed lanelets
- Write environment time to XML in correct format
- Failing visualization of lanelets, stop lines, traffic signs, and traffic lights with z-coordinate
- Traffic lights now correctly change size in interactive matplotlib plots (only affected matplotlib>=3.7)
- Considering state attributes not part of dataclass definition in state to state conversion
- Enforce InitialState class for initial state property of dynamic obstacle
- Hash function of obstacle
- Cleanup lanelet, traffic sign, and traffic light references in function create_from_lanelet_list by default
- Equality checks of scenario elements no longer emit a warning on inequality (except if the elements are of different types)
- Duplicated initial_state property of dynamic obstacle
- Area for modelling drivable areas which cannot be represented by lanelets
- New weather and time of day options
- Allow file reader to determine format based on suffix
- Visualization of all traffic signs by setting
show_traffic_signs = None
in draw parameters - Validity functions to support z-axis
- Unreferenced traffic signs for lanelet networks filtered by lanelet type
- Visualization of direction arrow of narrow lanelets
- Traffic light cycle optional
- Traffic light in separate python file
- Allow file reader to determine format based on suffix
- Broaden types allowed as file names
- Open files safely by using a context manager
- Use correct suffix when inferring filename from scenario id
- function get_default_cycle for traffic lights
- support for Python 3.7
- Support for shapely>=2.0.0
- Writing scenarios without location to protobuf
- Dashed lanelet boundaries with fixed dash position
- Default plot limits for focused obstacle
- Use dt from scenario as default for video creation
- Apply axis visible-option also for video creation
- Protobuf FileReader marking road network related IDs as used
- State attribute comparison
- Name of SIDEWALK and BUSLANE traffic signs to PEDESTRIAN_SIDEWALK and BUS_LANE
- Packaging and dependency management using poetry
- Drawing parameters as dataclasses (support for context help)
- Documentation for drawing parameters
- Support for Python 3.11
- Function to convert a state into a 1D-numpy array
- Progress bar for video creation
- Callback for modifying axes during plotting a video
- Name of position in lateral and longitudinal state
- ParamServer and dictionary specification of drawing parameters
- Failing visualization of a trajectory at it's initial time step
- Broken lanelet visualization with matplotlib >3.5
- Function for getting lanelet orientation closest to a given position
- Function for getting most likely lanelet given an obstacle state
- Function for erasing lanelet network from scenario
- Function for replacing lanelet network of a scenario with new one
- Support for Protobuf format
- Predefined classes for specific states, point-mass model, kinematic single-track model, etc.
- Function for computing shape group occupancy from state
- Support for kinematic single-track model with one on-axle trailer
- Three new lanelet types: parking, border, and restricted
- Move tests, tutorial, and documentation folder to root directory
- State classes in separate Python file
- setter method for lanelet network in scenario class
- Default constructor for ScenarioID produces invalid Benchmark ID
- Changeable state list leads to inconsistent final time step of trajectory
- Various small bug fixes
- Video creation with custom draw parameters
- Obstacle icon with custom color
- Remove support for Python 3.6
- Side-effect circle and rectangle init functions
- Parsing solution files with old time format
- Invalid lanelet occupancy computation using buffered polygons
- Various small bug fixes
- Polyline utility functions, e.g., resampling, path length, orientation, curvature, intersection
__eq__
and__hash__
functions for LaneletNetwork and related classes (e.g., traffic sign, traffic light, stop line, etc.)- Compatibility for Shapely 2.0
- New traffic signs for Germany
- License switched to BSD-3
- Date in solution file now stored in the dateTime format (
%Y-%m-%dT%H:%M:%S
)
- Various small bug fixes
- Spatial indexing via STRTree in LaneletNetwork for faster computation of lanelet queries via positions or shapes
- The function LaneletNetwork.create_from_lanelet_network accepts now a shape and set of lanelet types which should be excluded
- Shapely polygon for lanelets is created by default
- Function convert_to_polygon() within Lanelet class is deprecated and will be removed in the next release
- Various small bug fixes
- Parameter
draw_params={"focus_obstacle_id": obstacle_id}
focuses the plot or video on a dynamic_obstacle - About 150 new traffic signs from Germany, Spain, and US added
- added new cost function TR1 to SolutionWriter
- Various small bug fixes
- Support for over 50 new traffic signs from Germany
- Support of phantom obstacles
- New visualization module which supports MVC pattern
- Functions for adding and removing traffic signs, traffic lights, and intersections from a scenario or lanelet network
- New icon visualization interface and new icons for bus, truck, and bicycle (developed by Simon Sagmeister - TUM FTM)
- Scaling of traffic signs is coupled with the zoom level
- Various small bug fixes
- Support of environment obstacles, e.g. buildings
- Several new traffic signs
- New ScenarioID class for the representation of benchmarks
- New line marking types unknown and no_marking
- Crossings for intersections
The creation of lanelet assignments for obstacles is now optional. This decreases the loading time of scenarios. The lanelet assignment can still be performed manually after loading a scenario.
- Docstrings for properties
- Autoscaling visualization when plotting trajectories.
- Function generate_object_id works now if no element has been added before and reserves ID if object will be added later
- Runtime warning during calls to find_lanelet_by_position
- Various small bug fixes
- Traffic signs are not visualized by default
- new tags for compatibility with 2018b XML format
- new lanelet types: unknown and interstate
- Various small bug fixes
- Support of 2020a Scenarios with TrafficLights, TrafficSigns, and Intersection objects
- SignalStates store information on turn lights, horn, hazard lights, and blue lights of DynamicObstacles
- New Solution object simplifies creating solution xml files and automatically checks the validity of benchmark IDs
- GeoTransformation object stores location and transformation information for lanelet networks extracted from the real world
###Changed
- SolutionReader can now read solution files generated by the CommonRoadSolutionReader
- CommonRoadSolutionWriter can directly write computation times and the CPU model into the solution file
- Visualization is improved and now supports legends
- Various small bug fixes
- The old commonroad.common.solution_writer.CommonRoadSolutionWriter is deprecated and replaced by commonroad.common.solution.CommonRoadSolutionWriter
- Increased decimal precision of file writer when lanelets join into or split from other lanelets
- Minimum of 3 points per lanelet border are required
- File writer writes goal lanes correctly
- LaneletNetwork/find_lanelet_by_id returns None instead of an error if it's not contained in network
- Initial version