Autonomous Racing  1
f1tenth Project Group of Technical University Dortmund, Germany
vesc_sim_driver.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <ros/ros.h>
4 
5 #include <drive_msgs/drive_param.h>
6 #include <std_msgs/Float64.h>
7 
8 #include "vesc_sim.h"
9 
10 constexpr const char* COMMAND_POSITION = "/commands/servo/position";
11 constexpr const char* COMMAND_THROTTLE = "/commands/motor/speed";
12 constexpr const char* COMMAND_BRAKE = "/commands/motor/brake";
13 constexpr const char* TOPIC_DRIVE_PARAM = "/commands/drive_param";
14 constexpr const char* CMD_VEL = "cmd_vel";
15 
16 namespace simulation
17 {
18  constexpr const char* WHEEL_LEFT_BACK_VELOCITY = "/racer/left_wheel_back_velocity_controller/command";
19  constexpr const char* WHEEL_LEFT_FRONT_VELOCITY = "/racer/left_wheel_front_velocity_controller/command";
20  constexpr const char* WHEEL_RIGHT_BACK_VELOCITY = "/racer/right_wheel_back_velocity_controller/command";
21  constexpr const char* WHEEL_RIGHT_FRONT_VELOCITY = "/racer/right_wheel_front_velocity_controller/command";
22  constexpr const char* LEFT_STEERING_POSITION = "/racer/left_steering_hinge_position_controller/command";
23  constexpr const char* RIGHT_STEERING_POSITION = "/racer/right_steering_hinge_position_controller/command";
24 };
25 
34 {
35  public:
41 
47  void motorSpeedCallback(const std_msgs::Float64::ConstPtr& throttle_message);
48 
54  void servoPositionCallback(const std_msgs::Float64::ConstPtr& servo_position);
55 
61  void motorBrakeCallback(const std_msgs::Float64::ConstPtr& motor_brake);
62 
63  private:
68  struct AckermannSteeringAngles
69  {
70  double left_wheel_angle;
71  double right_wheel_angle;
72  };
73 
81  AckermannSteeringAngles calculateSteeringAngles(const double& angle);
82 
87  ros::NodeHandle m_node_handle;
88 
93  ros::Subscriber m_servo_position_subscriber;
94 
99  ros::Subscriber m_motor_speed_subscriber;
100 
105  ros::Subscriber m_motor_brake_subscriber;
106 
111  ros::Publisher m_left_rear_wheel_velocity_publisher;
112 
117  ros::Publisher m_right_rear_wheel_velocity_publisher;
122  ros::Publisher m_left_front_wheel_velocity_publisher;
123 
128  ros::Publisher m_right_front_wheel_velocity_publisher;
129 
134  ros::Publisher m_left_steering_position_publisher;
135 
140  ros::Publisher m_right_steering_position_publisher;
141 
142  VESCSimulator m_VESC_simulator;
143 };
constexpr const char * WHEEL_RIGHT_FRONT_VELOCITY
constexpr const char * TOPIC_DRIVE_PARAM
Class to convert Drive Parameter Messages into single messages.
constexpr const char * WHEEL_LEFT_BACK_VELOCITY
constexpr const char * WHEEL_LEFT_FRONT_VELOCITY
constexpr const char * COMMAND_BRAKE
constexpr const char * COMMAND_THROTTLE
constexpr const char * COMMAND_POSITION
constexpr const char * CMD_VEL
constexpr const char * WHEEL_RIGHT_BACK_VELOCITY
constexpr const char * RIGHT_STEERING_POSITION
constexpr const char * LEFT_STEERING_POSITION