The Efficient Parafoil Grid generates efficient guidance strategies for parafoil systems. The project's primary focus is on guiding a parafoil system toward a circular target with fixed initial coordinates and deployment velocity while minimizing energy consumption.
The codebase consists of several key components:
attributes.cpp
andattributes.h
: Define the attributes of the parafoil system, including dynamics and control functions.cmdlineoptions.cpp
andcmdlineoptions.h
: Handle command-line options for the program.main.cpp
andmain.h
: The main entry point of the program, responsible for initializing the system and starting the simulation.parameters.cpp
andparameters.h
: Define the parameters of the parafoil system and the simulation.state.cpp
andstate.h
: Represent the state of the parafoil system, including position, velocity, and orientation.visualizer.cpp
andvisualizer.h
: Provide visualization tools for the simulation.
The efficientparafoilgrid
executable requires the following command-line arguments:
- The first argument is an integer representing the depth of the grid.
- The second argument is a double representing the velocity
V
. - The third argument is a double representing the time step
dt
. - The fourth argument is a double representing the initial angle
psi_init
. - All subsequent arguments are doubles representing possible control inputs
us
.
Example usage:
./efficientparafoilgrid 10 5.0 0.1 0.5 1.2 1.4 1.6
In this example, the depth of the grid is 10
, the velocity V
is 5.0
, the time step dt
is 0.1
, the initial angle psi_init
is 0.5
, and the control inputs us
are 1.2
, 1.4
, and 1.6
.
- CMake (version 3.25 or higher)
- C++ compiler supporting C++23 standard
- ALGLIB library for mathematical calculations
- OpenMP for parallel programming
To build the project, navigate to the project directory and use CMake:
mkdir build && cd build
cmake ..
make
To run the program, execute the binary from the build
directory with desired options:
./efficientparafoilgrid --target 200 200 --radius 10 --velocity 2.5
This project is used for the article "A Hybrid Optimal Controller for Parafoil Systems" by Rémi Pédenon-Orlanducci, Ahmad Zaydan, Sofiane Achiche, and David Saussié.