SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/lib/examples/Control/GPC/TwoLinkGPC/TwoLinkGPC_desc.tex artifact 98eee8129d part of check-in c8773843ac
% -*-latex-*- Put EMACS into LaTeX-mode % Verbal description for system TwoLinkGPC (TwoLinkGPC_desc.tex) % Generated by MTT on Wed Apr 15 18:15:23 BST 1998. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %% Revision 1.1 1998/04/15 18:41:58 peterg % %% Initial revision % %% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The acausal bond graph of system \textbf{TwoLinkGPC} is displayed in Figure \Ref{TwoLinkGPC_abg} and its label file is listed in Section \Ref{sec:TwoLinkGPC_lbl}. The subsystems are listed in Section \Ref{sec:TwoLinkGPC_sub}. This example provides an illustration of nonlinear generalised predictive control (GPC) (continuous-time) operating on a twolink manipulator with a modified sensor. The sensor is modified in a rather contrived way to give a nonlinear system with an \emph{unstable} inverse. The idea is that the sensor approximates a pure delay of $\tau$ as: \begin{equation} e^{-s\tau} \approx 1 - s \tau \end{equation} The example contrasts GPC with GMV, which can also be interpreted as: \begin{itemize} \item the exact linearisation (by feedback) followed by a pole-placement design on the resulting linear system and \item a special case of generalised predictive control (GPC) were the prediction horizon is zero and the $P(s)$ polynomial is the same as the system relative degree and \end{itemize} The composite system of Figure \Ref{TwoLinkGPC_abg} has three (visible) parts: \begin{enumerate} \item a linear decoupled \emph{specification} system that describes the desired closed-loop system in terms of a physical system (two decoupled mass-spring-damper systems), \item the system itself (a two-link manipulator) representing the system to be controlled, more details are given in Sections \Ref{sec:TwoLinkP_ode.tex} and \Ref{sec:TwoLinkP_rfe.tex}. \item a model of the system with additional state inputs to be used as a state observer. \end{enumerate} The invisible parts are implemented in the text file ``TwoLinkGPC\_input.txt'' (see Section \Ref{sec:TwoLinkGPC_input.txt}). These parts are: \begin{itemize} \item the reference signal (joint angles) \begin{equation} w(t) = \begin{cases} \begin{pmatrix} \pi \\ 0 \end{pmatrix} & 0 \ge t > 10 \\ \begin{pmatrix} 2\pi \\ 0 \end{pmatrix} & 10 \ge t > 15 \\ \begin{pmatrix} 2\pi \\ \pi \end{pmatrix} & 15 \ge t > 30 \\ \end{cases} \end{equation} \item The control signal (joint torques) being the solution of \begin{equation} \phi^*(t) = O_o(\hat x(t)) + O_h(\hat x(t)) u(t) = w(t) \end{equation} where $\hat x$ is the observed state. \item The observer feedback signal \begin{equation} u_x = K ( y - \hat y) \end{equation} where $K$ is the observer gain matrix and $y$ and $\hat y$ are the system and model outputs respectively. \end{itemize} The observer gain is set up on the basis of the \emph{linearised} system using LQ theory. This is implemented in the text file ``TwoLinkGPC\_state.txt'' (see Section \Ref{sec:TwoLinkGPC_state.txt}) using the Octave function ``lqe'' together with the MTT-generated linearised system ``TwoLink\_sm''. The system was simulated using Octave under MTT with the results given in Figures \Ref{fig:TwoLinkGPC_odeso.ps-TwoLinkGPC-Theta-1,TwoLinkGPC-Theta-1-r} and \Ref{fig:TwoLinkGPC_odeso.ps-TwoLinkGPC-Theta-2,TwoLinkGPC-Theta-2-r} giving the actual and specification angles for joints 1 and 2 respectively. The initial \emph{system} state was zero except that the angle of the first rod was $\frac{\pi}{4}$. The initial \emph{observer} state was (erroneously but deliberately) set at zero. This explains the (decaying) discrepancy between the actual and specification angles. Simulations with zero initial state gave precise matching. %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: