mirror of
https://gitlab.com/lander-team/lander-cpp.git
synced 2025-08-17 02:24:50 +00:00
fixed, gonna make some more changes to make sure we're utilizing our whole burn
This commit is contained in:
@@ -17,11 +17,11 @@ File dataFile;
|
||||
double loadCellCalibrate() {
|
||||
// place code to calibrate load cells in here
|
||||
double loadTotal;
|
||||
for (double t = 0; t == 10; ++t) {
|
||||
loadTotal += 1;
|
||||
for (double t = 0.0; t == 10.0; ++t) {
|
||||
loadTotal += 1.0;
|
||||
delay(15);
|
||||
}
|
||||
return loadTotal / 10;
|
||||
return loadTotal / 10.0;
|
||||
}
|
||||
|
||||
void initFile() {
|
||||
@@ -39,7 +39,7 @@ void initFile() {
|
||||
const char *fileName;
|
||||
|
||||
if (SD.exists("simOut.csv")) {
|
||||
while (i > 0) {
|
||||
while (i > 0.0) {
|
||||
fileName = ("simOut_" + String(i) + ".csv").c_str();
|
||||
|
||||
if (!SD.exists(fileName)) {
|
||||
@@ -54,7 +54,7 @@ void initFile() {
|
||||
Serial.println("Error opening output file. \n\nABORTING SIMULATION");
|
||||
teensyAbort();
|
||||
}
|
||||
i = 0;
|
||||
i = 0.0;
|
||||
|
||||
} else {
|
||||
i++;
|
||||
@@ -87,23 +87,22 @@ void thrustInfo(Vehicle &State) {
|
||||
if (State.burnElapsed != 2000) {
|
||||
// determine where in the thrust curve we're at based on elapsed burn time
|
||||
// as well as current mass
|
||||
State.burnElapsed = (State.time - State.burnStart) / 1000;
|
||||
State.burnElapsed = (State.time - State.burnStart) / 1000.0;
|
||||
State.mass = State.massInitial - (State.mdot * State.burnElapsed);
|
||||
}
|
||||
|
||||
else if (abs(State.burnVelocity + State.vz) < 0.001) {
|
||||
} else if (abs(State.burnVelocity + State.vz) < 0.01) {
|
||||
// Start burn
|
||||
State.burnStart = State.time;
|
||||
State.burnElapsed = 0;
|
||||
}
|
||||
|
||||
else
|
||||
} else {
|
||||
State.burnElapsed = 2000; // arbitrary number to ensure we don't burn
|
||||
}
|
||||
//Serial.println(abs(State.burnVelocity + State.vz));
|
||||
|
||||
if ((State.burnElapsed > 0.147) && (State.burnElapsed < 0.420)) {
|
||||
State.thrustFiring = true;
|
||||
State.thrust = 65.165 * State.burnElapsed - 2.3921;
|
||||
|
||||
} else if ((State.burnElapsed > 0.419) && (State.burnElapsed < 3.383))
|
||||
State.thrust = 0.8932 * pow(State.burnElapsed, 6) -
|
||||
11.609 * pow(State.burnElapsed, 5) +
|
||||
@@ -117,25 +116,25 @@ void thrustInfo(Vehicle &State) {
|
||||
|
||||
if (State.burnElapsed > 3.45) {
|
||||
State.thrustFiring = false;
|
||||
State.thrust = 0;
|
||||
State.thrust = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
void processTVC(Vehicle &State) {
|
||||
if (State.time == 0) {
|
||||
if (State.time == 0.0) {
|
||||
Serial.println("WARNING: processTVC not implemented for TEENSY");
|
||||
}
|
||||
|
||||
// Vector math to aqcuire thrust vector components
|
||||
State.Fx = State.thrust * sin(State.xServoDegs * (M_PI / 180));
|
||||
State.Fy = State.thrust * sin(State.yServoDegs * (M_PI / 180));
|
||||
State.Fx = State.thrust * sin(State.xServoDegs * (M_PI / 180.0));
|
||||
State.Fy = State.thrust * sin(State.yServoDegs * (M_PI / 180.0));
|
||||
State.Fz = sqrt(pow(State.thrust, 2) - pow(State.Fx, 2) - pow(State.Fy, 2)) +
|
||||
(State.mass * g);
|
||||
|
||||
// Calculate moment created by Fx and Fy
|
||||
State.momentX = State.Fx * State.momentArm;
|
||||
State.momentY = State.Fy * State.momentArm;
|
||||
State.momentZ = 0;
|
||||
State.momentZ = 0.0;
|
||||
}
|
||||
|
||||
void write2CSV(Vehicle &State) {
|
||||
@@ -163,18 +162,18 @@ void write2CSV(Vehicle &State) {
|
||||
dataFile.print(State.az);
|
||||
dataFile.print(",");
|
||||
|
||||
dataFile.print(State.yaw * 180 / M_PI);
|
||||
dataFile.print(State.yaw * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
dataFile.print(State.pitch * 180 / M_PI);
|
||||
dataFile.print(State.pitch * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
dataFile.print(State.roll * 180 / M_PI);
|
||||
dataFile.print(State.roll * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
|
||||
dataFile.print(State.yawdot * 180 / M_PI);
|
||||
dataFile.print(State.yawdot * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
dataFile.print(State.pitchdot * 180 / M_PI);
|
||||
dataFile.print(State.pitchdot * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
dataFile.print(State.rolldot * 180 / M_PI);
|
||||
dataFile.print(State.rolldot * 180.0 / M_PI);
|
||||
dataFile.print(",");
|
||||
|
||||
dataFile.print(State.xServoDegs);
|
||||
@@ -195,9 +194,9 @@ void write2CSV(Vehicle &State) {
|
||||
}
|
||||
|
||||
void printSimResults(Vehicle &State) {
|
||||
State.yaw = State.yaw * 180 / M_PI;
|
||||
State.pitch = State.pitch * 180 / M_PI;
|
||||
State.roll = State.roll * 180 / M_PI;
|
||||
State.yaw = State.yaw * 180.0 / M_PI;
|
||||
State.pitch = State.pitch * 180.0 / M_PI;
|
||||
State.roll = State.roll * 180.0 / M_PI;
|
||||
|
||||
double landing_angle =
|
||||
pow(State.yaw * State.yaw + State.pitch * State.pitch, .5);
|
||||
|
Reference in New Issue
Block a user