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.
route::RouteStateWorker Class Reference

#include <route_state_worker.hpp>

Collaboration diagram for route::RouteStateWorker:
Collaboration graph

Public Types

enum  RouteEvent {
  ROUTE_LOADED = 0 , ROUTE_SELECTED = 1 , ROUTE_STARTED = 2 , ROUTE_COMPLETED = 3 ,
  ROUTE_DEPARTED = 4 , ROUTE_ABORTED = 5 , ROUTE_GEN_FAILED = 6 , ROUTE_INVALIDATION = 7
}
 
enum  RouteState { LOADING = 0 , SELECTION = 1 , ROUTING = 2 , FOLLOWING = 3 }
 

Public Member Functions

 RouteStateWorker ()=default
 
void onRouteEvent (RouteEvent event)
 Process route event based on designed state machine diagram. More...
 
RouteState getRouteState () const
 Get current route state machine state. More...
 
void setLoggerInterface (rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr logger)
 

Private Attributes

RouteState state_ = RouteState::LOADING
 
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr logger_
 

Detailed Description

Definition at line 24 of file route_state_worker.hpp.

Member Enumeration Documentation

◆ RouteEvent

Possible events for the RouteStateWorker to respond to: ROUTE_LOADED - Route worker received all necessary parameters and loaded route file path ROUTE_SELECTED - A route file has been selected by user ROUTE_STARTED - A route is generated by provided route file ROUTE_COMPLETED - Reached the destination of current route ROUTE_DEPARTED - Vehicle has deviated from the route ROUTE_ABORTED - User decides to stop following the current route ROUTE_GEN_FAILED - No route can be generated based on provided route file ROUTE_INVALIDATION - Certain portion of the route is invalidated based on situation.

Enumerator
ROUTE_LOADED 
ROUTE_SELECTED 
ROUTE_STARTED 
ROUTE_COMPLETED 
ROUTE_DEPARTED 
ROUTE_ABORTED 
ROUTE_GEN_FAILED 
ROUTE_INVALIDATION 

Definition at line 39 of file route_state_worker.hpp.

◆ RouteState

Possible states of the RouteStateWorker: LOADING - RouteState worker's initial state, waiting for all necessary parameters to be set SELECTION - RouteState worker is waiting on user to select a route ROUTING - Calling lanelet2 library to generate a route based on selected route file FOLLOWING - Following a route and tracking its downtrack and crosstrack distance

Enumerator
LOADING 
SELECTION 
ROUTING 
FOLLOWING 

Definition at line 57 of file route_state_worker.hpp.

Constructor & Destructor Documentation

◆ RouteStateWorker()

route::RouteStateWorker::RouteStateWorker ( )
default

Member Function Documentation

◆ getRouteState()

RouteStateWorker::RouteState route::RouteStateWorker::getRouteState ( ) const

◆ onRouteEvent()

void route::RouteStateWorker::onRouteEvent ( RouteEvent  event)

Process route event based on designed state machine diagram.

Parameters
eventIncoming route event

Definition at line 25 of file route_state_worker.cpp.

25 {
26
27 auto old_state = state_;
28
29 switch (state_)
30 {
31 case RouteState::LOADING:
32 if(event == RouteEvent::ROUTE_LOADED)
33 {
34 state_ = RouteState::SELECTION;
35 }
36 break;
37 case RouteState::SELECTION:
38 if(event == RouteEvent::ROUTE_SELECTED)
39 {
40 state_ = RouteState::ROUTING;
41 }
42 break;
43 case RouteState::ROUTING:
44 if(event == RouteEvent::ROUTE_STARTED)
45 {
46 state_ = RouteState::FOLLOWING;
47 } else if(event == RouteEvent::ROUTE_GEN_FAILED)
48 {
49 state_ = RouteState::SELECTION;
50 }
51 break;
52 case RouteState::FOLLOWING:
53 if(event == RouteEvent::ROUTE_COMPLETED || event == RouteEvent::ROUTE_DEPARTED || event == RouteEvent::ROUTE_ABORTED)
54 {
55 state_ = RouteState::LOADING;
56 }
57 else if(event == RouteEvent::ROUTE_INVALIDATION)
58 {
59 state_ = RouteState::ROUTING;
60 }
61 break;
62 default:
63 // should not reach here
64 throw std::invalid_argument("Current state is illegal: " + std::to_string(state_));
65 }
66
67 RCLCPP_INFO_STREAM(logger_->get_logger(), "Received Route Event: " << event << " transitioning from: " << old_state << " to: " << state_);
68 }
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr logger_
auto to_string(const UtmZone &zone) -> std::string
Definition: utm_zone.cpp:21

References logger_, state_, and carma_cooperative_perception::to_string().

Referenced by route::RouteGeneratorWorker::abortActiveRouteCb(), route::RouteGeneratorWorker::bumperPoseCb(), route::RouteGeneratorWorker::getAvailableRouteCb(), route::RouteGeneratorWorker::setActiveRouteCb(), route::RouteGeneratorWorker::setRouteFilePath(), and route::RouteGeneratorWorker::spinCallback().

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

◆ setLoggerInterface()

void route::RouteStateWorker::setLoggerInterface ( rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr  logger)

Definition at line 70 of file route_state_worker.cpp.

71 {
72 logger_ = logger;
73 }

References logger_.

Referenced by route::RouteGeneratorWorker::setLoggerInterface().

Here is the caller graph for this function:

Member Data Documentation

◆ logger_

rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr route::RouteStateWorker::logger_
private

Definition at line 85 of file route_state_worker.hpp.

Referenced by onRouteEvent(), and setLoggerInterface().

◆ state_

RouteState route::RouteStateWorker::state_ = RouteState::LOADING
private

Definition at line 82 of file route_state_worker.hpp.

Referenced by getRouteState(), and onRouteEvent().


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