How thales625/libgnc works
This repository combines a header-only GNC math/control/navigation library with a quadrotor simulator and an embedded avionics interface. The intended flight-control flow is exposed through Avionics: it uses an estimated state for LQR control and produces rotor commands; Python bindings expose that interface, while the simulation scripts provide a separate simulation workflow. The sampled sources do not show how EmbeddedBackend connects the simulator and avionics, and Avionics’ Kalman prediction/measurement updates are commented out, so those links are omitted.
Main entry points: kalman.hpp Kalman filter · drone.py Drone dynamics · avionics.hpp Flight avionics · static.py Static simulation
Components 17
Flight Control
- Flight avionics
simulation/include/avionics.hpp - Kalman filter
include/libgnc/navigation/kalman/kalman.hpp - LQR controller
include/libgnc/control/lqr/lqr.hpp
Quadrotor Simulation
- Static simulation
simulation/static.py - Simulation backend
simulation/embedded.py - Drone dynamics
simulation/environment/drone.py - Rotor model
simulation/environment/rotor.py - Sensor models
simulation/environment/sensors.py - Earth model
simulation/environment/earth.py - RK4 solver
simulation/environment/solver.py - Simulation plots
simulation/static.py
GNC Core
- Vectors
include/libgnc/math/vector.hpp - Matrices
include/libgnc/math/matrix.hpp - Quaternions
include/libgnc/math/quaternion.hpp
Embedded Interface
- Python bindings
simulation/bindings/avionics_pybind.cpp - ESP demo
main/main.cpp
Other components
- Simulation user
Connections 18
- Simulation user → Static simulation: starts
- Static simulation → Simulation backend: steps simulation
- Static simulation → Simulation plots: collects and plots
- Static simulation → Quaternions: converts attitude
- Python bindings → Flight avionics: exposes
- Flight avionics → Kalman filter: reads state
- Flight avionics → LQR controller: updates control
- Flight avionics → Vectors: uses vectors
- Kalman filter → Matrices: matrix operations
- Kalman filter → Vectors: state operations
- Kalman filter → Quaternions: converts attitude
- LQR controller → Vectors: computes control
- Drone dynamics → Rotor model: updates rotors
- Drone dynamics → Sensor models: updates sensors
- Drone dynamics → Earth model: reads gravity and density
- Drone dynamics → RK4 solver: steps dynamics
- ESP demo → Vectors: uses vectors
- ESP demo → Kalman filter: includes filter