Carma-platform v4.2.0
CARMA Platform is built on robot operating system (ROS) and utilizes open source software (OSS) that enables Cooperative Driving Automation (CDA) features to allow Automated Driving Systems to interact and cooperate with infrastructure and other vehicles through communication.
localization_manager::LocalizationTransitionTable Class Reference

Class defining the state transition table behavior for the LocalizationManager. More...

#include <LocalizationTransitionTable.hpp>

Collaboration diagram for localization_manager::LocalizationTransitionTable:
Collaboration graph

Public Types

using TransitionCallback = std::function< void(LocalizationState prev_state, LocalizationState new_state, LocalizationSignal signal)>
 

Public Member Functions

 LocalizationTransitionTable (LocalizerMode mode)
 Constructor. More...
 
LocalizationState getState () const
 Returns the current state. More...
 
void signal (LocalizationSignal signal)
 Trigger signal for the transition table. More...
 
void setTransitionCallback (TransitionCallback cb)
 Callback setting function. The provided callback will be triggered any time the current state changes to a new state. More...
 

Private Member Functions

void signalWhenUNINITIALIZED (LocalizationSignal signal)
 
void signalWhenINITIALIZING (LocalizationSignal signal)
 
void signalWhenOPERATIONAL (LocalizationSignal signal)
 
void signalWhenDEGRADED (LocalizationSignal signal)
 
void signalWhenDEGRADED_NO_LIDAR_FIX (LocalizationSignal signal)
 
void signalWhenAWAIT_MANUAL_INITIALIZATION (LocalizationSignal signal)
 
void logDebugSignal (LocalizationSignal signal) const
 Helper function for logging the provide signal. More...
 
void setAndLogState (LocalizationState new_state, LocalizationSignal source_signal)
 Function to change the current state and log the details of the transition. More...
 

Private Attributes

LocalizationState state_ = LocalizationState::UNINITIALIZED
 Current state. This state should only ever be set using the setAndLogState() function. More...
 
LocalizerMode mode_ = LocalizerMode::AUTO_WITHOUT_TIMEOUT
 
TransitionCallback transition_callback_
 

Detailed Description

Class defining the state transition table behavior for the LocalizationManager.

Definition at line 26 of file LocalizationTransitionTable.hpp.

Member Typedef Documentation

◆ TransitionCallback

Constructor & Destructor Documentation

◆ LocalizationTransitionTable()

localization_manager::LocalizationTransitionTable::LocalizationTransitionTable ( LocalizerMode  mode)

Constructor.

Parameters
modeDefines the operational mode of the state machine which modifies some of the state transitions

Definition at line 22 of file LocalizationTransitionTable.cpp.

Member Function Documentation

◆ getState()

LocalizationState localization_manager::LocalizationTransitionTable::getState ( ) const

Returns the current state.

Returns
Current state

Definition at line 24 of file LocalizationTransitionTable.cpp.

25 {
26 return state_;
27 }
LocalizationState state_
Current state. This state should only ever be set using the setAndLogState() function.

References state_.

Referenced by localization_manager::LocalizationManager::getState(), localization_manager::LocalizationManager::gnssPoseCallback(), localization_manager::LocalizationManager::poseAndStatsCallback(), localization_manager::LocalizationManager::posePubTick(), and localization_manager::LocalizationManager::timerCallback().

Here is the caller graph for this function:

◆ logDebugSignal()

void localization_manager::LocalizationTransitionTable::logDebugSignal ( LocalizationSignal  signal) const
private

Helper function for logging the provide signal.

Parameters
signalThe signal to be logged

Definition at line 29 of file LocalizationTransitionTable.cpp.

30 {
31 RCLCPP_DEBUG_STREAM(rclcpp::get_logger("localization_manager"), "LocalizationTransitionTable received unsupported signal of " << signal << "while in state" << state_);
32 }
void signal(LocalizationSignal signal)
Trigger signal for the transition table.

References signal(), and state_.

Referenced by signalWhenAWAIT_MANUAL_INITIALIZATION(), signalWhenDEGRADED(), signalWhenDEGRADED_NO_LIDAR_FIX(), signalWhenINITIALIZING(), signalWhenOPERATIONAL(), and signalWhenUNINITIALIZED().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setAndLogState()

void localization_manager::LocalizationTransitionTable::setAndLogState ( LocalizationState  new_state,
LocalizationSignal  source_signal 
)
private

Function to change the current state and log the details of the transition.

Parameters
new_stateThe state to set.
source_signalThe signal which caused the new_state to be set

Definition at line 34 of file LocalizationTransitionTable.cpp.

35 {
36 if (new_state == state_)
37 {
38 return; // State was unchanged no need to log or trigger callbacks
39 }
40 RCLCPP_INFO_STREAM(rclcpp::get_logger("localization_manager"), "LocalizationTransitionTable changed localization state from " << state_ << " to " << new_state << " because of signal " << source_signal << " while in mode " << mode_);
41
42 LocalizationState prev_state = state_;
43 state_ = new_state;
45 {
46 transition_callback_(prev_state, state_, source_signal);
47 }
48 }
LocalizationState
Enum describing the possible states of the localization system.

References mode_, state_, and transition_callback_.

Referenced by signalWhenAWAIT_MANUAL_INITIALIZATION(), signalWhenDEGRADED(), signalWhenDEGRADED_NO_LIDAR_FIX(), signalWhenINITIALIZING(), signalWhenOPERATIONAL(), and signalWhenUNINITIALIZED().

Here is the caller graph for this function:

◆ setTransitionCallback()

void localization_manager::LocalizationTransitionTable::setTransitionCallback ( TransitionCallback  cb)

Callback setting function. The provided callback will be triggered any time the current state changes to a new state.

Parameters
cbThe callback function which will be provided with the previous state, new current state, and the signal which caused the transition.

Definition at line 247 of file LocalizationTransitionTable.cpp.

248 {
250 }

References transition_callback_.

Referenced by localization_manager::LocalizationManager::LocalizationManager().

Here is the caller graph for this function:

◆ signal()

void localization_manager::LocalizationTransitionTable::signal ( LocalizationSignal  signal)

Trigger signal for the transition table.

Parameters
signalThe signal for the transition table to evaluate

Definition at line 219 of file LocalizationTransitionTable.cpp.

220 {
221 switch (state_)
222 {
225 break;
228 break;
231 break;
234 break;
237 break;
240 break;
241 default:
242 throw std::invalid_argument("Invalid signal passed to LocalizationTransitionTable::signal");
243 break;
244 }
245 }

References localization_manager::AWAIT_MANUAL_INITIALIZATION, localization_manager::DEGRADED, localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::INITIALIZING, localization_manager::OPERATIONAL, signal(), signalWhenAWAIT_MANUAL_INITIALIZATION(), signalWhenDEGRADED(), signalWhenDEGRADED_NO_LIDAR_FIX(), signalWhenINITIALIZING(), signalWhenOPERATIONAL(), signalWhenUNINITIALIZED(), state_, and localization_manager::UNINITIALIZED.

Referenced by localization_manager::LocalizationManager::gnssPoseCallback(), localization_manager::LocalizationManager::initialPoseCallback(), logDebugSignal(), localization_manager::LocalizationManager::poseAndStatsCallback(), localization_manager::LocalizationManager::posePubTick(), signal(), signalWhenAWAIT_MANUAL_INITIALIZATION(), signalWhenDEGRADED(), signalWhenDEGRADED_NO_LIDAR_FIX(), signalWhenINITIALIZING(), signalWhenOPERATIONAL(), signalWhenUNINITIALIZED(), localization_manager::LocalizationManager::systemAlertCallback(), and localization_manager::LocalizationManager::timerCallback().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenAWAIT_MANUAL_INITIALIZATION()

void localization_manager::LocalizationTransitionTable::signalWhenAWAIT_MANUAL_INITIALIZATION ( LocalizationSignal  signal)
private

Definition at line 199 of file LocalizationTransitionTable.cpp.

200 {
201 switch (signal)
202 {
204 if (mode_ == LocalizerMode::GNSS || mode_ == LocalizerMode::GNSS_WITH_FIXED_OFFSET)
205 {
207 }
208 else
209 {
211 }
212 break;
213 default:
215 break;
216 }
217 }
void setAndLogState(LocalizationState new_state, LocalizationSignal source_signal)
Function to change the current state and log the details of the transition.
void logDebugSignal(LocalizationSignal signal) const
Helper function for logging the provide signal.

References localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::GNSS_WITH_FIXED_OFFSET, localization_manager::INITIAL_POSE, localization_manager::INITIALIZING, logDebugSignal(), mode_, setAndLogState(), and signal().

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenDEGRADED()

void localization_manager::LocalizationTransitionTable::signalWhenDEGRADED ( LocalizationSignal  signal)
private

Definition at line 133 of file LocalizationTransitionTable.cpp.

134 {
135 switch (signal)
136 {
139 break;
142 break;
145 {
147 }
148 else
149 {
151 }
152 break;
155 {
157 }
158 else
159 {
161 }
162 break;
163 default:
165 break;
166 }
167 }

References localization_manager::AUTO_WITH_TIMEOUT, localization_manager::AUTO_WITHOUT_TIMEOUT, localization_manager::AWAIT_MANUAL_INITIALIZATION, localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::GOOD_NDT_FREQ_AND_FITNESS_SCORE, localization_manager::INITIAL_POSE, localization_manager::INITIALIZING, localization_manager::LIDAR_SENSOR_FAILURE, logDebugSignal(), mode_, localization_manager::OPERATIONAL, setAndLogState(), signal(), and localization_manager::UNUSABLE_NDT_FREQ_OR_FITNESS_SCORE.

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenDEGRADED_NO_LIDAR_FIX()

void localization_manager::LocalizationTransitionTable::signalWhenDEGRADED_NO_LIDAR_FIX ( LocalizationSignal  signal)
private

Definition at line 169 of file LocalizationTransitionTable.cpp.

170 {
171 switch (signal)
172 {
174 if (mode_ != LocalizerMode::GNSS && mode_ != LocalizerMode::GNSS_WITH_FIXED_OFFSET)
175 {
177 }
178 break;
180 if (mode_ != LocalizerMode::GNSS && mode_ != LocalizerMode::GNSS_WITH_FIXED_OFFSET)
181 {
183 }
184 break;
187 {
189 }
190 break;
192 throw std::runtime_error("GNSS_DATA_TIMEOUT occurred while in DEGRADED_NO_LIDAR_FIX state. Localization cannot recover");
193 default:
195 break;
196 }
197 }

References localization_manager::AUTO_WITHOUT_TIMEOUT, localization_manager::AWAIT_MANUAL_INITIALIZATION, localization_manager::GNSS_DATA_TIMEOUT, localization_manager::GNSS_WITH_FIXED_OFFSET, localization_manager::GNSS_WITH_NDT_INIT, localization_manager::GOOD_NDT_FREQ_AND_FITNESS_SCORE, localization_manager::INITIAL_POSE, localization_manager::INITIALIZING, logDebugSignal(), mode_, localization_manager::OPERATIONAL, setAndLogState(), signal(), and localization_manager::TIMEOUT.

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenINITIALIZING()

void localization_manager::LocalizationTransitionTable::signalWhenINITIALIZING ( LocalizationSignal  signal)
private

Definition at line 70 of file LocalizationTransitionTable.cpp.

References localization_manager::AWAIT_MANUAL_INITIALIZATION, localization_manager::DEGRADED, localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::GOOD_NDT_FREQ_AND_FITNESS_SCORE, localization_manager::LIDAR_SENSOR_FAILURE, logDebugSignal(), mode_, localization_manager::NDT, localization_manager::OPERATIONAL, localization_manager::POOR_NDT_FREQ_OR_FITNESS_SCORE, setAndLogState(), signal(), and localization_manager::TIMEOUT.

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenOPERATIONAL()

void localization_manager::LocalizationTransitionTable::signalWhenOPERATIONAL ( LocalizationSignal  signal)
private

Definition at line 100 of file LocalizationTransitionTable.cpp.

References localization_manager::AUTO_WITH_TIMEOUT, localization_manager::AUTO_WITHOUT_TIMEOUT, localization_manager::AWAIT_MANUAL_INITIALIZATION, localization_manager::DEGRADED, localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::GNSS_WITH_NDT_INIT, localization_manager::INITIAL_POSE, localization_manager::INITIALIZING, localization_manager::LIDAR_INITIALIZED_SWITCH_TO_GPS, localization_manager::LIDAR_SENSOR_FAILURE, logDebugSignal(), mode_, localization_manager::POOR_NDT_FREQ_OR_FITNESS_SCORE, setAndLogState(), signal(), and localization_manager::UNUSABLE_NDT_FREQ_OR_FITNESS_SCORE.

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signalWhenUNINITIALIZED()

void localization_manager::LocalizationTransitionTable::signalWhenUNINITIALIZED ( LocalizationSignal  signal)
private

Definition at line 50 of file LocalizationTransitionTable.cpp.

51 {
52 switch (signal)
53 {
55 if (mode_ == LocalizerMode::GNSS || mode_ == LocalizerMode::GNSS_WITH_FIXED_OFFSET)
56 {
58 }
59 else
60 {
62 }
63 break;
64 default:
66 break;
67 }
68 }

References localization_manager::DEGRADED_NO_LIDAR_FIX, localization_manager::GNSS_WITH_FIXED_OFFSET, localization_manager::INITIAL_POSE, localization_manager::INITIALIZING, logDebugSignal(), mode_, setAndLogState(), and signal().

Referenced by signal().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ mode_

LocalizerMode localization_manager::LocalizationTransitionTable::mode_ = LocalizerMode::AUTO_WITHOUT_TIMEOUT
private

◆ state_

LocalizationState localization_manager::LocalizationTransitionTable::state_ = LocalizationState::UNINITIALIZED
private

Current state. This state should only ever be set using the setAndLogState() function.

Definition at line 63 of file LocalizationTransitionTable.hpp.

Referenced by getState(), logDebugSignal(), setAndLogState(), and signal().

◆ transition_callback_

TransitionCallback localization_manager::LocalizationTransitionTable::transition_callback_
private

Definition at line 67 of file LocalizationTransitionTable.hpp.

Referenced by setAndLogState(), and setTransitionCallback().


The documentation for this class was generated from the following files: