A class for computation of the geometric information required to perform lane changes. The class name contains the term "independent", as it computes its own smooth baseline function instead of using the smooth baseline function of the lane following geometry. Downside of the independence is an increase computational effort. Upside is an improved projection in cases where target lane steeply separates after the gate. In contrast to the "normal" lc-geometry, which uses a baseline in the center of the source lane, the independent smooth baseline is situated between source and target lane. There is still a minor dependence to the lane following geometry: To compute the lane change geometry, the borders collected by the lane following geometry have to be provided.
More...
#include <independentlanechangegeometry.h>
A class for computation of the geometric information required to perform lane changes. The class name contains the term "independent", as it computes its own smooth baseline function instead of using the smooth baseline function of the lane following geometry. Downside of the independence is an increase computational effort. Upside is an improved projection in cases where target lane steeply separates after the gate. In contrast to the "normal" lc-geometry, which uses a baseline in the center of the source lane, the independent smooth baseline is situated between source and target lane. There is still a minor dependence to the lane following geometry: To compute the lane change geometry, the borders collected by the lane following geometry have to be provided.
◆ function_type_scalar
◆ IndependentLaneChangeGeometry()
adore::env::BorderBased::IndependentLaneChangeGeometry::IndependentLaneChangeGeometry |
( |
bool |
lc_direction_left, |
|
|
BorderSet * |
borderSet, |
|
|
BorderCostMap * |
borderCostMap |
|
) |
| |
|
inline |
◆ collectNavigationCostBorders()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::collectNavigationCostBorders |
( |
| ) |
|
|
inline |
collects points describing the navigation cost reference borders
- Returns
- true if successful
◆ collectSeparatingBorders()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::collectSeparatingBorders |
( |
| ) |
|
|
inline |
collects points describing the inner, separating border The separating borders are defined as a sequence of Border objects: If the lane change direction is left, it starts with the lane-following-view left Border objects, otherwise with the right Border Objects. At the end of the gate region, it switches to the target lanes right Border objects for a lane change left and to the left Border objects for a lane change right.
- Returns
- true if successful
◆ collectSourceOuterBorders()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::collectSourceOuterBorders |
( |
| ) |
|
|
inline |
collects points describing the source-side outer border
- Returns
- true if successful
◆ collectTargetOuterBorders()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::collectTargetOuterBorders |
( |
| ) |
|
|
inline |
collects points describing the target-side outer border
- Returns
- true if successful
◆ computeGateInterval()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::computeGateInterval |
( |
| ) |
|
|
inline |
compute gate open and close in the domain of the baseline function
- Returns
- true if successful
- Todo:
- This method of computation encounters a problem, when lcbs look further behind than baseline and track circles around. First border of lcb and thus gate open may match to the end of baseline.
◆ computeGateInterval_v2()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::computeGateInterval_v2 |
( |
| ) |
|
|
inline |
compute gate open and close in the domain of the baseline function. this version uses offset functions instead of lcbs.
- Returns
- true if successful
◆ computeNavigationCostFunction()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::computeNavigationCostFunction |
( |
| ) |
|
|
inline |
projects navigation cost of borders in navigationCostBorders_ unto baseline
◆ getLeftOffsetFct()
◆ getMaximumTargetLaneWidth()
double adore::env::BorderBased::IndependentLaneChangeGeometry::getMaximumTargetLaneWidth |
( |
| ) |
|
|
inline |
returns the maximum width of the lane change
◆ getOffsetSourceOuterBordersFct()
function_type_scalar& adore::env::BorderBased::IndependentLaneChangeGeometry::getOffsetSourceOuterBordersFct |
( |
| ) |
|
|
inline |
◆ getOffsetTargetOuterBordersFct()
function_type_scalar& adore::env::BorderBased::IndependentLaneChangeGeometry::getOffsetTargetOuterBordersFct |
( |
| ) |
|
|
inline |
◆ getProgressGateClosed()
double adore::env::BorderBased::IndependentLaneChangeGeometry::getProgressGateClosed |
( |
| ) |
const |
|
inline |
◆ getProgressGateOpen()
double adore::env::BorderBased::IndependentLaneChangeGeometry::getProgressGateOpen |
( |
| ) |
const |
|
inline |
◆ getRightOffsetFct()
◆ isNavigationCostFcnAvailable()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::isNavigationCostFcnAvailable |
( |
| ) |
const |
|
inline |
◆ isValid()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::isValid |
( |
| ) |
const |
|
inline |
◆ sanityTest()
bool adore::env::BorderBased::IndependentLaneChangeGeometry::sanityTest |
( |
| ) |
|
|
inline |
a set of tests making sure that lane change geometry is drivable in real conditions
- Returns
- true if sane
◆ setLookAhead()
void adore::env::BorderBased::IndependentLaneChangeGeometry::setLookAhead |
( |
double |
value | ) |
|
|
inline |
◆ setLookBehind()
void adore::env::BorderBased::IndependentLaneChangeGeometry::setLookBehind |
( |
double |
value | ) |
|
|
inline |
◆ setMaximumNavCostIncrease()
void adore::env::BorderBased::IndependentLaneChangeGeometry::setMaximumNavCostIncrease |
( |
double |
value | ) |
|
|
inline |
◆ setSmoothness()
void adore::env::BorderBased::IndependentLaneChangeGeometry::setSmoothness |
( |
double |
value | ) |
|
|
inline |
◆ update()
template<typename Iterator >
void adore::env::BorderBased::IndependentLaneChangeGeometry::update |
( |
double |
position_on_current, |
|
|
Iterator |
current_lf, |
|
|
Iterator |
first_lf, |
|
|
Iterator |
last_lf |
|
) |
| |
|
inline |
constructs a lane change geometry if a gate is available
- Parameters
-
Iterator | iterator for std::vector<Border*>, std::list<Border*>, etc. |
position_on_current | location of vehicle on current border, used for lookahead and lookbehind measurement |
current_lf | iterator pointing to current border in lane following borders |
first_lf | start of the lane following borders |
last_lf | end of the lane following borders (last valid entry) |
◆ baseline_
Baseline adore::env::BorderBased::IndependentLaneChangeGeometry::baseline_ |
◆ borderCostMap_
BorderCostMap* adore::env::BorderBased::IndependentLaneChangeGeometry::borderCostMap_ |
|
private |
◆ borderSet_
BorderSet* adore::env::BorderBased::IndependentLaneChangeGeometry::borderSet_ |
|
private |
◆ lcb_
◆ maximum_navcost_increase_
double adore::env::BorderBased::IndependentLaneChangeGeometry::maximum_navcost_increase_ |
◆ navigationCost_fcn_available_
bool adore::env::BorderBased::IndependentLaneChangeGeometry::navigationCost_fcn_available_ |
◆ navigationCost_fct_
◆ navigationCostBorders_
BorderSequence adore::env::BorderBased::IndependentLaneChangeGeometry::navigationCostBorders_ |
lcl: source-right, gate-start,target-right
◆ offsetSeparatingBorders_
function_type_scalar adore::env::BorderBased::IndependentLaneChangeGeometry::offsetSeparatingBorders_ |
◆ offsetSourceOuterBorders_
function_type_scalar adore::env::BorderBased::IndependentLaneChangeGeometry::offsetSourceOuterBorders_ |
◆ offsetTargetOuterBorders_
function_type_scalar adore::env::BorderBased::IndependentLaneChangeGeometry::offsetTargetOuterBorders_ |
◆ progressGateClosed_
double adore::env::BorderBased::IndependentLaneChangeGeometry::progressGateClosed_ |
|
private |
◆ progressGateOpen_
double adore::env::BorderBased::IndependentLaneChangeGeometry::progressGateOpen_ |
|
private |
◆ separatingBorders_
BorderSequence adore::env::BorderBased::IndependentLaneChangeGeometry::separatingBorders_ |
lcl: source-left, gate-end, target-right
◆ sourceOuterBorders_
BorderSequence adore::env::BorderBased::IndependentLaneChangeGeometry::sourceOuterBorders_ |
lcl: source-right,gate-end, target-right
◆ speedLimit_fct_
◆ targetOuterBorders_
BorderSequence adore::env::BorderBased::IndependentLaneChangeGeometry::targetOuterBorders_ |
lcl: source-left, gate-start,target-left
◆ valid_
bool adore::env::BorderBased::IndependentLaneChangeGeometry::valid_ |
|
private |
The documentation for this class was generated from the following file: