**Please report any problems to Gilles Ferreres (ferreres@onera.fr).**

As a main drawback for practitioners, many control design techniques account for a given set of design specifications only in an indirect way, so that it often appears difficult to satisfy them without a large amount of tuning. It appears even more difficult to check their feasibility, and more generally to explore the necessary trade-offs between these specifications, especially when a non-convex optimization problem is to be solved: nothing can be concluded if the solver does not succeed in satisfying the constraints, i.e. the design specifications, since only a local optimum is obtained. The global optimum may satisfy them, or not.

In this context, a two-step solution was proposed by Boyd and Barrat for the control of an LTI model. The first step is to build a Youla parameterization of all stabilizing controllers, on the basis of on initial stabilizing controller possibly under an observed state feedback form. Next, a Youla parameter $Q(s)$ is computed so as to satisfy the design specifications. Last, the feedback controller is deduced as a combination of the initial stabilizing controller and of the optimized $Q(s)$.

As a crucial point, computing the Youla parameter reduces to a convex optimization problem, where the minimization objective and constraints directly correspond to the closed loop time- or frequency-domain design specifications. Since the whole set of stabilizing controllers is handled, this enables to check their feasibility, and more generally to explore the necessary trade-offs between these specifications.

Extending this valuable method to the gain-scheduled and nonlinear cases needs to solve two different problems. First, when extending the Youla-parameterization technique, the main point is to determine if the whole set of stabilizing controllers is obtained. Second, when designing the Youla parameter, the issue is to obtain a convex optimization problem, as in the original LTI case. This is indeed the case when LTI design specifications are to be satisfied on a set of LTI models corresponding to a continuum of trim points or to a trajectory of the nonlinear plant. But this is (much) less obvious in the other cases, especially in the case of a fully nonlinear plant.

The case of an LTI model is considered first. A cutting planes frequency-domain solver is especially developed, for the convex design of a Youla parameter satisfying time-and frequency-domain specifications. This solver is especially suited to the case of high order models, for which state-space solutions cannot be used. The method is applied to the lateral control of a flexible aircraft. The initial observed state feedback controller is designed using a LQ/modal technique. The Youla parameter is computed with the cutting planes solver, and the trade-off between the two design specifications is studied.

The case of an LFT model is considered next, with an application to a nonlinear missile example. One focuses on the case of an LFT model describing LTI models corresponding to a continuum of trim points, parameterized as a function of time invariant scheduling parameters. Thus, the design specifications are to be satisfied on the continuum of LTI models. The initial observed state feedback LFT controller is designed using a (multi-model) polytopic technique extended to the gain-scheduled case, and validated with a $\mu$ analysis technique. In the same way, the Youla parameter is designed on a gridding of models, and this multi-model design is validated on the continuum using $\mu$ analysis.

- You are free to use any of the files for personal or academic use. The express permission of the authors is required for any commercial use.
- You can redistribute the files without modification provided that it is for a non commercial purpose. Redistribution in any commercial form including CD-ROM or any other media is hereby forbidden, unless with the express written permission of the authors. Any of your software developments related to this download will be available under similar license conditions.
- Neither the authors nor ONERA accept any responsibility or liability with regard to this software that is licensed on an "as is" basis. There will be no duty on authors or ONERA to correct any errors or defects in the software.

Generalities and results of the convex control design technique can be found in the files slides_convex_synthesis.pdf and report_convex_synthesis.pdf. The documentation of the CCD Toolbox is CCD-doc.pdf

Two versions of the CCD Toolbox are proposed below. The first one, in CCD_v1.zip, is intended to be used with old Matlab versions (it was tested with Matlab2010b !). The standard Matlab routine linprog.m is used to solve the successive LP problems, in the context of the frequency domain cutting planes solver. The second version of the CCD Toolbox, in CCD_v2_Matlab2016b.zip, is adjusted to Matlab2016b.

As a major change, the routine linprog.m was modified by Matlab, and the new version seems not to work ! When using the flexible airplane demo file, The LP solver indicates that the successive LP problems are not feasible, although they are. A first solution is to use quadprog.m, which works to a large extent (!). Nevertheless, only an interior point method is used in the Matlab2016b versions of quadprog.m and linprog.m, so that it is not possible to introduce an initial point. However, since a series of LP problems is solved, a large amount of computation time can be saved if an initial point is used. In this context, a second better solution is to use the Simulink routine simlp.m, which solves LP problems and accounts for an initial point.

A new routine lq_qp_new.m is available in the directory Routines_CCD. The LP problems are solved inside this open routine, which enables the choice of the LP solver (linprog.m, quadprog.m, simlp.m). The default choice is simlp.m An alternative LP solver may also be introduced by the user.

Last, a new updated version of the mu analysis routine mu_marg.p is introduced in the Matlab 2016b version of the Toolbox.

Thanks to James Guthrie for reporting the problems with Matlab 2016b !