Add measurement of the Attocube's non-linearity
14
css/custom.css
Normal file
@ -0,0 +1,14 @@
|
||||
.figure p{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.figure img{
|
||||
max-width:100%;
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
@ -513,7 +513,7 @@ legend{
|
||||
padding:0;
|
||||
white-space:normal}
|
||||
|
||||
.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{
|
||||
.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{
|
||||
-webkit-font-smoothing:antialiased}
|
||||
|
||||
/*!
|
||||
@ -576,7 +576,7 @@ a .fa,a #content .admonition-title,#content a .admonition-title{
|
||||
.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{
|
||||
display:inline}
|
||||
|
||||
.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo{
|
||||
.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo{
|
||||
padding:12px;
|
||||
line-height:24px;
|
||||
margin-bottom:24px;
|
||||
@ -596,32 +596,45 @@ a .fa,a #content .admonition-title,#content a .admonition-title{
|
||||
#content .danger,#content .error{
|
||||
background:#fdf3f2}
|
||||
|
||||
.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{
|
||||
.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.summary,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{
|
||||
background:#ffedcc}
|
||||
|
||||
#content .admonition-title.note:before, #content .admonition-title.seealso:before,
|
||||
#content .admonition-title.warning:before, #content .admonition-title.caution:before,
|
||||
#content .admonition-title.warning:before,
|
||||
#content .admonition-title.caution:before,
|
||||
#content .admonition-title.attention:before,
|
||||
#content .admonition-title.tip:before, #content .admonition-title.hint:before,
|
||||
#content .admonition-title.important:before,
|
||||
#content .admonition-title.error:before, #content .admonition-title.danger:before{
|
||||
#content .admonition-title.error:before,
|
||||
#content .admonition-title.danger:before{
|
||||
font-family:FontAwesome;
|
||||
content: "";}
|
||||
|
||||
#content .note,#content .seealso{
|
||||
#content .admonition-title.question:before{
|
||||
font-family:FontAwesome;
|
||||
content: "";}
|
||||
|
||||
#content .admonition-title.note:before,
|
||||
#content .admonition-title.seealso:before,
|
||||
#content .admonition-title.tip:before,
|
||||
#content .admonition-title.summary:before,
|
||||
#content .admonition-title.hint:before{
|
||||
font-family:FontAwesome;
|
||||
content: "";}
|
||||
|
||||
|
||||
#content .note,#content .question,#content .seealso{
|
||||
background:#e7f2fa}
|
||||
|
||||
.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{
|
||||
.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .summary p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .question p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{
|
||||
margin-bottom:0}
|
||||
|
||||
#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.hint{
|
||||
#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.summary,#content .admonition-title.hint{
|
||||
line-height: 1;
|
||||
background:#1abc9c}
|
||||
|
||||
#content .important,#content .tip,#content .hint{
|
||||
#content .important,#content .tip,#content .summary,#content .hint{
|
||||
background:#dbfaf4}
|
||||
|
||||
#content .admonition-title.note,#content .admonition-title.seealso{
|
||||
#content .admonition-title.note,#content .admonition-title.question,#content .admonition-title.seealso{
|
||||
line-height: 1;
|
||||
background:#6ab0de}
|
||||
|
||||
@ -938,7 +951,7 @@ footer p{
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .seealso .last,#content .admonitiontodo .last{
|
||||
#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .summary,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .question .last,#content .seealso .last,#content .admonitiontodo .last{
|
||||
margin-bottom:0}
|
||||
|
||||
#content .admonition-title:before{
|
||||
|
BIN
figs/exp_setup_schematic.pdf
Normal file
BIN
figs/exp_setup_schematic.png
Normal file
After Width: | Height: | Size: 67 KiB |
3663
figs/exp_setup_schematic.svg
Normal file
After Width: | Height: | Size: 215 KiB |
BIN
figs/int_enc_error_mean_position.pdf
Normal file
BIN
figs/int_enc_error_mean_position.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
figs/int_enc_error_mean_time.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
figs/int_enc_one_cycle.pdf
Normal file
BIN
figs/int_enc_one_cycle.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
figs/int_enc_one_cycle_error.pdf
Normal file
BIN
figs/int_enc_one_cycle_error.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
figs/int_non_linearity_period_wavelength.pdf
Normal file
BIN
figs/int_non_linearity_period_wavelength.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
figs/test-bench-schematic.pdf
Normal file
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
275
index.html
@ -3,14 +3,14 @@
|
||||
"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-11-03 mar. 11:21 -->
|
||||
<!-- 2020-11-10 mar. 09:53 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Attocube - Test Bench</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/custom.css"/>
|
||||
<script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
@ -35,45 +35,53 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc6ccba7">1. Estimation of the Spectral Density of the Attocube Noise</a>
|
||||
<li><a href="#org31551fe">1. Estimation of the Spectral Density of the Attocube Noise</a>
|
||||
<ul>
|
||||
<li><a href="#org3cc416a">1.1. Long and Slow measurement</a></li>
|
||||
<li><a href="#org821fd88">1.2. Short and Fast measurement</a></li>
|
||||
<li><a href="#orgecead74">1.3. Obtained Amplitude Spectral Density of the measured displacement</a></li>
|
||||
<li><a href="#org2ca70e8">1.1. Long and Slow measurement</a></li>
|
||||
<li><a href="#org4dffcb8">1.2. Short and Fast measurement</a></li>
|
||||
<li><a href="#org83ac827">1.3. Obtained Amplitude Spectral Density of the measured displacement</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org14aa3d1">2. Effect of the “bubble sheet” and <b>Aluminium tube</b></a>
|
||||
<li><a href="#orgf63ae3e">2. Effect of the “bubble sheet” and “Aluminium tube”</a>
|
||||
<ul>
|
||||
<li><a href="#org986c782">2.1. Aluminium Tube and Bubble Sheet</a></li>
|
||||
<li><a href="#orge3f9893">2.2. Only Aluminium Tube</a></li>
|
||||
<li><a href="#org9430d99">2.3. Nothing</a></li>
|
||||
<li><a href="#orgf5b2d48">2.4. Comparison</a></li>
|
||||
<li><a href="#org1f1ce7f">2.1. Aluminium Tube and Bubble Sheet</a></li>
|
||||
<li><a href="#orgb26f1e7">2.2. Only Aluminium Tube</a></li>
|
||||
<li><a href="#org38d2ea6">2.3. Nothing</a></li>
|
||||
<li><a href="#orgc931b82">2.4. Comparison</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8ec3157">3. Measurement of the Attocube’s non-linearity</a>
|
||||
<ul>
|
||||
<li><a href="#orgd049784">3.1. Load Data</a></li>
|
||||
<li><a href="#orga29027e">3.2. Time Domain Results</a></li>
|
||||
<li><a href="#orgce6e0ff">3.3. Difference between Encoder and Interferometer as a function of time</a></li>
|
||||
<li><a href="#org2008a1e">3.4. Difference between Encoder and Interferometer as a function of position</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc6ccba7" class="outline-2">
|
||||
<h2 id="orgc6ccba7"><span class="section-number-2">1</span> Estimation of the Spectral Density of the Attocube Noise</h2>
|
||||
<div id="outline-container-org31551fe" class="outline-2">
|
||||
<h2 id="org31551fe"><span class="section-number-2">1</span> Estimation of the Spectral Density of the Attocube Noise</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
<div id="org93ec5d1" class="figure">
|
||||
<p><img src="figs/test-bench-shematic.png" alt="test-bench-shematic.png" />
|
||||
<div id="org5b9ba48" class="figure">
|
||||
<p><img src="figs/test-bench-schematic.png" alt="test-bench-schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Test Bench Schematic</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org83b6919" class="figure">
|
||||
<div id="org9ef7a86" class="figure">
|
||||
<p><img src="figs/IMG-7865.JPG" alt="IMG-7865.JPG" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Picture of the test bench. The Attocube and mirror are covered by a “bubble sheet”</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3cc416a" class="outline-3">
|
||||
<h3 id="org3cc416a"><span class="section-number-3">1.1</span> Long and Slow measurement</h3>
|
||||
<div id="outline-container-org2ca70e8" class="outline-3">
|
||||
<h3 id="org2ca70e8"><span class="section-number-3">1.1</span> Long and Slow measurement</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
The first measurement was made during ~17 hours with a sampling time of \(T_s = 0.1\,s\).
|
||||
@ -86,14 +94,14 @@ Ts = 0.1; <span class="org-comment">% [s]</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgacdd31b" class="figure">
|
||||
<div id="org4b6374b" class="figure">
|
||||
<p><img src="figs/long_meas_time_domain_full.png" alt="long_meas_time_domain_full.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Long measurement time domain data</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Let’s fit the data with a step response to a first order low pass filter (Figure <a href="#org8514bc0">4</a>).
|
||||
Let’s fit the data with a step response to a first order low pass filter (Figure <a href="#org36afa1e">4</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@ -117,17 +125,17 @@ The corresponding time constant is (in [h]):
|
||||
|
||||
|
||||
|
||||
<div id="org8514bc0" class="figure">
|
||||
<div id="org36afa1e" class="figure">
|
||||
<p><img src="figs/long_meas_time_domain_fit.png" alt="long_meas_time_domain_fit.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Fit of the measurement data with a step response of a first order low pass filter</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We can see in Figure <a href="#orgacdd31b">3</a> that there is a transient period where the measured displacement experiences some drifts.
|
||||
We can see in Figure <a href="#org4b6374b">3</a> that there is a transient period where the measured displacement experiences some drifts.
|
||||
This is probably due to thermal effects.
|
||||
We only select the data between <code>t1</code> and <code>t2</code>.
|
||||
The obtained displacement is shown in Figure <a href="#orgf9150d1">5</a>.
|
||||
The obtained displacement is shown in Figure <a href="#orgf2cfa94">5</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@ -141,7 +149,7 @@ t = t <span class="org-type">-</span> t(1);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf9150d1" class="figure">
|
||||
<div id="orgf2cfa94" class="figure">
|
||||
<p><img src="figs/long_meas_time_domain_zoom.png" alt="long_meas_time_domain_zoom.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Kept data (removed slow drifts during the first hours)</p>
|
||||
@ -176,8 +184,8 @@ f_1 = f_1(f_1 <span class="org-type"><</span> 2);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org821fd88" class="outline-3">
|
||||
<h3 id="org821fd88"><span class="section-number-3">1.2</span> Short and Fast measurement</h3>
|
||||
<div id="outline-container-org4dffcb8" class="outline-3">
|
||||
<h3 id="org4dffcb8"><span class="section-number-3">1.2</span> Short and Fast measurement</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
An second measurement is done in order to estimate the high frequency noise of the interferometer.
|
||||
@ -196,11 +204,11 @@ Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% [s]</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
The time domain measurement is shown in Figure <a href="#org0f2f571">6</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgfb8bd83" class="figure">
|
||||
<div id="org0f2f571" class="figure">
|
||||
<p><img src="figs/short_meas_time_domain.png" alt="short_meas_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Time domain measurement with the high sampling rate</p>
|
||||
@ -217,15 +225,15 @@ The Power Spectral Density of the measured displacement is computed
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgecead74" class="outline-3">
|
||||
<h3 id="orgecead74"><span class="section-number-3">1.3</span> Obtained Amplitude Spectral Density of the measured displacement</h3>
|
||||
<div id="outline-container-org83ac827" class="outline-3">
|
||||
<h3 id="org83ac827"><span class="section-number-3">1.3</span> Obtained Amplitude Spectral Density of the measured displacement</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
The computed ASD of the two measurements are combined in Figure <a href="#org669cb34">7</a>.
|
||||
The computed ASD of the two measurements are combined in Figure <a href="#orga897ad9">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org669cb34" class="figure">
|
||||
<div id="orga897ad9" class="figure">
|
||||
<p><img src="figs/psd_combined.png" alt="psd_combined.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Obtained Amplitude Spectral Density of the measured displacement</p>
|
||||
@ -234,19 +242,19 @@ The computed ASD of the two measurements are combined in Figure <a href="#org669
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org14aa3d1" class="outline-2">
|
||||
<h2 id="org14aa3d1"><span class="section-number-2">2</span> Effect of the “bubble sheet” and <b>Aluminium tube</b></h2>
|
||||
<div id="outline-container-orgf63ae3e" class="outline-2">
|
||||
<h2 id="orgf63ae3e"><span class="section-number-2">2</span> Effect of the “bubble sheet” and “Aluminium tube”</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
|
||||
<div id="orgbf4b90d" class="figure">
|
||||
<div id="orgff246fc" class="figure">
|
||||
<p><img src="figs/IMG-7864.JPG" alt="IMG-7864.JPG" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Aluminium tube used to protect the beam path from disturbances</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org986c782" class="outline-3">
|
||||
<h3 id="org986c782"><span class="section-number-3">2.1</span> Aluminium Tube and Bubble Sheet</h3>
|
||||
<div id="outline-container-org1f1ce7f" class="outline-3">
|
||||
<h3 id="org1f1ce7f"><span class="section-number-3">2.1</span> Aluminium Tube and Bubble Sheet</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/short_test_plastic.mat'</span>);
|
||||
@ -267,8 +275,8 @@ Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% [s]</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge3f9893" class="outline-3">
|
||||
<h3 id="orge3f9893"><span class="section-number-3">2.2</span> Only Aluminium Tube</h3>
|
||||
<div id="outline-container-orgb26f1e7" class="outline-3">
|
||||
<h3 id="orgb26f1e7"><span class="section-number-3">2.2</span> Only Aluminium Tube</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/short_test_alu_tube.mat'</span>);
|
||||
@ -282,7 +290,7 @@ Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% [s]</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
The time domain measurement is shown in Figure <a href="#org0f2f571">6</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">win = hann(ceil(length(x)<span class="org-type">/</span>10));
|
||||
@ -292,8 +300,8 @@ The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9430d99" class="outline-3">
|
||||
<h3 id="org9430d99"><span class="section-number-3">2.3</span> Nothing</h3>
|
||||
<div id="outline-container-org38d2ea6" class="outline-3">
|
||||
<h3 id="org38d2ea6"><span class="section-number-3">2.3</span> Nothing</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/short_test_without_material.mat'</span>);
|
||||
@ -307,7 +315,7 @@ Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% [s]</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
The time domain measurement is shown in Figure <a href="#org0f2f571">6</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">win = hann(ceil(length(x)<span class="org-type">/</span>10));
|
||||
@ -317,11 +325,11 @@ The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf5b2d48" class="outline-3">
|
||||
<h3 id="orgf5b2d48"><span class="section-number-3">2.4</span> Comparison</h3>
|
||||
<div id="outline-container-orgc931b82" class="outline-3">
|
||||
<h3 id="orgc931b82"><span class="section-number-3">2.4</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
|
||||
<div id="orgb09511f" class="figure">
|
||||
<div id="org0e0ae0d" class="figure">
|
||||
<p><img src="figs/asd_noise_comp_bubble_aluminium.png" alt="asd_noise_comp_bubble_aluminium.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Comparison of the noise ASD with and without bubble sheet</p>
|
||||
@ -329,10 +337,183 @@ The time domain measurement is shown in Figure <a href="#orgfb8bd83">6</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8ec3157" class="outline-2">
|
||||
<h2 id="org8ec3157"><span class="section-number-2">3</span> Measurement of the Attocube’s non-linearity</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The measurement setup is shown in Figure <a href="#org30833d7">10</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org30833d7" class="figure">
|
||||
<p><img src="figs/exp_setup_schematic.png" alt="exp_setup_schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Schematic of the Experiment</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
A DAC and voltage amplified are used to move the mass with the Amplified Piezoelectric Actuator (APA95ML).
|
||||
The encoder and the attocube are measure ring the same motion.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
As will be shown shortly, this measurement permitted to measure the period non-linearity of the Attocube.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd049784" class="outline-3">
|
||||
<h3 id="orgd049784"><span class="section-number-3">3.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
The measurement data are loaded and the offset are removed using the <code>detrend</code> command.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/int_enc_comp.mat'</span>, <span class="org-string">'interferometer'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>, <span class="org-string">'t'</span>);
|
||||
Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% Sampling Time [s]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">interferometer = detrend(interferometer, 0);
|
||||
encoder = detrend(encoder, 0);
|
||||
u = detrend(u, 0);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga29027e" class="outline-3">
|
||||
<h3 id="orga29027e"><span class="section-number-3">3.2</span> Time Domain Results</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
One period of the displacement of the mass as measured by the encoder and interferometer are shown in Figure <a href="#orgeb04850">11</a>.
|
||||
It consist of the sinusoidal motion at 0.5Hz with an amplitude of approximately \(70\mu m\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The frequency of the motion is chosen such that no resonance in the system is excited.
|
||||
This should improve the coherence between the measurements made by the encoder and interferometer.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgeb04850" class="figure">
|
||||
<p><img src="figs/int_enc_one_cycle.png" alt="int_enc_one_cycle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>One cycle measurement</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The difference between the two measurements during the same period is shown in Figure <a href="#org3ddfc88">12</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3ddfc88" class="figure">
|
||||
<p><img src="figs/int_enc_one_cycle_error.png" alt="int_enc_one_cycle_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Difference between the Encoder and the interferometer during one cycle</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgce6e0ff" class="outline-3">
|
||||
<h3 id="orgce6e0ff"><span class="section-number-3">3.3</span> Difference between Encoder and Interferometer as a function of time</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
The data is filtered using a second order low pass filter with a cut-off frequency \(\omega_0\) as defined below.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5; <span class="org-comment">% [rad/s]</span>
|
||||
xi = 0.7;
|
||||
|
||||
G_lpf = 1<span class="org-type">/</span>(1 <span class="org-type">+</span> 2<span class="org-type">*</span>xi<span class="org-type">/</span>w0<span class="org-type">*</span>s <span class="org-type">+</span> s<span class="org-type">^</span>2<span class="org-type">/</span>w0<span class="org-type">^</span>2);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
After filtering, the data is “re-shaped” such that we can superimpose all the measured periods as shown in Figure <a href="#org18b1b55">13</a>.
|
||||
This gives an idea of the measurement error as given by the Attocube during a \(70 \mu m\) motion.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">d_err_mean = reshape(lsim(G_lpf, encoder <span class="org-type">-</span> interferometer, t), [2<span class="org-type">/</span>Ts floor(Ts<span class="org-type">/</span>2<span class="org-type">*</span>length(encoder))]);
|
||||
d_err_mean = d_err_mean <span class="org-type">-</span> mean(d_err_mean);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org18b1b55" class="figure">
|
||||
<p><img src="figs/int_enc_error_mean_time.png" alt="int_enc_error_mean_time.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Difference between the two measurement in the time domain, averaged for all the cycles</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2008a1e" class="outline-3">
|
||||
<h3 id="org2008a1e"><span class="section-number-3">3.4</span> Difference between Encoder and Interferometer as a function of position</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<p>
|
||||
Figure <a href="#org18b1b55">13</a> gives the measurement error as a function of time.
|
||||
We here wish the compute this measurement error as a function of the position (as measured by the encoer).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To do so, all the attocube measurements corresponding to each position measured by the Encoder (resolution of \(1nm\)) are averaged.
|
||||
Figure <a href="#orgdfccfb5">14</a> is obtained where we clearly see an error with a period comparable to the motion range and a much smaller period corresponding to the non-linear period errors that we wish the estimate.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">[e_sorted, <span class="org-type">~</span>, e_ind] = unique(encoder);
|
||||
|
||||
i_mean = zeros(length(e_sorted), 1);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(e_sorted)</span>
|
||||
i_mean(<span class="org-constant">i</span>) = mean(interferometer(e_ind <span class="org-type">==</span> <span class="org-constant">i</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
i_mean_error = (i_mean <span class="org-type">-</span> e_sorted);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdfccfb5" class="figure">
|
||||
<p><img src="figs/int_enc_error_mean_position.png" alt="int_enc_error_mean_position.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The period of the non-linearity seems to be equal to \(765 nm\) which corresponds to half the wavelength of the Laser (\(1.53 \mu m\)).
|
||||
For the motion range done here, the non-linearity is measured over ~18 periods which permits to do some averaging.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">win_length = 1530<span class="org-type">/</span>2; <span class="org-comment">% length of the windows (corresponds to 765 nm)</span>
|
||||
num_avg = floor(length(e_sorted)<span class="org-type">/</span>win_length); <span class="org-comment">% number of averaging</span>
|
||||
|
||||
i_init = ceil((length(e_sorted) <span class="org-type">-</span> win_length<span class="org-type">*</span>num_avg)<span class="org-type">/</span>2); <span class="org-comment">% does not start at the extremity</span>
|
||||
|
||||
e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init<span class="org-type">:</span>i_init<span class="org-type">+</span>win_length<span class="org-type">*</span>num_avg<span class="org-type">-</span>1), [win_length num_avg]), 2);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained periodic non-linearity is shown in Figure <a href="#orgcfbb9a2">15</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgcfbb9a2" class="figure">
|
||||
<p><img src="figs/int_non_linearity_period_wavelength.png" alt="int_non_linearity_period_wavelength.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Non-Linearity of the Interferometer over the period of the wavelength</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-11-03 mar. 11:21</p>
|
||||
<p class="date">Created: 2020-11-10 mar. 09:53</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
195
index.org
@ -9,7 +9,7 @@
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/custom.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
@ -29,9 +29,9 @@
|
||||
* Estimation of the Spectral Density of the Attocube Noise
|
||||
** Introduction :ignore:
|
||||
|
||||
#+name: fig:test-bench-shematic
|
||||
#+name: fig:test-bench-schematic
|
||||
#+caption: Test Bench Schematic
|
||||
[[file:figs/test-bench-shematic.png]]
|
||||
[[file:figs/test-bench-schematic.png]]
|
||||
|
||||
#+name: fig:test-bench-picture
|
||||
#+caption: Picture of the test bench. The Attocube and mirror are covered by a "bubble sheet"
|
||||
@ -217,7 +217,7 @@ The computed ASD of the two measurements are combined in Figure [[fig:psd_combin
|
||||
#+RESULTS:
|
||||
[[file:figs/psd_combined.png]]
|
||||
|
||||
* Effect of the "bubble sheet" and *Aluminium tube*
|
||||
* Effect of the "bubble sheet" and "Aluminium tube"
|
||||
** Introduction :ignore:
|
||||
|
||||
#+name: fig:picture-test-bench-aluminium-tube
|
||||
@ -324,3 +324,190 @@ The time domain measurement is shown in Figure [[fig:short_meas_time_domain]].
|
||||
#+caption: Comparison of the noise ASD with and without bubble sheet
|
||||
#+RESULTS:
|
||||
[[file:figs/asd_noise_comp_bubble_aluminium.png]]
|
||||
|
||||
* Measurement of the Attocube's non-linearity
|
||||
** Introduction :ignore:
|
||||
The measurement setup is shown in Figure [[fig:exp_setup_schematic]].
|
||||
|
||||
#+name: fig:exp_setup_schematic
|
||||
#+caption: Schematic of the Experiment
|
||||
[[file:figs/exp_setup_schematic.png]]
|
||||
|
||||
A DAC and voltage amplified are used to move the mass with the Amplified Piezoelectric Actuator (APA95ML).
|
||||
The encoder and the attocube are measure ring the same motion.
|
||||
|
||||
As will be shown shortly, this measurement permitted to measure the period non-linearity of the Attocube.
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load Data
|
||||
The measurement data are loaded and the offset are removed using the =detrend= command.
|
||||
|
||||
#+begin_src matlab
|
||||
load('mat/int_enc_comp.mat', 'interferometer', 'encoder', 'u', 't');
|
||||
Ts = 1e-4; % Sampling Time [s]
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
interferometer = detrend(interferometer, 0);
|
||||
encoder = detrend(encoder, 0);
|
||||
u = detrend(u, 0);
|
||||
#+end_src
|
||||
|
||||
** Time Domain Results
|
||||
One period of the displacement of the mass as measured by the encoder and interferometer are shown in Figure [[fig:int_enc_one_cycle]].
|
||||
It consist of the sinusoidal motion at 0.5Hz with an amplitude of approximately $70\mu m$.
|
||||
|
||||
The frequency of the motion is chosen such that no resonance in the system is excited.
|
||||
This should improve the coherence between the measurements made by the encoder and interferometer.
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, encoder, '-', 'DisplayName', 'Encoder')
|
||||
plot(t, interferometer, '--', 'DisplayName', 'Interferometer')
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Displacement [m]');
|
||||
legend('location', 'southeast');
|
||||
xlim([50, 52])
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/int_enc_one_cycle.pdf', 'width', 'wide', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:int_enc_one_cycle
|
||||
#+caption: One cycle measurement
|
||||
#+RESULTS:
|
||||
[[file:figs/int_enc_one_cycle.png]]
|
||||
|
||||
The difference between the two measurements during the same period is shown in Figure [[fig:int_enc_one_cycle_error]].
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, encoder - interferometer, 'DisplayName', 'Difference')
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Displacement [m]');
|
||||
legend('location', 'northeast');
|
||||
xlim([50, 52])
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/int_enc_one_cycle_error.pdf', 'width', 'wide', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:int_enc_one_cycle_error
|
||||
#+caption: Difference between the Encoder and the interferometer during one cycle
|
||||
#+RESULTS:
|
||||
[[file:figs/int_enc_one_cycle_error.png]]
|
||||
|
||||
** Difference between Encoder and Interferometer as a function of time
|
||||
The data is filtered using a second order low pass filter with a cut-off frequency $\omega_0$ as defined below.
|
||||
|
||||
#+begin_src matlab
|
||||
w0 = 2*pi*5; % [rad/s]
|
||||
xi = 0.7;
|
||||
|
||||
G_lpf = 1/(1 + 2*xi/w0*s + s^2/w0^2);
|
||||
#+end_src
|
||||
|
||||
After filtering, the data is "re-shaped" such that we can superimpose all the measured periods as shown in Figure [[fig:int_enc_error_mean_time]].
|
||||
This gives an idea of the measurement error as given by the Attocube during a $70 \mu m$ motion.
|
||||
#+begin_src matlab
|
||||
d_err_mean = reshape(lsim(G_lpf, encoder - interferometer, t), [2/Ts floor(Ts/2*length(encoder))]);
|
||||
d_err_mean = d_err_mean - mean(d_err_mean);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for i_i = 1:size(d_err_mean, 2)
|
||||
plot(t(1:size(d_err_mean, 1)), d_err_mean(:, i_i), 'k-')
|
||||
end
|
||||
plot(t(1:size(d_err_mean, 1)), mean(d_err_mean, 2), 'r-')
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Displacement [m]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/int_enc_error_mean_time.pdf', 'width', 'wide', 'height', 'normal', 'pdf', false);
|
||||
#+end_src
|
||||
|
||||
#+name: fig:int_enc_error_mean_time
|
||||
#+caption: Difference between the two measurement in the time domain, averaged for all the cycles
|
||||
#+RESULTS:
|
||||
[[file:figs/int_enc_error_mean_time.png]]
|
||||
|
||||
** Difference between Encoder and Interferometer as a function of position
|
||||
Figure [[fig:int_enc_error_mean_time]] gives the measurement error as a function of time.
|
||||
We here wish the compute this measurement error as a function of the position (as measured by the encoer).
|
||||
|
||||
To do so, all the attocube measurements corresponding to each position measured by the Encoder (resolution of $1nm$) are averaged.
|
||||
Figure [[fig:int_enc_error_mean_position]] is obtained where we clearly see an error with a period comparable to the motion range and a much smaller period corresponding to the non-linear period errors that we wish the estimate.
|
||||
#+begin_src matlab
|
||||
[e_sorted, ~, e_ind] = unique(encoder);
|
||||
|
||||
i_mean = zeros(length(e_sorted), 1);
|
||||
for i = 1:length(e_sorted)
|
||||
i_mean(i) = mean(interferometer(e_ind == i));
|
||||
end
|
||||
|
||||
i_mean_error = (i_mean - e_sorted);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
% plot(encoder, interferometer - encoder, 'k.', 'DisplayName', 'Difference')
|
||||
plot(1e6*(e_sorted), 1e9*(i_mean_error))
|
||||
hold off;
|
||||
xlabel('Encoder Measurement [$\mu m$]'); ylabel('Measrement Error [nm]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/int_enc_error_mean_position.pdf', 'width', 'wide', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:int_enc_error_mean_position
|
||||
#+caption: Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles
|
||||
#+RESULTS:
|
||||
[[file:figs/int_enc_error_mean_position.png]]
|
||||
|
||||
The period of the non-linearity seems to be equal to $765 nm$ which corresponds to half the wavelength of the Laser ($1.53 \mu m$).
|
||||
For the motion range done here, the non-linearity is measured over ~18 periods which permits to do some averaging.
|
||||
|
||||
#+begin_src matlab
|
||||
win_length = 1530/2; % length of the windows (corresponds to 765 nm)
|
||||
num_avg = floor(length(e_sorted)/win_length); % number of averaging
|
||||
|
||||
i_init = ceil((length(e_sorted) - win_length*num_avg)/2); % does not start at the extremity
|
||||
|
||||
e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init:i_init+win_length*num_avg-1), [win_length num_avg]), 2);
|
||||
#+end_src
|
||||
|
||||
The obtained periodic non-linearity is shown in Figure [[fig:int_non_linearity_period_wavelength]].
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(1e-3*(0:win_length-1), 1e9*(e_sorted_mean_over_period))
|
||||
hold off;
|
||||
xlabel('Displacement [$\mu m$]'); ylabel('Measurement Non-Linearity [nm]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/int_non_linearity_period_wavelength.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:int_non_linearity_period_wavelength
|
||||
#+caption: Non-Linearity of the Interferometer over the period of the wavelength
|
||||
#+RESULTS:
|
||||
[[file:figs/int_non_linearity_period_wavelength.png]]
|
||||
|
@ -9,6 +9,8 @@ $(function() {
|
||||
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
||||
$('.error').before("<p class='admonition-title error'>Error</p>");
|
||||
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
||||
$('.question').before("<p class='admonition-title question'>Question</p>");
|
||||
$('.summary').before("<p class='admonition-title hint'>Summary</p>");
|
||||
});
|
||||
|
||||
$( document ).ready(function() {
|
||||
|