Clara Keng / Mbed 2 deprecated FreeFlyerROS_clarakhl

Dependencies:   mbed ros_lib_kinetic

Committer:
Knillinux
Date:
Tue Feb 14 05:12:54 2017 +0000
Revision:
0:dd126a1080d3
Child:
1:40bdbe1a93b7
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Knillinux 0:dd126a1080d3 1 #ifndef FREEFLYERHARDWARE_H
Knillinux 0:dd126a1080d3 2 #define FREEFLYERHARDWARE_H
Knillinux 0:dd126a1080d3 3
Knillinux 0:dd126a1080d3 4 #include "mbed.h"
Knillinux 0:dd126a1080d3 5 #include "math.h"
Knillinux 0:dd126a1080d3 6 #include <ros.h>
Knillinux 0:dd126a1080d3 7 #include <std_msgs/Float32.h>
Knillinux 0:dd126a1080d3 8 #include <std_msgs/Float32MultiArray.h>
Knillinux 0:dd126a1080d3 9 #include "PID.h"
Knillinux 0:dd126a1080d3 10 #include "QEI.h"
Knillinux 0:dd126a1080d3 11 #include "defines.h"
Knillinux 0:dd126a1080d3 12 #include "utilities.h"
Knillinux 0:dd126a1080d3 13
Knillinux 0:dd126a1080d3 14 class FreeFlyerHardware
Knillinux 0:dd126a1080d3 15 {
Knillinux 0:dd126a1080d3 16 public:
Knillinux 0:dd126a1080d3 17
Knillinux 0:dd126a1080d3 18 FreeFlyerHardware(ros::NodeHandle &nh, DigitalOut *thruster_pinouts);
Knillinux 0:dd126a1080d3 19
Knillinux 0:dd126a1080d3 20 void updatePID();
Knillinux 0:dd126a1080d3 21 void publishDebug();
Knillinux 0:dd126a1080d3 22 void commandThrusters(int *thruster_on_off_cmd); // switch to char for easy use?
Knillinux 0:dd126a1080d3 23 void stepThrusterPWM();
Knillinux 0:dd126a1080d3 24
Knillinux 0:dd126a1080d3 25 float getVoltageOut();
Knillinux 0:dd126a1080d3 26
Knillinux 0:dd126a1080d3 27 protected:
Knillinux 0:dd126a1080d3 28 int NUM_THRUSTERS;
Knillinux 0:dd126a1080d3 29
Knillinux 0:dd126a1080d3 30 PID *controller_;
Knillinux 0:dd126a1080d3 31
Knillinux 0:dd126a1080d3 32 QEI *wheel_encoder_; // object to interact with encoder outputs
Knillinux 0:dd126a1080d3 33
Knillinux 0:dd126a1080d3 34 int thruster_pwm_stop_[8]; // Number that the PWM count reaches before each thruster turns off
Knillinux 0:dd126a1080d3 35 int thruster_pwm_clock_;
Knillinux 0:dd126a1080d3 36
Knillinux 0:dd126a1080d3 37 float scaled_meas_, current_out_, voltage_out_;
Knillinux 0:dd126a1080d3 38
Knillinux 0:dd126a1080d3 39 DigitalOut *thruster_pinouts_;
Knillinux 0:dd126a1080d3 40
Knillinux 0:dd126a1080d3 41 // ROS
Knillinux 0:dd126a1080d3 42 ros::NodeHandle *root_nh_;
Knillinux 0:dd126a1080d3 43
Knillinux 0:dd126a1080d3 44 ros::Publisher *velocity_sns_pub_;
Knillinux 0:dd126a1080d3 45 ros::Publisher *setpoint_pub_, *estimate_pub_, *error_pub_;
Knillinux 0:dd126a1080d3 46 ros::Publisher *acc_error_pub_, *current_cmd_pub_, *duty_cycle_pub_;
Knillinux 0:dd126a1080d3 47
Knillinux 0:dd126a1080d3 48 std_msgs::Float32 velocity_sns_msg_;
Knillinux 0:dd126a1080d3 49 std_msgs::Float32 setpoint_msg_, estimate_msg_, error_msg_;
Knillinux 0:dd126a1080d3 50 std_msgs::Float32 acc_error_msg_, current_cmd_msg_, duty_cycle_msg_;
Knillinux 0:dd126a1080d3 51
Knillinux 0:dd126a1080d3 52 ros::Subscriber<std_msgs::Float32, FreeFlyerHardware> *wheel_vel_cmd_sub_;
Knillinux 0:dd126a1080d3 53 ros::Subscriber<std_msgs::Float32MultiArray, FreeFlyerHardware> *wheel_pid_gains_cmd_sub_;
Knillinux 0:dd126a1080d3 54 ros::Subscriber<std_msgs::Float32MultiArray, FreeFlyerHardware> *thruster_duty_cmd_sub_;
Knillinux 0:dd126a1080d3 55
Knillinux 0:dd126a1080d3 56 void wheelVelCmdCallback(const std_msgs::Float32& msg);
Knillinux 0:dd126a1080d3 57 void wheelPidGainsCmdCallback(const std_msgs::Float32MultiArray& msg);
Knillinux 0:dd126a1080d3 58 void thrusterDutyCmdCallback(const std_msgs::Float32MultiArray& msg);
Knillinux 0:dd126a1080d3 59
Knillinux 0:dd126a1080d3 60 };
Knillinux 0:dd126a1080d3 61
Knillinux 0:dd126a1080d3 62
Knillinux 0:dd126a1080d3 63 #endif