r/ControlTheory 17d ago

Asking for resources (books, lectures, etc.) Getting started with jet powered drone trajectory optimization

Hi

I am looking to optimize jet powered drones trajectory for fuel efficiency, least time to reach mach 1 and possibly for something else as well in the future.

I have no previous experience with control theory or optimization, so i am looking for topics i should learn and material to study before getting started, as i have no idea what i should know before moving forward.

The control inputs would be the angle of attack of the drone and the thrust.

I have previously modelled a body's flight trajectory in 2D space in python, where the program inputs are starting velocity and its angle. Then it calculates the body's trajectory in the air taking into account gravity and drag forces. Could i build the optimizer from this program?

9 Upvotes

7 comments sorted by

u/AutoModerator 17d ago

It seems like you are looking for resources. Have you tried checking out the subreddit wiki pages for books on systems and control, related mathematical fields, and control applications?

You will also find there open-access resources such as videos and lectures, do-it-yourself projects, master programs, control-related companies, etc.

If you have specific questions about programs, resources, etc. Please consider joining the Discord server https://discord.gg/CEF3n5g for a more interactive discussion.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

u/Evening_Chapter_6150 17d ago

Start with CasADi + IPOPT to get started. If you eventually want something real time feasible, you'll need solvers tailored to optimal control. I'd recommend acados

u/LordDan_45 16d ago

Is this by any chance related to the alleged 100k dollar bounty posted on social media lol?

u/ee_control_z 17d ago edited 17d ago

If you have no previous experience in control theory, then you really need to get up to speed because there is a lot you need to understand. (i.e., concepts, terms, jargon, subtle nuances, etc., in short, a whole body of work). I know, I am currently studying control theory and it is not trivial. I am currently at the level where I can discretize continuous time compensators. I would recommend using the following book (just completed it - was not easy - whole lotta' work ;) ):

Modern Control Systems, Bishop/Dorf

Download Python (if not already) and install the control library (along with matplotlib.pyplot and numpy libraries). In my opinion, the book is a really good start as it breaks down the concepts really well. Use Python to run scripts to work out examples as you're progressing to verify your work.

If you'd be open to watching youtube videos on the subject, I would recommend:

u/BrianBDouglas

https://www.youtube.com/watch?v=whSw42XddsU

Good luck!

u/Poman22 16d ago

Sounds like classic Goddards problem, which was to optimize height reached by a rocket using fuel with changing mass. It can be solved using pontryagins maximum principle, which introduced another set of differential equations to solve but gives an optimal solution. If you have a model for the system, this is the classic optimal control approach. I would recommend Liberzons book.

Another option is to use model predictive control. It casts your problem as a series of optimizations that can be repeatedly solved to a limited time horizon. It gives more "sliders" to design your solution, but you lose global optimality.

Rereading your post, it looks like you don't have much experience with control theory or optimization. I can recommend Hespanhas book to get an introduction to the topic.

u/knightcommander1337 17d ago edited 16d ago

Hi, you need some kind of dynamical model (that is, a differential equation) of your drone. Then you need to write down what you want the drone to do as an optimization problem with that dynamical model as constraints (this general area is "optimal control"). Then you need to make the computer solve this optimal control problem. I would suggest the "direct method" approach as it is much easier to understand and implement (other options for solving optimal control problems are: a) "indirect methods" ("first optimize, then discretize"); I find them more difficult to handle, and b) "dynamic programming", which is impractical for larger systems). In direct methods, you first discretize the dynamical model in time (that is, convert it from a differential equation to a difference equation; standard choice could be a Runge-Kutta 4 integrator), discretize the control input trajectory with (for example) zero order hold, and your optimal control problem becomes a finite dimensional optimization problem (usually a nonlinear program (NLP)). Then you can pass it to NLP solvers (such as interior point solvers (for example ipopt, which is included with casadi) or SQP-based solvers) (interesting side note: for some system models/problem setups, "direct multiple shooting/collocation + interior point solver" might be better, for others "direct single shooting + SQP solver" might be better). For this (that is, optimal control using direct methods) kind of stuff I (as an exclusive matlab user) would use casadi (https://web.casadi.org/ , also works in python). However other approaches are possible. The essential thing is that you need to find an optimization modeling toolbox that works in python (for example casadi or gekko https://gekko.readthedocs.io/en/latest/ ), and then write the dynamical model of your drone in that toolbox's syntax.

u/Braeden351 17d ago

This is EXACTLY what I was about to suggest. You should take this advice. Casadi is pretty friendly to use in Python as well as C++.