comparison m-toolbox/html_help/help/ug/ssm_simulation_content.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.0 Transitional//EN">
2 <HTML>
3 <HEAD>
4 <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
5 <TITLE></TITLE>
6 <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.1 (Win32)">
7 <META NAME="CREATED" CONTENT="0;0">
8 <META NAME="CHANGEDBY" CONTENT="Adrien G">
9 <META NAME="CHANGED" CONTENT="20090827;18204600">
10 </HEAD>
11 <BODY LANG="en-US" DIR="LTR">
12 <P>The function simulate can use ssm object to produce simulations.
13 </P>
14 <H2>Simulation example.
15 </H2>
16 <P>The following closed loop system is built.
17 </P>
18 <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]));
19 &gt;&gt; sys.modifTimeStep(0.01);
20 <FONT SIZE=2>&gt;&gt; sys.duplicateInput(</FONT><FONT COLOR="#a020f0">'U'</FONT>,<FONT COLOR="#a020f0">'Negative Bias'</FONT>);
21 &gt;&gt; controller = ssm(plist( <FONT COLOR="#0000ff">...</FONT>
22 <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>
23 <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>
24 <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>
25 ------ ssm/1 -------
26 amats: { [2x2] } [1x1]
27 mmats: { [2x2] } [1x1]
28 bmats: { [2x2] [2x1] } [1x2]
29 cmats: { [1x2]
30 [1x2] } [2x1]
31 dmats: { [1x2] []
32 [1x2] [] } [2x2]
33 timestep: 0.01
34 inputs: [1x2 ssmblock]
35 1 : N | Fn [kg m s^(-2)], On [m]
36 2 : Negative Bias | Fu [kg m s^(-2)]
37 states: [1x1 ssmblock]
38 1 : standard test system | x [m], xdot [m s^(-1)]
39 outputs: [1x2 ssmblock]
40 1 : Y | y [m]
41 2 : U | U &gt; 1 []
42 params: (empty-plist) [1x1 plist]
43 version: $Id: ssm_simulation_content.html,v 1.3 2009/08/28 14:20:07 adrien Exp $
44 Ninputs: 2
45 inputsizes: [2 1]
46 Noutputs: 2
47 outputsizes: [1 1]
48 Nstates: 1
49 statesizes: 2
50 Nparams: 0
51 isnumerical: true
52 hist: ssm.hist [1x1 history]
53 procinfo: (empty-plist) [1x1 plist]
54 plotinfo: (empty-plist) [1x1 plist]
55 name: assembled( standard_system_params + controller))
56 description:
57 mdlfile:
58 UUID: 163d7103-063b-4a57-af7e-b08d22fe42c1
59 --------------------</PRE></DIV><P>
60 Then we wish to use the inputs of N for a correlated force noise and
61 measurement noise, &ldquo;Negative Bias&rdquo; for a sinewave, and
62 there will be an observation DC offset.</P>
63 <P>We want as an output the controller output &ldquo;U&rdquo; and the
64 sensor output &ldquo;y&rdquo;.</P>
65 <DIV CLASS="fragment"><PRE>&gt;&gt; ao1 = ao(plist(<FONT COLOR="#a020f0">'FCN'</FONT>,<FONT COLOR="#a020f0">'sin(0:0.01:100)'</FONT>));
66 <FONT COLOR="#000000">&gt;&gt; ao_out = sysCL.simulate( plist(</FONT><FONT COLOR="#0000ff">...</FONT>
67 <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>
68 <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>
69 <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>
70 <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>
71 <FONT COLOR="#a020f0"> 'SSINI'</FONT><FONT COLOR="#000000"> , {[100;3]}, </FONT><FONT COLOR="#a020f0">'TINI'</FONT><FONT COLOR="#000000">, 0));</FONT>
72 &gt;&gt; iplot(ao_out([1, 2, 3]));</PRE></DIV><P>
73 <IMG SRC="images/simulate.png" NAME="images1" ALIGN=LEFT WIDTH=567 HEIGHT=454 BORDER=0><BR CLEAR=LEFT>It
74 turns out the system output (blue) is not much like the state (red),
75 causing the control (green) to waste a lot of energy. The state is
76 not experimentally available, but might be obtained through
77 filtering. The kalman method is so far the only filtering method
78 implemented in the toolbox.</P>
79 <DIV CLASS="fragment"><PRE><FONT COLOR="#000000">&gt;&gt; ao_est = sysCL.kalman( plist(</FONT><FONT COLOR="#0000ff">...</FONT>
80 <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>
81 <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>
82 <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>
83 <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>
84 <FONT COLOR="#a020f0"> 'RETURN STATES'</FONT><FONT COLOR="#000000">, 1, </FONT><FONT COLOR="#a020f0">'RETURN OUTPUTS'</FONT><FONT COLOR="#000000">, 1 ));</FONT>
85 &gt;&gt; iplot(ao_out(2), ao_est(1), ao_out(1))</PRE></DIV><P>
86 <IMG SRC="images/kalman.png" NAME="images2" ALIGN=LEFT WIDTH=567 HEIGHT=454 BORDER=0><BR CLEAR=LEFT>In
87 this example the estimate (blue) of the state (green) is
88 satisfactory. It leads us to think that such a filter should be used
89 to provide with the input of the controller.
90 </P>
91 <P>However, the DC offset correction by the kalman filter is one
92 information that is not available under usual circumstances.
93 </P>
94 <P><BR><BR>
95 </P>
96 <P STYLE="margin-bottom: 0cm"><BR>
97 </P>
98 <P STYLE="margin-bottom: 0cm"><BR>
99 </P>
100 <P><BR><BR>
101 </P>
102 </BODY>
103 </HTML>