|
1 | | -% This script is used to plot the robustness of the source-seeking |
2 | | -% algorithms to fields with increasing condition number |
| 1 | +%--------------------------------------------------------------------------------------------------- |
| 2 | +% For Paper |
| 3 | +% "Robust Performance Analysis of Source-Seeking Dynamics with Integral Quadratic Constraints" |
| 4 | +% by Adwait Datar and Herbert Werner |
| 5 | +% Copyright (c) Institute of Control Systems, Hamburg University of Technology. All rights reserved. |
| 6 | +% Licensed under the GPLv3. See LICENSE in the project root for license information. |
| 7 | +% Author(s): Adwait Datar |
| 8 | +%--------------------------------------------------------------------------------------------------- |
| 9 | +% This script is used to generate data and plot the results for the LPV |
| 10 | +% examples presented in Fig. 8 and Fig. 9 in the above paper. |
| 11 | + |
| 12 | + |
3 | 13 | close all |
4 | 14 | clear |
5 | 15 | clc |
|
11 | 21 | m=1; % lower bound on the sector |
12 | 22 |
|
13 | 23 | % Optimization tolerences |
14 | | -tolerences.cvx_tol=1e-3; |
15 | | -tolerences.bisect_tol=1e-3; |
16 | | -tolerences.cond_tol=1e8; |
| 24 | +tolerences.cvx_tol=1e-3; % Tolerence for definiteness in LMIs |
| 25 | +tolerences.bisect_tol=1e-3; % Tolerence in alpha for the bisect-algorithm |
| 26 | +tolerences.cond_tol=1e8; % Tolerence for bounding the cond no of positive def variables |
17 | 27 |
|
18 | 28 |
|
19 | 29 | for eg=1:2 |
|
46 | 56 | % Quadrotor dynamics |
47 | 57 | addpath(genpath('..\vehicles\quadrotor')) |
48 | 58 | addpath(genpath('..\vehicles\LPV_models')) |
49 | | - kp=[1,1]; |
50 | | - kd=[5,5]; |
| 59 | + kp=[1,1]; kd=[5,5]; % Pre-filter gains |
51 | 60 | mass=[0.2,2]; |
52 | 61 | L=1:0.5:10; % Upper bound on the sector |
53 | 62 | n_L=length(L); |
|
58 | 67 | save_folder='.\data_quadrotor'; |
59 | 68 | end |
60 | 69 |
|
61 | | - % Multiplier class |
62 | | - % Select a multiplier class from the following choices |
63 | | - % 1. Circle criterion |
64 | | - % 2. Full block circle criterion |
65 | | - % 3. Zames Falb multipliers |
| 70 | + % Run the analysis for different cases defined in the multiplier structure |
| 71 | + % with the following properties: |
| 72 | + |
| 73 | + % id: |
| 74 | + % This determines the kind of multiplier used with the following choices |
| 75 | + % 1. Circle criterion |
| 76 | + % 6. Zames Falb multipliers with analysis LMIs for LTI systems |
| 77 | + % 7. Zames Falb multipliers with analysis LMIs for LPV systems |
| 78 | + |
| 79 | + % rho: |
| 80 | + % This is valid only for Zames Falb multipliers and is the pole location |
| 81 | + % for the basis functions parameterizing the multiplier |
| 82 | + |
| 83 | + % psi_order: |
| 84 | + % This is valid only for Zames Falb multipliers and is the order of the |
| 85 | + % multiplier that is being searched over |
| 86 | + |
| 87 | + % odd_flag: |
| 88 | + % This is valid only for Zames Falb multipliers and is set to one if the |
| 89 | + % non-linearity under consideration is odd and is set to 0 otherwise |
| 90 | + |
| 91 | + % causal_flag: |
| 92 | + % This is valid only for Zames Falb multipliers. It should be set to 1 if |
| 93 | + % restricting the search to causal multipliers, set to -1 is restricting |
| 94 | + % the search to anti-causal multipliers and set to 0 is searching over |
| 95 | + % general non-causal multipliers which includes causal and non-causal |
| 96 | + % parts. |
| 97 | + |
66 | 98 | multiplier_flag=[70,71,69,702,703,704,705]; |
67 | 99 | for i=1:7 |
68 | 100 | switch multiplier_flag(1,i) |
|
137 | 169 | plot_data |
138 | 170 | end |
139 | 171 | %% Functions |
| 172 | +function [alpha_best]=sweep_L(G_veh,m,L,alpha_lims,tolerences,multiplier_class) |
140 | 173 | % This functions sweeps L and finds the best covergence rate estimate by |
141 | 174 | % running a bisection algorithm for each fixed L |
142 | | -function [alpha_best]=sweep_L(G_veh,m,L,alpha_lims,tolerences,multiplier_class) |
143 | 175 | n_L=size(L,2); |
144 | 176 | alpha_best=zeros(1,n_L); |
145 | 177 | for j=1:n_L |
|
0 commit comments