Autonomous Racing  1
f1tenth Project Group of Technical University Dortmund, Germany
car_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 <algorithm>
7 
8 #include <drive_msgs/drive_param.h>
9 #include <std_msgs/Bool.h>
10 #include <std_msgs/Float64.h>
11 #include <std_msgs/Int32.h>
12 
13 constexpr const char* TOPIC_FOCBOX_SPEED = "/commands/motor/speed";
14 constexpr const char* TOPIC_FOCBOX_ANGLE = "/commands/servo/position";
15 constexpr const char* TOPIC_FOCBOX_BRAKE = "commands/motor/brake";
16 constexpr const char* TOPIC_DRIVE_PARAM = "/commands/drive_param";
17 constexpr const char* TOPIC_DRIVE_MODE = "/commands/drive_mode";
18 constexpr const char* TOPIC_EMERGENCY_STOP = "/commands/emergency_stop";
19 
21 {
22  public:
23  CarController();
24 
25  private:
26  ros::NodeHandle m_node_handle;
27 
28  ros::Subscriber m_drive_parameters_subscriber;
29  ros::Subscriber m_drive_mode_subscriber;
30  ros::Subscriber m_emergency_stop_subscriber;
31 
32  ros::Publisher m_speed_publisher;
33  ros::Publisher m_angle_publisher;
34  ros::Publisher m_brake_publisher;
35 
36  bool m_drive_param_lock;
37  bool m_emergency_stop_lock;
38  DriveMode m_current_drive_mode;
39 
43  void driveParametersCallback(const drive_msgs::drive_param::ConstPtr& parameters);
44 
48  void driveModeCallback(const std_msgs::Int32::ConstPtr& drive_mode_message);
49 
53  void emergencyStopCallback(const std_msgs::Bool::ConstPtr& drive_mode_message);
54 
58  void publishDriveParameters(double raw_speed, double raw_angle);
59 
63  void publishSpeed(double speed);
64 
68  void publishAngle(double angle);
69 
73  void stop();
74 };
constexpr const char * TOPIC_EMERGENCY_STOP
constexpr const char * TOPIC_DRIVE_MODE
constexpr const char * TOPIC_FOCBOX_SPEED
DriveMode
Definition: drive_mode.h:3
constexpr const char * TOPIC_FOCBOX_BRAKE
constexpr const char * TOPIC_DRIVE_PARAM
constexpr const char * TOPIC_FOCBOX_ANGLE