Class LaneStructure
java.lang.Object
org.opentrafficsim.road.gtu.lane.perception.structure.LaneStructure
The lane structure provides a way to see the world for a lane based model.
 
 Copyright (c) 2024-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. 
 BSD-style license. See OpenTrafficSim License.
 
- Author:
 - Wouter Schakel
 
- 
Constructor Summary
ConstructorsConstructorDescriptionLaneStructure(LaneBasedGtu gtu, org.djunits.value.vdouble.scalar.Length upstream, org.djunits.value.vdouble.scalar.Length downstream) Constructor. - 
Method Summary
Modifier and TypeMethodDescriptionbooleanexists(RelativeLane lane) Returns whether the lane exists within the structure.Returns the set of records in the cross-section on the given lane.getDownstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far.<T extends LaneBasedObject>
Iterable<NavigatingIterable.Entry<T>>getDownstreamObjects(RelativeLane relativeLane, Class<T> clazz, RelativePosition.Type position, boolean onRoute) Returns an iterator over objects perceived on a relative lane, ordered close to far.getFirstDownstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far.getFirstUpstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far.Returns all the lanes that are in the root cross-section, i.e. to our direct left and right.getRootRecord(RelativeLane lane) Returns the root record on the given lane.getUpstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far.<T extends LaneBasedObject>
Iterable<NavigatingIterable.Entry<T>>getUpstreamObjects(RelativeLane relativeLane, Class<T> clazz, RelativePosition.Type position) Returns an iterator over objects perceived on a relative lane, ordered close to far. 
- 
Constructor Details
- 
LaneStructure
public LaneStructure(LaneBasedGtu gtu, org.djunits.value.vdouble.scalar.Length upstream, org.djunits.value.vdouble.scalar.Length downstream) Constructor.- Parameters:
 gtu- the GTU.upstream- guaranteed distance within which objects are found upstream of the GTU, or upstream of downstream merge.downstream- guaranteed distance within which objects are found downstream of the GTU.
 
 - 
 - 
Method Details
- 
getDownstreamObjects
public <T extends LaneBasedObject> Iterable<NavigatingIterable.Entry<T>> getDownstreamObjects(RelativeLane relativeLane, Class<T> clazz, RelativePosition.Type position, boolean onRoute) Returns an iterator over objects perceived on a relative lane, ordered close to far. This can be objects on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder. Objects that are partially downstream are also included.- Type Parameters:
 T- type ofLaneBasedObject.- Parameters:
 relativeLane- lane.clazz- class of lane-based object type.position- RelativePosition.Type; position relative to which objects are found and distances are given.onRoute- whether the objects have to be on-route.- Returns:
 - iterator over objects.
 
 - 
getUpstreamObjects
public <T extends LaneBasedObject> Iterable<NavigatingIterable.Entry<T>> getUpstreamObjects(RelativeLane relativeLane, Class<T> clazz, RelativePosition.Type position) Returns an iterator over objects perceived on a relative lane, ordered close to far. This can be objects on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder. Objects that are partially upstream are also included.- Type Parameters:
 T- type ofLaneBasedObject.- Parameters:
 relativeLane- lane.clazz- class of lane-based object type.position- RelativePosition.Type; position relative to which objects are found and distances are given.- Returns:
 - iterator over objects.
 
 - 
getDownstreamGtus
public Iterable<NavigatingIterable.Entry<LaneBasedGtu>> getDownstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far. This can be GTUs on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder. When from a lane on the route, a downstream lane is not on the route, GTUs on the downstream lane are not included. A split conflict should deal with possible GTUs there.- Parameters:
 relativeLane- lane.egoPosition- position of ego GTU relative to which objects are found.otherPosition- position of other GTU that must be downstream of egoPosition.egoDistancePosition- position of ego GTU from which the distance is determined.otherDistancePosition- position of other GTU to which the distance is determined.- Returns:
 - iterator over GTUs.
 
 - 
getUpstreamGtus
public Iterable<NavigatingIterable.Entry<LaneBasedGtu>> getUpstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far. This can be GTUs on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder.- Parameters:
 relativeLane- lane.egoPosition- position of ego GTU relative to which objects are found.otherPosition- position of other GTU that must be upstream of egoPosition.egoDistancePosition- position of ego GTU from which the distance is determined.otherDistancePosition- position of other GTU to which the distance is determined.- Returns:
 - iterator over GTUs.
 
 - 
getFirstDownstreamGtus
public Iterable<NavigatingIterable.Entry<LaneBasedGtu>> getFirstDownstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far. This can be GTUs on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder. This function differs fromgetDownstreamGtus()in that it will halt further searching on on branch it finds a GTU on.- Parameters:
 relativeLane- lane.egoPosition- position of ego GTU relative to which objects are found.otherPosition- position of other GTU that must be downstream of egoPosition.egoDistancePosition- position of ego GTU from which the distance is determined.otherDistancePosition- position of other GTU to which the distance is determined.- Returns:
 - iterator over GTUs.
 
 - 
getFirstUpstreamGtus
public Iterable<NavigatingIterable.Entry<LaneBasedGtu>> getFirstUpstreamGtus(RelativeLane relativeLane, RelativePosition.Type egoPosition, RelativePosition.Type otherPosition, RelativePosition.Type egoDistancePosition, RelativePosition.Type otherDistancePosition) Returns an iterator over GTUs perceived on a relative lane, ordered close to far. This can be GTUs on different roads, e.g. from the main line on the right-most lane, the right-hand relative lane can give objects upstream of two on-ramps that are very close by, or even the shoulder. This function differs fromgetDownstreamGtus()in that it will halt further searching on on branch it finds a GTU on.- Parameters:
 relativeLane- lane.egoPosition- position of ego GTU relative to which objects are found.otherPosition- position of other GTU that must be upstream of egoPosition.egoDistancePosition- position of ego GTU from which the distance is determined.otherDistancePosition- position of other GTU to which the distance is determined.- Returns:
 - iterator over GTUs.
 
 - 
getRootCrossSection
Returns all the lanes that are in the root cross-section, i.e. to our direct left and right.- Returns:
 - set of lanes in the root cross-section.
 
 - 
exists
Returns whether the lane exists within the structure.- Parameters:
 lane- lane.- Returns:
 - whether the lane exists within the structure.
 
 - 
getRootRecord
Returns the root record on the given lane.- Parameters:
 lane- lane.- Returns:
 - root record on the lane.
 
 - 
getCrossSectionRecords
Returns the set of records in the cross-section on the given lane.- Parameters:
 lane- lane.- Returns:
 - set of records in the cross-section on the given lane.
 
 
 -