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: IMU MODSERIAL Servo mbed
Fork of RTOS_Controller_v2 by
vessel.h
- Committer:
- gelmes
- Date:
- 2016-07-04
- Revision:
- 3:5ffe7e9c0bb3
- Child:
- 4:b37fd183e46a
File content as of revision 3:5ffe7e9c0bb3:
#ifndef VESSEL_H
#define VESSEL_H
#include "mbed.h"
#include "MPU6050.h"
#include "Servo.h"
#include "IMU.h"
#include "PID.h"
/*
Cameras
FL ----- F ->--- FR
| | |
˄ | |
| | |
L | R
| | |
| | ˅
| | |
BL ---<- B ----- BR
0 ----- 1 ->--- 2
| | |
˄ | |
| | |
7 | 3
| | |
| | ˅
| | |
6 ---<- 5 ----- 4
*/
class Vessel
{
private:
Servo m0;
Servo m1;
Servo m2;
Servo m3;
Servo m4;
Servo m5;
Servo m6;
Servo m7;
PwmOut led1;
MPU6050 mpu6050;
double yawPoint, yawIn, yawOut;
double rollPoint, rollIn, rollOut;
double pitchPoint, pitchIn, pitchOut;
PID pidy, pidr, pidp;
public:
void Start_IMU() {
pc.printf("Starting up\n\r");
pc.baud(9600);
i2c.frequency(400000); // use fast (400 kHz) I2C
IMUinit(mpu6050);
IMUPrintData(mpu6050);
}
//Initialise all of the vessels starting parameters
Vessel(): m0(D2),m1(D3),m2(D4),m3(D5),m4(D6),m5(D7),m6(D8),m7(D9), led1(LED1),
pidy(&yawIn, &yawOut, &yawPoint,1,1,1, DIRECT),
pidr(&rollIn, &rollOut, &rollPoint,1,1,1, DIRECT),
pidp(&pitchIn, &pitchOut, &pitchPoint,1,1,1, DIRECT) {
pidy.SetMode(AUTOMATIC); //Yaw PID
pidy.SetOutputLimits(0,255);
yawPoint = 125;
pidr.SetMode(AUTOMATIC); //Yaw PID
pidr.SetOutputLimits(0,255);
rollPoint = 125;
pidp.SetMode(AUTOMATIC); //Yaw PID
pidp.SetOutputLimits(0,255);
rollPoint = 125;
Start_IMU();
pc.printf("Seagoat Ready to Go\n\r");
}
void SetYawPID(double Kp, double Ki, double Kd) {
pidy.SetTunings(Kp, Ki, Kd);
}
void SetRollPID(double Kp, double Ki, double Kd) {
pidy.SetTunings(Kp, Ki, Kd);
}
void SetPitchPID(double Kp, double Ki, double Kd) {
pidy.SetTunings(Kp, Ki, Kd);
}
//This is where the magic happens
void update(){
}
};
#endif
