Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ros_lib_kinetic
FreeFlyerHardware.h@0:dd126a1080d3, 2017-02-14 (annotated)
- Committer:
- Knillinux
- Date:
- Tue Feb 14 05:12:54 2017 +0000
- Revision:
- 0:dd126a1080d3
- Child:
- 1:40bdbe1a93b7
test
Who changed what in which revision?
User | Revision | Line number | New 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 |