Autonomous Racing  1
f1tenth Project Group of Technical University Dortmund, Germany
dms_controller.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "drive_mode.h"
4 #include <ros/ros.h>
5 
6 #include <std_msgs/Bool.h>
7 #include <std_msgs/Int32.h>
8 #include <std_msgs/Time.h>
9 
10 constexpr const char* PARAMETER_DMS_CHECK_RATE = "dms_check_rate";
11 constexpr const char* PARAMETER_DMS_EXPIRATION = "dms_expiration";
12 constexpr const char* PARAMETER_EMERGENCYSTOP_EXPIRATION = "emergencystop_expiration";
13 constexpr const char* PARAMETER_MODE_OVERRIDE = "mode_override";
14 
15 constexpr const char* TOPIC_HEARTBEAT_MANUAL = "/input/heartbeat_manual";
16 constexpr const char* TOPIC_HEARTBEAT_AUTONOMOUS = "/input/heartbeat_autonomous";
17 constexpr const char* TOPIC_EMERGENCYSTOP = "/input/emergencystop";
18 constexpr const char* TOPIC_DRIVE_MODE = "/commands/drive_mode";
19 constexpr const char* TOPIC_COMMAND_EMERGENCYSTOP = "/commands/emergency_stop";
20 
22 
24 {
25  public:
26  DMSController();
27 
28  void spin();
29 
30  private:
34  int m_update_frequency;
35 
36  DriveMode m_mode_override;
37 
41  ros::Duration m_expiration_time;
45  ros::Duration m_emergencystop_expiration_time;
46 
47  ros::Time m_last_heartbeat_manual;
48  ros::Time m_last_heartbeat_autonomous;
49  ros::Time m_last_emergencystop;
50 
51  ros::NodeHandle m_node_handle;
52  ros::Subscriber m_heartbeat_manual_subscriber;
53  ros::Subscriber m_heartbeat_autonomous_subscriber;
54  ros::Subscriber m_emergencystop_subscriber;
55  ros::Publisher m_drive_mode_publisher;
56  ros::Publisher m_command_emergencystop_publisher;
57 
58  void configureParameters();
59  void publishDriveMode();
60  void publishCommandEmergencyStop();
61 
62  void heartbeatManualCallback(const std_msgs::Time::ConstPtr& message);
63  void heartbeatAutonomousCallback(const std_msgs::Time::ConstPtr& message);
64  void emergencystopCallback(const std_msgs::Time::ConstPtr& message);
65  DriveMode getDriveMode();
66  bool getEmergencyStop();
67 };
constexpr const char * TOPIC_HEARTBEAT_MANUAL
constexpr const char * PARAMETER_MODE_OVERRIDE
constexpr const char * TOPIC_HEARTBEAT_AUTONOMOUS
constexpr const char * TOPIC_EMERGENCYSTOP
constexpr const char * PARAMETER_EMERGENCYSTOP_EXPIRATION
constexpr const char * PARAMETER_DMS_CHECK_RATE
DriveMode
Definition: drive_mode.h:3
constexpr const char * PARAMETER_DMS_EXPIRATION
constexpr DriveMode NO_OVERRIDE
constexpr const char * TOPIC_COMMAND_EMERGENCYSTOP
constexpr const char * TOPIC_DRIVE_MODE