Clone per testare Mbed studio

Dependencies:   PwmIn IONMcMotor MPU6050 Eigen ROVER

Fork of Hyfliers_Completo_testato by Marco De Silva

Committer:
anfontanelli
Date:
Wed Nov 06 10:57:51 2019 +0000
Revision:
3:fc26045926d9
Child:
4:3f22193053d0

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
anfontanelli 3:fc26045926d9 1 #ifndef ROVER_H
anfontanelli 3:fc26045926d9 2 #define ROVER_H
anfontanelli 3:fc26045926d9 3 #include "mbed.h"
anfontanelli 3:fc26045926d9 4 #include "IONMcMotors.h"
anfontanelli 3:fc26045926d9 5 #include "Servo.h"
anfontanelli 3:fc26045926d9 6 #include "Core.h"
anfontanelli 3:fc26045926d9 7 #include "MPU6050.h"
anfontanelli 3:fc26045926d9 8 #include "platform/PlatformMutex.h"
anfontanelli 3:fc26045926d9 9
anfontanelli 3:fc26045926d9 10 #include "TOFs.h"
anfontanelli 3:fc26045926d9 11
anfontanelli 3:fc26045926d9 12 #include "Eth_tcp.h"
anfontanelli 3:fc26045926d9 13
anfontanelli 3:fc26045926d9 14
anfontanelli 3:fc26045926d9 15 class Rover
anfontanelli 3:fc26045926d9 16 {
anfontanelli 3:fc26045926d9 17 public:
anfontanelli 3:fc26045926d9 18 Rover();
anfontanelli 3:fc26045926d9 19
anfontanelli 3:fc26045926d9 20 void setWheelsVelocity(float forward_speed, float stabilization_speed, float asset_correction_speed, float pipe_radius, float maxWheelAcceleration);
anfontanelli 3:fc26045926d9 21 void getRoverVelocity(float &forward_speed, float &stabilization_speed, float &asset_correction_speed, float pipe_radius);
anfontanelli 3:fc26045926d9 22 void getMotorsTorque(float &torM1, float &torM2, float &torM3);
anfontanelli 3:fc26045926d9 23 void getMotorsSpeed(float &speedM1, float &speedM2, float &speedM3);
anfontanelli 3:fc26045926d9 24
anfontanelli 3:fc26045926d9 25 void getRoverWheelsVelocity(float &speed_wheel_dx, float &speed_wheel_sx, float &speed_wheels_retro);
anfontanelli 3:fc26045926d9 26
anfontanelli 3:fc26045926d9 27
anfontanelli 3:fc26045926d9 28 void setCentralJointsAngle(float act1, float act2);
anfontanelli 3:fc26045926d9 29 void calcImuAngles(float& pitch, float& roll, float dtImu);
anfontanelli 3:fc26045926d9 30
anfontanelli 3:fc26045926d9 31 int get_forward_vel();
anfontanelli 3:fc26045926d9 32 int get_pitch();
anfontanelli 3:fc26045926d9 33 int get_jointFront();
anfontanelli 3:fc26045926d9 34 int get_jointRetro();
anfontanelli 3:fc26045926d9 35
anfontanelli 3:fc26045926d9 36 void ethComunicationUpdate(float _time, float _pitch, float _vels_a, float _vels_m, float _velf_a, float _velf_m) ;
anfontanelli 3:fc26045926d9 37
anfontanelli 3:fc26045926d9 38 int getEthState(void);
anfontanelli 3:fc26045926d9 39
anfontanelli 3:fc26045926d9 40
anfontanelli 3:fc26045926d9 41 void startEthComunication();
anfontanelli 3:fc26045926d9 42
anfontanelli 3:fc26045926d9 43 void initializeImu();
anfontanelli 3:fc26045926d9 44
anfontanelli 3:fc26045926d9 45 void initializeTofs();
anfontanelli 3:fc26045926d9 46 void acquireTofs(float &frontDistance, float &retroDistance);
anfontanelli 3:fc26045926d9 47
anfontanelli 3:fc26045926d9 48 void computeCentralJointsFromTofs();
anfontanelli 3:fc26045926d9 49
anfontanelli 3:fc26045926d9 50
anfontanelli 3:fc26045926d9 51
anfontanelli 3:fc26045926d9 52 private:
anfontanelli 3:fc26045926d9 53
anfontanelli 3:fc26045926d9 54 IONMcMotors *ionMcMeccanum;
anfontanelli 3:fc26045926d9 55 IONMcMotors *ionMcOmni;
anfontanelli 3:fc26045926d9 56
anfontanelli 3:fc26045926d9 57 Servo *meccanumActuonix;
anfontanelli 3:fc26045926d9 58 Servo *omniActuonix;
anfontanelli 3:fc26045926d9 59
anfontanelli 3:fc26045926d9 60 MPU6050 *mpu;
anfontanelli 3:fc26045926d9 61
anfontanelli 3:fc26045926d9 62 Eth_tcp *eth_tcp;
anfontanelli 3:fc26045926d9 63
anfontanelli 3:fc26045926d9 64 Thread EthThread;
anfontanelli 3:fc26045926d9 65
anfontanelli 3:fc26045926d9 66 distanceSensors *distance_sensors;
anfontanelli 3:fc26045926d9 67
anfontanelli 3:fc26045926d9 68 int ionMcBoudRate;
anfontanelli 3:fc26045926d9 69
anfontanelli 3:fc26045926d9 70 int meccanumMotorGearBoxRatio;
anfontanelli 3:fc26045926d9 71 int omniMotorGearBoxRatio;
anfontanelli 3:fc26045926d9 72
anfontanelli 3:fc26045926d9 73 int meccanumBoardAddress;
anfontanelli 3:fc26045926d9 74 int omniBoardAddress;
anfontanelli 3:fc26045926d9 75
anfontanelli 3:fc26045926d9 76 float meccanumTransmissionRatio;
anfontanelli 3:fc26045926d9 77 float omniTransmissionRatio;
anfontanelli 3:fc26045926d9 78
anfontanelli 3:fc26045926d9 79 int meccanumEncoderPulse;
anfontanelli 3:fc26045926d9 80 int omniEncoderPulse;
anfontanelli 3:fc26045926d9 81
anfontanelli 3:fc26045926d9 82 float meccanumKt;
anfontanelli 3:fc26045926d9 83 float omniKt;
anfontanelli 3:fc26045926d9 84
anfontanelli 3:fc26045926d9 85 float r_meccanumWheel;
anfontanelli 3:fc26045926d9 86 float r_omniWheel;
anfontanelli 3:fc26045926d9 87
anfontanelli 3:fc26045926d9 88 float wheelsCntactPointDistanceFromPipeCenter;
anfontanelli 3:fc26045926d9 89 float omniMeccanumCentralDistance;
anfontanelli 3:fc26045926d9 90
anfontanelli 3:fc26045926d9 91 //Imu variables
anfontanelli 3:fc26045926d9 92 int16_t ax, ay, az;
anfontanelli 3:fc26045926d9 93 int16_t gx, gy, gz;
anfontanelli 3:fc26045926d9 94
anfontanelli 3:fc26045926d9 95 float a_x,a_y,a_z;
anfontanelli 3:fc26045926d9 96 float g_x, g_y, g_z;
anfontanelli 3:fc26045926d9 97
anfontanelli 3:fc26045926d9 98 int16_t FS_a;
anfontanelli 3:fc26045926d9 99 float FS_g;
anfontanelli 3:fc26045926d9 100
anfontanelli 3:fc26045926d9 101 PlatformMutex eth_mutex;
anfontanelli 3:fc26045926d9 102
anfontanelli 3:fc26045926d9 103
anfontanelli 3:fc26045926d9 104 float accBias[3];
anfontanelli 3:fc26045926d9 105 float gyroBias[3];
anfontanelli 3:fc26045926d9 106
anfontanelli 3:fc26045926d9 107
anfontanelli 3:fc26045926d9 108
anfontanelli 3:fc26045926d9 109 float pitchAcc;
anfontanelli 3:fc26045926d9 110 float rollAcc;
anfontanelli 3:fc26045926d9 111 float pitchAcc_p;
anfontanelli 3:fc26045926d9 112 float rollAcc_p;
anfontanelli 3:fc26045926d9 113 float pitch_integrated;
anfontanelli 3:fc26045926d9 114 float roll_integrated;
anfontanelli 3:fc26045926d9 115
anfontanelli 3:fc26045926d9 116
anfontanelli 3:fc26045926d9 117 int forward_vel;
anfontanelli 3:fc26045926d9 118 int pitch_d;
anfontanelli 3:fc26045926d9 119
anfontanelli 3:fc26045926d9 120 int jointFront;
anfontanelli 3:fc26045926d9 121 int jointRetro;
anfontanelli 3:fc26045926d9 122 int enableStab;
anfontanelli 3:fc26045926d9 123 int enableCurv;
anfontanelli 3:fc26045926d9 124
anfontanelli 3:fc26045926d9 125 float time;
anfontanelli 3:fc26045926d9 126 float pitch;
anfontanelli 3:fc26045926d9 127 float vels_a;
anfontanelli 3:fc26045926d9 128 float vels_m;
anfontanelli 3:fc26045926d9 129
anfontanelli 3:fc26045926d9 130 float pipeCurve_I;
anfontanelli 3:fc26045926d9 131 float pipeCurve_E;
anfontanelli 3:fc26045926d9 132 float pipeCurve_M;
anfontanelli 3:fc26045926d9 133 int pipeDir;
anfontanelli 3:fc26045926d9 134
anfontanelli 3:fc26045926d9 135 double eth_time_out; //ms
anfontanelli 3:fc26045926d9 136
anfontanelli 3:fc26045926d9 137 int eth_state;
anfontanelli 3:fc26045926d9 138 double eth_time;
anfontanelli 3:fc26045926d9 139 double eth_time_sample_received;
anfontanelli 3:fc26045926d9 140
anfontanelli 3:fc26045926d9 141 Eigen::Matrix3f S;
anfontanelli 3:fc26045926d9 142 Eigen::Matrix3f S_inv;
anfontanelli 3:fc26045926d9 143 //private functions
anfontanelli 3:fc26045926d9 144 float deg2rad(float deg);
anfontanelli 3:fc26045926d9 145 float centralJoint2actuonix(float jointAngle);
anfontanelli 3:fc26045926d9 146 void calibrateImu();
anfontanelli 3:fc26045926d9 147 void updateRoverKin(float pipe_radius, int pipeDir);
anfontanelli 3:fc26045926d9 148
anfontanelli 3:fc26045926d9 149 void setState(int state);
anfontanelli 3:fc26045926d9 150
anfontanelli 3:fc26045926d9 151
anfontanelli 3:fc26045926d9 152 Timer comunicationTimer;
anfontanelli 3:fc26045926d9 153
anfontanelli 3:fc26045926d9 154 char cmd;
anfontanelli 3:fc26045926d9 155 MyBuffer <int> vec_to_send;
anfontanelli 3:fc26045926d9 156 MyBuffer <int> recv_vec;
anfontanelli 3:fc26045926d9 157 double t_p;
anfontanelli 3:fc26045926d9 158 double t;
anfontanelli 3:fc26045926d9 159 int n_of_int;
anfontanelli 3:fc26045926d9 160 bool eth_status;
anfontanelli 3:fc26045926d9 161
anfontanelli 3:fc26045926d9 162 bool sock_open;
anfontanelli 3:fc26045926d9 163
anfontanelli 3:fc26045926d9 164
anfontanelli 3:fc26045926d9 165
anfontanelli 3:fc26045926d9 166 float frontPos;
anfontanelli 3:fc26045926d9 167 float retroPos;
anfontanelli 3:fc26045926d9 168
anfontanelli 3:fc26045926d9 169
anfontanelli 3:fc26045926d9 170 };
anfontanelli 3:fc26045926d9 171
anfontanelli 3:fc26045926d9 172 #endif