18.08.2013 Views

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Appendice C<br />

Codice MATLAB<br />

C.1 Soluzione dell'equazione di Riccati<br />

Per poter generare i guadagni necessari al funzionamento del predittore di<br />

Kalman è indispensabile risolvere l'equazione di Riccati, come descritto nel<br />

capitolo 2.5.5. MATLAB dispone di un solutore per questo tipo di equazione, ma<br />

che non funziona correttamente quando gli autovalori della matrice A sono troppo<br />

vicini alla regione di instabilità. Una tecnica generale per la soluzione<br />

dell'equazione è quella di utilizzare il metodo iterativo descritto nello stesso<br />

capitolo. Il codice MATLAB che svolge questa operazione è il seguente:<br />

function [P, out_eps, nout] = riccati(P0, A, B, C, Q, R, eps, nin)<br />

% riccati.m try to solve the Riccati's equation<br />

% with an iterative method<br />

% [P, out_eps, nout] = riccati(P0, A, B, C, Q, R, eps, nin)<br />

% solve the Riccati's equation in the form:<br />

% -1<br />

% P(k+1) = A P(k) A' + B Q B' - A P(k) C' * (C P(k) C' + R) *<br />

% C P(k) A'<br />

% eps = desired precision<br />

% nin = max iteration number<br />

% out_eps = precision reached<br />

% nout = number of iteration performed<br />

204

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!