<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Jihoon Lee — Blog</title>
  <link href="https://jihoonlee91.github.io/blog.html"/>
  <link rel="self" href="https://jihoonlee91.github.io/feed.xml"/>
  <id>https://jihoonlee91.github.io/blog.html</id>
  <updated>2026-11-04T00:00:00Z</updated>
  <author><name>Jihoon Lee</name></author>
  <entry>
    <title>Using wing span as a control input: LPV control of an asymmetric morphing UAV</title>
    <link href="https://jihoonlee91.github.io/blog/wing-span-as-a-control-input.html"/>
    <id>https://jihoonlee91.github.io/blog/wing-span-as-a-control-input.html</id>
    <published>2026-11-04T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <summary>How splitting two telescoping wingtips into a symmetric and an asymmetric part turned a hard morphing-control problem into a schedulable one — and why &quot;it works at every design point&quot; was not the bar that mattered.</summary>
    <content type="html">&lt;p&gt;A morphing aircraft changes its shape in flight. That sounds like a pure win — a long wing for efficient cruise, a short one for a fast dash — until you try to write the controller. This post walks through the core idea of my Ph.D. work, published as &lt;a href=&quot;../papers/2023-self-scheduled-lpv-asymmetric-morphing-uav.html&quot;&gt;&lt;em&gt;Self-Scheduled LPV Control of Asymmetric Variable-Span Morphing UAV&lt;/em&gt;&lt;/a&gt; (&lt;em&gt;Sensors&lt;/em&gt;, 2023), and the parts of it I still find useful outside aerospace.&lt;/p&gt;
&lt;h2 id=&quot;why-morphing-is-awkward-to-control&quot;&gt;Why morphing is awkward to control&lt;/h2&gt;
&lt;p&gt;Conventional control surfaces are well-behaved inputs: an aileron produces mostly roll moment, through a long moment arm, with a small aerodynamic force. Changing the wing span is different:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;It moves several things at once.&lt;/strong&gt; Span changes lift, drag, and moments on more than one axis, and the relationship is strongly nonlinear.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It moves the aircraft itself.&lt;/strong&gt; The center of mass, moments of inertia, and products of inertia all shift as the wingtips travel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is slow.&lt;/strong&gt; Morphing actuators have much lower bandwidth than hydraulically driven control surfaces, and a controller that ignores that gap performs badly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The classical answer is gain scheduling: design linear controllers at a set of operating points and interpolate between them. The catch is that classical gain scheduling only behaves when the scheduling variable changes &lt;em&gt;slowly&lt;/em&gt;. Assume the shape changes slowly, and you have thrown away the main reason to morph in the first place.&lt;/p&gt;
&lt;h2 id=&quot;the-trick-schedule-on-one-part-steer-with-the-other&quot;&gt;The trick: schedule on one part, steer with the other&lt;/h2&gt;
&lt;p&gt;The aircraft model lets the left and right wingtips telescope independently. Each has a span-variation ratio, &lt;span class=&quot;arithmatex&quot;&gt;\(\eta_l\)&lt;/span&gt; and &lt;span class=&quot;arithmatex&quot;&gt;\(\eta_r\)&lt;/span&gt;, between −25 % and 0 %. Instead of treating them as two separate knobs, decompose them:&lt;/p&gt;
&lt;div class=&quot;arithmatex&quot;&gt;\[
\eta_s = \frac{\eta_l + \eta_r}{2}, \qquad \eta_a = \frac{\eta_l - \eta_r}{2}
\]&lt;/div&gt;
&lt;p&gt;The two parts do very different jobs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;symmetric part&lt;/strong&gt; &lt;span class=&quot;arithmatex&quot;&gt;\(\eta_s\)&lt;/span&gt; has large effects on longitudinal aerodynamics and overall flight performance. It becomes a &lt;strong&gt;scheduling parameter&lt;/strong&gt;, alongside airspeed and altitude.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;asymmetric part&lt;/strong&gt; &lt;span class=&quot;arithmatex&quot;&gt;\(\eta_a\)&lt;/span&gt; barely affects longitudinal motion, but the left–right difference produces a rolling moment. It becomes a &lt;strong&gt;control input&lt;/strong&gt; for the lateral-directional axis, next to the ailerons and rudder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That one change of variables is most of the design. Each quantity now has a single, clear role.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;../assets/figures/2023-self-scheduled-lpv-asymmetric-morphing-uav-2.webp&quot; alt=&quot;Aircraft parameters plotted against the left-wing span variation&quot; loading=&quot;lazy&quot;&gt;
  &lt;figcaption&gt;How the aircraft&#x27;s parameters change as only the left wingtip retracts (\(\eta_r = 0\)). Fig. 2 of the paper, CC BY 4.0.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;building-a-model-you-can-trust-across-the-envelope&quot;&gt;Building a model you can trust across the envelope&lt;/h2&gt;
&lt;p&gt;The baseline is NASA&#x27;s open-source Generic Transport Model (GTM-T2), a 5.5 %-scale transport aircraft with high-fidelity aerodynamics, sensors, and actuators. GTM ships with damage cases, including the loss of 25 % of the left wingtip. Read that case as &quot;the wingtip retracted&quot; instead of &quot;the wingtip broke off,&quot; let both tips telescope continuously, and you get a variable-span model. Mass and center of mass vary linearly with the morphing parameters; the inertia terms vary quadratically. The model is quasi-static — the unsteady aerodynamics &lt;em&gt;during&lt;/em&gt; morphing are not modeled, because the base model does not include them.&lt;/p&gt;
&lt;p&gt;LPV synthesis needs a rectangular parameter domain, but the region where GTM can trim is triangular in airspeed–altitude space: the usable speed range narrows with height. A synthetic airspeed stretches it back into a rectangle:&lt;/p&gt;
&lt;div class=&quot;arithmatex&quot;&gt;\[
V_S = V_0 - \frac{h_0}{h_0 - h}\,(V_0 - V_T), \qquad h &amp;lt; h_0,
\]&lt;/div&gt;
&lt;p&gt;with &lt;span class=&quot;arithmatex&quot;&gt;\(V_0 = 100\)&lt;/span&gt; kt and &lt;span class=&quot;arithmatex&quot;&gt;\(h_0 = 30{,}000\)&lt;/span&gt; ft. The final grid is 7 synthetic airspeeds × 3 altitudes × 3 symmetric-morphing settings = &lt;strong&gt;63 operating points&lt;/strong&gt;. At each one, the nonlinear model is trimmed and linearized; interpolating the family of linear models gives the LPV model.&lt;/p&gt;
&lt;p&gt;The grid is a trade-off: too coarse and the LPV model misses the nonlinearity, too fine and the synthesis becomes slow or infeasible. The only honest way to know it is dense enough is to compare the LPV model against the nonlinear simulation.&lt;/p&gt;
&lt;h2 id=&quot;controllers-on-top&quot;&gt;Controllers on top&lt;/h2&gt;
&lt;p&gt;On that model, the paper designs three layers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Control augmentation systems&lt;/strong&gt; that track normal acceleration, sideslip angle, and roll rate. The slow morphing actuator is handled inside the design through frequency-dependent weighting filters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilots&lt;/strong&gt; for airspeed, altitude, sideslip angle, and roll angle.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;nonlinear guidance law&lt;/strong&gt; for three-dimensional trajectory tracking: waypoints, a 2,000 ft orbit, a helical climb, and a spiral descent.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key property of a self-scheduled LPV controller is that its stability guarantee holds for &lt;strong&gt;arbitrarily fast&lt;/strong&gt; parameter variation, not just at the design points. Designing it means solving a hard optimization offline; running it is cheap, because the result is a gain-scheduled linear controller.&lt;/p&gt;
&lt;h2 id=&quot;what-happened-in-simulation&quot;&gt;What happened in simulation&lt;/h2&gt;
&lt;p&gt;The comparison that matters is against an &lt;span class=&quot;arithmatex&quot;&gt;\(H_\infty\)&lt;/span&gt; design with the same settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In a &lt;strong&gt;helical climb with extremely fast morphing&lt;/strong&gt;, the &lt;span class=&quot;arithmatex&quot;&gt;\(H_\infty\)&lt;/span&gt; controller&#x27;s oscillation grew until it diverged. The LPV controller kept tracking the path.&lt;/li&gt;
&lt;li&gt;In a &lt;strong&gt;spiral descent where the wing shape was scheduled on flight conditions&lt;/strong&gt;, the &lt;span class=&quot;arithmatex&quot;&gt;\(H_\infty\)&lt;/span&gt; loop lost stability even though the parameter changed gently. The LPV controller again held the trajectory.&lt;/li&gt;
&lt;li&gt;In the orbit, the &lt;span class=&quot;arithmatex&quot;&gt;\(H_\infty\)&lt;/span&gt; design also chattered from its aggressive high gains.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both controllers look fine at a fixed operating point. The difference only shows up &lt;em&gt;between&lt;/em&gt; operating points and &lt;em&gt;while&lt;/em&gt; the parameters move — which is exactly where a morphing aircraft spends its time.&lt;/p&gt;
&lt;h2 id=&quot;what-i-took-away-from-it&quot;&gt;What I took away from it&lt;/h2&gt;
&lt;p&gt;I now work on production ML rather than flight control, but a few habits from this project transfer directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Test the transitions, not just the points.&lt;/strong&gt; A model or controller validated only at fixed operating conditions can fail as soon as conditions move. The evaluation has to include the moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Give every variable one job.&lt;/strong&gt; Separating &quot;what describes the situation&quot; (&lt;span class=&quot;arithmatex&quot;&gt;\(\eta_s\)&lt;/span&gt;, airspeed, altitude) from &quot;what I get to act with&quot; (&lt;span class=&quot;arithmatex&quot;&gt;\(\eta_a\)&lt;/span&gt;, ailerons, rudder) made an over-actuated, coupled problem tractable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check the surrogate against the real thing.&lt;/strong&gt; The LPV controller is only as good as the LPV model&#x27;s match to the nonlinear one, so that comparison was part of the design loop, not a final checkbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pay compute up front.&lt;/strong&gt; Heavy optimization at design time bought a controller that costs almost nothing at run time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The open problem the paper ends on is choosing the &lt;em&gt;best&lt;/em&gt; shape online — a long span when lift is needed, a short one for a dash or a fast roll. With one morphing parameter it is a line search; with several, it becomes a real optimization problem that has to respect both flight conditions and guidance commands.&lt;/p&gt;
&lt;h2 id=&quot;code-and-paper&quot;&gt;Code and paper&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Paper: &lt;a href=&quot;https://doi.org/10.3390/s23063075&quot;&gt;Sensors 2023, 23(6), 3075&lt;/a&gt; (open access) · &lt;a href=&quot;../papers/2023-self-scheduled-lpv-asymmetric-morphing-uav.html&quot;&gt;paper page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dissertation: &lt;a href=&quot;../papers/2023-phd-dissertation-lpv-asymmetric-morphing.html&quot;&gt;Self-Scheduled Parameter-Varying Control of Asymmetric Variable-Span Morphing UAV&lt;/a&gt; (Seoul National University, 2023)&lt;/li&gt;
&lt;li&gt;Code: &lt;a href=&quot;https://github.com/jihoonlee91/morphing-uav-lpv-control&quot;&gt;&lt;code&gt;jihoonlee91/morphing-uav-lpv-control&lt;/code&gt;&lt;/a&gt; — MATLAB/Simulink, built on &lt;a href=&quot;https://github.com/nasa/GTM_DesignSim&quot;&gt;NASA GTM_DesignSim&lt;/a&gt; and LPVTools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Work done with Seong-Hun Kim, Hanna Lee, and Prof. Youdan Kim at the SNU Flight Dynamics and Control Lab, supported by the Ministry of Trade, Industry and Energy of Korea.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
</feed>
