Jump to content

Hang Glider: Difference between revisions

From mintOC
Created page with "{{Dimensions |nd = 1 |nx = 4 |nw = 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 coeff..."
 
 
(12 intermediate revisions by the same user not shown)
Line 19: Line 19:
\quad \dot{x}(t) & = & v_x(t),\\
\quad \dot{x}(t) & = & v_x(t),\\
\quad \dot{y}(t) & = & v_y(t), \\
\quad \dot{y}(t) & = & v_y(t), \\
\quad \dot{v_x}(t) & = & - \frac{L(t) \cdot w(t) + D(t) \cdot v_x(t)}{mv(t)}, \\
\quad \dot{v}_x(t) & = & - \frac{L(t) \cdot w(t) + D(t) \cdot v_x(t)}{mv(t)}, \\
\quad \dot{v_y}(t) & = & \frac{L(t) \cdot v_x(t) - D(t) \cdot w}{mv(t)} - g, \\
\quad \dot{v}_y(t) & = & \frac{L(t) \cdot v_x(t) - D(t) \cdot w}{mv(t)} - g, \\
\quad x_1(t) & \geq & 0 \ \quad & \forall t \in [0, T], \\
\quad x(t) & \geq & 0 \ \quad & \forall t \in [0, t_f], \\
\quad v_x(t) & \geq & 0 \ \quad & \forall t \in [0, t_f], \\
\quad x(0) & = & (x_0, y_0, v_{x,0}, v_{y,0})^T, \\
\quad x(0) & = & (x_0, y_0, v_{x,0}, v_{y,0})^T, \\
\quad y(t_f) & = & y_f \\
\quad y(t_f) & = & y_f \\
\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 c_L(t) & \in & [0., 1.4] \ \quad & \forall t \in [0, t_f], \\
\quad t_f & \geq & 0
\end{array}
\end{array}
</math>
</math>
Line 31: Line 34:


with the auxiliary equations:
with the auxiliary equations:
<p>
<math>
<math>
v = \sqrt{v_x^2 + w^2}, \quad \\
\begin{align}
w = v_y - U_\text{updraft}(x), \\
r(t) &= \left( \frac{x(t)}{r_c} - 2.5 \right)^2, \\
L = \frac{1}{2} \rho S c_L v^2, \\
U_\text{updraft}(x(t)) &= u_c\, (1 - r(t)) \cdot \exp\left(-r(t)\right), \\
D = \frac{1}{2} \rho S (c_0 + c_1 c_L^2) v^2, \\
w(t) &= v_y(t) - U_\text{updraft}(x(t)), \\
U_\text{updraft}(x) = u_c\, (1 - r) e^{-r}, \\
v(t) &= \sqrt{v_x(t)^2 + w(t)^2}, \\
r = \left( \frac{x}{r_0} - 2.5 \right)^2,
D(t) &= \frac{1}{2} \rho S (c_0 + c_1 c_L(t)^2) \cdot v(t)^2, \\
L(t) &= \frac{1}{2} \rho S c_L(t) v(t)^2.
\end{align}
</math>
</math>
</p>


== Parameters ==
== Parameters ==
Line 47: Line 54:
! Symbol !! Value !! Description
! Symbol !! Value !! Description
|-
|-
| align=center | <math>\alpha</math> || align=right | 3 || Weight on state
| align=center | <math>x_0</math> || align=right | 0 || Initial horizontal position
|-
|-
| align=center | <math>\beta</math> || align=right | 0 || Weight on squared state
| align=center | <math>y_0</math> || align=right | 1000 || Initial altitude
|-
|-
| align=center | <math>\gamma</math> || align=right | 0.5 || Weight on squared control
| align=center | <math>y_f</math> || align=right | 900  || Final altitude
|-
| align=center | <math>v_{x,0}</math> || align=right | 13.23 || Initial horizontal velocity
|-
| align=center | <math>v_{x,f}</math> || align=right | 13.23 || Final horizontal velocity
|-
| align=center | <math>v_{y,0}</math> || align=right | -1.288 || Initial vertical velocity
|-
| align=center | <math>v_{y,f}</math> || align=right | -1.288 || Final vertical velocity
|-
| align=center | <math>u_c</math> || align=right | 2.5 ||  
|-
| align=center | <math>r_c</math> || align=right | 100 ||
|-
| align=center | <math>c_0</math> || align=right | 0.034 ||
|-
| align=center | <math>c_1</math> || align=right | 0.069662 ||
|-
| align=center | <math>S</math> || align=right | 14 || Wing area
|-
| align=center | <math>\rho</math> || align=right | 1.13 || Air density
|-
| align=center | <math>m</math> || align=right | 100 || Mass of the glider
|-  
|-  
| align=center | <math>T</math> || align=right | 10 || Final time
| align=center | <math>g</math> || align=right | 9.81 || Gravitational constant
|}
|}


Line 60: Line 89:
Here is one local solution to the above control problem.
Here is one local solution to the above control problem.


<gallery caption="Reference solution plots" widths="180px" heights="140px" perrow="1">
<gallery caption="Reference solution plots" widths="500px" heights="300px" perrow="1">
  Image:Robbins.png| States and discretized control for a local optimum.
  Image:Hang_Glider.png| States and discretized control for a local optimum. The initial guess for <math>t_f</math> was chosen as 100.
</gallery>
</gallery>


Line 68: Line 97:


== References ==
== References ==
<span id="OCPjl">[1]</span> 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<br>
<span id="OCPjl">[1]</span> 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/glider.md<br>




[[Category:MIOCP]]
[[Category:MIOCP]]
[[Category:ODE model]]
[[Category:ODE model]]

Latest revision as of 12:23, 18 February 2026

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),v˙x(t)=L(t)w(t)+D(t)vx(t)mv(t),v˙y(t)=L(t)vx(t)D(t)wmv(t)g,x(t)0 t[0,tf],vx(t)0 t[0,tf],x(0)=(x0,y0,vx,0,vy,0)T,y(tf)=yfvx(tf)=vx,fvy(tf)=vy,fcL(t)[0.,1.4] t[0,tf],tf0

with the auxiliary equations:

r(t)=(x(t)rc2.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/glider.md