comparison m-toolbox/html_help/help/ug/ssm_simulation.html @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:f0afece42f48
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
3
4 <html lang="en">
5 <head>
6 <meta name="generator" content=
7 "HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org">
8 <meta http-equiv="Content-Type" content=
9 "text/html; charset=us-ascii">
10
11 <title>Simulations (LTPDA Toolbox)</title>
12 <link rel="stylesheet" href="docstyle.css" type="text/css">
13 <meta name="generator" content="DocBook XSL Stylesheets V1.52.2">
14 <meta name="description" content=
15 "Presents an overview of the features, system requirements, and starting the toolbox.">
16 </head>
17
18 <body>
19 <a name="top_of_page" id="top_of_page"></a>
20
21 <p style="font-size:1px;">&nbsp;</p>
22
23 <table class="nav" summary="Navigation aid" border="0" width=
24 "100%" cellpadding="0" cellspacing="0">
25 <tr>
26 <td valign="baseline"><b>LTPDA Toolbox</b></td><td><a href="../helptoc.html">contents</a></td>
27
28 <td valign="baseline" align="right"><a href=
29 "ssm_assemble.html"><img src="b_prev.gif" border="0" align=
30 "bottom" alt="Assembling systems"></a>&nbsp;&nbsp;&nbsp;<a href=
31 "TransferFunction_model.html"><img src="b_next.gif" border="0" align=
32 "bottom" alt="Transfer Function Modelling"></a></td>
33 </tr>
34 </table>
35
36 <h1 class="title"><a name="f3-12899" id="f3-12899"></a>Simulations</h1>
37 <hr>
38
39 <p>
40 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
41 <HTML>
42 <HEAD>
43 <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
44 <TITLE></TITLE>
45 <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.1 (Win32)">
46 <META NAME="CREATED" CONTENT="0;0">
47 <META NAME="CHANGEDBY" CONTENT="Adrien G">
48 <META NAME="CHANGED" CONTENT="20090827;18204600">
49 </HEAD>
50 <BODY LANG="en-US" DIR="LTR">
51 <P>The function simulate can use ssm object to produce simulations.
52 </P>
53 <H2>Simulation example.
54 </H2>
55 <P>The following closed loop system is built.
56 </P>
57 <DIV CLASS="fragment"><PRE><FONT SIZE=2>&gt;&gt; sys = ssm(plist(</FONT><FONT COLOR="#a020f0">'built-in'</FONT>, <FONT COLOR="#a020f0">'standard_system_params'</FONT>, <FONT COLOR="#a020f0">'setnames'</FONT>, {<FONT COLOR="#a020f0">'W'</FONT> <FONT COLOR="#a020f0">'C'</FONT>}, <FONT COLOR="#a020f0">'setvalues'</FONT>, [-0.2 -0.5]));
58 &gt;&gt; sys.modifTimeStep(0.01);
59 <FONT SIZE=2>&gt;&gt; sys.duplicateInput(</FONT><FONT COLOR="#a020f0">'U'</FONT>,<FONT COLOR="#a020f0">'Negative Bias'</FONT>);
60 &gt;&gt; controller = ssm(plist( <FONT COLOR="#0000ff">...</FONT>
61 <FONT COLOR="#a020f0">'amats'</FONT><FONT COLOR="#000000">,cell(0,0), </FONT><FONT COLOR="#a020f0">'bmats'</FONT><FONT COLOR="#000000">,cell(0,1), </FONT><FONT COLOR="#a020f0">'cmats'</FONT><FONT COLOR="#000000">,cell(1,0), </FONT><FONT COLOR="#a020f0">'dmats'</FONT><FONT COLOR="#000000">,{-1}, </FONT><FONT COLOR="#0000ff">...</FONT>
62 <FONT COLOR="#a020f0">'timestep'</FONT><FONT COLOR="#000000">,0.01, </FONT><FONT COLOR="#a020f0">'name'</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#a020f0">'controller'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'params'</FONT><FONT COLOR="#000000">,plist, </FONT><FONT COLOR="#0000ff">...</FONT>
63 <FONT COLOR="#a020f0">'statenames'</FONT><FONT COLOR="#000000">,{}, </FONT><FONT COLOR="#a020f0">'inputnames'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'Y'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'outputnames'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'U'</FONT><FONT COLOR="#000000">} ));</FONT>
64 ------ ssm/1 -------
65 amats: { [2x2] } [1x1]
66 mmats: { [2x2] } [1x1]
67 bmats: { [2x2] [2x1] } [1x2]
68 cmats: { [1x2]
69 [1x2] } [2x1]
70 dmats: { [1x2] []
71 [1x2] [] } [2x2]
72 timestep: 0.01
73 inputs: [1x2 ssmblock]
74 1 : N | Fn [kg m s^(-2)], On [m]
75 2 : Negative Bias | Fu [kg m s^(-2)]
76 states: [1x1 ssmblock]
77 1 : standard test system | x [m], xdot [m s^(-1)]
78 outputs: [1x2 ssmblock]
79 1 : Y | y [m]
80 2 : U | U &gt; 1 []
81 params: (empty-plist) [1x1 plist]
82 version: $Id: ssm_simulation_content.html,v 1.3 2009/08/28 14:20:07 adrien Exp $
83 Ninputs: 2
84 inputsizes: [2 1]
85 Noutputs: 2
86 outputsizes: [1 1]
87 Nstates: 1
88 statesizes: 2
89 Nparams: 0
90 isnumerical: true
91 hist: ssm.hist [1x1 history]
92 procinfo: (empty-plist) [1x1 plist]
93 plotinfo: (empty-plist) [1x1 plist]
94 name: assembled( standard_system_params + controller))
95 description:
96 mdlfile:
97 UUID: 163d7103-063b-4a57-af7e-b08d22fe42c1
98 --------------------</PRE></DIV><P>
99 Then we wish to use the inputs of N for a correlated force noise and
100 measurement noise, &ldquo;Negative Bias&rdquo; for a sinewave, and
101 there will be an observation DC offset.</P>
102 <P>We want as an output the controller output &ldquo;U&rdquo; and the
103 sensor output &ldquo;y&rdquo;.</P>
104 <DIV CLASS="fragment"><PRE>&gt;&gt; ao1 = ao(plist(<FONT COLOR="#a020f0">'FCN'</FONT>,<FONT COLOR="#a020f0">'sin(0:0.01:100)'</FONT>));
105 <FONT COLOR="#000000">&gt;&gt; ao_out = sysCL.simulate( plist(</FONT><FONT COLOR="#0000ff">...</FONT>
106 <FONT COLOR="#a020f0"> 'NOISE VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'Fn'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'On'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'COVARIANCE'</FONT><FONT COLOR="#000000">, [1 0.1 ; 0.1 2] , </FONT><FONT COLOR="#0000ff">...</FONT>
107 <FONT COLOR="#a020f0"> 'AOS VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'Fu'</FONT><FONT COLOR="#000000">} ,</FONT><FONT COLOR="#a020f0">'AOS'</FONT><FONT COLOR="#000000">, ao1 ,</FONT><FONT COLOR="#0000ff">...</FONT>
108 <FONT COLOR="#a020f0"> 'CONSTANT VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'On'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'CONSTANTS'</FONT><FONT COLOR="#000000">, 35, </FONT><FONT COLOR="#0000ff">...</FONT>
109 <FONT COLOR="#a020f0"> 'RETURN STATES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'x'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'RETURN OUTPUTS'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'y'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'U &gt; 1'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#0000ff">...</FONT>
110 <FONT COLOR="#a020f0"> 'SSINI'</FONT><FONT COLOR="#000000"> , {[100;3]}, </FONT><FONT COLOR="#a020f0">'TINI'</FONT><FONT COLOR="#000000">, 0));</FONT>
111 &gt;&gt; iplot(ao_out([1, 2, 3]));</PRE></DIV><P>
112 <IMG SRC="images/simulate.png" NAME="images1" ALIGN=LEFT WIDTH=567 HEIGHT=454 BORDER=0><BR CLEAR=LEFT>It
113 turns out the system output (blue) is not much like the state (red),
114 causing the control (green) to waste a lot of energy. The state is
115 not experimentally available, but might be obtained through
116 filtering. The kalman method is so far the only filtering method
117 implemented in the toolbox.</P>
118 <DIV CLASS="fragment"><PRE><FONT COLOR="#000000">&gt;&gt; ao_est = sysCL.kalman( plist(</FONT><FONT COLOR="#0000ff">...</FONT>
119 <FONT COLOR="#a020f0"> 'NOISE VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'Fn'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'On'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'COVARIANCE'</FONT><FONT COLOR="#000000">, [1 0.1 ; 0.1 2] , </FONT><FONT COLOR="#0000ff">...</FONT>
120 <FONT COLOR="#a020f0"> 'AOS VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'Fu'</FONT><FONT COLOR="#000000">} ,</FONT><FONT COLOR="#a020f0">'AOS'</FONT><FONT COLOR="#000000">, ao1 ,</FONT><FONT COLOR="#0000ff">...</FONT>
121 <FONT COLOR="#a020f0"> 'CONSTANT VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'On'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'CONSTANTS'</FONT><FONT COLOR="#000000">, 35, </FONT><FONT COLOR="#0000ff">...</FONT>
122 <FONT COLOR="#a020f0"> 'OUTPUT VARIABLE NAMES'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'y'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'OUTPUTS'</FONT><FONT COLOR="#000000"> , ao_out(2), </FONT><FONT COLOR="#0000ff">...</FONT>
123 <FONT COLOR="#a020f0"> 'RETURN STATES'</FONT><FONT COLOR="#000000">, 1, </FONT><FONT COLOR="#a020f0">'RETURN OUTPUTS'</FONT><FONT COLOR="#000000">, 1 ));</FONT>
124 &gt;&gt; iplot(ao_out(2), ao_est(1), ao_out(1))</PRE></DIV><P>
125 <IMG SRC="images/kalman.png" NAME="images2" ALIGN=LEFT WIDTH=567 HEIGHT=454 BORDER=0><BR CLEAR=LEFT>In
126 this example the estimate (blue) of the state (green) is
127 satisfactory. It leads us to think that such a filter should be used
128 to provide with the input of the controller.
129 </P>
130 <P>However, the DC offset correction by the kalman filter is one
131 information that is not available under usual circumstances.
132 </P>
133 <P><BR><BR>
134 </P>
135 <P STYLE="margin-bottom: 0cm"><BR>
136 </P>
137 <P STYLE="margin-bottom: 0cm"><BR>
138 </P>
139 <P><BR><BR>
140 </P>
141 </BODY>
142 </HTML>
143 </p>
144
145 <br>
146 <br>
147 <table class="nav" summary="Navigation aid" border="0" width=
148 "100%" cellpadding="0" cellspacing="0">
149 <tr valign="top">
150 <td align="left" width="20"><a href="ssm_assemble.html"><img src=
151 "b_prev.gif" border="0" align="bottom" alt=
152 "Assembling systems"></a>&nbsp;</td>
153
154 <td align="left">Assembling systems</td>
155
156 <td>&nbsp;</td>
157
158 <td align="right">Transfer Function Modelling</td>
159
160 <td align="right" width="20"><a href=
161 "TransferFunction_model.html"><img src="b_next.gif" border="0" align=
162 "bottom" alt="Transfer Function Modelling"></a></td>
163 </tr>
164 </table><br>
165
166 <p class="copy">&copy;LTP Team</p>
167 </body>
168 </html>