Jump to content

Hang Glider: Difference between revisions

From mintOC
Line 27: Line 27:
\quad v_x(t_f) & = & v_{x,f} \\
\quad v_x(t_f) & = & v_{x,f} \\
\quad v_y(t_f) & = & v_{y,f} \\
\quad v_y(t_f) & = & v_{y,f} \\
\quad t_f & \geq & 0
\end{array}
\end{array}
</math>
</math>

Revision as of 10:09, 25 November 2025

Hang Glider
State dimension: 1
Differential states: 4
Discrete control functions: 2


The Hang Glider problem is a classical benchmark in optimal control. This description is taken from [1].

It consists of steering a hang glider from an initial horizontal position and altitude to a target altitude while maximising the horizontal distance travelled. The glider dynamics incorporate lift, drag, gravity, and the effect of a thermal updraft. The control variable is the lift coefficient cL, which modulates the aerodynamic lift and influences the trajectory through the thermal region.

Mathematical formulation

minux(tf)subject tox˙(t)=vx(t),y˙(t)=vy(t),vx˙(t)=L(t)w(t)+D(t)vx(t)mv(t),vy˙(t)=L(t)vx(t)D(t)wmv(t)g,x(t)0 t[0,T],vx(t)0 t[0,T],x(0)=(x0,y0,vx,0,vy,0)T,y(tf)=yfvx(tf)=vx,fvy(tf)=vy,ftf0

with the auxiliary equations:

r(t)=(x(t)r02.5)2,Uupdraft(x(t))=uc(1r(t))exp(r(t)),w(t)=vy(t)Uupdraft(x(t)),v(t)=vx(t)2+w(t)2,D(t)=12ρS(c0+c1cL(t)2)v(t)2,L(t)=12ρScL(t)v(t)2.

Parameters

These fixed values are used within the model:

Symbol Value Description
x0 0 Initial horizontal position
y0 1000 Initial altitude
yf 900 Final altitude
vx,0 13.23 Initial horizontal velocity
vx,f 13.23 Final horizontal velocity
vy,0 -1.288 Initial vertical velocity
vy,f -1.288 Final vertical velocity
uc 2.5
rc 100
c0 0.034
c1 0.069662
S 14 Wing area
ρ 1.13 Air density
m 100 Mass of the glider
g 9.81 Gravitational constant

Reference Solutions

Here is one local solution to the above control problem.

Miscellaneous and Further Reading

This formulation and a detailed description can be found in [1].

References

[1] Caillau, J.-B., Cots, O., Gergaud, J., & Martinon, P. OptimalControlProblems.jl: a collection of optimal control problems with ODE's in Julia. https://github.com/control-toolbox/OptimalControlProblems.jl/blob/main/ext/Descriptions/robbins.md