Motor Controller A block diagram for the motor with a feedback controller is shown below A few things to note 1. In this modeling problem, there is no established method or set of criteria for selecting your new poles. You always want to stabilize a system, as needed. For more refined criteria, we had one possible method in the previous homework. That is one example of a number of methods that you could apply. You will encounter such additional pole placement methods if you take additional courses in control theory. Barring having specific criteria, it is perfectly acceptable to use trial and error to select poles (eigenvalues) for this modeling problem. 2. We have only done minimal interpretation of the feedback gain matrix K. You should certainly be able to recognize that larger numerical values in the K matrix imply larger gains, which imply more physical effort/energy/power from the actual feedback part of the system, if you were to build it. You can also gain insight into what the elements of K might mean by performing a unit analysis of the physical meaning of the state variables and the element in K that multiples each state variable. 3. For this motor problem, the original motor system has an eigenvalue of 0. This implies a behavior, for that mode, of xi(0)e 0t = xi(0) = constant. This is how you get constant velocity for normal operation of a motor! If you remove this 0 eigenvalue in your new pole selection, then you make all modes have exponential decay
meaning there is no constant velocity, but rather a velocity of 0 which means the motor is now operating as a servo. This is fine, if this is what you want, but you do need to be aware of this fact. a. This is to say that if you remove the 0 (zero) eigenvalue from the closedloop system behavior, then you make the motor behave as a servo, with the motor rotor being moved to a new position and then stopping (so, the velocity goes to 0). 4. Note that you do need to confirm that a system is controllable before you go ahead and build and implement a feedback controller. The behavior of the motor with and without the feedback controller is shown in the graphs below. With new (somewhat arbitrary, with some trial and error) system poles selection (for the matrix (A BK)) and the calculation of the K matrix as shown below, we see the motor velocity reach its asymptotic value more quickly than without the controller. poles = [0-1 -2]; K = place(a, B, poles) Figure 1: Open-loop motor behavior Figure 2: Closed-loop motor behavior
Servo Behavior With poles defined, for example, as: poles = [-0.5-1 -2]; % -> removing 0 eigenvalue the motor behaves as a servo, as shown below. The velocity increases in response to the input, to move the motor shaft to the new, desired position, and then the current and the velocity drop (decay as dictated by the new poles) to zero, and the motor remains in the position. Figure 3: Motor behavior with feedback control and no 0 eigenvalue
Motor Controller Design, with Observer (expanding upon work above) To add an observer (or state estimator) to the motor model, insert it into the closed-loop control feedback loop between the output of the motor (theta) and the input to the feedback gain matrix, K. o The observer takes the system input and output ( U and Y ) as inputs, reconstructs the original system matrices, and creates a dynamic estimate of the state vector. o The observer is a dynamic system all unto itself with the error (the difference between the actual output and the estimated output) as the dynamic variable. I have split the state vector into its three components in the model you do not need to do this. I have also added noise into the output signal you definitely do not need to do this. Finally (you also do not need to do this), to have some initial difference between the actual and estimated state vector I gave the actual state variable of theta a nonzero initial condition, and used the conventional x0 hat = 0 for the observer estimates of the state variables.
The behavior of the observer is shown in the plots below. The first two plots show the system behavior without any noise. The second two show the system behavior with noise added to the output observations and non-zero initial condition for the rotor position. With no noise and zero initial conditions, the observer is able to create a perfect estimate of the states. This is shown in the first two figures below. Next noise is added to the system output observations and the rotor is given a non-zero initial condition. The second two plots below show the system behavior under these conditions, and in particular show that the state estimates do track the actual states, but with the amount of noise I have added into the output observations, and the system continuing to evolve, my estimator is never quite able to perfectly estimate the state vector.
Figs 1 & 2: Perfect state vector estimates under perfect information
Figs. 3 & 4: Motor behavior with theta_init > 0, and with noise in the output observations