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