Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
DecisionStateMachine.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #ifndef DECISION_STATE_MACHINE_HPP
4 #define DECISION_STATE_MACHINE_HPP
5 
6 #include <rclcpp/rclcpp.hpp>
7 
8 #include <cstdint>
9 #include <utility>
10 #include <atomic>
11 #include <mutex>
12 #include "Decision.hpp"
13 
14 class Decision {
15  private:
16  std::atomic<bool> m_startDriving;
17  std::mutex m_mtx;
18 
20 
21  // SETTINGS
22  float m_velocityReference = 1.5f;
26  public:
27  int m_parkingTries = 0;
28 
29  private:
30  rclcpp::Node* m_nodePtr = nullptr;
31 
32  public:
33  bool m_stopAtStartLine = false;
34 
35  public:
36  Decision(rclcpp::Node* nodePtr);
37  void set_velocity_reference(float velocityReference);
38  void set_velocity_reference_parking(float velocityReference);
39  void set_distance_after_switch_back_lane(float valueM);
41  // void set_default_driving_lane(bool value);
42  void start_driving();
43 
44  void update(std::shared_ptr<PositionTimepoint> positionTimepoint, std::tuple<float, float, float, float> laneBlocked);
45  void update_tof(float right, float rear);
46  void update_stopline(float value);
47  void update_starttargetline(float value);
48  void set_parking_state(ParkingState state);
49 
50  // car state getter
51  bool get_indicator_left() const;
52  bool get_indicator_right() const;
53  bool get_chosen_lane() const;
54  float get_velocity_reference() const;
55  bool get_brakes_enable() const;
57 
58  private:
59  void update_lanes(DrivingState& newState, bool leftLaneBlocked, bool rightLaneBlocked);
60  void set_indicators(DrivingState& newState);
61  void switch_lane_if_possible(DrivingState& newState);
62 };
63 
64 
65 #endif // DECISION_STATE_MACHINE_HPP
Decision::update_lanes
void update_lanes(DrivingState &newState, bool leftLaneBlocked, bool rightLaneBlocked)
Definition: DecisionStateMachine.cpp:270
Decision::get_current_situationstate
SituationState get_current_situationstate()
Definition: DecisionStateMachine.cpp:339
Decision::m_velocityAtParkingZone
float m_velocityAtParkingZone
Definition: DecisionStateMachine.hpp:23
Decision::Decision
Decision(rclcpp::Node *nodePtr)
Definition: DecisionStateMachine.cpp:8
Decision::start_driving
void start_driving()
Definition: DecisionStateMachine.cpp:43
Decision::get_velocity_reference
float get_velocity_reference() const
Definition: DecisionStateMachine.cpp:333
ParkingState
ParkingState
Definition: Decision.hpp:19
Decision::update_stopline
void update_stopline(float value)
Definition: DecisionStateMachine.cpp:234
Decision::set_indicators
void set_indicators(DrivingState &newState)
Definition: DecisionStateMachine.cpp:275
Decision::m_distanceAfterSwitchBackToLaneMeter
float m_distanceAfterSwitchBackToLaneMeter
Definition: DecisionStateMachine.hpp:24
Decision::get_chosen_lane
bool get_chosen_lane() const
Definition: DecisionStateMachine.cpp:330
Decision::m_stopAtStartLine
bool m_stopAtStartLine
Definition: DecisionStateMachine.hpp:33
Decision::update
void update(std::shared_ptr< PositionTimepoint > positionTimepoint, std::tuple< float, float, float, float > laneBlocked)
Definition: DecisionStateMachine.cpp:48
Decision::get_indicator_right
bool get_indicator_right() const
Definition: DecisionStateMachine.cpp:327
Decision.hpp
Decision::m_mtx
std::mutex m_mtx
Definition: DecisionStateMachine.hpp:17
Decision::set_critical_obstacle_distance_for_lane_changing
void set_critical_obstacle_distance_for_lane_changing(int valueCM)
Definition: DecisionStateMachine.cpp:36
Decision
Definition: DecisionStateMachine.hpp:14
Decision::m_startDriving
std::atomic< bool > m_startDriving
Definition: DecisionStateMachine.hpp:16
Decision::get_indicator_left
bool get_indicator_left() const
Definition: DecisionStateMachine.cpp:324
Decision::switch_lane_if_possible
void switch_lane_if_possible(DrivingState &newState)
Definition: DecisionStateMachine.cpp:299
DrivingState
Definition: Decision.hpp:27
Decision::set_velocity_reference
void set_velocity_reference(float velocityReference)
Definition: DecisionStateMachine.cpp:24
Decision::m_velocityReference
float m_velocityReference
Definition: DecisionStateMachine.hpp:22
Decision::m_state
DrivingState m_state
Definition: DecisionStateMachine.hpp:19
Decision::set_velocity_reference_parking
void set_velocity_reference_parking(float velocityReference)
Definition: DecisionStateMachine.cpp:29
SituationState
SituationState
Definition: Decision.hpp:10
Decision::m_parkingTries
int m_parkingTries
Definition: DecisionStateMachine.hpp:27
Decision::update_tof
void update_tof(float right, float rear)
Definition: DecisionStateMachine.cpp:264
Decision::get_brakes_enable
bool get_brakes_enable() const
Definition: DecisionStateMachine.cpp:336
Decision::m_criticalObstacleDistanceForLaneChangingCM
int m_criticalObstacleDistanceForLaneChangingCM
Definition: DecisionStateMachine.hpp:25
Decision::update_starttargetline
void update_starttargetline(float value)
Definition: DecisionStateMachine.cpp:239
Decision::m_nodePtr
rclcpp::Node * m_nodePtr
Definition: DecisionStateMachine.hpp:30
Decision::set_distance_after_switch_back_lane
void set_distance_after_switch_back_lane(float valueM)
Definition: DecisionStateMachine.cpp:33
Decision::set_parking_state
void set_parking_state(ParkingState state)
Definition: DecisionStateMachine.cpp:244