Rework the presentation of results + analysis

This commit is contained in:
Thomas Dehaeze 2021-02-18 11:38:56 +01:00
parent 77f2339a9d
commit 29ebdc27e0
19 changed files with 3633 additions and 293 deletions

BIN
doc/flex_joints.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
figs/nano_hexapod.pdf Normal file

Binary file not shown.

BIN
figs/nano_hexapod.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 168 KiB

View File

@ -1,64 +0,0 @@
%% Remove first second
Ts = t(2)-t(1);
t = t(ceil(1/Ts):end);
d = d(ceil(1/Ts):end);
dp = dp(ceil(1/Ts):end);
F = F(ceil(1/Ts):end);
t = t - t(1);
F = F - F(1);
%% LPf
s = tf('s');
G_lpf = 1/(1+s/2/pi/10);
F = lsim(G_lpf, F, t);
d = lsim(G_lpf, d, t);
dp = lsim(G_lpf, dp, t);
%%
figure;
plot(t, F);
figure;
hold on;
plot(t, d, 'DisplayName', 'Encoder');
plot(t, dp, 'DisplayName', 'Mahr')
hold off;
legend;
%%
t_start = 0.05;
t_end = 0.12;
d = d(t < t_end & t > t_start);
dp = dp(t < t_end & t > t_start);
F = F(t < t_end & t > t_start);
d = d - d(1);
dp = dp - dp(1);
F = F - F(1);
%%
figure;
plot(F, dp);
xlabel('Measured Force [N]');
ylabel('Measured Displacement [m]');
%%
sprintf('Stiffness is %.3f [N/mm]', abs(1e-3*(d\F)))
%%
figure;
hold on;
plot(F, d);
plot(F, F/(d\F));
hold off;
xlabel('Measured Force [N]');
ylabel('Measured Displacement [m]');
%%
figure;
hold on;
plot(dp, d);
hold off;
xlabel('Probe [m]');
ylabel('Encoder [m]');

View File

@ -0,0 +1,53 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% Flexible joint Geometry
% The flexible joint used for the Nano-Hexapod is shown in Figure [[fig:flexible_joint_geometry]].
% Its bending stiffness is foreseen to be $k_{R_y}\approx 5\,\frac{Nm}{rad}$ and its stroke $\theta_{y,\text{max}}\approx 25\,mrad$.
% #+name: fig:flexible_joint_geometry
% #+caption: Geometry of the flexible joint
% [[file:figs/flexible_joint_geometry.png]]
% The height between the flexible point (center of the joint) and the point where external forces are applied is $h = 20\,mm$.
% Let's define the parameters on Matlab.
kRx = 5; % Bending Stiffness [Nm/rad]
Rxmax = 25e-3; % Bending Stroke [rad]
h = 20e-3; % Height [m]
% Required external applied force
% The bending $\theta_y$ of the flexible joint due to the force $F_x$ is:
% \begin{equation}
% \theta_y = \frac{M_y}{k_{R_y}} = \frac{F_x h}{k_{R_y}}
% \end{equation}
% Therefore, the applied force to test the full range of the flexible joint is:
% \begin{equation}
% F_{x,\text{max}} = \frac{k_{R_y} \theta_{y,\text{max}}}{h}
% \end{equation}
Fxmax = kRx*Rxmax/h; % Force to induce maximum stroke [N]
% And we obtain:
sprintf('\\begin{equation} F_{x,max} = %.1f\\, [N] \\end{equation}', Fxmax)
% Required actuator stroke and sensors range
% The flexible joint is designed to allow a bending motion of $\pm 25\,mrad$.
% The corresponding stroke at the location of the force sensor is:
% \[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \]
dxmax = h*tan(Rxmax);
sprintf('\\begin{equation} d_{max} = %.1f\\, [mm] \\end{equation}', 1e3*dxmax)

67
matlab/error_budget.m Normal file
View File

@ -0,0 +1,67 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% Finite Element Model
% From the Finite Element Model, the stiffness and stroke of the flexible joint have been computed and summarized in Tables [[tab:axial_shear_characteristics]] and [[tab:bending_torsion_characteristics]].
%% Stiffness
ka = 94e6; % Axial Stiffness [N/m]
ks = 13e6; % Shear Stiffness [N/m]
kb = 5; % Bending Stiffness [Nm/rad]
kt = 260; % Torsional Stiffness [Nm/rad]
%% Maximum force
Fa = 469; % Axial Force before yield [N]
Fs = 242; % Shear Force before yield [N]
Fb = 0.118; % Bending Force before yield [Nm]
Ft = 1.508; % Torsional Force before yield [Nm]
%% Compute the corresponding stroke
Xa = Fa/ka; % Axial Stroke before yield [m]
Xs = Fs/ks; % Shear Stroke before yield [m]
Xb = Fb/kb; % Bending Stroke before yield [rad]
Xt = Ft/kt; % Torsional Stroke before yield [rad]
% Setup
% The setup is schematically represented in Figure [[fig:test_bench_flex_side_bis]].
% The force is applied on top of the flexible joint with a distance $h$ with the joint's center.
% The displacement of the flexible joint is also measured at the same height.
% The height between the joint's center and the force application point is:
h = 25e-3; % Height [m]
% Estimation error due to force sensor compression
% The measured displacement is not done directly at the joint's location.
% The force sensor compression will then induce an error on the joint's stiffness.
% The force sensor stiffness $k_F$ is estimated to be around:
kF = 50/0.05e-3; % [N/m]
sprintf('k_F = %.1e [N/m]', kF)
% Estimation error due to height estimation error
% Let's consider an error in the estimation of the height from the application of the force to the joint's center:
% \begin{equation}
% h_{\text{est}} = h (1 + \epsilon)
% \end{equation}
% The computed bending stiffness will be:
% \begin{equation}
% k_\text{est} \approx h_{\text{est}}^2 \frac{F_x}{d_x}
% \end{equation}
% And the stiffness estimation error is:
% \begin{equation}
% \frac{k_{\text{est}}}{k_{R_y}} = (1 + \epsilon)^2
% \end{equation}
h_err = 0.2e-3; % Height estimation error [m]

62
matlab/probe_stiffness.m Normal file
View File

@ -0,0 +1,62 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
addpath('./mat/');
% Results :ignore:
% Let's load the measurement results.
load('meas_stiff_probe.mat', 't', 'd', 'dp', 'F')
%% Sampling time [s]
Ts = (t(end) - t(1))/(length(t)-1);
%% Remove first second
t = t(ceil(1/Ts):end);
d = d(ceil(1/Ts):end);
dp = dp(ceil(1/Ts):end);
F = F(ceil(1/Ts):end);
%% Remove Offset
t = t - t(1);
F = F - mean(F(1:ceil(1/Ts)));
% The time domain measured force and displacement are shown in Figure [[fig:mahr_time_domain]].
%% Time Domain plots
figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile;
plot(t, F);
ylabel('Force [N]'); set(gca, 'XTickLabel',[]);
ax2 = nexttile;
plot(t, d);
xlabel('Time [s]'); ylabel('Displacement [m]');
% #+RESULTS:
% : Stiffness is 0.039 [N/mm]
% This is very close to the 0.04 [N/mm] written in the [[file:doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf][Millimar 1318 probe datasheet]].
% And compare the linear fit with the raw measurement data (Figure [[fig:mahr_stiffness_f_d_plot]]).
figure;
hold on;
plot(F, d, 'DisplayName', 'Raw data');
plot(F, F/(d\F), 'DisplayName', 'Linear fit');
hold off;
xlabel('Measured Force [N]');
ylabel('Measured Displacement [m]');
legend('location', 'southeast');

86
matlab/probe_vs_encoder.m Normal file
View File

@ -0,0 +1,86 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
addpath('./mat/');
% Results :ignore:
% Let's load the measurements.
load('meas_probe_against_encoder.mat', 't', 'd', 'dp', 'F')
%% Sampling time [s]
Ts = (t(end) - t(1))/(length(t)-1);
%% Remove first second
t = t(ceil(1/Ts):end);
d = -d(ceil(1/Ts):end);
dp = -dp(ceil(1/Ts):end);
F = F(ceil(1/Ts):end);
% The time domain measured displacement by the probe and by the encoder is shown in Figure [[fig:comp_encoder_probe_time]].
%% Time Domain plots
figure;
hold on;
plot(t, d, 'DisplayName', 'Encoder');
plot(t, dp, 'DisplayName', 'Probe');
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
% #+name: fig:comp_encoder_probe_time
% #+caption: Time domain measurement
% #+RESULTS:
% [[file:figs/comp_encoder_probe_time.png]]
% If we zoom, we see that there is some delay between the encoder and the probe (Figure [[fig:comp_encoder_probe_time_zoom]]).
%% Zoom
figure;
hold on;
plot(t, d, 'DisplayName', 'Encoder');
plot(t, dp, 'DisplayName', 'Probe');
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
xlim([7.7, 7.9])
% #+RESULTS:
% : The time delay is approximately 15.8 [ms]
% The measured mismatch between the encoder and the probe with and without compensating for the time delay are shown in Figure [[fig:comp_encoder_probe_mismatch]].
figure;
hold on;
plot(t, d-dp, 'DisplayName', 'Raw Mismatch');
plot(t(1:end-finddelay(d, dp)), d(1:end-finddelay(d, dp))-dp(finddelay(d, dp)+1:end), 'DisplayName', 'Removed Delay');
hold off;
xlabel('Time [s]'); ylabel('Measurement Missmatch [m]');
% #+name: fig:comp_encoder_probe_mismatch
% #+caption: Measurement mismatch, with and without delay compensation
% #+RESULTS:
% [[file:figs/comp_encoder_probe_mismatch.png]]
% Finally, the displacement of the probe is shown as a function of the displacement of the encoder and a linear fit is made (Figure [[fig:comp_encoder_probe_linear_fit]]).
figure;
hold on;
plot(1e3*d, 1e3*dp, 'DisplayName', 'Raw data');
plot(1e3*d, 1e3*d*(d\dp), 'DisplayName', sprintf('Linear fit: $\\alpha = %.5f$', (d\dp)));
hold on;
xlabel('Encoder [mm]'); ylabel('Probe [mm]');
legend('location', 'southeast')

View File

@ -3,9 +3,9 @@
"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-16 mar. 21:23 --> <!-- 2021-02-18 jeu. 11:33 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Flexible Joint - Test Bench</title> <title>Flexible Joints - Test Bench</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
@ -34,33 +34,40 @@
| |
<a accesskey="H" href="../index.html"> HOME </a> <a accesskey="H" href="../index.html"> HOME </a>
</div><div id="content"> </div><div id="content">
<h1 class="title">Flexible Joint - Test Bench</h1> <h1 class="title">Flexible Joints - Test Bench</h1>
<div id="table-of-contents"> <div id="table-of-contents">
<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="#org7706130">1. Flexible Joints - Requirements</a></li> <li><a href="#org8b281d9">1. Flexible Joints</a></li>
<li><a href="#org2925cfa">2. Test Bench Description</a> <li><a href="#org95f31e9">2. Measurement Test Bench - Bending Stiffness</a>
<ul> <ul>
<li><a href="#org1121b59">2.1. Flexible joint Geometry</a></li> <li><a href="#org49aa26d">2.1. Flexible joint Geometry</a></li>
<li><a href="#org8e5eddc">2.2. Required external applied force</a></li> <li><a href="#org6176a07">2.2. Required external applied force</a></li>
<li><a href="#org5baf14d">2.3. Required actuator stroke and sensors range</a></li> <li><a href="#orgd96e919">2.3. Required actuator stroke and sensors range</a></li>
<li><a href="#orge82143e">2.4. First try with the APA95ML</a></li> <li><a href="#org34c590e">2.4. Test Bench</a></li>
<li><a href="#orgfd806d9">2.5. Test Bench</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org169b47f">3. Agreement between the probe and the encoder</a> <li><a href="#org600c97d">3. Error budget</a>
<ul> <ul>
<li><a href="#org5ed49b7">3.1. Setup</a></li> <li><a href="#orgc9ee1f1">3.1. Finite Element Model</a></li>
<li><a href="#orga83f29f">3.2. Results</a></li> <li><a href="#orga7f4716">3.2. Setup</a></li>
<li><a href="#org82790b3">3.3. Effect of Bending</a></li>
<li><a href="#org36529f3">3.4. Computation of the bending stiffness</a></li>
<li><a href="#org8b414e4">3.5. Estimation error due to force and displacement sensors accuracy</a></li>
<li><a href="#org1ab0479">3.6. Estimation error due to Shear</a></li>
<li><a href="#org6765aeb">3.7. Estimation error due to force sensor compression</a></li>
<li><a href="#orgdc33e2c">3.8. Estimation error due to height estimation error</a></li>
<li><a href="#orgbff0a4b">3.9. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org0fbb329">4. Measurement of the Millimar 1318 probe stiffness</a> <li><a href="#orge6a23d4">4. First Measurements</a>
<ul> <ul>
<li><a href="#orgc7d7173">4.1. Results</a></li> <li><a href="#orgf3173a7">4.1. Agreement between the probe and the encoder</a></li>
<li><a href="#org47cc77a">4.2. Measurement of the Millimar 1318 probe stiffness</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgda9e689">5. Experimental measurement</a></li> <li><a href="#org48987bc">5. Bending Stiffness Measurement</a></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -68,95 +75,186 @@
<p>This report is also available as a <a href="./test-bench-flexible-joints.pdf">pdf</a>.</p> <p>This report is also available as a <a href="./test-bench-flexible-joints.pdf">pdf</a>.</p>
<hr> <hr>
<div id="outline-container-org7706130" class="outline-2"> <p>
<h2 id="org7706130"><span class="section-number-2">1</span> Flexible Joints - Requirements</h2> In this document, we present a test-bench that has been developed in order to measure the bending stiffness of flexible joints.
<div class="outline-text-2" id="text-1"> </p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<p>
It is structured as follow:
</p>
<ul class="org-ul">
<li>Section <a href="#org1f36cf1">1</a>: the geometry of the flexible joints and the expected stiffness and stroke are presented</li>
<li>Section <a href="#org487b515">2</a>: the measurement bench is presented</li>
<li>Section <a href="#orgdab23b9">3</a>: an error budget is performed in order to estimate the accuracy of the measured stiffness</li>
<li>Section <a href="#org60b7659">4</a>: first measurements are performed</li>
<li>Section <a href="#org34f6444">5</a>: the bending stiffness of the flexible joints are measured</li>
</ul>
<div id="outline-container-org8b281d9" class="outline-2">
<h2 id="org8b281d9"><span class="section-number-2">1</span> Flexible Joints</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org1f36cf1"></a>
</p>
<p>
The flexible joints that are going to be measured in this document have been design to be used with a Nano-Hexapod (Figure <a href="#orgd244b13">1</a>).
</p>
<div id="orgd244b13" class="figure">
<p><img src="figs/nano_hexapod.png" alt="nano_hexapod.png" />
</p>
<p><span class="figure-number">Figure 1: </span>CAD view of the Nano-Hexapod containing the flexible joints</p>
</div>
<p>
Ideally, these flexible joints would behave as perfect ball joints, that is to say:
</p>
<ul class="org-ul">
<li>no bending and torsional stiffnesses</li>
<li>infinite shear and axial stiffnesses</li>
<li>un-limited bending and torsional stroke</li>
<li>no friction, no backlash</li>
</ul>
<p>
The real characteristics of the flexible joints will influence the dynamics of the Nano-Hexapod.
Using a multi-body dynamical model of the nano-hexapod, the specifications in term of stiffness and stroke of the flexible joints have been determined and summarized in Table <a href="#org42febf6">1</a>.
</p>
<table id="org42febf6" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Specifications for the flexible joints and estimated characteristics from the Finite Element Model</caption>
<colgroup> <colgroup>
<col class="org-left" /> <col class="org-left" />
<col class="org-left" /> <col class="org-left" />
<col class="org-right" />
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th scope="col" class="org-left">&#xa0;</th> <th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left"><b>Specification</b></th> <th scope="col" class="org-left"><b>Specification</b></th>
<th scope="col" class="org-right"><b>FEM</b></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td class="org-left">Axial Stiffness</td> <td class="org-left">Axial Stiffness</td>
<td class="org-left">&gt; 200 [N/um]</td> <td class="org-left">&gt; 100 [N/um]</td>
<td class="org-right">94</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Shear Stiffness</td> <td class="org-left">Shear Stiffness</td>
<td class="org-left">&gt; 1 [N/um]</td> <td class="org-left">&gt; 1 [N/um]</td>
<td class="org-right">13</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Bending Stiffness</td> <td class="org-left">Bending Stiffness</td>
<td class="org-left">&lt; 100 [Nm/rad]</td> <td class="org-left">&lt; 100 [Nm/rad]</td>
<td class="org-right">5</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Torsion Stiffness</td> <td class="org-left">Torsion Stiffness</td>
<td class="org-left">&lt; 500 [Nm/rad]</td> <td class="org-left">&lt; 500 [Nm/rad]</td>
<td class="org-right">260</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Bending Stroke</td> <td class="org-left">Bending Stroke</td>
<td class="org-left">&gt; 1 [mrad]</td> <td class="org-left">&gt; 1 [mrad]</td>
<td class="org-right">24.5</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Torsion Stroke</td> <td class="org-left">Torsion Stroke</td>
<td class="org-left">&gt; 5 [urad]</td> <td class="org-left">&gt; 5 [urad]</td>
<td class="org-right">&#xa0;</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p>
Then, the classical geometry of a flexible ball joint shown in Figure <a href="#org904f6bf">2</a> has been optimized in order to meet the requirements.
This has been done using a Finite Element Software and the obtained joint&rsquo;s characteristics are summarized in Table <a href="#org42febf6">1</a>.
</p>
<div id="org904f6bf" class="figure">
<p><img src="figs/flexible_joint_fem_geometry.png" alt="flexible_joint_fem_geometry.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Flexible part of the Joint used for FEM - CAD view</p>
</div>
<p>
The obtained geometry are defined in the <a href="doc/flex_joints.pdf">drawings of the flexible joints</a>.
The material is a special kind of stainless steel called &ldquo;F16PH&rdquo;..
</p>
</div> </div>
</div> </div>
<div id="outline-container-org2925cfa" class="outline-2"> <div id="outline-container-org95f31e9" class="outline-2">
<h2 id="org2925cfa"><span class="section-number-2">2</span> Test Bench Description</h2> <h2 id="org95f31e9"><span class="section-number-2">2</span> Measurement Test Bench - Bending Stiffness</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
The main characteristic of the flexible joint that we want to measure is its bending stiffness \(k_{R_x} \approx k_{R_y}\). <a id="org487b515"></a>
</p>
<p>
The most important characteristic of the flexible joint that we want to measure is its bending stiffness \(k_{R_x} \approx k_{R_y}\).
</p> </p>
<p> <p>
To do so, a test bench is used. To do so, we have to apply a torque \(T_x\) on the flexible joint and measure its angular deflection \(\theta_x\).
Specifications of the test bench to precisely measure the bending stiffness are described in this section. The stiffness is then
</p>
\begin{equation}
k_{R_x} = \frac{T_x}{\theta_x}
\end{equation}
<p>
As it is quite difficult to apply a pure torque, a force will be applied instead.
The application point of the force should far enough from the flexible part such that the obtained bending is much larger than the displacement in shear.
</p> </p>
<p> <p>
The basic idea is to measured the angular deflection of the flexible joint as a function of the applied torque. The working principle of the bench is schematically shown in Figure <a href="#org5e03b2d">3</a>.
One part of the flexible joint is fixed. On the mobile part, a force \(F_x\) is applied which is equivalent to a torque applied on the flexible joint center.
The induced rotation is measured with a displacement sensor \(d_x\).
</p> </p>
<div id="org5c42ee1" class="figure"> <div id="org5e03b2d" class="figure">
<p><img src="figs/test-bench-schematic.png" alt="test-bench-schematic.png" /> <p><img src="figs/test_bench_principle.png" alt="test_bench_principle.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p> <p><span class="figure-number">Figure 3: </span>Test Bench - working principle</p>
</div>
</div> </div>
<div id="outline-container-org1121b59" class="outline-3">
<h3 id="org1121b59"><span class="section-number-3">2.1</span> Flexible joint Geometry</h3> <p>
This test-bench will be used to have a first approximation of the bending stiffnesss and stroke of the flexible joints.
Another test-bench, better engineered will be used to measure the flexible joint&rsquo;s characteristics with better accuracy.
</p>
</div>
<div id="outline-container-org49aa26d" class="outline-3">
<h3 id="org49aa26d"><span class="section-number-3">2.1</span> Flexible joint Geometry</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
The flexible joint used for the Nano-Hexapod is shown in Figure <a href="#org4639f1b">2</a>. The flexible joint used for the Nano-Hexapod is shown in Figure <a href="#org8f874a3">4</a>.
Its bending stiffness is foreseen to be \(k_{R_y}\approx 20\,\frac{Nm}{rad}\) and its stroke \(\theta_{y,\text{max}}\approx 20\,mrad\). Its bending stiffness is foreseen to be \(k_{R_y}\approx 5\,\frac{Nm}{rad}\) and its stroke \(\theta_{y,\text{max}}\approx 25\,mrad\).
</p> </p>
<div id="org4639f1b" class="figure"> <div id="org8f874a3" class="figure">
<p><img src="figs/flexible_joint_geometry.png" alt="flexible_joint_geometry.png" /> <p><img src="figs/flexible_joint_geometry.png" alt="flexible_joint_geometry.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Geometry of the flexible joint</p> <p><span class="figure-number">Figure 4: </span>Geometry of the flexible joint</p>
</div> </div>
<p> <p>
@ -167,16 +265,16 @@ The height between the flexible point (center of the joint) and the point where
Let&rsquo;s define the parameters on Matlab. Let&rsquo;s define the parameters on Matlab.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"> kRx = 20; <span class="org-comment">% Bending Stiffness [Nm/rad]</span> <pre class="src src-matlab">kRx = 5; <span class="org-comment">% Bending Stiffness [Nm/rad]</span>
Rxmax = 20e<span class="org-type">-</span>3; <span class="org-comment">% Bending Stroke [rad]</span> Rxmax = 25e<span class="org-type">-</span>3; <span class="org-comment">% Bending Stroke [rad]</span>
h = 20e<span class="org-type">-</span>3; <span class="org-comment">% Height [m]</span> h = 20e<span class="org-type">-</span>3; <span class="org-comment">% Height [m]</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org8e5eddc" class="outline-3"> <div id="outline-container-org6176a07" class="outline-3">
<h3 id="org8e5eddc"><span class="section-number-3">2.2</span> Required external applied force</h3> <h3 id="org6176a07"><span class="section-number-3">2.2</span> Required external applied force</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<p> <p>
The bending \(\theta_y\) of the flexible joint due to the force \(F_x\) is: The bending \(\theta_y\) of the flexible joint due to the force \(F_x\) is:
@ -200,23 +298,20 @@ Therefore, the applied force to test the full range of the flexible joint is:
<p> <p>
And we obtain: And we obtain:
</p> </p>
\begin{equation} F_{max} = 20.0\, [N] \end{equation} \begin{equation} F_{x,max} = 6.2\, [N] \end{equation}
<p> <p>
The measurement range of the force sensor should then be higher than \(20\,N\). The measurement range of the force sensor should then be higher than \(6.2\,N\).
</p> </p>
</div> </div>
</div> </div>
<div id="outline-container-org5baf14d" class="outline-3"> <div id="outline-container-orgd96e919" class="outline-3">
<h3 id="org5baf14d"><span class="section-number-3">2.3</span> Required actuator stroke and sensors range</h3> <h3 id="orgd96e919"><span class="section-number-3">2.3</span> Required actuator stroke and sensors range</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
The flexible joint is designed to allow a bending motion of \(\pm 20\,mrad\). The flexible joint is designed to allow a bending motion of \(\pm 25\,mrad\).
The corresponding actuator stroke to impose such motion is: The corresponding stroke at the location of the force sensor is:
</p>
<p>
\[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \] \[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \]
</p> </p>
@ -225,122 +320,436 @@ The corresponding actuator stroke to impose such motion is:
</pre> </pre>
</div> </div>
\begin{equation} d_{max} = 0.4\, [mm] \end{equation} \begin{equation} d_{max} = 0.5\, [mm] \end{equation}
<p> <p>
In order to test the full range of the flexible joint, the stroke of the actuator should be higher than \(0.4\,mm\). In order to test the full range of the flexible joint, the stroke of the translation stage used to move the force sensor should be higher than \(0.5\,mm\).
The measurement range of the displacement sensor should also be higher than \(0.4\,mm\). Similarly, the measurement range of the displacement sensor should also be higher than \(0.5\,mm\).
</p> </p>
</div> </div>
</div> </div>
<div id="outline-container-orge82143e" class="outline-3"> <div id="outline-container-org34c590e" class="outline-3">
<h3 id="orge82143e"><span class="section-number-3">2.4</span> First try with the APA95ML</h3> <h3 id="org34c590e"><span class="section-number-3">2.4</span> Test Bench</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<p> <p>
The APA95ML as a stroke of \(100\,\mu m\) and the encoder in parallel can easily measure the required stroke. A CAD view of the measurement bench is shown in Figure <a href="#org8ec9f08">5</a>.
</p> </p>
<div class="note" id="org8dbefd9">
<p> <p>
Suppose the full stroke of the APA can be used to bend the flexible joint (ideal case), the measured force will be: Here are the different elements used in this bench:
</p> </p>
<div class="org-src-container">
<pre class="src src-matlab"> Fxmax = kRx<span class="org-type">*</span>100e<span class="org-type">-</span>6<span class="org-type">/</span>h<span class="org-type">^</span>2; <span class="org-comment">% Force at maximum stroke [N]</span>
</pre>
</div>
\begin{equation} F_{max} = 5.0\, [N] \end{equation}
<p>
And the tested angular range is:
</p>
<div class="org-src-container">
<pre class="src src-matlab"> Rmax = tan(100e<span class="org-type">-</span>6<span class="org-type">/</span>h);
</pre>
</div>
\begin{equation} \theta_{max} = 5.0\, [mrad] \end{equation}
</div>
</div>
<div id="outline-container-orgfd806d9" class="outline-3">
<h3 id="orgfd806d9"><span class="section-number-3">2.5</span> Test Bench</h3>
<div class="outline-text-3" id="text-2-5">
<div id="org0957ecc" class="figure">
<p><img src="figs/test_bench_flex_overview.png" alt="test_bench_flex_overview.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p>
</div>
<div id="org5b8e491" class="figure">
<p><img src="figs/test_bench_flex_side.png" alt="test_bench_flex_side.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p>
</div>
<div class="note" id="org96d3620">
<ul class="org-ul"> <ul class="org-ul">
<li><b>Translation Stage</b>: <a href="doc/V-408-Datasheet.pdf">V-408</a></li> <li><b>Translation Stage</b>: <a href="doc/V-408-Datasheet.pdf">V-408</a></li>
<li><b>Load Cells</b>: <a href="doc/A700000007147087.pdf">FC2231-0000-0010-L</a> and <a href="doc/FRE_DS_XFL212R_FR_A3.pdf">XFL212R</a></li> <li><b>Load Cells</b>: <a href="doc/A700000007147087.pdf">FC2231-0000-0010-L</a></li>
<li><b>Encoder</b>: <a href="doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf">Renishaw Resolute 1nm</a></li> <li><b>Encoder</b>: <a href="doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf">Renishaw Resolute 1nm</a></li>
<li><b>Displacement Probe</b>: <a href="doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf">Millimar C1216 electronics</a> and <a href="doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf">Millimar 1318 probe</a></li>
</ul> </ul>
</div>
<p>
Both the measured force and displacement are acquired at the same time using a Speedgoat machine.
</p>
<div id="org8ec9f08" class="figure">
<p><img src="figs/test_bench_flex_overview.png" alt="test_bench_flex_overview.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p>
</div>
<p>
A side view of the bench with the important quantities are shown in Figure <a href="#orge104838">6</a>.
</p>
<div id="orge104838" class="figure">
<p><img src="figs/test_bench_flex_side.png" alt="test_bench_flex_side.png" width="300px" />
</p>
<p><span class="figure-number">Figure 6: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org169b47f" class="outline-2"> <div id="outline-container-org600c97d" class="outline-2">
<h2 id="org169b47f"><span class="section-number-2">3</span> Agreement between the probe and the encoder</h2> <h2 id="org600c97d"><span class="section-number-2">3</span> Error budget</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p>
<a id="orgdab23b9"></a>
</p>
<p>
Many things can impact the accuracy of the measured bending stiffness such as:
</p>
<ul class="org-ul">
<li>Errors in the force and displacement measurement</li>
<li>Shear effects</li>
<li>Deflection of the Force sensor</li>
<li>Errors in the geometry of the bench</li>
</ul>
<p>
In this section, we wish to estimate the attainable accuracy with the current bench, and identified the limiting factors.
</p>
</div> </div>
<div id="outline-container-org5ed49b7" class="outline-3"> <div id="outline-container-orgc9ee1f1" class="outline-3">
<h3 id="org5ed49b7"><span class="section-number-3">3.1</span> Setup</h3> <h3 id="orgc9ee1f1"><span class="section-number-3">3.1</span> Finite Element Model</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<p> <p>
From the Finite Element Model, the stiffness and stroke of the flexible joint have been computed and summarized in Tables <a href="#org6032011">2</a> and <a href="#org949868f">3</a>.
</p>
<table id="org6032011" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Axial/Shear characteristics</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Stiffness [N/um]</th>
<th scope="col" class="org-right">Max Force [N]</th>
<th scope="col" class="org-right">Stroke [um]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial</td>
<td class="org-right">94</td>
<td class="org-right">469</td>
<td class="org-right">5</td>
</tr>
<tr>
<td class="org-left">Shear</td>
<td class="org-right">13</td>
<td class="org-right">242</td>
<td class="org-right">19</td>
</tr>
</tbody>
</table>
<table id="org949868f" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> Bending/Torsion characteristics</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Stiffness [Nm/rad]</th>
<th scope="col" class="org-right">Max Torque [Nmm]</th>
<th scope="col" class="org-right">Stroke [mrad]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Bending</td>
<td class="org-right">5</td>
<td class="org-right">118</td>
<td class="org-right">24</td>
</tr>
<tr>
<td class="org-left">Torsional</td>
<td class="org-right">260</td>
<td class="org-right">1508</td>
<td class="org-right">6</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orga7f4716" class="outline-3">
<h3 id="orga7f4716"><span class="section-number-3">3.2</span> Setup</h3>
<div class="outline-text-3" id="text-3-2">
<p>
The setup is schematically represented in Figure <a href="#org9f57086">7</a>.
</p>
<p>
The force is applied on top of the flexible joint with a distance \(h\) with the joint&rsquo;s center.
The displacement of the flexible joint is also measured at the same height.
</p>
<p>
The height between the joint&rsquo;s center and the force application point is:
</p>
<div class="org-src-container">
<pre class="src src-matlab">h = 25e<span class="org-type">-</span>3; <span class="org-comment">% Height [m]</span>
</pre>
</div>
<div id="org9f57086" class="figure">
<p><img src="figs/test_bench_flex_side.png" alt="test_bench_flex_side.png" width="300px" />
</p>
<p><span class="figure-number">Figure 7: </span>Schematic of the test bench to measure the bending stiffness of the flexible joints</p>
</div>
</div>
</div>
<div id="outline-container-org82790b3" class="outline-3">
<h3 id="org82790b3"><span class="section-number-3">3.3</span> Effect of Bending</h3>
<div class="outline-text-3" id="text-3-3">
<p>
The torque applied is:
</p>
\begin{equation}
M_y = F_x \cdot h
\end{equation}
<p>
The flexible joint is experiencing a rotation \(\theta_y\) due to the torque \(M_y\):
</p>
\begin{equation}
\theta_y = \frac{M_y}{k_{R_y}} = \frac{F_x \cdot h}{k_{R_y}}
\end{equation}
<p>
This rotation is then measured by the displacement sensor.
The measured displacement is:
</p>
\begin{equation}
D_b = h \tan(\theta_y) = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) \label{eq:bending_stiffness_formula}
\end{equation}
</div>
</div>
<div id="outline-container-org36529f3" class="outline-3">
<h3 id="org36529f3"><span class="section-number-3">3.4</span> Computation of the bending stiffness</h3>
<div class="outline-text-3" id="text-3-4">
<p>
From equation \eqref{eq:bending_stiffness_formula}, we can compute the bending stiffness:
</p>
\begin{equation}
k_{R_y} = \frac{F_x \cdot h}{\tan^{-1}\left( \frac{D_b}{h} \right)}
\end{equation}
<p>
For small displacement, we have
</p>
\begin{equation}
\boxed{k_{R_y} \approx h^2 \frac{F_x}{d_x}}
\end{equation}
<p>
And therefore, to precisely measure \(k_{R_y}\), we need to:
</p>
<ul class="org-ul">
<li>precisely measure the motion \(d_x\)</li>
<li>precisely measure the applied force \(F_x\)</li>
<li>precisely now the height of the force application point \(h\)</li>
</ul>
</div>
</div>
<div id="outline-container-org8b414e4" class="outline-3">
<h3 id="org8b414e4"><span class="section-number-3">3.5</span> Estimation error due to force and displacement sensors accuracy</h3>
<div class="outline-text-3" id="text-3-5">
<p>
The maximum error on the measured displacement with the encoder is 40 nm.
This quite negligible compared to the measurement range of 0.5 mm.
</p>
<p>
The accuracy of the force sensor is around 1% and therefore, we should expect to have an accuracy on the measured stiffness of at most 1%.
</p>
</div>
</div>
<div id="outline-container-org1ab0479" class="outline-3">
<h3 id="org1ab0479"><span class="section-number-3">3.6</span> Estimation error due to Shear</h3>
<div class="outline-text-3" id="text-3-6">
<p>
The effect of Shear on the measured displacement is simply:
</p>
\begin{equation}
D_s = \frac{F_x}{k_s}
\end{equation}
<p>
The measured displacement will be the effect of shear + effect of bending
</p>
\begin{equation}
d_x = D_b + D_s = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) + \frac{F_x}{k_s} \approx F_x \left( \frac{h^2}{k_{R_y}} + \frac{1}{k_s} \right)
\end{equation}
<p>
The estimated bending stiffness \(k_{\text{est}}\) will then be:
</p>
\begin{equation}
k_{\text{est}} = h^2 \frac{F_x}{d_x} \approx k_{R_y} \frac{1}{1 + \frac{k_{R_y}}{k_s h^2}}
\end{equation}
<pre class="example">
The measurement error due to Shear is 0.1 %
</pre>
</div>
</div>
<div id="outline-container-org6765aeb" class="outline-3">
<h3 id="org6765aeb"><span class="section-number-3">3.7</span> Estimation error due to force sensor compression</h3>
<div class="outline-text-3" id="text-3-7">
<p>
The measured displacement is not done directly at the joint&rsquo;s location.
The force sensor compression will then induce an error on the joint&rsquo;s stiffness.
</p>
<p>
The force sensor stiffness \(k_F\) is estimated to be around:
</p>
<div class="org-src-container">
<pre class="src src-matlab">kF = 50<span class="org-type">/</span>0.05e<span class="org-type">-</span>3; <span class="org-comment">% [N/m]</span>
</pre>
</div>
<pre class="example">
k_F = 1.0e+06 [N/m]
</pre>
<p>
The measured displacement will be the sum of the displacement induced by the bending and by the compression of the force sensor:
</p>
\begin{equation}
d_x = D_b + \frac{F_x}{k_F} = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) + \frac{F_x}{k_F} \approx F_x \left( \frac{h^2}{k_{R_y}} + \frac{1}{k_F} \right)
\end{equation}
<p>
The estimated bending stiffness \(k_{\text{est}}\) will then be:
</p>
\begin{equation}
k_{\text{est}} = h^2 \frac{F_x}{d_x} \approx k_{R_y} \frac{1}{1 + \frac{k_{R_y}}{k_F h^2}}
\end{equation}
<pre class="example">
The measurement error due to height estimation errors is 0.8 %
</pre>
</div>
</div>
<div id="outline-container-orgdc33e2c" class="outline-3">
<h3 id="orgdc33e2c"><span class="section-number-3">3.8</span> Estimation error due to height estimation error</h3>
<div class="outline-text-3" id="text-3-8">
<p>
Let&rsquo;s consider an error in the estimation of the height from the application of the force to the joint&rsquo;s center:
</p>
\begin{equation}
h_{\text{est}} = h (1 + \epsilon)
\end{equation}
<p>
The computed bending stiffness will be:
</p>
\begin{equation}
k_\text{est} \approx h_{\text{est}}^2 \frac{F_x}{d_x}
\end{equation}
<p>
And the stiffness estimation error is:
</p>
\begin{equation}
\frac{k_{\text{est}}}{k_{R_y}} = (1 + \epsilon)^2
\end{equation}
<div class="org-src-container">
<pre class="src src-matlab">h_err = 0.2e<span class="org-type">-</span>3; <span class="org-comment">% Height estimation error [m]</span>
</pre>
</div>
<pre class="example">
The measurement error due to height estimation errors of 0.2 [mm] is 1.6 %
</pre>
</div>
</div>
<div id="outline-container-orgbff0a4b" class="outline-3">
<h3 id="orgbff0a4b"><span class="section-number-3">3.9</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-9">
<p>
Based on the above analysis, we should expect no better than few percent of accuracy using the current test-bench.
This is well enough for a first estimation of the bending stiffness of the flexible joints.
</p>
<p>
Another measurement bench allowing better accuracy will be developed.
</p>
</div>
</div>
</div>
<div id="outline-container-orge6a23d4" class="outline-2">
<h2 id="orge6a23d4"><span class="section-number-2">4</span> First Measurements</h2>
<div class="outline-text-2" id="text-4">
<p>
<a id="org60b7659"></a>
</p>
<ul class="org-ul">
<li>Section <a href="#org950c08c">4.1</a>:</li>
<li>Section <a href="#org08bd7f1">4.2</a>:</li>
</ul>
</div>
<div id="outline-container-orgf3173a7" class="outline-3">
<h3 id="orgf3173a7"><span class="section-number-3">4.1</span> Agreement between the probe and the encoder</h3>
<div class="outline-text-3" id="text-4-1">
<p>
<a id="org950c08c"></a>
</p>
<ul class="org-ul">
<li><b>Load Cells</b>: <a href="doc/A700000007147087.pdf">FC2231-0000-0010-L</a> (and <a href="doc/FRE_DS_XFL212R_FR_A3.pdf">XFL212R</a>)</li>
<li><b>Encoder</b>: <a href="doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf">Renishaw Resolute 1nm</a></li>
<li><b>Displacement Probe</b>: <a href="doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf">Millimar C1216 electronics</a> and <a href="doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf">Millimar 1318 probe</a></li>
</ul>
<p>
The measurement setup is made such that the probe measured the translation table displacement. The measurement setup is made such that the probe measured the translation table displacement.
It should then measure the same displacement as the encoder. It should then measure the same displacement as the encoder.
Using this setup, we should be able to compare the probe and the encoder. Using this setup, we should be able to compare the probe and the encoder.
</p> </p>
</div>
</div>
<div id="outline-container-orga83f29f" class="outline-3">
<h3 id="orga83f29f"><span class="section-number-3">3.2</span> Results</h3>
<div class="outline-text-3" id="text-3-2">
<p> <p>
Let&rsquo;s load the measurements. Let&rsquo;s load the measurements.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'meas_probe_against_encoder.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'d'</span>, <span class="org-string">'dp'</span>, <span class="org-string">'F'</span>) <pre class="src src-matlab">load(<span class="org-string">'meas_probe_against_encoder.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'d'</span>, <span class="org-string">'dp'</span>, <span class="org-string">'F'</span>)
</pre> </pre>
</div> </div>
<p> <p>
The time domain measured displacement by the probe and by the encoder is shown in Figure <a href="#orgfed4851">5</a>. The time domain measured displacement by the probe and by the encoder is shown in Figure <a href="#org582a172">8</a>.
</p> </p>
<div id="orgfed4851" class="figure"> <div id="org582a172" class="figure">
<p><img src="figs/comp_encoder_probe_time.png" alt="comp_encoder_probe_time.png" /> <p><img src="figs/comp_encoder_probe_time.png" alt="comp_encoder_probe_time.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Time domain measurement</p> <p><span class="figure-number">Figure 8: </span>Time domain measurement</p>
</div> </div>
<p> <p>
If we zoom, we see that there is some delay between the encoder and the probe (Figure <a href="#org8b829e0">6</a>). If we zoom, we see that there is some delay between the encoder and the probe (Figure <a href="#orgdf303a4">9</a>).
</p> </p>
<div id="org8b829e0" class="figure"> <div id="orgdf303a4" class="figure">
<p><img src="figs/comp_encoder_probe_time_zoom.png" alt="comp_encoder_probe_time_zoom.png" /> <p><img src="figs/comp_encoder_probe_time_zoom.png" alt="comp_encoder_probe_time_zoom.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Time domain measurement (Zoom)</p> <p><span class="figure-number">Figure 9: </span>Time domain measurement (Zoom)</p>
</div> </div>
<p> <p>
@ -353,28 +762,28 @@ The time delay is approximately 15.8 [ms]
<p> <p>
The measured mismatch between the encoder and the probe with and without compensating for the time delay are shown in Figure <a href="#org325c41d">7</a>. The measured mismatch between the encoder and the probe with and without compensating for the time delay are shown in Figure <a href="#org8a6d0a7">10</a>.
</p> </p>
<div id="org325c41d" class="figure"> <div id="org8a6d0a7" class="figure">
<p><img src="figs/comp_encoder_probe_mismatch.png" alt="comp_encoder_probe_mismatch.png" /> <p><img src="figs/comp_encoder_probe_mismatch.png" alt="comp_encoder_probe_mismatch.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Measurement mismatch, with and without delay compensation</p> <p><span class="figure-number">Figure 10: </span>Measurement mismatch, with and without delay compensation</p>
</div> </div>
<p> <p>
Finally, the displacement of the probe is shown as a function of the displacement of the encoder and a linear fit is made (Figure <a href="#org6b2fa2a">8</a>). Finally, the displacement of the probe is shown as a function of the displacement of the encoder and a linear fit is made (Figure <a href="#org7323329">11</a>).
</p> </p>
<div id="org6b2fa2a" class="figure"> <div id="org7323329" class="figure">
<p><img src="figs/comp_encoder_probe_linear_fit.png" alt="comp_encoder_probe_linear_fit.png" /> <p><img src="figs/comp_encoder_probe_linear_fit.png" alt="comp_encoder_probe_linear_fit.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Measured displacement by the probe as a function of the measured displacement by the encoder</p> <p><span class="figure-number">Figure 11: </span>Measured displacement by the probe as a function of the measured displacement by the encoder</p>
</div> </div>
<div class="important" id="orgd63f29c"> <div class="important" id="orgd8436d3">
<p> <p>
From the measurement, it is shown that the probe is well calibrated. From the measurement, it is shown that the probe is well calibrated.
However, there is some time delay of tens of milliseconds that could induce some measurement errors. However, there is some time delay of tens of milliseconds that could induce some measurement errors.
@ -383,12 +792,14 @@ However, there is some time delay of tens of milliseconds that could induce some
</div> </div>
</div> </div>
</div> </div>
</div>
<div id="outline-container-org0fbb329" class="outline-2"> <div id="outline-container-org47cc77a" class="outline-3">
<h2 id="org0fbb329"><span class="section-number-2">4</span> Measurement of the Millimar 1318 probe stiffness</h2> <h3 id="org47cc77a"><span class="section-number-3">4.2</span> Measurement of the Millimar 1318 probe stiffness</h3>
<div class="outline-text-2" id="text-4"> <div class="outline-text-3" id="text-4-2">
<div class="note" id="org8fed4a1"> <p>
<a id="org08bd7f1"></a>
</p>
<div class="note" id="org2dc97c3">
<ul class="org-ul"> <ul class="org-ul">
<li><b>Translation Stage</b>: <a href="doc/V-408-Datasheet.pdf">V-408</a></li> <li><b>Translation Stage</b>: <a href="doc/V-408-Datasheet.pdf">V-408</a></li>
<li><b>Load Cell</b>: <a href="doc/A700000007147087.pdf">FC2231-0000-0010-L</a></li> <li><b>Load Cell</b>: <a href="doc/A700000007147087.pdf">FC2231-0000-0010-L</a></li>
@ -399,23 +810,18 @@ However, there is some time delay of tens of milliseconds that could induce some
</div> </div>
<div id="org2cc75ab" class="figure"> <div id="org5312017" class="figure">
<p><img src="figs/setup_mahr_stiff_meas_side.jpg" alt="setup_mahr_stiff_meas_side.jpg" /> <p><img src="figs/setup_mahr_stiff_meas_side.jpg" alt="setup_mahr_stiff_meas_side.jpg" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Setup - Side View</p> <p><span class="figure-number">Figure 12: </span>Setup - Side View</p>
</div> </div>
<div id="org91485ce" class="figure"> <div id="orge5425ad" class="figure">
<p><img src="figs/setup_mahr_stiff_meas_top.jpg" alt="setup_mahr_stiff_meas_top.jpg" /> <p><img src="figs/setup_mahr_stiff_meas_top.jpg" alt="setup_mahr_stiff_meas_top.jpg" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Setup - Top View</p> <p><span class="figure-number">Figure 13: </span>Setup - Top View</p>
</div> </div>
</div>
<div id="outline-container-orgc7d7173" class="outline-3">
<h3 id="orgc7d7173"><span class="section-number-3">4.1</span> Results</h3>
<div class="outline-text-3" id="text-4-1">
<p> <p>
Let&rsquo;s load the measurement results. Let&rsquo;s load the measurement results.
</p> </p>
@ -425,14 +831,14 @@ Let&rsquo;s load the measurement results.
</div> </div>
<p> <p>
The time domain measured force and displacement are shown in Figure <a href="#orgd45dfc2">11</a>. The time domain measured force and displacement are shown in Figure <a href="#org411a5b9">14</a>.
</p> </p>
<div id="orgd45dfc2" class="figure"> <div id="org411a5b9" class="figure">
<p><img src="figs/mahr_time_domain.png" alt="mahr_time_domain.png" /> <p><img src="figs/mahr_time_domain.png" alt="mahr_time_domain.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Time domain measurements</p> <p><span class="figure-number">Figure 14: </span>Time domain measurements</p>
</div> </div>
@ -450,17 +856,17 @@ This is very close to the 0.04 [N/mm] written in the <a href="doc/tmp3m0cvmue_78
</p> </p>
<p> <p>
And compare the linear fit with the raw measurement data (Figure <a href="#org4939523">12</a>). And compare the linear fit with the raw measurement data (Figure <a href="#org784b37d">15</a>).
</p> </p>
<div id="org4939523" class="figure"> <div id="org784b37d" class="figure">
<p><img src="figs/mahr_stiffness_f_d_plot.png" alt="mahr_stiffness_f_d_plot.png" /> <p><img src="figs/mahr_stiffness_f_d_plot.png" alt="mahr_stiffness_f_d_plot.png" />
</p> </p>
<p><span class="figure-number">Figure 12: </span>Measured displacement as a function of the measured force. Raw data and linear fit</p> <p><span class="figure-number">Figure 15: </span>Measured displacement as a function of the measured force. Raw data and linear fit</p>
</div> </div>
<div class="summary" id="org18e09dc"> <div class="summary" id="orgbc46442">
<p> <p>
The Millimar 1318 probe has a stiffness of \(\approx 0.04\,[N/mm]\). The Millimar 1318 probe has a stiffness of \(\approx 0.04\,[N/mm]\).
</p> </p>
@ -470,13 +876,18 @@ The Millimar 1318 probe has a stiffness of \(\approx 0.04\,[N/mm]\).
</div> </div>
</div> </div>
<div id="outline-container-orgda9e689" class="outline-2"> <div id="outline-container-org48987bc" class="outline-2">
<h2 id="orgda9e689"><span class="section-number-2">5</span> Experimental measurement</h2> <h2 id="org48987bc"><span class="section-number-2">5</span> Bending Stiffness Measurement</h2>
<div class="outline-text-2" id="text-5">
<p>
<a id="org34f6444"></a>
</p>
</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-16 mar. 21:23</p> <p class="date">Created: 2021-02-18 jeu. 11:33</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
#+TITLE: Flexible Joint - Test Bench #+TITLE: Flexible Joints - Test Bench
:DRAWER: :DRAWER:
#+LANGUAGE: en #+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com #+EMAIL: dehaeze.thomas@gmail.com
@ -46,30 +46,88 @@
<hr> <hr>
#+end_export #+end_export
* Flexible Joints - Requirements * Introduction :ignore:
In this document, we present a test-bench that has been developed in order to measure the bending stiffness of flexible joints.
| | *Specification* | It is structured as follow:
|-------------------+-----------------| - Section [[sec:flexible_joints]]: the geometry of the flexible joints and the expected stiffness and stroke are presented
| Axial Stiffness | > 200 [N/um] | - Section [[sec:test_bench_desc]]: the measurement bench is presented
| Shear Stiffness | > 1 [N/um] | - Section [[sec:error_budget]]: an error budget is performed in order to estimate the accuracy of the measured stiffness
| Bending Stiffness | < 100 [Nm/rad] | - Section [[sec:first_measurements]]: first measurements are performed
| Torsion Stiffness | < 500 [Nm/rad] | - Section [[sec:bending_stiffness_meas]]: the bending stiffness of the flexible joints are measured
| Bending Stroke | > 1 [mrad] |
| Torsion Stroke | > 5 [urad] |
* Test Bench Description * Flexible Joints
<<sec:flexible_joints>>
The flexible joints that are going to be measured in this document have been design to be used with a Nano-Hexapod (Figure [[fig:nano_hexapod]]).
#+name: fig:nano_hexapod
#+caption: CAD view of the Nano-Hexapod containing the flexible joints
#+attr_latex: :width 0.7\linewidth
[[file:figs/nano_hexapod.png]]
Ideally, these flexible joints would behave as perfect ball joints, that is to say:
- no bending and torsional stiffnesses
- infinite shear and axial stiffnesses
- un-limited bending and torsional stroke
- no friction, no backlash
The real characteristics of the flexible joints will influence the dynamics of the Nano-Hexapod.
Using a multi-body dynamical model of the nano-hexapod, the specifications in term of stiffness and stroke of the flexible joints have been determined and summarized in Table [[tab:flexible_joints_specs]].
#+name: tab:flexible_joints_specs
#+caption: Specifications for the flexible joints and estimated characteristics from the Finite Element Model
#+attr_latex: :environment tabularx :width 0.5\linewidth :align Xcc
#+attr_latex: :center t :booktabs t :float t
| | *Specification* | *FEM* |
|-------------------+-----------------+-------|
| Axial Stiffness | > 100 [N/um] | 94 |
| Shear Stiffness | > 1 [N/um] | 13 |
| Bending Stiffness | < 100 [Nm/rad] | 5 |
| Torsion Stiffness | < 500 [Nm/rad] | 260 |
| Bending Stroke | > 1 [mrad] | 24.5 |
| Torsion Stroke | > 5 [urad] | |
Then, the classical geometry of a flexible ball joint shown in Figure [[fig:flexible_joint_fem_geometry]] has been optimized in order to meet the requirements.
This has been done using a Finite Element Software and the obtained joint's characteristics are summarized in Table [[tab:flexible_joints_specs]].
#+name: fig:flexible_joint_fem_geometry
#+caption: Flexible part of the Joint used for FEM - CAD view
#+attr_latex: :width 0.5\linewidth
[[file:figs/flexible_joint_fem_geometry.png]]
The obtained geometry are defined in the [[file:doc/flex_joints.pdf][drawings of the flexible joints]].
The material is a special kind of stainless steel called "F16PH"..
* Measurement Test Bench - Bending Stiffness
:PROPERTIES:
:header-args:matlab+: :tangle ./matlab/bench_dimensioning.m
:END:
<<sec:test_bench_desc>>
** Introduction :ignore: ** Introduction :ignore:
The most important characteristic of the flexible joint that we want to measure is its bending stiffness $k_{R_x} \approx k_{R_y}$.
The main characteristic of the flexible joint that we want to measure is its bending stiffness $k_{R_x} \approx k_{R_y}$. To do so, we have to apply a torque $T_x$ on the flexible joint and measure its angular deflection $\theta_x$.
The stiffness is then
\begin{equation}
k_{R_x} = \frac{T_x}{\theta_x}
\end{equation}
To do so, a test bench is used. As it is quite difficult to apply a pure torque, a force will be applied instead.
Specifications of the test bench to precisely measure the bending stiffness are described in this section. The application point of the force should far enough from the flexible part such that the obtained bending is much larger than the displacement in shear.
The basic idea is to measured the angular deflection of the flexible joint as a function of the applied torque. The working principle of the bench is schematically shown in Figure [[fig:test_bench_principle]].
One part of the flexible joint is fixed. On the mobile part, a force $F_x$ is applied which is equivalent to a torque applied on the flexible joint center.
The induced rotation is measured with a displacement sensor $d_x$.
#+name: fig:test-bench-schematic #+name: fig:test_bench_principle
#+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints #+caption: Test Bench - working principle
[[file:figs/test-bench-schematic.png]] [[file:figs/test_bench_principle.png]]
This test-bench will be used to have a first approximation of the bending stiffnesss and stroke of the flexible joints.
Another test-bench, better engineered will be used to measure the flexible joint's characteristics with better accuracy.
** Matlab Init :noexport:ignore: ** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@ -82,7 +140,7 @@ The basic idea is to measured the angular deflection of the flexible joint as a
** Flexible joint Geometry ** Flexible joint Geometry
The flexible joint used for the Nano-Hexapod is shown in Figure [[fig:flexible_joint_geometry]]. The flexible joint used for the Nano-Hexapod is shown in Figure [[fig:flexible_joint_geometry]].
Its bending stiffness is foreseen to be $k_{R_y}\approx 20\,\frac{Nm}{rad}$ and its stroke $\theta_{y,\text{max}}\approx 20\,mrad$. Its bending stiffness is foreseen to be $k_{R_y}\approx 5\,\frac{Nm}{rad}$ and its stroke $\theta_{y,\text{max}}\approx 25\,mrad$.
#+name: fig:flexible_joint_geometry #+name: fig:flexible_joint_geometry
#+caption: Geometry of the flexible joint #+caption: Geometry of the flexible joint
@ -92,8 +150,8 @@ The height between the flexible point (center of the joint) and the point where
Let's define the parameters on Matlab. Let's define the parameters on Matlab.
#+begin_src matlab #+begin_src matlab
kRx = 20; % Bending Stiffness [Nm/rad] kRx = 5; % Bending Stiffness [Nm/rad]
Rxmax = 20e-3; % Bending Stroke [rad] Rxmax = 25e-3; % Bending Stroke [rad]
h = 20e-3; % Height [m] h = 20e-3; % Height [m]
#+end_src #+end_src
@ -115,19 +173,18 @@ Therefore, the applied force to test the full range of the flexible joint is:
And we obtain: And we obtain:
#+begin_src matlab :results value raw replace :exports results #+begin_src matlab :results value raw replace :exports results
sprintf('\\begin{equation} F_{max} = %.1f\\, [N] \\end{equation}', Fxmax) sprintf('\\begin{equation} F_{x,max} = %.1f\\, [N] \\end{equation}', Fxmax)
#+end_src #+end_src
#+RESULTS: #+RESULTS:
\begin{equation} F_{max} = 20.0\, [N] \end{equation} \begin{equation} F_{x,max} = 6.2\, [N] \end{equation}
The measurement range of the force sensor should then be higher than $20\,N$. The measurement range of the force sensor should then be higher than $6.2\,N$.
** Required actuator stroke and sensors range ** Required actuator stroke and sensors range
The flexible joint is designed to allow a bending motion of $\pm 20\,mrad$. The flexible joint is designed to allow a bending motion of $\pm 25\,mrad$.
The corresponding actuator stroke to impose such motion is: The corresponding stroke at the location of the force sensor is:
\[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \] \[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \]
#+begin_src matlab #+begin_src matlab
@ -139,67 +196,284 @@ The corresponding actuator stroke to impose such motion is:
#+end_src #+end_src
#+RESULTS: #+RESULTS:
\begin{equation} d_{max} = 0.4\, [mm] \end{equation} \begin{equation} d_{max} = 0.5\, [mm] \end{equation}
In order to test the full range of the flexible joint, the stroke of the actuator should be higher than $0.4\,mm$. In order to test the full range of the flexible joint, the stroke of the translation stage used to move the force sensor should be higher than $0.5\,mm$.
The measurement range of the displacement sensor should also be higher than $0.4\,mm$. Similarly, the measurement range of the displacement sensor should also be higher than $0.5\,mm$.
** First try with the APA95ML
The APA95ML as a stroke of $100\,\mu m$ and the encoder in parallel can easily measure the required stroke.
Suppose the full stroke of the APA can be used to bend the flexible joint (ideal case), the measured force will be:
#+begin_src matlab
Fxmax = kRx*100e-6/h^2; % Force at maximum stroke [N]
#+end_src
#+begin_src matlab :results value raw replace :exports results
sprintf('\\begin{equation} F_{max} = %.1f\\, [N] \\end{equation}', Fxmax)
#+end_src
#+RESULTS:
\begin{equation} F_{max} = 5.0\, [N] \end{equation}
And the tested angular range is:
#+begin_src matlab
Rmax = tan(100e-6/h);
#+end_src
#+begin_src matlab :results value raw replace :exports results
sprintf('\\begin{equation} \\theta_{max} = %.1f\\, [mrad] \\end{equation}', 1e3*Rmax)
#+end_src
#+RESULTS:
\begin{equation} \theta_{max} = 5.0\, [mrad] \end{equation}
** Test Bench ** Test Bench
A CAD view of the measurement bench is shown in Figure [[fig:test_bench_flex_overview]].
#+begin_note
Here are the different elements used in this bench:
- *Translation Stage*: [[file:doc/V-408-Datasheet.pdf][V-408]]
- *Load Cells*: [[file:doc/A700000007147087.pdf][FC2231-0000-0010-L]]
- *Encoder*: [[file:doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf][Renishaw Resolute 1nm]]
#+end_note
Both the measured force and displacement are acquired at the same time using a Speedgoat machine.
#+name: fig:test_bench_flex_overview #+name: fig:test_bench_flex_overview
#+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints #+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints
#+attr_latex: :width 0.8\linewidth #+attr_latex: :width 0.8\linewidth
[[file:figs/test_bench_flex_overview.png]] [[file:figs/test_bench_flex_overview.png]]
A side view of the bench with the important quantities are shown in Figure [[fig:test_bench_flex_side]].
#+name: fig:test_bench_flex_side #+name: fig:test_bench_flex_side
#+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints #+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints
#+attr_latex: :width 0.25\linewidth #+attr_latex: :width 0.25\linewidth
#+attr_html: :width 300px
[[file:figs/test_bench_flex_side.png]] [[file:figs/test_bench_flex_side.png]]
#+begin_note * Error budget
- *Translation Stage*: [[file:doc/V-408-Datasheet.pdf][V-408]] :PROPERTIES:
- *Load Cells*: [[file:doc/A700000007147087.pdf][FC2231-0000-0010-L]] and [[file:doc/FRE_DS_XFL212R_FR_A3.pdf][XFL212R]] :header-args:matlab+: :tangle ./matlab/error_budget.m
:END:
<<sec:error_budget>>
** Introduction :ignore:
Many things can impact the accuracy of the measured bending stiffness such as:
- Errors in the force and displacement measurement
- Shear effects
- Deflection of the Force sensor
- Errors in the geometry of the bench
In this section, we wish to estimate the attainable accuracy with the current bench, and identified the limiting factors.
** 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
** Finite Element Model
From the Finite Element Model, the stiffness and stroke of the flexible joint have been computed and summarized in Tables [[tab:axial_shear_characteristics]] and [[tab:bending_torsion_characteristics]].
#+begin_src matlab :exports none
%% Stiffness
ka = 94e6; % Axial Stiffness [N/m]
ks = 13e6; % Shear Stiffness [N/m]
kb = 5; % Bending Stiffness [Nm/rad]
kt = 260; % Torsional Stiffness [Nm/rad]
%% Maximum force
Fa = 469; % Axial Force before yield [N]
Fs = 242; % Shear Force before yield [N]
Fb = 0.118; % Bending Force before yield [Nm]
Ft = 1.508; % Torsional Force before yield [Nm]
%% Compute the corresponding stroke
Xa = Fa/ka; % Axial Stroke before yield [m]
Xs = Fs/ks; % Shear Stroke before yield [m]
Xb = Fb/kb; % Bending Stroke before yield [rad]
Xt = Ft/kt; % Torsional Stroke before yield [rad]
#+end_src
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([1e-6*ka, Fa, 1e6*Xa; 1e-6*ks, Fs, 1e6*Xs], {'Axial', 'Shear'}, {'Stiffness [N/um]', 'Max Force [N]', 'Stroke [um]'}, ' %.0f ');
#+end_src
#+name: tab:axial_shear_characteristics
#+caption: Axial/Shear characteristics
#+attr_latex: :environment tabularx :width 0.6\linewidth :align Xccc
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | Stiffness [N/um] | Max Force [N] | Stroke [um] |
|-------+------------------+---------------+-------------|
| Axial | 94 | 469 | 5 |
| Shear | 13 | 242 | 19 |
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([kb, 1e3*Fb, 1e3*Xb; kt, 1e3*Ft, 1e3*Xt], {'Bending', 'Torsional'}, {'Stiffness [Nm/rad]', 'Max Torque [Nmm]', 'Stroke [mrad]'}, ' %.0f ');
#+end_src
#+name: tab:bending_torsion_characteristics
#+caption: Bending/Torsion characteristics
#+attr_latex: :environment tabularx :width 0.7\linewidth :align Xccc
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | Stiffness [Nm/rad] | Max Torque [Nmm] | Stroke [mrad] |
|-----------+--------------------+------------------+---------------|
| Bending | 5 | 118 | 24 |
| Torsional | 260 | 1508 | 6 |
** Setup
The setup is schematically represented in Figure [[fig:test_bench_flex_side_bis]].
The force is applied on top of the flexible joint with a distance $h$ with the joint's center.
The displacement of the flexible joint is also measured at the same height.
The height between the joint's center and the force application point is:
#+begin_src matlab
h = 25e-3; % Height [m]
#+end_src
#+name: fig:test_bench_flex_side_bis
#+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints
#+attr_latex: :width 0.25\linewidth
#+attr_html: :width 300px
[[file:figs/test_bench_flex_side.png]]
** Effect of Bending
The torque applied is:
\begin{equation}
M_y = F_x \cdot h
\end{equation}
The flexible joint is experiencing a rotation $\theta_y$ due to the torque $M_y$:
\begin{equation}
\theta_y = \frac{M_y}{k_{R_y}} = \frac{F_x \cdot h}{k_{R_y}}
\end{equation}
This rotation is then measured by the displacement sensor.
The measured displacement is:
\begin{equation}
D_b = h \tan(\theta_y) = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) \label{eq:bending_stiffness_formula}
\end{equation}
** Computation of the bending stiffness
From equation eqref:eq:bending_stiffness_formula, we can compute the bending stiffness:
\begin{equation}
k_{R_y} = \frac{F_x \cdot h}{\tan^{-1}\left( \frac{D_b}{h} \right)}
\end{equation}
For small displacement, we have
\begin{equation}
\boxed{k_{R_y} \approx h^2 \frac{F_x}{d_x}}
\end{equation}
And therefore, to precisely measure $k_{R_y}$, we need to:
- precisely measure the motion $d_x$
- precisely measure the applied force $F_x$
- precisely now the height of the force application point $h$
** Estimation error due to force and displacement sensors accuracy
The maximum error on the measured displacement with the encoder is 40 nm.
This quite negligible compared to the measurement range of 0.5 mm.
The accuracy of the force sensor is around 1% and therefore, we should expect to have an accuracy on the measured stiffness of at most 1%.
** Estimation error due to Shear
The effect of Shear on the measured displacement is simply:
\begin{equation}
D_s = \frac{F_x}{k_s}
\end{equation}
The measured displacement will be the effect of shear + effect of bending
\begin{equation}
d_x = D_b + D_s = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) + \frac{F_x}{k_s} \approx F_x \left( \frac{h^2}{k_{R_y}} + \frac{1}{k_s} \right)
\end{equation}
The estimated bending stiffness $k_{\text{est}}$ will then be:
\begin{equation}
k_{\text{est}} = h^2 \frac{F_x}{d_x} \approx k_{R_y} \frac{1}{1 + \frac{k_{R_y}}{k_s h^2}}
\end{equation}
#+begin_src matlab :results value replace :exports results :tangle no
sprintf('The measurement error due to Shear is %.1f %%', 100*abs(1-1/(1 + kb/(ks*h^2))))
#+end_src
#+RESULTS:
: The measurement error due to Shear is 0.1 %
** Estimation error due to force sensor compression
The measured displacement is not done directly at the joint's location.
The force sensor compression will then induce an error on the joint's stiffness.
The force sensor stiffness $k_F$ is estimated to be around:
#+begin_src matlab
kF = 50/0.05e-3; % [N/m]
#+end_src
#+begin_src matlab :results value replace :exports results
sprintf('k_F = %.1e [N/m]', kF)
#+end_src
#+RESULTS:
: k_F = 1.0e+06 [N/m]
The measured displacement will be the sum of the displacement induced by the bending and by the compression of the force sensor:
\begin{equation}
d_x = D_b + \frac{F_x}{k_F} = h \tan\left( \frac{F_x \cdot h}{k_{R_y}} \right) + \frac{F_x}{k_F} \approx F_x \left( \frac{h^2}{k_{R_y}} + \frac{1}{k_F} \right)
\end{equation}
The estimated bending stiffness $k_{\text{est}}$ will then be:
\begin{equation}
k_{\text{est}} = h^2 \frac{F_x}{d_x} \approx k_{R_y} \frac{1}{1 + \frac{k_{R_y}}{k_F h^2}}
\end{equation}
#+begin_src matlab :results value replace :exports results :tangle no
sprintf('The measurement error due to height estimation errors is %.1f %%', 100*abs(1-1/(1 + kb/(kF*h^2))))
#+end_src
#+RESULTS:
: The measurement error due to height estimation errors is 0.8 %
** Estimation error due to height estimation error
Let's consider an error in the estimation of the height from the application of the force to the joint's center:
\begin{equation}
h_{\text{est}} = h (1 + \epsilon)
\end{equation}
The computed bending stiffness will be:
\begin{equation}
k_\text{est} \approx h_{\text{est}}^2 \frac{F_x}{d_x}
\end{equation}
And the stiffness estimation error is:
\begin{equation}
\frac{k_{\text{est}}}{k_{R_y}} = (1 + \epsilon)^2
\end{equation}
#+begin_src matlab
h_err = 0.2e-3; % Height estimation error [m]
#+end_src
#+begin_src matlab :results value replace :exports results :tangle no
sprintf('The measurement error due to height estimation errors of %.1f [mm] is %.1f %%', 1e3*h_err, 100*abs(1-(1 + h_err/h)^2))
#+end_src
#+RESULTS:
: The measurement error due to height estimation errors of 0.2 [mm] is 1.6 %
** Conclusion
Based on the above analysis, we should expect no better than few percent of accuracy using the current test-bench.
This is well enough for a first estimation of the bending stiffness of the flexible joints.
Another measurement bench allowing better accuracy will be developed.
* First Measurements
<<sec:first_measurements>>
** Introduction :ignore:
- Section [[sec:test_meas_probe]]:
- Section [[sec:meas_probe_stiffness]]:
** Agreement between the probe and the encoder
:PROPERTIES:
:header-args:matlab+: :tangle ./matlab/probe_vs_encoder.m
:END:
<<sec:test_meas_probe>>
*** Introduction :ignore:
- *Load Cells*: [[file:doc/A700000007147087.pdf][FC2231-0000-0010-L]] (and [[file:doc/FRE_DS_XFL212R_FR_A3.pdf][XFL212R]])
- *Encoder*: [[file:doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf][Renishaw Resolute 1nm]] - *Encoder*: [[file:doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf][Renishaw Resolute 1nm]]
- *Displacement Probe*: [[file:doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf][Millimar C1216 electronics]] and [[file:doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf][Millimar 1318 probe]] - *Displacement Probe*: [[file:doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf][Millimar C1216 electronics]] and [[file:doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf][Millimar 1318 probe]]
#+end_note
* Agreement between the probe and the encoder *** Setup :ignore:
** Introduction :ignore:
** Setup
The measurement setup is made such that the probe measured the translation table displacement. The measurement setup is made such that the probe measured the translation table displacement.
It should then measure the same displacement as the encoder. It should then measure the same displacement as the encoder.
Using this setup, we should be able to compare the probe and the encoder. Using this setup, we should be able to compare the probe and the encoder.
** Matlab Init :noexport:ignore: *** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>> <<matlab-dir>>
#+end_src #+end_src
@ -217,9 +491,8 @@ addpath('./matlab/');
addpath('./mat/'); addpath('./mat/');
#+end_src #+end_src
** Results *** Results :ignore:
Let's load the measurements. Let's load the measurements.
#+begin_src matlab #+begin_src matlab
load('meas_probe_against_encoder.mat', 't', 'd', 'dp', 'F') load('meas_probe_against_encoder.mat', 't', 'd', 'dp', 'F')
#+end_src #+end_src
@ -333,8 +606,12 @@ From the measurement, it is shown that the probe is well calibrated.
However, there is some time delay of tens of milliseconds that could induce some measurement errors. However, there is some time delay of tens of milliseconds that could induce some measurement errors.
#+end_important #+end_important
* Measurement of the Millimar 1318 probe stiffness ** Measurement of the Millimar 1318 probe stiffness
** Introduction :ignore: :PROPERTIES:
:header-args:matlab+: :tangle ./matlab/probe_stiffness.m
:END:
<<sec:meas_probe_stiffness>>
*** Introduction :ignore:
#+begin_note #+begin_note
- *Translation Stage*: [[file:doc/V-408-Datasheet.pdf][V-408]] - *Translation Stage*: [[file:doc/V-408-Datasheet.pdf][V-408]]
@ -353,7 +630,7 @@ However, there is some time delay of tens of milliseconds that could induce some
#+attr_latex: :width \linewidth #+attr_latex: :width \linewidth
[[file:figs/setup_mahr_stiff_meas_top.jpg]] [[file:figs/setup_mahr_stiff_meas_top.jpg]]
** Matlab Init :noexport:ignore: *** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>> <<matlab-dir>>
#+end_src #+end_src
@ -371,7 +648,7 @@ addpath('./matlab/');
addpath('./mat/'); addpath('./mat/');
#+end_src #+end_src
** Results *** Results :ignore:
Let's load the measurement results. Let's load the measurement results.
#+begin_src matlab #+begin_src matlab
load('meas_stiff_probe.mat', 't', 'd', 'dp', 'F') load('meas_stiff_probe.mat', 't', 'd', 'dp', 'F')
@ -456,4 +733,5 @@ exportFig('figs/mahr_stiffness_f_d_plot.pdf', 'width', 'wide', 'height', 'normal
The Millimar 1318 probe has a stiffness of $\approx 0.04\,[N/mm]$. The Millimar 1318 probe has a stiffness of $\approx 0.04\,[N/mm]$.
#+end_summary #+end_summary
* Experimental measurement * Bending Stiffness Measurement
<<sec:bending_stiffness_meas>>

Binary file not shown.