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_ms = 1.0F);
37
39 void update();
40
42 void quad_update();
43
44 void poly_update();
45
46 void analytic_update();
47
48 // ----- Accessors -----
49 [[nodiscard]] bool isPredictionValid() const;
50 [[nodiscard]] float getTimeToApogee_s() const;
51 [[nodiscard]] uint32_t getPredictedApogeeTimestamp_ms() const;
52 [[nodiscard]] float getPredictedApogeeAltitude_m() const;
53 [[nodiscard]] float getFilteredDeceleration() const;
54 [[nodiscard]] float getdragCoefficient() const;
55
56
57private:
58 const VerticalVelocityEstimator& vve_;
59
60 float filteredDecel_;
61 float alpha_;
62 float minClimbVel_;
63
64 // Latest prediction results
65 bool valid_;
66 float tToApogee_;
67 uint32_t predApogeeTs_;
68 float predApogeeAlt_;
69 float currentDragCoefficient = 0.0025F;
70
71 // Bookkeeping
72 uint32_t lastTs_;
73 float lastVel_;
74 uint32_t numWarmups_;
75};
76
77#endif // APOGEE_PREDICTOR_H
float getPredictedApogeeAltitude_m() const
uint32_t getPredictedApogeeTimestamp_ms() const
bool isPredictionValid() const
ApogeePredictor(const VerticalVelocityEstimator &velocityEstimator, float accelFilterAlpha=0.2F, float minimumClimbVelocity_ms=1.0F)
float getdragCoefficient() const
float getFilteredDeceleration() const
float getTimeToApogee_s() const
1D Kalman filter fusing altimeter and accelerometer data.