We describe an elementary algorithm to build convex inner approximations of
nonconvex sets. Both input and output sets are basic semialgebraic sets given
as lists of defining multivariate polynomials. Even though no optimality
guarantees can be given (e.g. in terms of volume maximization for bounded
sets), the algorithm is designed to preserve convex boundaries as much as
possible, while removing regions with concave boundaries. In particular, the
algorithm leaves invariant a given convex set. The algorithm is based on
Gloptipoly 3, a public-domain Matlab package solving nonconvex polynomial
optimization problems with the help of convex semidefinite programming
(optimization over linear matrix inequalities, or LMIs). We illustrate how the
algorithm can be used to design fixed-order controllers for linear systems,
following a polynomial approach