Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/doxygen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
permissions:
contents: write
steps:
- uses: DenverCoder1/doxygen-github-pages-action@v2
- uses: DenverCoder1/doxygen-github-pages-action@v2.0.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ The following systems integrate Avionics as a submodule:
- Doxygen: run `doxygen Doxyfile` from the repository root. HTML output is placed in `build/doxygen/index.html` (README is used as the main page).
- High-level notes: data logging constraints and Byte5 format are summarized in `docs/FlashDataSaving.md`.
- Flight history: see `docs/FlightTests.md` for vehicles and dates that have flown with this codebase.
- Target Audience: The documentation is written for compsci students with very little background in C++ or embedded systems.

## Unit Testing

Expand Down
2 changes: 1 addition & 1 deletion include/data_handling/DataPoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <cstdint>

/**
* @brief Timestamped scalar measurement container.
* @brief Timestamped float measurement container.
* @note When to use: represent a single sensor or derived value tagged with the
* millisecond timestamp at which it was produced.
*/
Expand Down
2 changes: 1 addition & 1 deletion include/data_handling/DataSaverBigSD.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class DataSaverBigSD : public IDataSaver {
explicit DataSaverBigSD(uint8_t csPin = 5);

/**
* @brief Initialize the SD card and open a streaming file.
* @brief Initialize the SD card and open a streaming file. Returns true on success
* @note When to use: during setup before any calls to saveDataPoint.
*/
bool begin();
Expand Down
7 changes: 6 additions & 1 deletion include/data_handling/DataSaverSDSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
#include "data_handling/DataPoint.h"
#include "data_handling/DataSaver.h"

/**
* @brief IDataSaver implementation that streams CSV packets over UART.
* @note When to use: log data to an external serial data logger when file
* systems (SD/SPI flash) are unavailable or you need live passthrough.
*/
class DataSaverSDSerial: public IDataSaver {
// Given data points, will write the data over uart to a serial data logger

Expand Down Expand Up @@ -35,4 +40,4 @@ class DataSaverSDSerial: public IDataSaver {

};

#endif
#endif
25 changes: 8 additions & 17 deletions include/state_estimation/VerticalVelocityEstimator.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,14 @@ struct InitialState {


/**
* VerticalVelocityEstimator provides a 1D Kalman filter that fuses altimeter and acceleration
* data to estimate altitude and vertical velocity. It is adapted from the logic in
* ApogeeDetector but excludes the apogee detection mechanism.
*
* Assumptions:
* - The state is [altitude, vertical velocity] (in SI units).
* - The process model uses the vertical acceleration as a control input.
* - The accelerometer outputs roughly +9.81 m/s² when at rest (measuring gravity).
* In free fall it reads ~0 m/s². Hence we subtract g (9.81 m/s²) from the raw
* accelerometer reading to get the rocket’s inertial acceleration.
* - The altimeter measurement is used to correct the altitude.
*
* The user of this class may simply call update(...) whenever new sensor readings
* arrive and retrieve the current altitude and velocity estimates.
*
* @note When to use: any pipeline that needs filtered altitude/velocity inputs for
* detection, control, or prediction without embedding apogee logic.
* @brief 1D Kalman filter fusing altimeter and accelerometer data.
* @details Maintains altitude and vertical velocity by treating vertical
* acceleration as the control input. Gravity is subtracted from raw
* accelerometer readings to obtain inertial acceleration. Call
* `update()` with new IMU + baro samples and query the latest
* estimates via getters.
* @note Use when downstream logic (detectors, control, telemetry) needs
* filtered altitude/velocity without embedding apogee-specific behavior.
*/
class VerticalVelocityEstimator {
public:
Expand Down