summaryrefslogtreecommitdiff
path: root/include/rocketUtils.hpp
diff options
context:
space:
mode:
authorDawsyn Schraiber <[email protected]>2024-05-09 01:20:17 -0400
committerGitHub <[email protected]>2024-05-09 01:20:17 -0400
commit90c4d94b13472114daab71d3e368660224423c90 (patch)
tree2a56c3780e6ba2f157ce15f2356134cff5035694 /include/rocketUtils.hpp
parentd695dce1a7ea28433db8e893025d1ec66fb077b2 (diff)
downloadactive-drag-system-90c4d94b13472114daab71d3e368660224423c90.tar.gz
active-drag-system-90c4d94b13472114daab71d3e368660224423c90.tar.bz2
active-drag-system-90c4d94b13472114daab71d3e368660224423c90.zip
02/24/2024 Test Launch Version (BB Black) (#11)
* Adding a 90% completed, compilable but untested ADS * Made basic changes to actuator & sensor. Also added motor class * Removed unnecessary .cpp files * Updated sensor & actuator classes, finished ads, added variable time step to kalman filter, set up all tests for future assertions * Relocated 'main' to 'active-drag-system.cpp'. Added more info to README * Removed main.cpp * Added more details to README * Changed some function parameters from pass-by-pointer to pass-by-reference. Also removed the std namespace * Started writing the test cases * Updated the .gitignore file * Removed some files that should be gitignored * Up to date with Jazz's pull request * Test Launch Branch Created; PRU Servo Control with Test Program * Added I2C device class and register IDs for MPL [INCOMPLETE SENSOR IMPLEMENTATION] Needs actual data getting function implementation for both sensors and register IDs for BNO, will implement shortly. * Partial implementation of MPL sensor Added startup method, still needs fleshed out data getters and setters and finished I2C implementation. MOST LIKELY WILL HAVE COMPILATION ISSUES. * *Hypothetically* complete MPL implementation NEEDS HARDWARE TESTING * IMU Header and init() method implementation Needs like, all data handling still lol * Hypothetically functional (Definitely won't compile) * We ball? --------- Co-authored-by: Jazz Jackson <[email protected]> Co-authored-by: Cian Capacci <[email protected]>
Diffstat (limited to 'include/rocketUtils.hpp')
-rw-r--r--include/rocketUtils.hpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/include/rocketUtils.hpp b/include/rocketUtils.hpp
new file mode 100644
index 0000000..65b9cea
--- /dev/null
+++ b/include/rocketUtils.hpp
@@ -0,0 +1,121 @@
+#pragma once
+#include <iostream>
+#include <vector>
+#include <ctime>
+#include <vector>
+#include <iomanip>
+#include <sstream>
+#include <fstream>
+
+// Deployment angle limits
+#define MAX_ANGLE 100
+#define MIN_ANGLE 120
+
+// Altimeter initialization count limit
+#define COUNT_LIMIT 50
+
+// Constants
+#define G_0 9.8066
+
+// Threshold limits
+#define BOOST_ACCEL_THRESH 3
+#define BOOST_HEIGHT_THRESH 20
+#define GLIDE_ACCEL_THRESH 0.5
+
+#define ALTI_DEPL_THRESHOLD 0.5
+#define RATE_ALTI_DEPL 1/50
+#define FSM_DONE_SURFACE_ALTITUDE 200
+#define APOGEE_FSM_CHANGE 3
+
+#define INIT_DEPLOYMENT 0
+
+#define TIME_BO 8
+#define TIME_APO 25
+#define TIME_END 120
+
+#define PAD_PRESSURE 102250
+
+#define DUTY_MAX 14.5
+#define DUTY_MIN 3
+
+#define LAUNCH_DATE "4-15-2023"
+#define LOG_FILENAME "DataLog_" LAUNCH_DATE ".txt"
+
+#define LED_GAP_TIME 0.5
+#define LED_ONE_PATH "/sys/class/leds/beaglebone:green:usr1"
+#define LED_BRIGHTNESS_FILE "brightness"
+#define LED_FILENAME LED_ONE_PATH LED_BRIGHTNESS_FILE
+
+#define TEST_MODE false
+
+
+enum VehicleState {ON_PAD, BOOST, GLIDE, APOGEE, DONE};
+extern std::string state_for_log[5];
+
+struct Vehicle {
+
+ int status;
+
+ std::vector<double> acceleration;
+ std::vector<double> linear_acceleration;
+
+ double apogee_altitude;
+ double previous_altitude;
+ double current_altitude;
+ double filtered_altitude;
+
+ double filtered_velocity;
+
+ double deployment_angle;
+
+ bool imuInitFail;
+ bool imuReadFail;
+ bool altiInitFail;
+ bool altiReadFail;
+
+ double ON_PAD_altitude;
+ bool ON_PAD_fail;
+
+ double duty_span;
+
+ double dt;
+
+ int led_brightness;
+
+ time_t start_time;
+ time_t fail_time; // For failure termination
+ time_t liftoff_time;
+ time_t relog_time;
+ time_t deploy_time; // NOT INITIALIZED YET
+ time_t loop_time;
+ time_t led_time;
+};
+
+/**
+ * @brief Convert fin deployment percentage to fin rotation angle
+ *
+ * @param percentage Fin deployment percentage
+ * @return double
+ */
+double deploy_percentage_to_angle(double percentage);
+
+/**
+ * @brief Set the decimal precision of the given data, and return it
+ * as a formatted string with a prefix containing a relevant description of the data.
+ *
+ * @param prefix Identifying or clarifying information about the loggef data
+ * @param data Data to Log
+ * @param precision The decimal precision value for the data
+ *
+ * @return A string with the formatted data.
+ */
+std::string format_data(std::string prefix, double data, int precision);
+
+/**
+ * @brief Blink Beaglebone LED 1
+ *
+ * @param vehicle Holds settings pertinent to the Beaglebone LED
+ * @return true Successful Blink
+ * @return false Unsuccessful Blink
+ */
+bool led_out(Vehicle *vehicle);