Update with last measured encoder
This commit is contained in:
parent
006cb20df1
commit
30177e4809
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 87 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 86 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 57 KiB |
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2021-02-03 mer. 11:20 -->
|
<!-- 2021-02-04 jeu. 20:23 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Encoder Renishaw Vionic - Test Bench</title>
|
<title>Encoder Renishaw Vionic - Test Bench</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
@ -39,23 +39,23 @@
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org691fd8d">1. Encoder Model</a></li>
|
<li><a href="#org5cfc524">1. Encoder Model</a></li>
|
||||||
<li><a href="#org6d49234">2. Noise Measurement</a>
|
<li><a href="#orgdb597d2">2. Noise Measurement</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga5ff56c">2.1. Test Bench</a></li>
|
<li><a href="#orgcf20f40">2.1. Test Bench</a></li>
|
||||||
<li><a href="#org14877fe">2.2. Results</a></li>
|
<li><a href="#orga00ea74">2.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org2b0bcde">3. Linearity Measurement</a>
|
<li><a href="#orgf37b64f">3. Linearity Measurement</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org175ba6f">3.1. Test Bench</a></li>
|
<li><a href="#orgd7d0144">3.1. Test Bench</a></li>
|
||||||
<li><a href="#org69056ec">3.2. Results</a></li>
|
<li><a href="#org664af52">3.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org5ca0c03">4. Dynamical Measurement</a>
|
<li><a href="#orgf3c325a">4. Dynamical Measurement</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgde9a37d">4.1. Test Bench</a></li>
|
<li><a href="#org5deba50">4.1. Test Bench</a></li>
|
||||||
<li><a href="#org8bc51db">4.2. Results</a></li>
|
<li><a href="#org4eec56e">4.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
<p>This report is also available as a <a href="./test-bench-vionic.pdf">pdf</a>.</p>
|
<p>This report is also available as a <a href="./test-bench-vionic.pdf">pdf</a>.</p>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="note" id="org978e8ad">
|
<div class="note" id="org3ece63c">
|
||||||
<p>
|
<p>
|
||||||
You can find below the document of:
|
You can find below the document of:
|
||||||
</p>
|
</p>
|
||||||
@ -90,7 +90,7 @@ In particular, we would like to measure:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgf372152" class="figure">
|
<div id="orga8ce6e5" class="figure">
|
||||||
<p><img src="figs/encoder_vionic.png" alt="encoder_vionic.png" />
|
<p><img src="figs/encoder_vionic.png" alt="encoder_vionic.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Picture of the Vionic Encoder</p>
|
<p><span class="figure-number">Figure 1: </span>Picture of the Vionic Encoder</p>
|
||||||
@ -106,8 +106,8 @@ In particular, we would like to measure:
|
|||||||
<li>7: 2YJ313</li>
|
<li>7: 2YJ313</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org691fd8d" class="outline-2">
|
<div id="outline-container-org5cfc524" class="outline-2">
|
||||||
<h2 id="org691fd8d"><span class="section-number-2">1</span> Encoder Model</h2>
|
<h2 id="org5cfc524"><span class="section-number-2">1</span> Encoder Model</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
The Encoder is characterized by its dynamics \(G_m(s)\) from the “true” displacement \(y\) to measured displacement \(y_m\).
|
The Encoder is characterized by its dynamics \(G_m(s)\) from the “true” displacement \(y\) to measured displacement \(y_m\).
|
||||||
@ -119,27 +119,27 @@ It is also characterized by its measurement noise \(n\) that can be described by
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The model of the encoder is shown in Figure <a href="#orgb6cf5b4">2</a>.
|
The model of the encoder is shown in Figure <a href="#org3722c48">2</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgb6cf5b4" class="figure">
|
<div id="org3722c48" class="figure">
|
||||||
<p><img src="figs/encoder-model-schematic.png" alt="encoder-model-schematic.png" />
|
<p><img src="figs/encoder-model-schematic.png" alt="encoder-model-schematic.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Model of the Encoder</p>
|
<p><span class="figure-number">Figure 2: </span>Model of the Encoder</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) with unity ASD as shown in Figure <a href="#orgd00343b">4</a>.
|
We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) with unity ASD as shown in Figure <a href="#org1f28b48">4</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org2725c4b" class="figure">
|
<div id="org1ffb004" class="figure">
|
||||||
<p><img src="figs/encoder-model-schematic-with-asd.png" alt="encoder-model-schematic-with-asd.png" />
|
<p><img src="figs/encoder-model-schematic-with-asd.png" alt="encoder-model-schematic-with-asd.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table id="org20632fc" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
<table id="org6be868a" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
<caption class="t-above"><span class="table-number">Table 1:</span> Characteristics of the Vionic Encoder</caption>
|
<caption class="t-above"><span class="table-number">Table 1:</span> Characteristics of the Vionic Encoder</caption>
|
||||||
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -184,7 +184,7 @@ We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) wi
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgd00343b" class="figure">
|
<div id="org1f28b48" class="figure">
|
||||||
<p><img src="./figs/vionic_expected_noise.png" alt="vionic_expected_noise.png" />
|
<p><img src="./figs/vionic_expected_noise.png" alt="vionic_expected_noise.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Expected interpolation errors for the Vionic Encoder</p>
|
<p><span class="figure-number">Figure 4: </span>Expected interpolation errors for the Vionic Encoder</p>
|
||||||
@ -193,15 +193,15 @@ We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) wi
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org6d49234" class="outline-2">
|
<div id="outline-container-orgdb597d2" class="outline-2">
|
||||||
<h2 id="org6d49234"><span class="section-number-2">2</span> Noise Measurement</h2>
|
<h2 id="orgdb597d2"><span class="section-number-2">2</span> Noise Measurement</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org4cb96c9"></a>
|
<a id="org4a8cf7a"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orga5ff56c" class="outline-3">
|
<div id="outline-container-orgcf20f40" class="outline-3">
|
||||||
<h3 id="orga5ff56c"><span class="section-number-3">2.1</span> Test Bench</h3>
|
<h3 id="orgcf20f40"><span class="section-number-3">2.1</span> Test Bench</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
To measure the noise \(n\) of the encoder, one can rigidly fix the head and the ruler together such that no motion should be measured.
|
To measure the noise \(n\) of the encoder, one can rigidly fix the head and the ruler together such that no motion should be measured.
|
||||||
@ -210,48 +210,35 @@ Then, the measured signal \(y_m\) corresponds to the noise \(n\).
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org14877fe" class="outline-3">
|
<div id="outline-container-orga00ea74" class="outline-3">
|
||||||
<h3 id="org14877fe"><span class="section-number-3">2.2</span> Results</h3>
|
<h3 id="orga00ea74"><span class="section-number-3">2.2</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
First we load the data.
|
First we load the data.
|
||||||
</p>
|
The raw measured data as well as the low pass filtered data (using a first order low pass filter with a cut-off at 10Hz) are shown in Figure <a href="#orgafb2d71">5</a>.
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Load Data</span></span>
|
|
||||||
enc1 = load(<span class="org-string">'noise_meas_100s_20kHz_1.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
enc2 = load(<span class="org-string">'noise_meas_100s_20kHz_2.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
enc3 = load(<span class="org-string">'noise_meas_100s_20kHz_3.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
enc4 = load(<span class="org-string">'noise_meas_100s_20kHz_4.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
enc6 = load(<span class="org-string">'noise_meas_100s_20kHz_6.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
enc7 = load(<span class="org-string">'noise_meas_100s_20kHz_7.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The raw measured data as well as the low pass filtered data (using a first order low pass filter with a cut-off at 10Hz) are shown in Figure <a href="#org72fd239">5</a>.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org72fd239" class="figure">
|
<div id="orgafb2d71" class="figure">
|
||||||
<p><img src="figs/vionic_noise_raw_lpf.png" alt="vionic_noise_raw_lpf.png" />
|
<p><img src="figs/vionic_noise_raw_lpf.png" alt="vionic_noise_raw_lpf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Time domain measurement (raw data and low pass filtered data with first order 10Hz LPF)</p>
|
<p><span class="figure-number">Figure 5: </span>Time domain measurement (raw data and low pass filtered data with first order 10Hz LPF)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The time domain data for all the encoders are compared in Figure <a href="#orgf7f2fda">6</a>.
|
The time domain data for all the encoders are compared in Figure <a href="#org6fcc332">6</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgf7f2fda" class="figure">
|
<div id="org6fcc332" class="figure">
|
||||||
<p><img src="figs/vionic_noise_time.png" alt="vionic_noise_time.png" />
|
<p><img src="figs/vionic_noise_time.png" alt="vionic_noise_time.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Comparison of the time domain measurement</p>
|
<p><span class="figure-number">Figure 6: </span>Comparison of the time domain measurement</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The amplitude spectral density is computed and shown in Figure <a href="#orgf3c083c">7</a>.
|
The amplitude spectral density is computed and shown in Figure <a href="#org0596231">7</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgf3c083c" class="figure">
|
<div id="org0596231" class="figure">
|
||||||
<p><img src="figs/vionic_noise_asd.png" alt="vionic_noise_asd.png" />
|
<p><img src="figs/vionic_noise_asd.png" alt="vionic_noise_asd.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>Amplitude Spectral Density of the measured signal</p>
|
<p><span class="figure-number">Figure 7: </span>Amplitude Spectral Density of the measured signal</p>
|
||||||
@ -266,11 +253,11 @@ Let’s create a transfer function that approximate the measured noise of th
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The amplitude of the transfer function and the measured ASD are shown in Figure <a href="#org8714af7">8</a>.
|
The amplitude of the transfer function and the measured ASD are shown in Figure <a href="#org2802608">8</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org8714af7" class="figure">
|
<div id="org2802608" class="figure">
|
||||||
<p><img src="figs/vionic_noise_asd_model.png" alt="vionic_noise_asd_model.png" />
|
<p><img src="figs/vionic_noise_asd_model.png" alt="vionic_noise_asd_model.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Measured ASD of the noise and modelled one</p>
|
<p><span class="figure-number">Figure 8: </span>Measured ASD of the noise and modelled one</p>
|
||||||
@ -279,15 +266,15 @@ The amplitude of the transfer function and the measured ASD are shown in Figure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2b0bcde" class="outline-2">
|
<div id="outline-container-orgf37b64f" class="outline-2">
|
||||||
<h2 id="org2b0bcde"><span class="section-number-2">3</span> Linearity Measurement</h2>
|
<h2 id="orgf37b64f"><span class="section-number-2">3</span> Linearity Measurement</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgc339bfd"></a>
|
<a id="org55aba7f"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org175ba6f" class="outline-3">
|
<div id="outline-container-orgd7d0144" class="outline-3">
|
||||||
<h3 id="org175ba6f"><span class="section-number-3">3.1</span> Test Bench</h3>
|
<h3 id="orgd7d0144"><span class="section-number-3">3.1</span> Test Bench</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
In order to measure the linearity, we have to compare the measured displacement with a reference sensor with a known linearity.
|
In order to measure the linearity, we have to compare the measured displacement with a reference sensor with a known linearity.
|
||||||
@ -296,7 +283,7 @@ An actuator should also be there so impose a displacement.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
One idea is to use the test-bench shown in Figure <a href="#org30ec1c0">9</a>.
|
One idea is to use the test-bench shown in Figure <a href="#orgd759dea">9</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -309,7 +296,7 @@ As the interferometer has a very large bandwidth, we should be able to estimate
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org30ec1c0" class="figure">
|
<div id="orgd759dea" class="figure">
|
||||||
<p><img src="figs/test_bench_encoder_calibration.png" alt="test_bench_encoder_calibration.png" />
|
<p><img src="figs/test_bench_encoder_calibration.png" alt="test_bench_encoder_calibration.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Schematic of the test bench</p>
|
<p><span class="figure-number">Figure 9: </span>Schematic of the test bench</p>
|
||||||
@ -317,30 +304,30 @@ As the interferometer has a very large bandwidth, we should be able to estimate
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org69056ec" class="outline-3">
|
<div id="outline-container-org664af52" class="outline-3">
|
||||||
<h3 id="org69056ec"><span class="section-number-3">3.2</span> Results</h3>
|
<h3 id="org664af52"><span class="section-number-3">3.2</span> Results</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5ca0c03" class="outline-2">
|
<div id="outline-container-orgf3c325a" class="outline-2">
|
||||||
<h2 id="org5ca0c03"><span class="section-number-2">4</span> Dynamical Measurement</h2>
|
<h2 id="orgf3c325a"><span class="section-number-2">4</span> Dynamical Measurement</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org71dc40b"></a>
|
<a id="org7abf850"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgde9a37d" class="outline-3">
|
<div id="outline-container-org5deba50" class="outline-3">
|
||||||
<h3 id="orgde9a37d"><span class="section-number-3">4.1</span> Test Bench</h3>
|
<h3 id="org5deba50"><span class="section-number-3">4.1</span> Test Bench</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8bc51db" class="outline-3">
|
<div id="outline-container-org4eec56e" class="outline-3">
|
||||||
<h3 id="org8bc51db"><span class="section-number-3">4.2</span> Results</h3>
|
<h3 id="org4eec56e"><span class="section-number-3">4.2</span> Results</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2021-02-03 mer. 11:20</p>
|
<p class="date">Created: 2021-02-04 jeu. 20:23</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -173,32 +173,27 @@ addpath('./mat/');
|
|||||||
|
|
||||||
** Results
|
** Results
|
||||||
First we load the data.
|
First we load the data.
|
||||||
#+begin_src matlab
|
#+begin_src matlab :exports none
|
||||||
%% Load Data
|
%% Load all the measurements
|
||||||
enc1 = load('noise_meas_100s_20kHz_1.mat', 't', 'x');
|
enc = {};
|
||||||
enc2 = load('noise_meas_100s_20kHz_2.mat', 't', 'x');
|
for i = 1:7
|
||||||
enc3 = load('noise_meas_100s_20kHz_3.mat', 't', 'x');
|
enc(i) = {load(['mat/noise_meas_100s_20kHz_' num2str(i) '.mat'], 't', 'x')};
|
||||||
enc4 = load('noise_meas_100s_20kHz_4.mat', 't', 'x');
|
end
|
||||||
enc6 = load('noise_meas_100s_20kHz_6.mat', 't', 'x');
|
|
||||||
enc7 = load('noise_meas_100s_20kHz_7.mat', 't', 'x');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Remove initial offset
|
%% Remove initial offset
|
||||||
enc1.x = enc1.x - mean(enc1.x(1:1000));
|
for i = 1:7
|
||||||
enc2.x = enc2.x - mean(enc2.x(1:1000));
|
enc{i}.x = enc{i}.x - mean(enc{i}.x(1:1000));
|
||||||
enc3.x = enc3.x - mean(enc3.x(1:1000));
|
end
|
||||||
enc4.x = enc4.x - mean(enc4.x(1:1000));
|
|
||||||
enc6.x = enc6.x - mean(enc6.x(1:1000));
|
|
||||||
enc7.x = enc7.x - mean(enc7.x(1:1000));
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The raw measured data as well as the low pass filtered data (using a first order low pass filter with a cut-off at 10Hz) are shown in Figure [[fig:vionic_noise_raw_lpf]].
|
The raw measured data as well as the low pass filtered data (using a first order low pass filter with a cut-off at 10Hz) are shown in Figure [[fig:vionic_noise_raw_lpf]].
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(enc1.t, 1e9*enc1.x, '.', 'DisplayName', 'Enc 1 - Raw');
|
plot(enc{1}.t, 1e9*enc{1}.x, '.', 'DisplayName', 'Enc 1 - Raw');
|
||||||
plot(enc1.t, 1e9*lsim(1/(1 + s/2/pi/10), enc1.x, enc1.t), '-', 'DisplayName', 'Enc 1 - LPF');
|
plot(enc{1}.t, 1e9*lsim(1/(1 + s/2/pi/10), enc{1}.x, enc{1}.t), '-', 'DisplayName', 'Enc 1 - LPF');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Time [s]');
|
xlabel('Time [s]');
|
||||||
ylabel('Displacement [nm]');
|
ylabel('Displacement [nm]');
|
||||||
@ -218,12 +213,10 @@ The time domain data for all the encoders are compared in Figure [[fig:vionic_no
|
|||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(enc1.t, 1e9*lsim(1/(1 + s/2/pi/10), enc1.x, enc1.t), '.', 'DisplayName', 'Enc 1');
|
for i=1:7
|
||||||
plot(enc2.t, 1e9*lsim(1/(1 + s/2/pi/10), enc2.x, enc2.t), '.', 'DisplayName', 'Enc 2');
|
plot(enc{i}.t, 1e9*lsim(1/(1 + s/2/pi/10), enc{i}.x, enc{i}.t), '.', ...
|
||||||
plot(enc3.t, 1e9*lsim(1/(1 + s/2/pi/10), enc3.x, enc3.t), '.', 'DisplayName', 'Enc 3');
|
'DisplayName', sprintf('Enc %i', i));
|
||||||
plot(enc4.t, 1e9*lsim(1/(1 + s/2/pi/10), enc4.x, enc4.t), '.', 'DisplayName', 'Enc 4');
|
end
|
||||||
plot(enc6.t, 1e9*lsim(1/(1 + s/2/pi/10), enc6.x, enc6.t), '.', 'DisplayName', 'Enc 6');
|
|
||||||
plot(enc7.t, 1e9*lsim(1/(1 + s/2/pi/10), enc7.x, enc7.t), '.', 'DisplayName', 'Enc 7');
|
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Time [s]');
|
xlabel('Time [s]');
|
||||||
ylabel('Displacement [nm]');
|
ylabel('Displacement [nm]');
|
||||||
@ -248,23 +241,22 @@ Fs = 1/Ts;
|
|||||||
% Hannning Windows
|
% Hannning Windows
|
||||||
win = hanning(ceil(0.5/Ts));
|
win = hanning(ceil(0.5/Ts));
|
||||||
|
|
||||||
[p1, f] = pwelch(enc1.x, win, [], [], Fs);
|
[pxx, f] = pwelch(enc{1}.x, win, [], [], Fs);
|
||||||
[p2, ~] = pwelch(enc2.x, win, [], [], Fs);
|
enc{1}.pxx = pxx;
|
||||||
[p3, ~] = pwelch(enc3.x, win, [], [], Fs);
|
|
||||||
[p4, ~] = pwelch(enc4.x, win, [], [], Fs);
|
for i=2:7
|
||||||
[p6, ~] = pwelch(enc6.x, win, [], [], Fs);
|
[pxx, ~] = pwelch(enc{i}.x, win, [], [], Fs);
|
||||||
[p7, ~] = pwelch(enc7.x, win, [], [], Fs);
|
enc{i}.pxx = pxx;
|
||||||
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, sqrt(p1), 'DisplayName', 'Enc 1');
|
for i=1:7
|
||||||
plot(f, sqrt(p2), 'DisplayName', 'Enc 2');
|
plot(f, sqrt(enc{i}.pxx), ...
|
||||||
plot(f, sqrt(p3), 'DisplayName', 'Enc 3');
|
'DisplayName', sprintf('Enc %i', i));
|
||||||
plot(f, sqrt(p4), 'DisplayName', 'Enc 4');
|
end
|
||||||
plot(f, sqrt(p6), 'DisplayName', 'Enc 6');
|
|
||||||
plot(f, sqrt(p7), 'DisplayName', 'Enc 7');
|
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
|
xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
|
||||||
xlim([10, Fs/2]);
|
xlim([10, Fs/2]);
|
||||||
@ -292,11 +284,10 @@ The amplitude of the transfer function and the measured ASD are shown in Figure
|
|||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, sqrt(p1), 'color', [0, 0, 0, 0.5], 'DisplayName', '$\Gamma_n(\omega)$');
|
plot(f, sqrt(p1), 'color', [0, 0, 0, 0.5], 'DisplayName', '$\Gamma_n(\omega)$');
|
||||||
plot(f, sqrt(p2), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off');
|
for i=2:7
|
||||||
plot(f, sqrt(p3), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off');
|
plot(f, sqrt(enc{i}.pxx), 'color', [0, 0, 0, 0.5], ...
|
||||||
plot(f, sqrt(p4), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off');
|
'HandleVisibility', 'off');
|
||||||
plot(f, sqrt(p6), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off');
|
end
|
||||||
plot(f, sqrt(p7), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off');
|
|
||||||
plot(f, abs(squeeze(freqresp(Gn_e, f, 'Hz'))), 'r-', 'DisplayName', '$|G_n(j\omega)|$');
|
plot(f, abs(squeeze(freqresp(Gn_e, f, 'Hz'))), 'r-', 'DisplayName', '$|G_n(j\omega)|$');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user