Avionics
Core avionics package for CURE flight computers
Loading...
Searching...
No Matches
ApogeePredictor.h
Go to the documentation of this file.
1#ifndef APOGEE_PREDICTOR_H
2#define APOGEE_PREDICTOR_H
3
4#include <cstdint>
5
7
8
28public:
34 explicit ApogeePredictor(const VerticalVelocityEstimator& velocityEstimator,
35 float accelFilterAlpha = 0.2F,
36 float minimumClimbVelocity_mps = 1.0F);
37
39 void update();
40
42 void quadUpdate();
43
44 void polyUpdate();
45
46 void analyticUpdate();
47
48 void simulateUpdate();
49
50 // ----- Accessors -----
51 [[nodiscard]] bool isPredictionValid() const;
52 [[nodiscard]] float getTimeToApogee_s() const;
53 [[nodiscard]] uint32_t getPredictedApogeeTimestamp_ms() const;
54 [[nodiscard]] float getPredictedApogeeAltitude_m() const;
55 [[nodiscard]] float getFilteredDeceleration() const;
56 [[nodiscard]] float getDragCoefficient() const;
57
58
59private:
60 const VerticalVelocityEstimator& vve_;
61
62 float filteredDecel_mps2_;
63 float alpha_;
64 float minimumClimbVelocity_mps_;
65
66 // Latest prediction results
67 bool valid_;
68 float tToApogee_;
69 uint32_t predApogeeTs_;
70 float predApogeeAlt_;
71 float currentDragCoefficient_ = 0.0005F;
72
73 //variables for simulation apogee prediction
74 float beta_ = 400.0f;
75 float filteredApogee_ = 0.0f;
76 bool apogeeInitialized_ = false;
77
78 // Bookkeeping
79 uint32_t lastTs_;
80 float lastVel_;
81 uint32_t numWarmups_;
82};
83
84#endif // APOGEE_PREDICTOR_H
float getPredictedApogeeAltitude_m() const
uint32_t getPredictedApogeeTimestamp_ms() const
bool isPredictionValid() const
float getDragCoefficient() const
ApogeePredictor(const VerticalVelocityEstimator &velocityEstimator, float accelFilterAlpha=0.2F, float minimumClimbVelocity_mps=1.0F)
float getFilteredDeceleration() const
float getTimeToApogee_s() const
1D Kalman filter fusing altimeter and accelerometer data.