Lot of works on simscape, IFF and DVF
This commit is contained in:
parent
ee0363ee59
commit
b652aebe59
1
matlab/figs-tikz
Symbolic link
1
matlab/figs-tikz
Symbolic link
@ -0,0 +1 @@
|
||||
../tikz/figs
|
@ -1,229 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-03-16 lun. 10:52 -->
|
||||
<!-- 2020-06-10 mer. 10:17 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Matlab Computation</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
box-shadow: 3px 3px 3px #eee;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
padding-top: 1.2em;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
pre.src:hover:before { display: inline;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="../js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
// @license-end
|
||||
</script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@ -232,11 +30,599 @@
|
||||
<a accesskey="H" href="../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Matlab Computation</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org2941be5">1. System Description and Analysis</a>
|
||||
<ul>
|
||||
<li><a href="#org4222b45">1.1. System description</a></li>
|
||||
<li><a href="#org80f8141">1.2. Equations</a></li>
|
||||
<li><a href="#orgbb90994">1.3. Numerical Values</a></li>
|
||||
<li><a href="#org3d04be0">1.4. Campbell Diagram</a></li>
|
||||
<li><a href="#org8144360">1.5. Simscape Model</a></li>
|
||||
<li><a href="#orga371e09">1.6. Comparison with the model</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org912df6c">2. Integral Force Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#orge201c80">2.1. Numerical Values</a></li>
|
||||
<li><a href="#orgbc26950">2.2. Equations</a></li>
|
||||
<li><a href="#org92d4b18">2.3. Poles and Zeros</a></li>
|
||||
<li><a href="#orgbb768e3">2.4. Simscape Model</a></li>
|
||||
<li><a href="#orgdf8d677">2.5. IFF Plant</a></li>
|
||||
<li><a href="#org3f264f4">2.6. Loop Gain</a></li>
|
||||
<li><a href="#org7c25fbe">2.7. Root Locus</a></li>
|
||||
<li><a href="#org82271cf">2.8. Modified IFF</a>
|
||||
<ul>
|
||||
<li><a href="#org60bb927">2.8.1. Control Law</a></li>
|
||||
<li><a href="#org6850379">2.8.2. Loop Gain</a></li>
|
||||
<li><a href="#org7314eea">2.8.3. Root Locus</a></li>
|
||||
<li><a href="#orgb4641d2">2.8.4. Optimal Gain</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgbdc5c77">3. Direct Velocity Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#org3f7448e">3.1. Equations</a></li>
|
||||
<li><a href="#org84263dc">3.2. Numerical Values</a></li>
|
||||
<li><a href="#orgbdad8de">3.3. Simscape Model</a></li>
|
||||
<li><a href="#orge253615">3.4. DVF Plant</a></li>
|
||||
<li><a href="#orgd61ece4">3.5. Loop Gain</a></li>
|
||||
<li><a href="#orgce2b090">3.6. Root Locus</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Notations:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(k\): Actuator’s Stiffness [N/m]</li>
|
||||
<li>\(c\): Actuator’s Damping [N/(m/s)]</li>
|
||||
<li>\(m\): Payload’s mass [kg]</li>
|
||||
<li>\(\omega_0 = \sqrt{\frac{k}{m}}\): Resonance of the (non-rotating) mass-spring system [rad/s]</li>
|
||||
<li>\(\Omega = \dot{\theta}\): rotation speed [rad/s]</li>
|
||||
</ul>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left">Mathematical Notation</th>
|
||||
<th scope="col" class="org-left">Matlab</th>
|
||||
<th scope="col" class="org-left">Unit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">Actuator Stiffness</td>
|
||||
<td class="org-left">\(k\)</td>
|
||||
<td class="org-left"><code>k</code></td>
|
||||
<td class="org-left">N/m</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Actuator Damping</td>
|
||||
<td class="org-left">\(c\)</td>
|
||||
<td class="org-left"><code>c</code></td>
|
||||
<td class="org-left">N/(m/s)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="outline-container-org2941be5" class="outline-2">
|
||||
<h2 id="org2941be5"><span class="section-number-2">1</span> System Description and Analysis</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org72741bf"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4222b45" class="outline-3">
|
||||
<h3 id="org4222b45"><span class="section-number-3">1.1</span> System description</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
The system consists of one 2 degree of freedom translation stage on top of a spindle (figure <a href="#org3ee83a5">1</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="figs/rotating_xy_platform.pdf">figs/rotating_xy_platform.pdf</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The control inputs are the forces applied by the actuators of the translation stage (\(F_u\) and \(F_v\)).
|
||||
As the translation stage is rotating around the Z axis due to the spindle, the forces are applied along \(u\) and \(v\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The measurement is either the \(x-y\) displacement of the object located on top of the translation stage or the \(u-v\) displacement of the sample with respect to a fixed reference frame.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org80f8141" class="outline-3">
|
||||
<h3 id="org80f8141"><span class="section-number-3">1.2</span> Equations</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Based on the Figure <a href="#org3ee83a5">1</a>.
|
||||
</p>
|
||||
|
||||
\begin{equation}
|
||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix} =
|
||||
\frac{\frac{1}{k}}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
|
||||
\begin{bmatrix}
|
||||
\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} & 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
|
||||
-2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0} & \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \\
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbb90994" class="outline-3">
|
||||
<h3 id="orgbb90994"><span class="section-number-3">1.3</span> Numerical Values</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k = 2;
|
||||
m = 1;
|
||||
c = 0.05;
|
||||
xi = c/(2*sqrt(k*m));
|
||||
|
||||
w0 = sqrt(k/m);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3d04be0" class="outline-3">
|
||||
<h3 id="org3d04be0"><span class="section-number-3">1.4</span> Campbell Diagram</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
Compute the poles
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">wrs = linspace(0, 2, 51); % [rad/s]
|
||||
|
||||
polesvc = zeros(4, length(wrs));
|
||||
|
||||
for i = 1:length(wrs)
|
||||
wr = wrs(i);
|
||||
polei = pole(1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wrs(i)^2)/(w0^2))^2 + (2*wrs(i)*s/(w0^2))^2));
|
||||
[~, i_sort] = sort(imag(polei));
|
||||
polesvc(:, i) = polei(i_sort);
|
||||
end
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8144360" class="outline-3">
|
||||
<h3 id="org8144360"><span class="section-number-3">1.5</span> Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('rotating_frame.slx');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k = 2;
|
||||
m = 1;
|
||||
c = 0.05;
|
||||
xi = c/(2*sqrt(k*m));
|
||||
|
||||
w0 = sqrt(k/m);
|
||||
wr = 0.1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'rotating_frame';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 2, 'openoutput'); io_i = io_i + 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = linearize(mdl, io, 0);
|
||||
|
||||
%% Input/Output definition
|
||||
G.InputName = {'Fu', 'Fv'};
|
||||
G.OutputName = {'du', 'dv'};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga371e09" class="outline-3">
|
||||
<h3 id="orga371e09"><span class="section-number-3">1.6</span> Comparison with the model</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ga = (1/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
|
||||
[(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
|
||||
-2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure; bode(G, 'k-', Ga, 'r--')
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org912df6c" class="outline-2">
|
||||
<h2 id="org912df6c"><span class="section-number-2">2</span> Integral Force Feedback</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-orge201c80" class="outline-3">
|
||||
<h3 id="orge201c80"><span class="section-number-3">2.1</span> Numerical Values</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k = 1;
|
||||
m = 1;
|
||||
xi = 0.01;
|
||||
c = 2*xi*sqrt(k*m);
|
||||
w0 = sqrt(k/m);
|
||||
wr = 0.1*w0;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbc26950" class="outline-3">
|
||||
<h3 id="orgbc26950"><span class="section-number-3">2.2</span> Equations</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
The sensed forces are equal to:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\begin{bmatrix} F_{um} \\ F_{vm} \end{bmatrix} =
|
||||
\begin{bmatrix}
|
||||
1 & 0 \\
|
||||
0 & 1
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix} - (c s + k)
|
||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
<div class="important">
|
||||
\begin{equation}
|
||||
\begin{bmatrix} F_{um} \\ F_{vm} \end{bmatrix} =
|
||||
\frac{1}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
|
||||
\begin{bmatrix}
|
||||
(\frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2}) (\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2}) + (2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0})^2 & - (2 \xi \frac{s}{\omega_0} + 1) 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
|
||||
(2 \xi \frac{s}{\omega_0} + 1) 2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0} & (\frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2}) (\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2}) + (2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0})^2 \\
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Giffa = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
|
||||
[(s^2/w0^2 - wr^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)) + (2*wr*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*wr*s/(w0^2) ; ...
|
||||
(2*xi*s/w0 + 1)*2*wr*s/(w0^2), (s^2/w0^2 - wr^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))+ (2*wr*s/(w0^2))^2];
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org92d4b18" class="outline-3">
|
||||
<h3 id="org92d4b18"><span class="section-number-3">2.3</span> Poles and Zeros</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">syms wr w0 xi positive
|
||||
assumealso(w0 > wr)
|
||||
syms x
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">z = (x^2/w0^2 - wr^2/w0^2)*((x^2)/(w0^2) + 1 - (wr^2)/(w0^2)) + (2*wr*x/(w0^2))^2 == 0
|
||||
p = ((x^2)/(w0^2) + 1 - (wr^2)/(w0^2))^2 + (2*wr*x/(w0^2))^2 == 0
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">solve(p, x)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">solve(z, x)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The zeros are the roots of:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\left( \frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2} \right) \left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right) + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2 = 0
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
Poles (without damping)
|
||||
</p>
|
||||
\begin{equation}
|
||||
\left(\begin{array}{c} -w_{0}\,1{}\mathrm{i}-\mathrm{wr}\,1{}\mathrm{i}\\ -w_{0}\,1{}\mathrm{i}+\mathrm{wr}\,1{}\mathrm{i}\\ w_{0}\,1{}\mathrm{i}-\mathrm{wr}\,1{}\mathrm{i}\\ w_{0}\,1{}\mathrm{i}+\mathrm{wr}\,1{}\mathrm{i} \end{array}\right)
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
Zeros (without damping)
|
||||
</p>
|
||||
\begin{equation}
|
||||
\left(\begin{array}{c} -\sqrt{-\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ -\sqrt{\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ \sqrt{-\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ \sqrt{\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2} \end{array}\right)
|
||||
\end{equation}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbb768e3" class="outline-3">
|
||||
<h3 id="orgbb768e3"><span class="section-number-3">2.4</span> Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'rotating_frame';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 5, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 6, 'openoutput'); io_i = io_i + 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Giff = linearize(mdl, io, 0);
|
||||
|
||||
%% Input/Output definition
|
||||
Giff.InputName = {'Fu', 'Fv'};
|
||||
Giff.OutputName = {'Fmu', 'Fmv'};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure; bode(Giff, Giffa)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdf8d677" class="outline-3">
|
||||
<h3 id="orgdf8d677"><span class="section-number-3">2.5</span> IFF Plant</h3>
|
||||
</div>
|
||||
<div id="outline-container-org3f264f4" class="outline-3">
|
||||
<h3 id="org3f264f4"><span class="section-number-3">2.6</span> Loop Gain</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<p>
|
||||
Let’s take \(\Omega = \frac{\omega_0}{10}\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ws = 0.1*w0;
|
||||
G_iff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))^2 + (2*ws*s/(w0^2))^2) * ...
|
||||
[(s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2)) + (2*ws*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*ws*s/(w0^2) ; ...
|
||||
(2*xi*s/w0 + 1)*2*ws*s/(w0^2), (s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))+ (2*ws*s/(w0^2))^2];
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7c25fbe" class="outline-3">
|
||||
<h3 id="org7c25fbe"><span class="section-number-3">2.7</span> Root Locus</h3>
|
||||
</div>
|
||||
<div id="outline-container-org82271cf" class="outline-3">
|
||||
<h3 id="org82271cf"><span class="section-number-3">2.8</span> Modified IFF</h3>
|
||||
<div class="outline-text-3" id="text-2-8">
|
||||
</div>
|
||||
<div id="outline-container-org60bb927" class="outline-4">
|
||||
<h4 id="org60bb927"><span class="section-number-4">2.8.1</span> Control Law</h4>
|
||||
<div class="outline-text-4" id="text-2-8-1">
|
||||
<p>
|
||||
Let’s take the integral feedback controller as a low pass filter (pseudo integrator):
|
||||
</p>
|
||||
\begin{equation}
|
||||
K_{\text{IFF}} = \begin{bmatrix}
|
||||
g\frac{\omega_i}{\omega_i + s} & 0 \\
|
||||
0 & g\frac{\omega_i}{\omega_i + s}
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">xi = 0.005;
|
||||
w0 = 1;
|
||||
ws = 0.1*w0;
|
||||
|
||||
G_iff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))^2 + (2*ws*s/(w0^2))^2) * ...
|
||||
[(s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2)) + (2*ws*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*ws*s/(w0^2) ; ...
|
||||
(2*xi*s/w0 + 1)*2*ws*s/(w0^2), (s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))+ (2*ws*s/(w0^2))^2];
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">g = 100;
|
||||
wi = ws;
|
||||
|
||||
K_iff = (g/(1+s/wi))*eye(2);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6850379" class="outline-4">
|
||||
<h4 id="org6850379"><span class="section-number-4">2.8.2</span> Loop Gain</h4>
|
||||
</div>
|
||||
<div id="outline-container-org7314eea" class="outline-4">
|
||||
<h4 id="org7314eea"><span class="section-number-4">2.8.3</span> Root Locus</h4>
|
||||
</div>
|
||||
<div id="outline-container-orgb4641d2" class="outline-4">
|
||||
<h4 id="orgb4641d2"><span class="section-number-4">2.8.4</span> Optimal Gain</h4>
|
||||
<div class="outline-text-4" id="text-2-8-4">
|
||||
<p>
|
||||
The DC gain for Giff is (for \(\Omega < \omega_0\)):
|
||||
</p>
|
||||
\begin{equation}
|
||||
G_{\text{IFF}}(\omega = 0) = \frac{1}{1 - \frac{{\omega_0}^2}{\Omega^2}} \begin{bmatrix}
|
||||
1 & 0 \\
|
||||
0 & 1
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
The maximum gain where is system is still stable is
|
||||
</p>
|
||||
\begin{equation}
|
||||
g_\text{max} = \frac{{\omega_0}^2}{\Omega^2} - 1
|
||||
\end{equation}
|
||||
|
||||
|
||||
<p>
|
||||
Let’s find the gain that maximize the simultaneous damping of the two modes.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K_opt = (opt_gain/(1+s/wi))*eye(2);
|
||||
|
||||
G_cl = feedback(G_iff, K_opt);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbdc5c77" class="outline-2">
|
||||
<h2 id="orgbdc5c77"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-org3f7448e" class="outline-3">
|
||||
<h3 id="org3f7448e"><span class="section-number-3">3.1</span> Equations</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
The sensed relative velocity are equal to:
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
\begin{equation}
|
||||
\begin{bmatrix} \dot{d}_u \\ \dot{d}_v \end{bmatrix} =
|
||||
\frac{s \frac{1}{k}}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
|
||||
\begin{bmatrix}
|
||||
\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} & 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
|
||||
-2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0} & \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \\
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org84263dc" class="outline-3">
|
||||
<h3 id="org84263dc"><span class="section-number-3">3.2</span> Numerical Values</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k = 1;
|
||||
m = 1;
|
||||
c = 0.05;
|
||||
xi = c/(2*sqrt(k*m));
|
||||
|
||||
w0 = sqrt(k/m);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ga = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
|
||||
[(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
|
||||
-2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbdad8de" class="outline-3">
|
||||
<h3 id="orgbdad8de"><span class="section-number-3">3.3</span> Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'rotating_frame';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 3, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Tuv'], 4, 'openoutput'); io_i = io_i + 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = linearize(mdl, io, 0);
|
||||
|
||||
%% Input/Output definition
|
||||
G.InputName = {'Fu', 'Fv'};
|
||||
G.OutputName = {'Vu', 'Vv'};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge253615" class="outline-3">
|
||||
<h3 id="orge253615"><span class="section-number-3">3.4</span> DVF Plant</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure; bode(G, Ga)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd61ece4" class="outline-3">
|
||||
<h3 id="orgd61ece4"><span class="section-number-3">3.5</span> Loop Gain</h3>
|
||||
<div class="outline-text-3" id="text-3-5">
|
||||
<p>
|
||||
Let’s take \(\Omega = \frac{\omega_0}{10}\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ws = 0.1*w0;
|
||||
G_dvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
|
||||
[(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
|
||||
-2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgce2b090" class="outline-3">
|
||||
<h3 id="orgce2b090"><span class="section-number-3">3.6</span> Root Locus</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-03-16 lun. 10:52</p>
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2020-06-10 mer. 10:17</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
1545
matlab/index.org
1545
matlab/index.org
File diff suppressed because it is too large
Load Diff
BIN
matlab/matlab/rotating_frame.slx
Normal file
BIN
matlab/matlab/rotating_frame.slx
Normal file
Binary file not shown.
BIN
matlab/rotating_frame.slxc
Normal file
BIN
matlab/rotating_frame.slxc
Normal file
Binary file not shown.
BIN
matlab/slprj/sim/varcache/rotating_frame/checksumOfCache.mat
Normal file
BIN
matlab/slprj/sim/varcache/rotating_frame/checksumOfCache.mat
Normal file
Binary file not shown.
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MF0 version="1.1" packageUris="http://schema.mathworks.com/mf0/SlCache/19700101">
|
||||
<slcache.FileAttributes type="slcache.FileAttributes" uuid="15bc2eb6-a155-4074-be73-5774ec44e8b6">
|
||||
<checksum>VGJCKM9/+mTYcitIBBt14A==</checksum>
|
||||
</slcache.FileAttributes>
|
||||
</MF0>
|
BIN
matlab/slprj/sim/varcache/rotating_frame/varInfo.mat
Normal file
BIN
matlab/slprj/sim/varcache/rotating_frame/varInfo.mat
Normal file
Binary file not shown.
@ -3,13 +3,13 @@
|
||||
(lambda ()
|
||||
(TeX-add-to-alist 'LaTeX-provided-package-options
|
||||
'(("inputenc" "utf8") ("fontenc" "T1") ("ulem" "normalem") ("tcolorbox" "most") ("babel" "USenglish" "english")))
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "href")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "url")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "path")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "url")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "href")
|
||||
(add-to-list 'LaTeX-verbatim-macros-with-delims-local "path")
|
||||
(TeX-run-style-hooks
|
||||
"latex2e"
|
||||
@ -42,13 +42,20 @@
|
||||
"import"
|
||||
"babel")
|
||||
(LaTeX-add-labels
|
||||
"sec:org8c48899"
|
||||
"sec:org335669b"
|
||||
"sec:introduction"
|
||||
"sec:org60f23e3"
|
||||
"sec:org8b756e7"
|
||||
"sec:theory"
|
||||
"sec:orgd677659"
|
||||
"sec:orgbf4a596"
|
||||
"fig:rotating_xy_platform"
|
||||
"sec:orgaa8880a"
|
||||
"eq:energy_inertial_frame"
|
||||
"eq:lagrangian_inertial_frame"
|
||||
"sec:org754b644"
|
||||
"sec:org9cbf82a"
|
||||
"sec:org8d24de3"
|
||||
"sec:conclusion"
|
||||
"sec:orgf333899")
|
||||
"sec:orgb252937")
|
||||
(LaTeX-add-bibliographies
|
||||
"ref"))
|
||||
:latex)
|
||||
|
134
paper/paper.org
134
paper/paper.org
@ -58,11 +58,145 @@
|
||||
* Theory
|
||||
<<sec:theory>>
|
||||
|
||||
** Rotating Positioning Stage
|
||||
|
||||
# Description of the system
|
||||
|
||||
- $k$: Actuator's Stiffness [N/m]
|
||||
- $m$: Payload's mass [kg]
|
||||
- $\omega_0 = \sqrt{\frac{k}{m}}$: Resonance of the (non-rotating) mass-spring system [rad/s]
|
||||
- $\omega_r = \dot{\theta}$: rotation speed [rad/s]
|
||||
|
||||
|
||||
#+name: fig:rotating_xy_platform
|
||||
#+caption: Figure caption
|
||||
#+attr_latex: :scale 1
|
||||
[[file:figs/rotating_xy_platform.pdf]]
|
||||
|
||||
|
||||
** Equation of Motion
|
||||
|
||||
Let's express the kinetic energy $T$ and the potential energy $V$ of the mass $m$ (neglecting the rotational energy):
|
||||
#+name: eq:energy_inertial_frame
|
||||
\begin{subequations}
|
||||
\begin{align}
|
||||
T & = \frac{1}{2} m \left( \dot{x}^2 + \dot{y}^2 \right) \\
|
||||
R & = \frac{1}{2} c \left( \dot{x}^2 + \dot{y}^2 \right) \\
|
||||
V & = \frac{1}{2} k \left( x^2 + y^2 \right)
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
The Lagrangian is the kinetic energy minus the potential energy:
|
||||
#+name: eq:lagrangian_inertial_frame
|
||||
\begin{equation}
|
||||
L = T-V = \frac{1}{2} m \left( \dot{x}^2 + \dot{y}^2 \right) - \frac{1}{2} k \left( x^2 + y^2 \right)
|
||||
\end{equation}
|
||||
|
||||
The external forces applied to the mass are:
|
||||
\begin{subequations}
|
||||
\begin{align}
|
||||
F_{\text{ext}, x} &= F_u \cos{\theta} - F_v \sin{\theta}\\
|
||||
F_{\text{ext}, y} &= F_u \sin{\theta} + F_v \cos{\theta}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
|
||||
From the Lagrange's equations of the second kind eqref:eq:lagrange_second_kind, the equation of motion eqref:eq:eom_mixed is obtained.
|
||||
|
||||
#+name: eq:lagrange_second_kind
|
||||
\begin{equation}
|
||||
\frac{d}{dt} \left( \frac{\partial L}{\partial \dot{q}_j} \right) = \frac{\partial L}{\partial q_j}
|
||||
\end{equation}
|
||||
|
||||
#+name: eq:eom_mixed
|
||||
\begin{subequations}
|
||||
\begin{align}
|
||||
m\ddot{x} + kx = F_u \cos{\theta} - F_v \sin{\theta}\\
|
||||
m\ddot{y} + ky = F_u \sin{\theta} + F_v \cos{\theta}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
Performing the change coordinates from $(x, y)$ to $(d_x, d_y, \theta)$:
|
||||
\begin{subequations}
|
||||
\begin{align}
|
||||
x & = d_u \cos{\theta} - d_v \sin{\theta}\\
|
||||
y & = d_u \sin{\theta} + d_v \cos{\theta}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
Gives
|
||||
#+name: eq:oem_coupled
|
||||
\begin{subequations}
|
||||
\begin{align}
|
||||
m \ddot{d_u} + (k - m\dot{\theta}^2) d_u &= F_u + 2 m\dot{d_v}\dot{\theta} + m d_v\ddot{\theta} \label{eq:du_coupled} \\
|
||||
m \ddot{d_v} + (k \underbrace{-\ m\dot{\theta}^2}_{\text{Centrif.}}) d_v &= F_v \underbrace{-\ 2 m\dot{d_u}\dot{\theta}}_{\text{Coriolis}} \underbrace{-\ m d_u\ddot{\theta}}_{\text{Euler}} \label{eq:dv_coupled}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
We obtain two differential equations that are coupled through:
|
||||
- *Euler forces*: $m d_v \ddot{\theta}$
|
||||
- *Coriolis forces*: $2 m \dot{d_v} \dot{\theta}$
|
||||
|
||||
Without the coupling terms, each equation is the equation of a one degree of freedom mass-spring system with mass $m$ and stiffness $k- m\dot{\theta}^2$.
|
||||
Thus, the term $- m\dot{\theta}^2$ acts like a negative stiffness (due to *centrifugal forces*).
|
||||
|
||||
** Constant Rotating Speed
|
||||
To simplify, let's consider a constant rotating speed $\dot{\theta} = \omega_r$ and thus $\ddot{\theta} = 0$.
|
||||
|
||||
#+NAME: eq:coupledplant
|
||||
\begin{equation}
|
||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix} =
|
||||
\frac{1}{(m s^2 + (k - m{\omega_0}^2))^2 + (2 m {\omega_0} s)^2}
|
||||
\begin{bmatrix}
|
||||
ms^2 + (k-m{\omega_0}^2) & 2 m \omega_0 s \\
|
||||
-2 m \omega_0 s & ms^2 + (k-m{\omega_0}^2) \\
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
#+NAME: eq:coupled_plant
|
||||
\begin{equation}
|
||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix} =
|
||||
\frac{\frac{1}{k}}{\left( \frac{s^2}{{\omega_0}^2} + (1 - \frac{{\omega_r}^2}{{\omega_0}^2}) \right)^2 + \left( 2 \frac{{\omega_r} s}{{\omega_0}^2} \right)^2}
|
||||
\begin{bmatrix}
|
||||
\frac{s^2}{{\omega_0}^2} + 1 - \frac{{\omega_r}^2}{{\omega_0}^2} & 2 \frac{\omega_r s}{{\omega_0}^2} \\
|
||||
-2 \frac{\omega_r s}{{\omega_0}^2} & \frac{s^2}{{\omega_0}^2} + 1 - \frac{{\omega_r}^2}{{\omega_0}^2} \\
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
When the rotation speed is null, the coupling terms are equal to zero and the diagonal terms corresponds to one degree of freedom mass spring system.
|
||||
#+NAME: eq:coupled_plant_no_rot
|
||||
\begin{equation}
|
||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix} =
|
||||
\frac{\frac{1}{k}}{\frac{s^2}{{\omega_0}^2} + 1}
|
||||
\begin{bmatrix}
|
||||
1 & 0 \\
|
||||
0 & 1
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
# Campbell Diagram
|
||||
|
||||
When the rotation speed in not null, the resonance frequency is duplicated into two pairs of complex conjugate poles.
|
||||
As the rotation speed increases, one of the two resonant frequency goes to lower frequencies as the other one goes to higher frequencies (Figure [[fig:campbell_diagram]]).
|
||||
|
||||
#+name: fig:campbell_diagram
|
||||
#+caption: Campbell Diagram
|
||||
[[file:figs/campbell_diagram.pdf]]
|
||||
|
||||
# Bode Plots for different ratio wr/w0
|
||||
|
||||
The magnitude of the coupling terms are increasing with the rotation speed.
|
||||
|
||||
|
||||
** Integral Force Feedback
|
||||
|
||||
|
||||
** Direct Velocity Feedback
|
||||
|
||||
|
||||
* Conclusion
|
||||
<<sec:conclusion>>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
% Created 2020-06-08 lun. 11:15
|
||||
% Created 2020-06-08 lun. 11:40
|
||||
% Intended LaTeX compiler: pdflatex
|
||||
\documentclass{ISMA_USD2020}
|
||||
\usepackage[utf8]{inputenc}
|
||||
@ -49,27 +49,56 @@
|
||||
}
|
||||
|
||||
\section{Introduction}
|
||||
\label{sec:orgd787473}
|
||||
\label{sec:org335669b}
|
||||
\label{sec:introduction}
|
||||
|
||||
|
||||
\section{Theory}
|
||||
\label{sec:org808f338}
|
||||
\label{sec:org8b756e7}
|
||||
\label{sec:theory}
|
||||
|
||||
\subsection{Rotating Positioning Stage}
|
||||
\label{sec:orgbf4a596}
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/rotating_xy_platform.pdf}
|
||||
\caption{\label{fig:figure_name}Figure caption}
|
||||
\caption{\label{fig:rotating_xy_platform}Figure caption}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Equation of Motion}
|
||||
\label{sec:orgaa8880a}
|
||||
|
||||
Let's express the kinetic energy \(T\) and the potential energy \(V\) of the mass \(m\):
|
||||
\begin{align}
|
||||
\label{eq:energy_inertial_frame}
|
||||
T & = \frac{1}{2} m \left( \dot{x}^2 + \dot{y}^2 \right) \\
|
||||
V & = \frac{1}{2} k \left( x^2 + y^2 \right)
|
||||
\end{align}
|
||||
|
||||
The Lagrangian is the kinetic energy minus the potential energy.
|
||||
\begin{equation}
|
||||
\label{eq:lagrangian_inertial_frame}
|
||||
L = T-V = \frac{1}{2} m \left( \dot{x}^2 + \dot{y}^2 \right) - \frac{1}{2} k \left( x^2 + y^2 \right)
|
||||
\end{equation}
|
||||
|
||||
|
||||
\subsection{Integral Force Feedback}
|
||||
\label{sec:org754b644}
|
||||
|
||||
|
||||
\subsection{Direct Velocity Feedback}
|
||||
\label{sec:org9cbf82a}
|
||||
|
||||
|
||||
\section{Conclusion}
|
||||
\label{sec:orgab2ddd2}
|
||||
\label{sec:org8d24de3}
|
||||
\label{sec:conclusion}
|
||||
|
||||
|
||||
\section{Acknowledgment}
|
||||
\label{sec:orga63f041}
|
||||
\label{sec:orgb252937}
|
||||
|
||||
|
||||
\bibliography{ref}
|
||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 71 KiB |
Binary file not shown.
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 65 KiB |
BIN
tikz/figs/rotating_xy_platform_springs.pdf
Normal file
BIN
tikz/figs/rotating_xy_platform_springs.pdf
Normal file
Binary file not shown.
BIN
tikz/figs/rotating_xy_platform_springs.png
Normal file
BIN
tikz/figs/rotating_xy_platform_springs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
BIN
tikz/figs/rotating_xy_platform_springs.svg
Normal file
BIN
tikz/figs/rotating_xy_platform_springs.svg
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
147
tikz/index.org
147
tikz/index.org
@ -58,11 +58,11 @@ Configuration file is accessible [[file:config.org][here]].
|
||||
% Force Sensors
|
||||
\draw[fill=white] ($(au) + (-0.2, -0.5)$) rectangle ($(au) + (0, 0.5)$);
|
||||
\draw[] ($(au) + (-0.2, -0.5)$)coordinate(actu) -- ($(au) + (0, 0.5)$);
|
||||
\draw[] ($(au) + (-0.2, 0.5)$)coordinate(ku) -- ($(au) + (0, -0.5)$);
|
||||
\draw[] ($(au) + (-0.2, 0.5)$)coordinate(ku) node[above=0.1, rotate=\thetau]{$f_{u}$} -- ($(au) + (0, -0.5)$);
|
||||
|
||||
\draw[fill=white] ($(av) + (-0.5, -0.2)$) rectangle ($(av) + (0.5, 0)$);
|
||||
\draw[] ($(av) + ( 0.5, -0.2)$)coordinate(actv) -- ($(av) + (-0.5, 0)$);
|
||||
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) -- ($(av) + ( 0.5, 0)$);
|
||||
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) node[left=0.1, rotate=\thetau]{$f_{v}$} -- ($(av) + ( 0.5, 0)$);
|
||||
|
||||
% Spring and Actuator for U
|
||||
\draw[actuator={0.6}{0.2}] (actu) -- node[above=0.1, rotate=\thetau]{$F_u$} (actu-|-2.6,0);
|
||||
@ -70,6 +70,10 @@ Configuration file is accessible [[file:config.org][here]].
|
||||
|
||||
\draw[actuator={0.6}{0.2}] (actv) -- node[left, rotate=\thetau]{$F_v$} (actv|-0,-2.6);
|
||||
\draw[spring=0.2] (kv) -- node[left, rotate=\thetau]{$k_v$} (kv|-0,-2.6);
|
||||
|
||||
% Displacement measurement
|
||||
\draw[<->, dashed] (-2.6, -0.8) --node[midway, below, rotate=\thetau]{$d_u$} (-1 , -0.8);
|
||||
\draw[<->, dashed] ( 0.8, -2.6) --node[midway, right, rotate=\thetau]{$d_v$} ( 0.8, -1);
|
||||
\end{scope}
|
||||
|
||||
% Inertial Frame
|
||||
@ -85,11 +89,144 @@ Configuration file is accessible [[file:config.org][here]].
|
||||
\node[] at (0,0) {$\bullet$};
|
||||
\node[left] at (0,0) {$(x, y)$};
|
||||
|
||||
% \draw[->] (-4, -4) -- ++(\thetau:2) node[above]{$\vec{i}_u$};
|
||||
% \draw[->] (-4, -4) -- ++(\thetau+90:2) node[left]{$\vec{i}_u$};
|
||||
% \draw[] (-2.5, -4) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||||
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/rotating_xy_platform.png]]
|
||||
|
||||
* X-Y Rotating Positioning Platform with Springs in parallel
|
||||
#+begin_src latex :file rotating_xy_platform_springs.pdf
|
||||
\begin{tikzpicture}
|
||||
% Angle
|
||||
\def\thetau{25}
|
||||
|
||||
% Rotational Stage
|
||||
\draw[fill=black!40!white] (0, 0) circle (4);
|
||||
|
||||
% Label
|
||||
\node[anchor=north west, rotate=\thetau] at (-2.8, 2.8) {\small Rotating Stage};
|
||||
|
||||
% Rotating Scope
|
||||
\begin{scope}[rotate=\thetau]
|
||||
% Rotating Frame
|
||||
\draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6);
|
||||
% Label
|
||||
\node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small X-Y Stage};
|
||||
|
||||
% Mass
|
||||
\draw[fill=white] (-1, -1) rectangle (1, 1);
|
||||
% Label
|
||||
\node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload};
|
||||
|
||||
% Attached Points
|
||||
\draw[] (-1, 0) -- ++(-0.2, 0) coordinate(au);
|
||||
\draw[] (0, -1) -- ++(0, -0.2) coordinate(av);
|
||||
|
||||
% Force Sensors
|
||||
\draw[fill=white] ($(au) + (-0.2, -0.5)$) rectangle ($(au) + (0, 0.5)$);
|
||||
\draw[] ($(au) + (-0.2, -0.5)$)coordinate(actu) -- ($(au) + (0, 0.5)$);
|
||||
\draw[] ($(au) + (-0.2, 0.5)$)coordinate(ku) -- ($(au) + (0, -0.5)$);
|
||||
|
||||
\draw[fill=white] ($(av) + (-0.5, -0.2)$) rectangle ($(av) + (0.5, 0)$);
|
||||
\draw[] ($(av) + ( 0.5, -0.2)$)coordinate(actv) -- ($(av) + (-0.5, 0)$);
|
||||
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) -- ($(av) + ( 0.5, 0)$);
|
||||
|
||||
% Spring and Actuator for U
|
||||
\draw[actuator={0.6}{0.2}] (actu) -- (actu-|-2.6,0);
|
||||
\draw[spring=0.2] (ku) -- (ku-|-2.6,0);
|
||||
\draw[spring=0.2] (-1, 0.8) -- (-1, 0.8-|-2.6,0);
|
||||
|
||||
\draw[actuator={0.6}{0.2}] (actv) -- (actv|-0,-2.6);
|
||||
\draw[spring=0.2] (kv) -- (kv|-0,-2.6);
|
||||
\draw[spring=0.2] (-0.8, -1) -- (-0.8, -1|-0,-2.6);
|
||||
|
||||
% Displacement measurement
|
||||
\draw[<->, dashed] (-2.6, -0.8) --node[midway, below, rotate=\thetau]{$d_u$} (-1 , -0.8);
|
||||
\draw[<->, dashed] ( 0.8, -2.6) --node[midway, right, rotate=\thetau]{$d_v$} ( 0.8, -1);
|
||||
\end{scope}
|
||||
|
||||
% Inertial Frame
|
||||
\draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$};
|
||||
\draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$};
|
||||
\draw[fill, color=black] (-4, -4) circle (0.06);
|
||||
\node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){};
|
||||
|
||||
\draw[->] (0, 0) -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$};
|
||||
\draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$};
|
||||
\draw[dashed] (0, 0) -- ++(2, 0);
|
||||
\draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||||
\node[] at (0,0) {$\bullet$};
|
||||
\node[left] at (0,0) {$(x, y)$};
|
||||
|
||||
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+begin_src latex :file rotating_xy_platform_springs.pdf
|
||||
\begin{tikzpicture}
|
||||
% Angle
|
||||
\def\thetau{25}
|
||||
|
||||
% Rotational Stage
|
||||
\draw[fill=black!40!white] (0, 0) circle (4);
|
||||
|
||||
% Label
|
||||
\node[anchor=north west, rotate=\thetau] at (-2.8, 2.8) {\small Rotating Stage};
|
||||
|
||||
% Rotating Scope
|
||||
\begin{scope}[rotate=\thetau]
|
||||
% Rotating Frame
|
||||
\draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6);
|
||||
% Label
|
||||
\node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small X-Y Stage};
|
||||
|
||||
% Mass
|
||||
\draw[fill=white] (-1, -1) rectangle (1, 1);
|
||||
% Label
|
||||
\node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload};
|
||||
|
||||
% Attached Points
|
||||
\draw[] (-1, 0) -- ++(-0.2, 0) coordinate(au);
|
||||
\draw[] (0, -1) -- ++(0, -0.2) coordinate(av);
|
||||
\draw[] ($(au) + (0, -0.8)$) -- ($(au) + (0, 0.8)$)coordinate(kpu);
|
||||
|
||||
% Force Sensors
|
||||
\draw[fill=white] ($(au) + (-0.2, -0.8)$) rectangle (au);
|
||||
\draw[] ($(au) + (-0.2, -0.8)$)coordinate(actu) -- (au);
|
||||
\draw[] ($(au) + (-0.2, 0)$)coordinate(ku) -- ($(au) + (0, -0.8)$);
|
||||
|
||||
\draw[fill=white] ($(av) + (-0.5, -0.2)$) rectangle ($(av) + (0.5, 0)$);
|
||||
\draw[] ($(av) + ( 0.5, -0.2)$)coordinate(actv) -- ($(av) + (-0.5, 0)$);
|
||||
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) -- ($(av) + ( 0.5, 0)$);
|
||||
|
||||
% Spring and Actuator for U
|
||||
\draw[actuator={0.6}{0.2}] (actu) -- (actu-|-2.6,0);
|
||||
\draw[spring=0.2] (ku) -- (ku-|-2.6,0);
|
||||
\draw[spring=0.2] (kpu) -- (kpu-|-2.6,0);
|
||||
|
||||
\draw[actuator={0.6}{0.2}] (actv) -- (actv|-0,-2.6);
|
||||
\draw[spring=0.2] (kv) -- (kv|-0,-2.6);
|
||||
\draw[spring=0.2] (-0.8, -1) -- (-0.8, -1|-0,-2.6);
|
||||
\end{scope}
|
||||
|
||||
% Inertial Frame
|
||||
\draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$};
|
||||
\draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$};
|
||||
\draw[fill, color=black] (-4, -4) circle (0.06);
|
||||
\node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){};
|
||||
|
||||
\draw[->] (0, 0) -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$};
|
||||
\draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$};
|
||||
\draw[dashed] (0, 0) -- ++(2, 0);
|
||||
\draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||||
\node[] at (0,0) {$\bullet$};
|
||||
\node[left] at (0,0) {$(x, y)$};
|
||||
|
||||
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/rotating_xy_platform_springs.png]]
|
||||
|
Loading…
Reference in New Issue
Block a user