34 #include <std_msgs/Float64.h> 72 std_msgs::Float64::Ptr erpm_msg(
new std_msgs::Float64);
76 bool is_positive_accel =
true;
77 std_msgs::Float64::Ptr current_msg(
new std_msgs::Float64);
78 std_msgs::Float64::Ptr brake_msg(
new std_msgs::Float64);
79 current_msg->data = 0;
81 if (cmd->drive.acceleration < 0)
84 is_positive_accel =
false;
92 std_msgs::Float64::Ptr servo_msg(
new std_msgs::Float64);
105 if (is_positive_accel)
118 if (erpm_msg->data != 0)
122 else if (current_msg->data != 0 || brake_msg->data != 0)
128 template <
typename T>
134 ROS_FATAL(
"AckermannToVesc: Parameter %s is required.", name.c_str());
ackermann_msgs::AckermannDriveStamped::ConstPtr AckermannMsgPtr
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
bool previous_mode_speed_
ros::Publisher servo_pub_
ros::Publisher current_pub_
ros::Subscriber ackermann_sub_
ros::Publisher brake_pub_
void publish(const boost::shared_ptr< M > &message) const
bool getParam(const std::string &key, std::string &s) const
double accel_to_brake_gain_
void ackermannCmdCallback(const ackermann_msgs::AckermannDriveStamped::ConstPtr &cmd)
double speed_to_erpm_offset_
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
AckermannToVesc(ros::NodeHandle nh, ros::NodeHandle private_nh)
double steering_to_servo_offset_
bool getRequiredParam(const ros::NodeHandle &nh, const std::string &name, T *value)
double accel_to_current_gain_
double speed_to_erpm_gain_
double steering_to_servo_gain_