controller.h
Go to the documentation of this file.
1 
24 #include <ros/ros.h>
25 #include <control_toolbox/pid.h>
26 #include <tf/tf.h>
27 #include "string.h"
28 #include <geometry_msgs/Twist.h>
29 #include <nav_msgs/Odometry.h>
30 #include <geometry_msgs/Vector3.h>
31 #include <geometry_msgs/Wrench.h>
32 #include <std_msgs/Float32.h>
33 #include <std_srvs/SetBool.h>
36 #include <heron_msgs/Helm.h>
37 #include <heron_msgs/Course.h>
38 
39 
40 
41 class Controller {
42  private:
45  geometry_msgs::Wrench force_output_;
46 
47  //GPS Velocity Feedback timeout
50 
51  //IMU Feedback timeout
54 
55  //Vars to hold time since last cmd
60 
65 
66  //Yaw Rate Controller Details
70  double yr_cmd_,yr_meas_;
71 
72  //Yaw Control Details
76  double y_cmd_,y_meas_;
77 
78  //Speed Control details
80 
81  int control_mode; //Helm, Course, Twist, or Raw Wrench
82 
85 
86  public:
89  delete force_compensator_;
90  }
91 
92  double fvel_compensator();
93  double yr_compensator();
94  double y_compensator();
95 
96  void fwd_vel_mapping();
99  void update_yaw_control();
100 
101  void wrench_callback(const geometry_msgs::Wrench msg);
102  void course_callback(const heron_msgs::Course msg);
103  void helm_callback(const heron_msgs::Helm msg);
104  void twist_callback(const geometry_msgs::Twist msg);
105 
106  void odom_callback(const nav_msgs::Odometry msg);
107 
108  void control_update(const ros::TimerEvent& event);
109  void console_update(const ros::TimerEvent& event);
110 
111  bool activate_control_service(std_srvs::SetBool::Request& req, std_srvs::SetBool::Response& resp);
112 };
double y_kp_
Definition: controller.h:75
int control_mode
Definition: controller.h:81
void twist_callback(const geometry_msgs::Twist msg)
Definition: controller.cpp:220
double yr_kd_
Definition: controller.h:69
ForceCompensator * force_compensator_
Definition: controller.h:44
void console_update(const ros::TimerEvent &event)
Definition: controller.cpp:314
control_toolbox::Pid fvel_pid_
Definition: controller.h:61
ros::Publisher yr_dbg_pub_
Definition: controller.h:68
void fwd_vel_mapping()
Definition: controller.cpp:198
void wrench_callback(const geometry_msgs::Wrench msg)
Definition: controller.cpp:237
double imu_data_time_
Definition: controller.h:52
double fvel_kf_
Definition: controller.h:63
double fvel_ki_
Definition: controller.h:63
void update_fwd_vel_control()
Definition: controller.cpp:206
double y_meas_
Definition: controller.h:76
double yr_imax_
Definition: controller.h:69
double y_kf_
Definition: controller.h:75
double fvel_imin_
Definition: controller.h:63
Controller(ros::NodeHandle &n)
Definition: controller.cpp:26
void update_yaw_control()
Definition: controller.cpp:214
bool activate_control_service(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &resp)
Definition: controller.cpp:417
double imu_cov_limit_
Definition: controller.h:52
double max_fwd_vel_
Definition: controller.h:79
double y_kd_
Definition: controller.h:75
double fvel_meas_
Definition: controller.h:64
geometry_msgs::Wrench force_output_
Definition: controller.h:45
control_toolbox::Pid y_pid_
Definition: controller.h:73
double yr_kf_
Definition: controller.h:69
double vel_data_timeout_
Definition: controller.h:48
double y_ki_
Definition: controller.h:75
double yr_ki_
Definition: controller.h:69
double y_compensator()
Definition: controller.cpp:158
ros::Publisher y_dbg_pub_
Definition: controller.h:74
ros::Publisher fvel_dbg_pub_
Definition: controller.h:62
void course_callback(const heron_msgs::Course msg)
Definition: controller.cpp:244
bool is_active_control
Definition: controller.h:84
double y_imax_
Definition: controller.h:75
double wrench_cmd_timeout_
Definition: controller.h:58
double fvel_compensator()
Definition: controller.cpp:128
double twist_cmd_timeout_
Definition: controller.h:59
double y_cmd_
Definition: controller.h:76
double course_cmd_time_
Definition: controller.h:56
double yr_meas_
Definition: controller.h:70
void odom_callback(const nav_msgs::Odometry msg)
Definition: controller.cpp:275
double vel_data_time_
Definition: controller.h:48
double max_fwd_force_
Definition: controller.h:79
double fvel_imax_
Definition: controller.h:63
double helm_cmd_time_
Definition: controller.h:57
double wrench_cmd_time_
Definition: controller.h:58
double yr_imin_
Definition: controller.h:69
double max_bck_force_
Definition: controller.h:79
double twist_cmd_time_
Definition: controller.h:59
control_toolbox::Pid yr_pid_
Definition: controller.h:67
double yr_kp_
Definition: controller.h:69
double fvel_cmd_
Definition: controller.h:64
ros::NodeHandle node_
Definition: controller.h:43
double imu_data_timeout_
Definition: controller.h:52
void update_yaw_rate_control()
Definition: controller.cpp:210
bool vel_timeout_
Definition: controller.h:49
double y_imin_
Definition: controller.h:75
double yr_compensator()
Definition: controller.cpp:143
double fvel_kd_
Definition: controller.h:63
ros::ServiceServer active_control_srv
Definition: controller.h:83
double course_cmd_timeout_
Definition: controller.h:56
void helm_callback(const heron_msgs::Helm msg)
Definition: controller.cpp:257
void control_update(const ros::TimerEvent &event)
Definition: controller.cpp:350
double max_bck_vel_
Definition: controller.h:79
double yr_cmd_
Definition: controller.h:70
bool imu_timeout_
Definition: controller.h:53
double fvel_kp_
Definition: controller.h:63
double helm_cmd_timeout_
Definition: controller.h:57
double vel_cov_limit_
Definition: controller.h:48


heron_controller
Author(s): Prasenjit Mukherjee
autogenerated on Sun Mar 14 2021 02:31:50