-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlqrlqg.html
97 lines (85 loc) · 5.66 KB
/
lqrlqg.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html>
<html lang="en-us">
<html>
<head>
<title>Pruthvi Sanghavi</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
</head>
<!-- ************************************************ SCRIPTS ******************************************** -->
<script type="text/javascript" src="https://platform.linkedin.com/badges/js/profile.js" async defer></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
jax: ["input/TeX", "output/HTML-CSS"],
extensions: ["tex2jax.js"],
"HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"] },
tex2jax: { inlineMath: [ ["$", "$"], ["\\(","\\)"] ], displayMath: [ ["$$","$$"], ["\\[", "\\]"] ], processEscapes: true, ignoreClass: "tex2jax_ignore|dno" },
TeX: { noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } } },
messageStyle: "none"
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>
<!-- ************************************************************************************************************** -->
<!-- ************************************************ FONTS ******************************************* -->
<link href="https://fonts.googleapis.com/css2?family=Caveat&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Reenie+Beanie&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Poiret+One&display=swap" rel="stylesheet">
<!-- ***************************************************************************************************** -->
<center>
<h1 style="color:black; font-family: Reenie Beanie; font-size:40px">Design of LQR and LQG Controller for a double crane system</h1>
</center>
<style>
p
{
width:900px;
word-wrap:break-word;
}
</style>
<style>
hr{
width: 900px;
}
</style>
<section id="menu">
<center>
<button style="color:white"><a href="index.html" style="text-decoration: none; color:black; font-family: Poiret One;">🏡Home </a></button>
</center>
</section>
<section id="body">
<center>
<p></br></p>
<p align="justify" style="color:black; font-family: Poiret One;">
Link to the code: <a href="https://github.com/Pruthvi-Sanghavi/LQR_LQG_Controller">Click here</a>
</br>Link to the Report: <a href="https://github.com/Pruthvi-Sanghavi/LQR_LQG_Controller/blob/master/LQR_LQG%20Report.pdf">Click here</a>
</p>
<a href=""><img src="lqrlqg/1.png" style="border:1px solid black; height:400px;"/></a>
<p align="justify" style="color:black; font-family: Poiret One;"><b>Problem Statement:</b></br>→ Consider a crane that moves along an one-dimensional track. It behaves as a friction-less cart with mass M actuated by an external force F that constitutes the input of the system. There are two loads suspended from cables attached to the crane. The loads have mass m1 and m2, and the lengths of the cables are l1 and l2, respectively. The following figure depicts the crane and associated variables used throughout this project.</p>
<p align="justify" style="color:black; font-family: Poiret One;"><b>Design Procedure:</b>
</br>The following steps were followed:
</br>→ Obtain the equations of motion for the system and the corresponding nonlinear state-space representation.
</br>→ Obtain the linearized system around the equilibrium point specified by $ x = 0 $ and $ \theta_{1} = \theta_{2} = 0 $. Write the state-space representation of the linearized system.
</br>→ Obtain conditions on $ M $, $ m_{1} $, $ m_{2} $, $ l_{1} $, $ l_{2} $ for which the linearized system is controllable.
</br>→ Choose $ M = 1000Kg $, $ m_{1} = m_{2} = 100Kg $, $ l_{1} = 20m $ and $ l_{2} = 10m $. Check that the system is controllable and obtain an LQR controller.
Simulate the resulting response to initial conditions when the controller is applied to the linearized system and also to the original nonlinear system.
Adjust the parameters of the LQR cost until you obtain a suitable response. Use Lyapunov’s indirect method to certify stability (locally or globally) of the closed-loop system.
</br>→ Suppose that you can select the following output vectors: $ x(t), (\theta_{1}(t), \theta_{2}(t)), (x(t), \theta_{2}(t)) or(x(t), \theta_{1}(t), \theta_{2}(t)).
Determine for which output vectors the linearized system is observable.
</br>→ Obtain your "best" Luenberger observer for each one of the output vectors for which the system is observable and simulate its response to initial conditions and unit step input.
The simulation should be done for the observer applied to both the linearized system and the original nonlinear system.
</br>→ Design an output feedback controller for your choice of the "smallest" output vector.
Use the LQG method and apply the resulting output feedback controller to the original nonlinear system.
</p>
<a href=""><img src="lqrlqg/2.png" style="border:1px solid black; height:400px;"/></a>
<p></br></p>
<a href=""><img src="lqrlqg/3.png" style="border:1px solid black; height:480px;"/></a>
<!-- <p align="justify" style="color:black; font-family: Poiret One;">(To be Continued...)</p> -->
</center>
</section>
<section id ="references">
<center>
</center>
</section>
<hr>
<center>
<p style="color:black; font-family: Reenie Beanie; font-size:15px;">Pruthvi Sanghavi, No Rights Reserved 😉</p>
</center>
</html>