Skip to content

Commit 313b74a

Browse files
committed
Publish first pages
1 parent 3865037 commit 313b74a

43 files changed

Lines changed: 460 additions & 4986 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

260109_html/SysReg_crashcourse_TimeDomain_BlockA_01_Basics.html renamed to .html/BlockA_01_Basics.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<html lang="en">
44
<head><meta charset="utf-8"/>
55
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6-
<title>SysReg_crashcourse_TimeDomain_BlockA_01_Basics</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
6+
<title>BlockA_01_Basics</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
77
<style type="text/css">
88
pre { line-height: 125%; }
99
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
@@ -7603,9 +7603,9 @@ <h1 id="Time-domain">Time domain<a class="anchor-link" href="#Time-domain">¶</a
76037603
<div class="jp-OutputArea jp-Cell-outputArea">
76047604
<div class="jp-OutputArea-child">
76057605
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
7606-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="3d329542-118f-47e3-b78c-1cb7cc6a8d26" tabindex="0">
7606+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="80f80e85-75cc-45ee-977d-9cf24f720292" tabindex="0">
76077607
<script type="text/javascript">
7608-
var element = document.getElementById('3d329542-118f-47e3-b78c-1cb7cc6a8d26');
7608+
var element = document.getElementById('80f80e85-75cc-45ee-977d-9cf24f720292');
76097609
/* Put everything inside the global mpl namespace */
76107610
/* global mpl */
76117611
window.mpl = {};
@@ -8646,7 +8646,7 @@ <h2 id="State-space-representation">State space representation<a class="anchor-l
86468646
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
86478647
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
86488648
<h3 id="Block-diagrams">Block diagrams<a class="anchor-link" href="#Block-diagrams"></a></h3><p>        <em>Pixel perfect ways to visualise systems</em></p>
8649-
<p><img alt="Slide about block diagram elements" src="figures/BlockDiagEls.png"/></p>
8649+
<p><img alt="Slide about block diagram elements" src="../figures/BlockDiagEls.png"/></p>
86508650
<p>It's a nice sanity check that any fundamental block scheme of an $n$-th order system has $n$ integrators.</p>
86518651
<h2 id="Equilibrium-points">Equilibrium points<a class="anchor-link" href="#Equilibrium-points"></a></h2><p>        <em>Forever and unchanging</em></p>
86528652
<p>Often, systems will have equilibria, meaning there are states where system will remain over time. These state-input point pairs are denoted as $(x_e, u_e)$ or $(\bar x, \bar u)$. I'll use the latter since this is more traditional in control and we have to appease our control elders. So equilibria remain unchanging, so the derivative of the state is zero. In mathematicians' language</p>

260109_html/SysReg_crashcourse_TimeDomain_BlockA_02_StateSpace.html renamed to .html/BlockA_02_StateSpace.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<html lang="en">
44
<head><meta charset="utf-8"/>
55
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6-
<title>SysReg_crashcourse_TimeDomain_BlockA_02_StateSpace</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
6+
<title>BlockA_02_StateSpace</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
77
<style type="text/css">
88
pre { line-height: 125%; }
99
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
@@ -7666,9 +7666,9 @@ <h3 id="Stability-of-linear-systems">Stability of linear systems<a class="anchor
76667666
</div>
76677667
<div class="jp-OutputArea-child">
76687668
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
7669-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="4f5ee8e7-3175-4728-9f87-937f60f0e47c" tabindex="0">
7669+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="2aff4c31-ae11-4aa1-9b12-0f475df1106c" tabindex="0">
76707670
<script type="text/javascript">
7671-
var element = document.getElementById('4f5ee8e7-3175-4728-9f87-937f60f0e47c');
7671+
var element = document.getElementById('2aff4c31-ae11-4aa1-9b12-0f475df1106c');
76727672
/* Put everything inside the global mpl namespace */
76737673
/* global mpl */
76747674
window.mpl = {};
@@ -8812,9 +8812,9 @@ <h2 id="Placing-poles-is-an-art">Placing poles is an art<a class="anchor-link" h
88128812
<div class="jp-OutputArea jp-Cell-outputArea">
88138813
<div class="jp-OutputArea-child">
88148814
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
8815-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="49826674-b36b-43fe-bd2f-6949dc1e2285" tabindex="0">
8815+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="de237048-c29a-4fd6-8720-0b106ad8c39d" tabindex="0">
88168816
<script type="text/javascript">
8817-
var element = document.getElementById('49826674-b36b-43fe-bd2f-6949dc1e2285');
8817+
var element = document.getElementById('de237048-c29a-4fd6-8720-0b106ad8c39d');
88188818
/* Put everything inside the global mpl namespace */
88198819
/* global mpl */
88208820
window.mpl = {};
@@ -9890,9 +9890,9 @@ <h2 id="Placing-poles-is-an-art">Placing poles is an art<a class="anchor-link" h
98909890
<div class="jp-OutputArea jp-Cell-outputArea">
98919891
<div class="jp-OutputArea-child">
98929892
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
9893-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="2ecf8690-fc01-436b-94cd-1b9609368077" tabindex="0">
9893+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="ecf2f571-46fa-481e-b59c-5499fa2ee523" tabindex="0">
98949894
<script type="text/javascript">
9895-
var element = document.getElementById('2ecf8690-fc01-436b-94cd-1b9609368077');
9895+
var element = document.getElementById('ecf2f571-46fa-481e-b59c-5499fa2ee523');
98969896
/* Put everything inside the global mpl namespace */
98979897
/* global mpl */
98989898
window.mpl = {};
@@ -10960,9 +10960,9 @@ <h3 id="Why-are-second-order-systems-so-important?">Why are second order systems
1096010960
<div class="jp-OutputArea jp-Cell-outputArea">
1096110961
<div class="jp-OutputArea-child">
1096210962
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
10963-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="009c0fd4-72f8-45cb-a3f7-1c4e4ca74ad9" tabindex="0">
10963+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="238daf3f-c056-47a8-ad12-973582be7a6b" tabindex="0">
1096410964
<script type="text/javascript">
10965-
var element = document.getElementById('009c0fd4-72f8-45cb-a3f7-1c4e4ca74ad9');
10965+
var element = document.getElementById('238daf3f-c056-47a8-ad12-973582be7a6b');
1096610966
/* Put everything inside the global mpl namespace */
1096710967
/* global mpl */
1096810968
window.mpl = {};

260109_html/SysReg_crashcourse_TimeDomain_BlockA_03_ControlSynthesis.html renamed to .html/BlockA_03_ControlSynthesis.html

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<html lang="en">
44
<head><meta charset="utf-8"/>
55
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6-
<title>SysReg_crashcourse_TimeDomain_BlockA_03_ControlSynthesis</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
6+
<title>BlockA_03_ControlSynthesis</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
77
<style type="text/css">
88
pre { line-height: 125%; }
99
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
@@ -7624,9 +7624,9 @@ <h2 id="Textbook-input-signals">Textbook input signals<a class="anchor-link" hre
76247624
<div class="jp-OutputArea jp-Cell-outputArea">
76257625
<div class="jp-OutputArea-child">
76267626
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
7627-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="c24b355d-f88c-4371-bfee-4fc105d943cc" tabindex="0">
7627+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="96930ddd-e888-4c5d-a19f-c749c5fe385e" tabindex="0">
76287628
<script type="text/javascript">
7629-
var element = document.getElementById('c24b355d-f88c-4371-bfee-4fc105d943cc');
7629+
var element = document.getElementById('96930ddd-e888-4c5d-a19f-c749c5fe385e');
76307630
/* Put everything inside the global mpl namespace */
76317631
/* global mpl */
76327632
window.mpl = {};
@@ -8669,7 +8669,7 @@ <h2 id="Textbook-input-signals">Textbook input signals<a class="anchor-link" hre
86698669
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
86708670
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
86718671
<h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback-control">¶</a></h2><p>WOW ARE WE GOING TO DO CONTROL NOW??? <em>FINALLY</em>???? Yes! No... There's one more difference we need to explain. There are two types of feedback control, output and state feedback. The difference is in the name and here you also see the difference in a block diagram for a plant/process/system, $P$, and a controller, $C$.</p>
8672-
<p><img alt="output vs state feedback" src="figures/xyFB.svg"/></p>
8672+
<p><img alt="output vs state feedback" src="../figures/xyFB.svg"/></p>
86738673
<p>Output feedback is stuff like PID, or in other terms: disgusting. We'll look at state feedback now! <em>The real stuff.</em></p>
86748674
</div>
86758675
</div>
@@ -8709,9 +8709,9 @@ <h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback
87098709
<div class="jp-OutputArea jp-Cell-outputArea">
87108710
<div class="jp-OutputArea-child">
87118711
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
8712-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="df07e481-f774-43b8-8f91-35f3292a5fec" tabindex="0">
8712+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="4791b7b7-6a48-4687-84d5-eb710075917d" tabindex="0">
87138713
<script type="text/javascript">
8714-
var element = document.getElementById('df07e481-f774-43b8-8f91-35f3292a5fec');
8714+
var element = document.getElementById('4791b7b7-6a48-4687-84d5-eb710075917d');
87158715
/* Put everything inside the global mpl namespace */
87168716
/* global mpl */
87178717
window.mpl = {};
@@ -9773,9 +9773,9 @@ <h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback
97739773
<div class="jp-OutputArea jp-Cell-outputArea">
97749774
<div class="jp-OutputArea-child">
97759775
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
9776-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="4ab3cca1-0c4e-49ef-94bf-196ba0af8abe" tabindex="0">
9776+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="89941ad4-6c5e-4dc8-a528-774053b3f377" tabindex="0">
97779777
<script type="text/javascript">
9778-
var element = document.getElementById('4ab3cca1-0c4e-49ef-94bf-196ba0af8abe');
9778+
var element = document.getElementById('89941ad4-6c5e-4dc8-a528-774053b3f377');
97799779
/* Put everything inside the global mpl namespace */
97809780
/* global mpl */
97819781
window.mpl = {};
@@ -10788,7 +10788,7 @@ <h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback
1078810788
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
1078910789
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
1079010790
<p>However, regulating to zero is boring, I want to be able to tell my system to do a backflip! We need to add a reference, and I'll spoil that we also need a reference gain $k_f$:</p>
10791-
<p><img alt="Reference tracking" src="figures/refTrackCL.svg"/></p>
10791+
<p><img alt="Reference tracking" src="../figures/refTrackCL.svg"/></p>
1079210792
<p>So how does this work then... Same substitution as before!</p>
1079310793
<p>$$ \dot x = Ax + Bu = Ax + B(k_f r - Kx) = (A-BK) x + Bk_f r.$$</p>
1079410794
<p>Now to determine $k_f$, we want to prevent steady state errors, so $\bar y = r$. Steady state also means</p>
@@ -10839,9 +10839,9 @@ <h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback
1083910839
<div class="jp-OutputArea jp-Cell-outputArea">
1084010840
<div class="jp-OutputArea-child">
1084110841
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
10842-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="ca16e983-7d21-4cb5-b863-317f94d3dc48" tabindex="0">
10842+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="81d6f9bc-235f-45dd-a389-203453453d71" tabindex="0">
1084310843
<script type="text/javascript">
10844-
var element = document.getElementById('ca16e983-7d21-4cb5-b863-317f94d3dc48');
10844+
var element = document.getElementById('81d6f9bc-235f-45dd-a389-203453453d71');
1084510845
/* Put everything inside the global mpl namespace */
1084610846
/* global mpl */
1084710847
window.mpl = {};
@@ -11856,7 +11856,7 @@ <h2 id="Feedback-control">Feedback control<a class="anchor-link" href="#Feedback
1185611856
<h2 id="Integral-action">Integral action<a class="anchor-link" href="#Integral-action">¶</a></h2><p>        <em>The theory of everything is not found yet, so our model is <strong>always</strong> terrible</em></p>
1185711857
<p>Most likely the model we have is not a perfect representation of the real world. "Neglect air friction, neglect static/dynamic friction and hysteresis, assume rigid bodies, assume perfect efficiency, ..." All lies we tell ourselves to make our lives easier and to blind ourselves to the harsh reality.</p>
1185811858
<p>So if out model is incorrect, what does that mean for our controller? Simply said, it's not exactly what we want, but <em>it's close</em>. To get it perfect however, we need to add an output feedback part to our state feedback controller. An integrator of the reference-output-error to be precise. This integrator wil drive the integral of the error, $z$, to zero, meaning that the error will be zero. I'll stop talking now and show the block diagram so you actually understand.</p>
11859-
<p><img alt="Integral action" src="figures/IntActCL.svg"/></p>
11859+
<p><img alt="Integral action" src="../figures/IntActCL.svg"/></p>
1186011860
<p>Sooooo maths time. Substitute everything into everything, yada yada, this is largely what control engineers do. Also assume D=0. Lets start with plant equations and work our way backwards through the block diagram.</p>
1186111861
<p>$$\left\{\begin{aligned}\dot x &amp;= Ax + Bu = Ax + B(k_fr-Kx-k_iz) = (A-BK)x + Bk_fr-Bk_iz \\ y &amp;= Cx\end{aligned}\right.$$</p>
1186211862
<p>and</p>
@@ -11910,9 +11910,9 @@ <h2 id="Integral-action">Integral action<a class="anchor-link" href="#Integral-a
1191011910
<div class="jp-OutputArea jp-Cell-outputArea">
1191111911
<div class="jp-OutputArea-child">
1191211912
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
11913-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="2fd4dd8e-de68-47c0-b975-fb319a5b1bee" tabindex="0">
11913+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="d49ca2d7-d446-42ff-a3ce-2b0efcd5f45a" tabindex="0">
1191411914
<script type="text/javascript">
11915-
var element = document.getElementById('2fd4dd8e-de68-47c0-b975-fb319a5b1bee');
11915+
var element = document.getElementById('d49ca2d7-d446-42ff-a3ce-2b0efcd5f45a');
1191611916
/* Put everything inside the global mpl namespace */
1191711917
/* global mpl */
1191811918
window.mpl = {};
@@ -12964,9 +12964,9 @@ <h2 id="Integral-action">Integral action<a class="anchor-link" href="#Integral-a
1296412964
<div class="jp-OutputArea jp-Cell-outputArea">
1296512965
<div class="jp-OutputArea-child">
1296612966
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
12967-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="066a9012-0002-433d-b347-4213dfab9a55" tabindex="0">
12967+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="49268479-8bf6-449b-9d7d-8c7641f77d0e" tabindex="0">
1296812968
<script type="text/javascript">
12969-
var element = document.getElementById('066a9012-0002-433d-b347-4213dfab9a55');
12969+
var element = document.getElementById('49268479-8bf6-449b-9d7d-8c7641f77d0e');
1297012970
/* Put everything inside the global mpl namespace */
1297112971
/* global mpl */
1297212972
window.mpl = {};
@@ -14020,9 +14020,9 @@ <h2 id="Integral-action">Integral action<a class="anchor-link" href="#Integral-a
1402014020
<div class="jp-OutputArea jp-Cell-outputArea">
1402114021
<div class="jp-OutputArea-child">
1402214022
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
14023-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="35d08400-a0f1-45ae-9c81-20b20dfd1d07" tabindex="0">
14023+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="eecffb7b-e5bb-42e7-bc3c-f2d8cf645375" tabindex="0">
1402414024
<script type="text/javascript">
14025-
var element = document.getElementById('35d08400-a0f1-45ae-9c81-20b20dfd1d07');
14025+
var element = document.getElementById('eecffb7b-e5bb-42e7-bc3c-f2d8cf645375');
1402614026
/* Put everything inside the global mpl namespace */
1402714027
/* global mpl */
1402814028
window.mpl = {};
@@ -15132,9 +15132,9 @@ <h2 id="I-don't-understand-art-and-it-should-be-optimised">I don't understand ar
1513215132
<div class="jp-OutputArea jp-Cell-outputArea">
1513315133
<div class="jp-OutputArea-child">
1513415134
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
15135-
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="3352e92a-70db-47c6-bdd5-f72605d50d28" tabindex="0">
15135+
<div class="jp-RenderedJavaScript jp-OutputArea-output" data-mime-type="application/javascript" id="38e8cbc4-d383-4758-ad29-2f36c80e1e92" tabindex="0">
1513615136
<script type="text/javascript">
15137-
var element = document.getElementById('3352e92a-70db-47c6-bdd5-f72605d50d28');
15137+
var element = document.getElementById('38e8cbc4-d383-4758-ad29-2f36c80e1e92');
1513815138
/* Put everything inside the global mpl namespace */
1513915139
/* global mpl */
1514015140
window.mpl = {};

0 commit comments

Comments
 (0)