PRISMA Lab / Mbed OS Hyfliers_Completo_testato

Dependencies:   PwmIn IONMcMotor MPU6050 Eigen ROVER

Fork of Hyfliers_Completo_testato by Marco De Silva

Committer:
anfontanelli
Date:
Tue Sep 14 11:18:35 2021 +0000
Revision:
6:584653235830
Parent:
4:3f22193053d0
A

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 6:584653235830 4
anfontanelli 6:584653235830 5 #include "controlDefineVariables.h"
anfontanelli 6:584653235830 6
anfontanelli 3:fc26045926d9 7 #include "IONMcMotors.h"
anfontanelli 6:584653235830 8 #include "MPU6050.h"
anfontanelli 6:584653235830 9 #include "TOFs.h"
anfontanelli 3:fc26045926d9 10 #include "Servo.h"
anfontanelli 3:fc26045926d9 11 #include "Core.h"
anfontanelli 4:3f22193053d0 12 #include <Eigen/Dense.h>
anfontanelli 3:fc26045926d9 13 #include "platform/PlatformMutex.h"
anfontanelli 3:fc26045926d9 14
anfontanelli 4:3f22193053d0 15 typedef Eigen::Matrix<float, 4, 4> Matrix4f;
anfontanelli 6:584653235830 16 typedef Eigen::Matrix<float, 3, 3> Matrix3f;
anfontanelli 3:fc26045926d9 17
anfontanelli 3:fc26045926d9 18 class Rover
anfontanelli 3:fc26045926d9 19 {
anfontanelli 3:fc26045926d9 20 public:
anfontanelli 3:fc26045926d9 21 Rover();
anfontanelli 3:fc26045926d9 22
anfontanelli 6:584653235830 23 void setRoverVelocity(float forward_speed, float stabilization_speed, float asset_correction_speed, float pipe_radius, float maxWheelAcceleration);
anfontanelli 3:fc26045926d9 24 void getRoverVelocity(float &forward_speed, float &stabilization_speed, float &asset_correction_speed, float pipe_radius);
anfontanelli 4:3f22193053d0 25 void getMotorsTorque(float &torM1, float &torM2, float &torM3, float &torM4);
anfontanelli 4:3f22193053d0 26 void getMotorsSpeed(float &speedM1, float &speedM2, float &speedM3, float &speedM4);
anfontanelli 3:fc26045926d9 27
anfontanelli 6:584653235830 28 void setParameters(Eigen::VectorXd roverParameters);
anfontanelli 6:584653235830 29
anfontanelli 4:3f22193053d0 30 void getRoverWheelsVelocity(float &front_dx, float &front_sx, float &retro_dx, float &retro_sx);
anfontanelli 3:fc26045926d9 31
anfontanelli 3:fc26045926d9 32 void setCentralJointsAngle(float act1, float act2);
anfontanelli 6:584653235830 33 void calcImuAngles(float& pitch, float& pitch_vel, float& roll, float dtImu);
anfontanelli 3:fc26045926d9 34
anfontanelli 6:584653235830 35 void computeCentralJointsFromTofs(float &roverLaserFrontDx,float &roverLaserFrontSx,float &roverLaserRetroDx,float &roverLaserRetroSx);
anfontanelli 3:fc26045926d9 36
anfontanelli 6:584653235830 37 float computeStabilizationVel(float pitch_d, float pitch, float pitch_vel, float Kp, float Kd);
anfontanelli 3:fc26045926d9 38
anfontanelli 3:fc26045926d9 39 void initializeImu();
anfontanelli 3:fc26045926d9 40
anfontanelli 3:fc26045926d9 41 void initializeTofs();
anfontanelli 3:fc26045926d9 42
anfontanelli 6:584653235830 43 void acquireTofs(float &roverLaserFrontDx, float &roverLaserFrontSx, float &roverLaserRetroDx, float &roverLaserRetroSx, float &roverFrontDistance, float &roverRetroDistance);
anfontanelli 3:fc26045926d9 44
anfontanelli 6:584653235830 45
anfontanelli 3:fc26045926d9 46
anfontanelli 3:fc26045926d9 47 private:
anfontanelli 3:fc26045926d9 48
anfontanelli 4:3f22193053d0 49 IONMcMotors *ionMcFront;
anfontanelli 4:3f22193053d0 50 IONMcMotors *ionMcRetro;
anfontanelli 3:fc26045926d9 51
anfontanelli 4:3f22193053d0 52 Servo *frontActuonix;
anfontanelli 4:3f22193053d0 53 Servo *retroActuonix;
anfontanelli 3:fc26045926d9 54
anfontanelli 3:fc26045926d9 55 MPU6050 *mpu;
anfontanelli 6:584653235830 56
anfontanelli 6:584653235830 57 TOFs *tofs;
anfontanelli 3:fc26045926d9 58
anfontanelli 4:3f22193053d0 59 float r_frontWheel;
anfontanelli 4:3f22193053d0 60 float r_retroWheel;
anfontanelli 6:584653235830 61 float pipeCurve_I;
anfontanelli 6:584653235830 62 float pipeCurve_E;
anfontanelli 6:584653235830 63 float pipeCurve_M;
anfontanelli 6:584653235830 64 float retroFrontCentralDistance;
anfontanelli 3:fc26045926d9 65 float wheelsCntactPointDistanceFromPipeCenter;
anfontanelli 6:584653235830 66
anfontanelli 3:fc26045926d9 67 //Imu variables
anfontanelli 6:584653235830 68
anfontanelli 3:fc26045926d9 69 float accBias[3];
anfontanelli 3:fc26045926d9 70 float gyroBias[3];
anfontanelli 6:584653235830 71 int pitch_d;
anfontanelli 6:584653235830 72 float pitch;
anfontanelli 6:584653235830 73 float g_x_old;
anfontanelli 4:3f22193053d0 74
anfontanelli 3:fc26045926d9 75 int forward_vel;
anfontanelli 3:fc26045926d9 76
anfontanelli 3:fc26045926d9 77 int jointFront;
anfontanelli 3:fc26045926d9 78 int jointRetro;
anfontanelli 3:fc26045926d9 79 int enableStab;
anfontanelli 3:fc26045926d9 80 int enableCurv;
anfontanelli 3:fc26045926d9 81
anfontanelli 3:fc26045926d9 82 float time;
anfontanelli 3:fc26045926d9 83 float vels_a;
anfontanelli 3:fc26045926d9 84 float vels_m;
anfontanelli 6:584653235830 85
anfontanelli 3:fc26045926d9 86 int pipeDir;
anfontanelli 6:584653235830 87
anfontanelli 4:3f22193053d0 88 Eigen::Matrix<float, 4, 3> S;
anfontanelli 4:3f22193053d0 89 Eigen::Matrix<float, 3, 4> S_inv;
anfontanelli 6:584653235830 90
anfontanelli 6:584653235830 91 float frontPos;
anfontanelli 6:584653235830 92 float retroPos;
anfontanelli 6:584653235830 93
anfontanelli 3:fc26045926d9 94 //private functions
anfontanelli 3:fc26045926d9 95 float deg2rad(float deg);
anfontanelli 3:fc26045926d9 96 float centralJoint2actuonix(float jointAngle);
anfontanelli 3:fc26045926d9 97 void calibrateImu();
anfontanelli 3:fc26045926d9 98 void updateRoverKin(float pipe_radius, int pipeDir);
anfontanelli 3:fc26045926d9 99
anfontanelli 3:fc26045926d9 100 void setState(int state);
anfontanelli 4:3f22193053d0 101
anfontanelli 6:584653235830 102 int get_forward_vel();
anfontanelli 6:584653235830 103 //PlatformMutex eth_mutex;
anfontanelli 3:fc26045926d9 104
anfontanelli 6:584653235830 105 float roverFrontDistance;
anfontanelli 6:584653235830 106 float roverRetroDistance;
anfontanelli 3:fc26045926d9 107
anfontanelli 3:fc26045926d9 108 };
anfontanelli 3:fc26045926d9 109
anfontanelli 3:fc26045926d9 110 #endif