SCM Developer Guide
Visual Perception
The top-down process in SCM is illustrated in Fig. 68.
InformationAcquisition - own vehicle information
PerceiveEgoData is called by SCM in every time step, regardless of any perception states of the driver’s sensory system. It transfers the following information about the driver’s own vehicle to the submodule Mental Model, more specifically old ref: microscopic_characteristics :
Variable |
Meaning |
---|---|
AbsoluteVelocity |
Absolute velocity of the vehicle in the road coordinate system |
LongitudinalAcceleration |
Longitudinal acceleration of the vehicle in the road coordinate system |
LongitudinalVelocity |
Longitudina velocity of the vehicle in the road coordinate system |
LongitudinalPosition |
Longitudina position of the vehicle in the road coordinate system (current track coordinate) |
LateralVelocity |
Lateral velocity of the vehicle in the road coordinate system |
LateralPosition |
Lateral position of the vehicle in the road coordinate system |
HeadingAngle |
Heading angle of the vehicle to the road coordinate system |
isCrossingLanes |
Boolean indicating, if the driver’s own vehicle is currently attached two more than one lane (e.g. in case of a lane change) |
Collision |
Boolean indicating, if the driver’s own vehicle has collided with another object |
laneId |
ID of the driver’s current (main) lane |
LeftLaneBoundaryDepartureEgo |
Minimum lateral distance of the vehicle to its current lane’s left marking |
RightLaneBoundaryDepartureEgo |
Minimum lateral distance of the vehicle to its current lane’s left marking |
InformationAcquisition - surrounding vehicle information
This information is stored/update in MentalModel for every AreaOfInterest in which an object is observed. With exception to the AreaOfInterest::LEFT_SIDE / RIGHT_SIDE / LEFTLEFT_SIDE and RIGHTRIGHT_SIDE only one object, the one closest to the ego vehicle, is saved to the driver’s mental model. For these mentioned side areas, all vehicles are stored in a vector.
Variable |
Meaning |
---|---|
acceleration |
Absolute acceleration of the object |
accelerationDelta |
Relative longitudinal acceleration of the surrounding object and the driver’s own vehicle in the road coordinate system |
brakeLightsActive |
A Boolean indicating, if the surrounding object has activated brake lights or not |
collision |
A Boolean indicating, if the surrounding object was involved in a collision |
distanceToLaneBoundaryLeft |
Minimum lateral distance of the surrounding object to its current lane’s left marking |
distanceToLaneBoundaryRight |
Minimum lateral distance of the surrounding object to its current lane’s right marking |
exist |
A Boolean indicating, if the surrounding object exists or not |
gap |
Time headway between the surrounding object and the driver’s own vehicle in the road coordinate system |
gapDot |
Time derivative of the time headway between the surrounding object and the driver’s own vehicle in the road coordinate system |
heading |
Heading angle of the surrounding object to the road coordinate system |
height |
Maximum height of the surrounding object |
id |
ID of the surrounding object |
indicatorState |
IndicatorState of the surrounding object |
isCrossingLanes |
A Boolean indicating, if the surrounding object is currently crossing lanes |
isStatic |
A Boolean indicating, if the surrounding object is a static object or a moving agent |
lateralDistanceDelta |
Relative lateral distance of coordinate reference points between the surrounding object and the driver’s own vehicle in the road coordinate system |
lateralPositionInLane |
Lateral position of the surrounding object in the road coordinate system |
lateralVelocity |
Lateral velocity of the surrounding object in the road coordinate system |
lateralVelocityDelta |
Relative lateral velocity between the surrounding object and the driver’s own vehicle in the road coordinate system |
length |
Maximum length of the surrounding object |
longitudinalObstruction |
Obstruction between the object and ego |
longitudinalVelocity |
Longitudinal velocity of the surrounding object in the road coordinate system |
mainLaneId |
Main lane ID of the surrounding object |
relativeLateralDistance |
Relative lateral net distance between the surrounding object and the driver’s own vehicle in the road coordinate system |
relativeLongitudinalDistance |
Relative longitudinal net-distance of the surrounding object to the driver’s own vehicle in the road coordinate system |
tauDot |
Time derivative of the time to collision between the surrounding object and the driver’s own vehicle in the road coordinate system |
ttc |
Time to collision between the surrounding object and the driver’s own vehicle in the road coordinate system |
velocity |
Absolute velocity of the surrounding object in the road coordinate system |
velocityDelta |
Relative longitudinal velocity between the surrounding object and the driver’s own vehicle in the road coordinate system |
width |
Maximum width of the surrounding object |
For AOIs in which no vehicle is observed, the values of the struct are reset to the following:
Variable |
Dummy value for empty AreaOfInterest |
---|---|
acceleration |
0.0 |
accelerationDelta |
0.0 |
brakeLightsActive |
false |
collision |
false |
distanceToLaneBoundaryLeft |
0.5 |
distanceToLaneBoundaryRight |
0.5 |
exist |
false |
gap |
PreviewDistance of the driver divided by the longitudinal velocity of the driver’s own vehicle (the denominator is bound to 1.0 below) |
heading |
0.0 |
height |
0.0 |
id |
-1 |
indicatorState |
IndicatorState_Off |
isCrossingLanes |
false |
isStatic |
false |
lateralDistanceDelta |
PreviewDistance of the driver |
lateralPositionInLane |
0.0 |
lateralVelocity |
0.0 |
lateralVelocityDelta |
0.0 |
length |
0.0 |
longitudinalObstruction |
NoOpponent |
longitudinalVelocity |
0.0 |
mainLaneId |
0 |
relativeLateralDistance |
PreviewDistance of the driver |
relativeLongitudinalDistance |
PreviewDistance of the driver |
tauDot |
0.0 |
ttc |
99.0 |
velocity |
0.0 |
velocityDelta |
0.0 |
width |
0.0 |
The following OpticalData information is corrected by the function AssignAoiSpecificDataForObject, if the specified AreaOfInterest is one of the SIDE areas:
Variable |
Correction for AreaOfInterest LEFT_SIDE or RIGHT_SIDE |
---|---|
DeltaLongitudinalAcceleration |
0.0 |
DeltaLongitudinalVelocity |
0.0 |
RelativeNetDistance |
0.0 |
DeltaLateralVelocity |
0.0 |
Gap |
0.0 |
GapDot |
0.0 |
Ttc |
99.0 s |
TauDot |
0.0 |
InformationAcquisition - information about infrastructure
The information from struct TrafficRuleInformationSCM consist of the information shown below (see InfrastructureInformation in SensorDriver).
Variable |
Meaning |
---|---|
laneLeftLeft
- trafficSigns
- laneMarkingsLeft
- laneMarkingsRight
|
Data about the lane two lanes left of the mainLane (in driving direction)
- All traffic signs on this lane inside the visibility distance
- Lane markings on the left side of the lane
- Lane markings on the right side of the lane
|
laneLeft
- trafficSigns
- laneMarkingsLeft
- laneMarkingsRight
|
Data about the lane to the left of the mainLane (in driving direction)
- All traffic signs on this lane inside the visibility distance
- Lane markings on the left side of the lane
- Lane markings on the right side of the lane
|
laneEgo
- trafficSigns
- laneMarkingsLeft
- laneMarkingsRight
|
Data about the lane where the middle of the front of the agent is (e.g. mainLane)
- All traffic signs on this lane inside the visibility distance
- Lane markings on the left side of the lane
- Lane markings on the right side of the lane
|
laneRight
- trafficSigns
- laneMarkingsLeft
- laneMarkingsRight
|
Data about the lane to the right of the mainLane (in driving direction)
- All traffic signs on this lane inside the visibility distance
- Lane markings on the left side of the lane
- Lane markings on the right side of the lane
|
laneRightRight
- trafficSigns
- laneMarkingsLeft
- laneMarkingsRight
|
Data about the lane two lanes right of the mainLane (in driving direction)
- All traffic signs on this lane inside the visibility distance
- Lane markings on the left side of the lane
- Lane markings on the right side of the lane
|
The information of struct GeometryInformationSCM is composed as follows (see InfrastructureInformation) in SensorDriver
Variable |
Meaning |
---|---|
visibilityDistance |
Current maximum visibility distance as specified by the world |
numberOfLanes |
Number of lane at the current position |
distanceToEndOfNextExit |
Distance from current position to the end of the next (current or coming) exit lane |
distanceToEndOfNextEntry |
Distance from current position to the end of the next (current or coming) entry lane |
laneLeftLeft
- exist
- curvature
- width
- distanceToEndOfLane
- curvatureInPreviewDistance
- curvatureNextPosition
|
Data about the lane two lanes left of the mainLane (in driving direction)
- Wether there is a lane on this position
- Curvature at current s position
- Width at current s position
- Distance from current position to the end of the lane
- Curvature at previewDistance
- Curvature at position the agent will be in the next time step (it constant velocity)
|
laneLeft
- exist
- curvature
- width
- distanceToEndOfLane
- curvatureInPreviewDistance
- curvatureNextPosition
|
Data about the lane to the left of the mainLane (in driving direction)
- Wether there is a lane on this position
- Curvature at current s position
- Width at current s position
- Distance from current position to the end of the lane
- Curvature at previewDistance
- Curvature at position the agent will be in the next time step (it constant velocity)
|
laneEgo
- exist
- curvature
- width
- distanceToEndOfLane
- curvatureInPreviewDistance
- curvatureNextPosition
|
Data about the lane where the middle of the front of the agent is (e.g. mainLane)
- Wether there is a lane on this position
- Curvature at current s position
- Width at current s position
- Distance from current position to the end of the lane
- Curvature at previewDistance
- Curvature at position the agent will be in the next time step (it constant velocity)
|
laneRight
- exist
- curvature
- width
- distanceToEndOfLane
- curvatureInPreviewDistance
- curvatureNextPosition
|
Data about the lane to the right of the mainLane (in driving direction)
- Wether there is a lane on this position
- Curvature at current s position
- Width at current s position
- Distance from current position to the end of the lane
- Curvature at previewDistance
- Curvature at position the agent will be in the next time step (it constant velocity)
|
laneRightRight
- exist
- curvature
- width
- distanceToEndOfLane
- curvatureInPreviewDistance
- curvatureNextPosition
|
Data about the lane two lanes right of the mainLane (in driving direction)
- Wether there is a lane on this position
- Curvature at current s position
- Width at current s position
- Distance from current position to the end of the lane
- Curvature at previewDistance
- Curvature at position the agent will be in the next time step (it constant velocity)
|
Features about lane safety and lane change safety
Features about lane safety
Feature |
Meaning |
---|---|
IsLaneSafe |
A lane is safe to change to |
IsSideLaneSafe |
A lane is safe to change into from a normal situation |
IsCurrentLaneSafe |
The distance to the front and rear vehicle exceedes the minimum time headway |
Features about lane change safety
Feature |
Meaning |
---|---|
IsLaneChangeSafe |
The current lane change is still save to perform |
IsLaneSafeBeingQueued |
A lane is safe to change to within traffic jams |
ScmDependenciesInterface
Provides methods to update dependencies for SCM and grants access to them.
ScmDependencies
DriverParameters
VehicleModelParameters
StochasticsInterface
SpawnVelocity
CycleTime
OwnVehicleInformationSCM
SurroundingObjectsSCM
MesoscopicInformationSCM
TrafficRuleInformationSCM
GeometryInformationSCM
ScmComponents
ScmComponents is a container for components or modules SCM consists of (MentalModel, SituationManager, etc..) and is reponsible to provide necessary dependencies for these. For example, the MentalModel needs all ScmDependencies but the GazeFollower only needs OwnVehicleInformationScm.
MentalModel
The MentalModel presents a mental representation of the environment that the driver builds up through sensory perception. It receives the perceived information from the submodules InformationAcquisition - own vehicle information and Auditory Perception. The contents of the mental model can be queried with the help of different submoduls from the cognitive submodules Detailed descriptions of situation clusters, ActionManager and ActionImplementation. In the case of missing information or insufficient information quality, extra information requests can also be delivered into the mental model,which allow a targeted influencing of visual attention in the submodule Gaze Control.
FeatureExtrator
FeatureExtractor extracts features in the vicinity of the driver. The FeatureExtractor holds static functionality to extract salient features of the situation that the driver in question is surrounded by. Most methods extract these features from the mental model of the driver.