%% Design LQG Tracker Using Control System Designer
% This example shows how to use LQG synthesis to design a feedback controller
% for a disk drive read/write head using Control System Designer.
%
% For details about the system and model, see Chapter 14 of "Digital
% Control of Dynamic Systems," by Franklin, Powell, and Workman.
%
% Copyright 2005-2007 The MathWorks, Inc.

%% Disk Drive Model
% Below is a picture of the system to be modeled.
%
% <<../diskdemofigures_01.png>>

%% 
% The model input is the current driving the voice coil motor, and the
% output is the position error signal (PES, in % of track width). To learn
% more about the 10th order model, see
% <docid:control_ug.example-ex80174185 Digital Servo Control of a Hard-Disk Drive>. The plant includes a small
% time delay. For the purpose of this example, ignore this delay.
load diskdemo
Gr = tf(1e6,[1 12.5 0]);
Gf1 = tf(w1*[a1 b1*w1],[1 2*z1*w1 w1^2]); % first  resonance
Gf2 = tf(w2*[a2 b2*w2],[1 2*z2*w2 w2^2]); % second resonance
Gf3 = tf(w3*[a3 b3*w3],[1 2*z3*w3 w3^2]); % third  resonance
Gf4 = tf(w4*[a4 b4*w4],[1 2*z4*w4 w4^2]); % fourth resonance
G = (ss(Gf1)+Gf2+Gf3+Gf4) * Gr;     % convert to state space for accuracy

%% Design Overview
% In this example, design a full-ordered LQG tracker, which places the
% read/write head at the correct position. Tune the LQG tracker to achieve
% specific performance requirements and reduce the controller order as much
% as possible. For example, turn the LQG tracker into a PI controller
% format.

%% Open Control System Designer
% Open Control System Designer, importing the plant model.
%
%  controlSystemDesigner(G)
%

%%
% By default, Control System Designer displays the step response of the
% closed-loop system along with Bode and root locus graphical editors
% for the open-loop response.
%%
% Maximize the step response. Double-click the *IOTransfer_r2y: step* plot
% tab. Details about how to use the Control System Designer are described
% in <docid:control_ug.bu8ovi_ Getting Started with the Control System Designer>.

%%
% <<../autotune_csd_plots_init.PNG>>
%
%%
% The default unity gain compensator produces a stable closed-loop
% system with large oscillations.

%% Design a Full-Order LQG Tracker
% Click *Tuning Methods*, and select *LQG Synthesis*.
%%
% <<../autotune_tuningmethods_dropdown.PNG>>
%
%%
% In the LQG Synthesis dialog box, in the *Specifications* section, set
% requirements on the controller performance:
%
% * *Controller response* - Specify the controller transient behavior. You
% can make the controller more aggressive at disturbance rejection or more
% robust against plant uncertainty. If you believe your model is accurate
% and that the manipulated variable has a large enough range, an aggressive
% controller is preferable.
% * *Measurement noise* - Specify an estimate of the level of output
% measurement noise for your application. To produce a more robust
% controller, specify a larger noise estimate.
% * *Desired controller order* - Specify your controller order preference.  
%
%%
% Use default slider settings as the initial controller design.
%
% <<../autotune_cetm_LQG.PNG>>

%%
% Click *Update Compensator*. The new *Compensator* is displayed, and the
% step response updates.

%%
% <<../autotune_csd_plots_LQG.PNG>>

%%
% To design a more aggressive controller, move the *Controller response* slider 
% to the far left. The more aggressive controller reduces the overshoot by 50% and reduces the settling
% time by 70%.
%
% <<../autotune_csd_plots_LQG_FullAgg.PNG>>
%

%% Design a Reduced-Order LQG Tracker
% To create a PI controller, reset the *Controller response* slider to the
% middle default value, and set the *Desired controller order* to |1|.
%
% <<../autotune_cetm_LQG_RedAggSISO.PNG>>

%%
% Click *Update Compensator*.
%
% <<../autotune_csd_plots_LQG_RedAgg.PNG>>

%%
% This controller produces a heavily oscillating closed-loop system. To
% make the controller less aggressive, move the *Controller response*
% slider to the right.
%
% <<../autotune_cetm_LQG_RedRobSISO.PNG>> 

%%
% Click *Update Compensator*.
%
% <<../autotune_csd_plots_LQG_RedRob.PNG>>

%%
% The step response shows that the PI controller design provides a good
% starting point for optimization-based design. For more information, see
% <docid:control_ug.bu8ovi_ Getting Started with the Control System Designer>.
