![]() |
Modules | |
Area | |
Lanelets | |
LineString | |
Point | |
Polygon | |
Regulatory Element | |
Classes | |
class | lanelet::AllWayStop |
Defines an all way stop. These are a special form of right of way, where all lanelets have to yield, depending on the order of arrival and the route through the intersection.The distance to the intersection is represented either by the distance to the stop line, if present, otherwise the distance to the end of the lanelet. More... | |
class | lanelet::Area |
Famous Area class that represents a basic area as element of the map. More... | |
class | lanelet::GenericRegulatoryElement |
A GenericRegulatoryElement can hold any parameters. More... | |
class | lanelet::Lanelet |
The famous (mutable) lanelet class. More... | |
class | lanelet::LineString2d |
A normal 2d linestring with mutable data. More... | |
class | lanelet::LineString3d |
A normal 3d linestring with mutable data. More... | |
class | lanelet::Point2d |
A mutable 2d point. More... | |
class | lanelet::Point3d |
A mutable 3d point. More... | |
class | lanelet::Polygon2d |
An mutable clockwise oriented, open (ie start point != end point) polygon in 2d. More... | |
class | lanelet::Polygon3d |
A mutable clockwise oriented, open (ie start point != end point) polygon in 3d. More... | |
class | lanelet::RightOfWay |
Defines right of way restrictions. More... | |
class | lanelet::SpeedLimit |
Represents a speed limit that affects a laneletA speed limit is defined by one ore more traffic signs and cancelled by one or more traffic signs. All lanelets affected by this refer to this traffic sign. More... | |
class | lanelet::TrafficLight |
Represents a traffic light restriction on the lanelet. More... | |
class | lanelet::TrafficSign |
Expresses a generic traffic sign rule. More... | |
All primitives are first-class citizens of lanelet2. Unlike Immutable lanelet primitives they provide functionality to not only view the data but also modify it.
All primitives are split in a const and a non-const version that both have a std::shared_ptr to the actual data. This means that a primitive itself is very lightweight. It also means that all copys of a primitive share the same data and are therefore
All primitives are registered with boost::geometry (see also the lanelet::geometry). This means that they can be passed directly to boost::geometry functions.
With some exceptions: Some of boost::geometry's functions require objects to contain mutable data. This is not possible for lanelet primitives. If you see errors complaining about a missing "set" function, you hit one of those functions. For these functions, you have to pass hybrid primitives (see ConstHybridLineString3d).
All primitives exist in a 2d and a 3d version and can be converted cheaply and without data loss in both directions (see also lanelet::traits::to2D and lanelet::traits::to3d). This works thanks to the fact that they still reference the same PrimitiveData object.
Be aware that some parts of lanelet2 cache data about others, e.g. Lanelet and LaneletMap. Modification is not propagated upwards in the lanelet hierarchy. E.g. If you modify the coordinates of a Point, the centerline of a lanelet relying on this point will not be updated. You have to reset these caches by yourself.
If you intend to never modify parts of a LaneletMap, better work with Immutable lanelet primitives. All primitives can be converted to a const version. See also lanelet::traits::toConst.
No thread safety is guaranteed when primitives are modified. You have to ensure thread safety yourself. Concurrent reads are always thread safe.