Compare commits

...

2 Commits

Author SHA1 Message Date
bb1364416b Remove two figures 2024-04-06 00:30:23 +02:00
57bf1e0b80 Better estimate bending stiffness 2024-04-06 00:27:19 +02:00
17 changed files with 29075 additions and 325 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -345,7 +345,9 @@ meas_flex = [[223, 226, 224, 214];
#+begin_src matlab :exports none
%% Histogram of the measured gap
figure;
hold on;
histogram([(meas_flex(:,1)+meas_flex(:,2))/2,(meas_flex(:,3)+meas_flex(:,4))/2], 7)
hold off;
xlabel("Measured beam thickness [$\mu m$]");
xticks([200, 205, 210, 215, 220, 225, 230, 235])
#+end_src
@ -731,7 +733,6 @@ A closer view on the force sensor tip is shown in Figure ref:fig:test_joints_pic
#+end_src
** Load Cell Calibration
In order to estimate the measured errors of the load cell "FC2231", it is compared against another load cell[fn:5].
The two load cells are measured simultaneously while they are pushed against each other (see Figure ref:fig:test_joints_force_sensor_calib_picture).
The contact between the two load cells is well defined as one has a spherical interface while the other has a flat surface.
@ -780,7 +781,7 @@ exportFig('figs/test_joints_force_sensor_calib_fit.pdf', 'width', 'half', 'heigh
#+end_src
#+name: fig:test_joints_force_sensor_calib
#+caption: Caption with reference to sub figure (\subref{fig:test_joints_force_sensor_calib_picture}), (\subref{fig:test_joints_force_sensor_calib_fit})
#+caption: Estimation of the load cell accuracy. A picture of the measurement bench is shown in (\subref{fig:test_joints_force_sensor_calib_picture}). Comparison of the two measured forces is made in (\subref{fig:test_joints_force_sensor_calib_fit})
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_joints_force_sensor_calib_picture}Zoom on the two force sensors in contact}
@ -838,10 +839,10 @@ exportFig('figs/test_joints_force_sensor_stiffness_fit.pdf', 'width', 'half', 'h
#+end_src
#+name: fig:test_joints_meas_force_sensor_stiffness
#+caption: Estimation of the load cell stiffness. Measurement setup is shown in (\subref{fig:test_joints_meas_force_sensor_stiffness_picture}). Measurement results is shown in (\subref{fig:test_joints_meas_force_sensor_stiffness_fit}).
#+caption: Estimation of the load cell stiffness. Measurement setup is shown in (\subref{fig:test_joints_meas_force_sensor_stiffness_picture}). Measurement results is shown in (\subref{fig:test_joints_force_sensor_stiffness_fit}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_joints_meas_force_sensor_stiffness_picture}Picture of the test}
#+attr_latex: :caption \subcaption{\label{fig:test_joints_meas_force_sensor_stiffness_picture}Picture of the measurement bench}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :height 5.5cm
@ -866,62 +867,52 @@ The bending stiffness of the flexible joint can be estimated by computing the sl
The bending stroke can also be estimated as shown in Figure ref:fig:test_joints_meas_F_d_lin_fit and is found to be $\theta_{y,\text{max}} = 20.9\,\text{mrad}$.
#+begin_src matlab
%% Load Measured Data for first flexible joint
%% Estimate the bending stiffness and stroke from the measurement - First Flexible joint
% Load Measured Data for first flexible joint
load('meas_stiff_flex_1_x.mat', 't', 'F', 'd');
%% Zero the force
F = F - mean(F(t > 0.1 & t < 0.3));
%% Start measurement at t = 0.2 s
% Start measurement at t = 0.2 s
d = d(t > 0.2);
F = F(t > 0.2);
t = t(t > 0.2); t = t - t(1);
%% Compute torque and angular displacement
h = 22.5e-3; % Height [m]
Ty = h * F; % Applied torque in [Nm]
thetay = atan2(d, h); % Measured angle in [rad]
% Zero the force
F = F - mean(F(t < 0.2));
%% Reset the measured angular stroke such that it is equal at zero when the load cell touches the flexible joint
% Find when the force sensor touches the flexible joint
i_l_start = find(F > 0.3, 1, 'first');
% Reset the measured diplacement at that point
% thetay = thetay - thetay(i_l_start);
%% Determine the linear region and region when touching the mechanical stop
% Compute torque and angular displacement
h = 22.5e-3; % Height [m]
Tx = h * F; % Applied torque in [Nm]
thetax = atan2(d - d(i_l_start), h); % Measured angle in [rad]
% Find then the maximum torque is applied
[~, i_s_stop] = max(Ty);
[~, i_s_stop] = max(Tx);
% Linear region stops ~ when 90% of the stroke is reached
i_l_stop = find(thetay > 0.9*thetay(i_s_stop), 1, 'first');
i_l_stop = find(thetax > 0.9*thetax(i_s_stop), 1, 'first');
% Mechanical "Stop" region start ~20Nmm before maximum torque is applied
i_s_start = find(Ty > max(Ty)-20e-3, 1, 'first');
i_s_start = find(Tx > max(Tx)-20e-3, 1, 'first');
%% Define variables for the two regions
% Linear Region
Ty_l = Ty(i_l_start:i_l_stop);
thetay_l = thetay(i_l_start:i_l_stop);
% Linear fit in the "linear" region
fit_l = polyfit(Tx(i_l_start:i_l_stop), thetax(i_l_start:i_l_stop), 1);
% "Mechanical stop" Region
Ty_s = Ty(i_s_start:i_s_stop);
thetay_s = thetay(i_s_start:i_s_stop);
% Linear fit in the "mechanical stop" region
fit_s = polyfit(Tx(i_s_start:i_s_stop), thetax(i_s_start:i_s_stop), 1);
%% Fit the best straight line for the two regions
fit_l = polyfit(Ty_l, thetay_l, 1);
fit_s = polyfit(Ty_s, thetay_s, 1);
%% Reset displacement more precisely based on fit
thetay = thetay - fit_l(2);
% Reset displacement more precisely based on fit
thetax = thetax - fit_l(2);
fit_s(2) = fit_s(2) - fit_l(2);
fit_l(2) = 0;
%% Estimation of the bending stiffness
kRy_l = 1/fit_l(1); % Bending Stiffness [Nm/rad]
kRy_s = 1/fit_s(1); % Mechanical "Stop" Stiffness [Nm/rad]
kRx_l = 1/fit_l(1); % Bending Stiffness [Nm/rad]
kRx_s = 1/fit_s(1); % Mechanical "Stop" Stiffness [Nm/rad]
%% Estimation of the bending stroke
% This is done by finding the intersection of the two linear fits
theta_max = fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1)); % Maximum angular stroke [rad]
Ty_at_theta_max = (fit_s(2) - fit_l(2))/(fit_l(1) - fit_s(1));
Tx_at_theta_max = (fit_s(2) - fit_l(2))/(fit_l(1) - fit_s(1));
#+end_src
#+begin_src matlab :exports none :results none
@ -937,14 +928,14 @@ plot(0.4*cos(0:0.01:2*pi)+3, ...
1.1*sin(0:0.01:2*pi)+4.8, 'k--');
text(3.5, 4.8, sprintf('Mechanical\nStop'), 'horizontalalignment', 'left');
hold off;
ylabel('Force $F_x$ [N]');
ylabel('Force $F_y$ [N]');
ylim([-4, 6])
ylimr = get(gca,'Ylim');
yyaxis right
plot(t, 1e3*d);
xlabel('Time [s]');
ylabel('Displacement $d_x$ [mm]');
ylabel('Displacement $d_y$ [mm]');
xlim([0,5]);
% Make the force and displacement superimpose
ylim([0.364 - 4*(0.8315-0.364)/4.095, 0.364 + 6*(0.8315-0.364)/4.095])
@ -956,22 +947,23 @@ exportFig('figs/test_joints_meas_bend_time.pdf', 'width', 'half', 'height', 'nor
#+begin_src matlab :exports none
% Regions where to plot the fitted data
Ty_l_fit = [0, Ty_at_theta_max];
Ty_s_fit = [Ty_at_theta_max, Ty(i_s_stop)];
Tx_l_fit = [0, Tx_at_theta_max];
Tx_s_fit = [Tx_at_theta_max, Tx(i_s_stop)];
figure;
hold on;
plot(Ty(1:i_s_stop), 1e3*thetay(1:i_s_stop), '-k', 'DisplayName', 'Raw data')
plot(Ty_l_fit, 1e3*(Ty_l_fit*fit_l(1) + fit_l(2)), '--', 'DisplayName', sprintf('$k_{R_y} = %.1f$ Nm/rad', kRy_l))
plot(Ty_s_fit, 1e3*(Ty_s_fit*fit_s(1) + fit_s(2)), '--', 'DisplayName', sprintf('$k_{R_y,stop} = %.0f$ Nm/rad', kRy_s))
plot([0, Ty_at_theta_max], [1e3*theta_max, 1e3*theta_max], 'k--', 'HandleVisibility', 'off')
plot(Tx(1:i_s_stop), 1e3*thetax(1:i_s_stop), '-k', 'DisplayName', 'Raw data')
plot(Tx_l_fit, 1e3*(Tx_l_fit*fit_l(1) + fit_l(2)), '--', 'DisplayName', sprintf('$k_{R_x} = %.1f$ Nm/rad', kRx_l))
plot(Tx_s_fit, 1e3*(Tx_s_fit*fit_s(1) + fit_s(2)), '--', 'DisplayName', sprintf('$k_{R_x,stop} = %.0f$ Nm/rad', kRx_s))
plot([0, Tx_at_theta_max], [1e3*theta_max, 1e3*theta_max], 'k--', 'HandleVisibility', 'off')
plot([0, Tx_at_theta_max], [0, 0], 'k--', 'HandleVisibility', 'off')
anArrow = annotation('doublearrow', 'LineWidth', 0.5);
anArrow.Parent = gca;
anArrow.Position = [0.05, 0, 0, 1e3*fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1))];
text(0.052, 0.4*1e3*fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1)), sprintf('$\\theta_{y,\\max} = %.1f$ mrad', 1e3*theta_max), 'horizontalalignment', 'left');
text(0.052, 0.4*1e3*fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1)), sprintf('$\\theta_{x,\\max} = %.1f$ mrad', 1e3*theta_max), 'horizontalalignment', 'left');
hold off;
xlabel('Torque $T_y$ [Nm]');
ylabel('Angle $\theta_y$ [mrad]');
xlabel('Torque $T_x$ [Nm]');
ylabel('Angle $\theta_x$ [mrad]');
xlim([0, 0.15]);
ylim([-5,25]);
leg = legend('location', 'southeast', 'FontSize', 8);
@ -983,7 +975,7 @@ exportFig('figs/test_joints_meas_F_d_lin_fit.pdf', 'width', 'half', 'height', 'n
#+end_src
#+name: fig:test_joints_meas_example
#+caption: Results obtained on the first flexible joint. Measured force and displacement are shown in (\subref{fig:test_joints_meas_bend_time}). The estimated angular displacement $\theta_y$ as a function of the estimated applied torque $T_{y}$ is shown in (\subref{fig:test_joints_meas_F_d_lin_fit}). The bending stiffness $k_{R_y}$ of the flexible joint can be estimated by computing a best linear fit (red dashed line).
#+caption: Results obtained on the first flexible joint. Measured force and displacement are shown in (\subref{fig:test_joints_meas_bend_time}). The estimated angular displacement $\theta_x$ as a function of the estimated applied torque $T_{x}$ is shown in (\subref{fig:test_joints_meas_F_d_lin_fit}). The bending stiffness $k_{R_x}$ of the flexible joint can be estimated by computing a best linear fit (red dashed line).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_joints_meas_bend_time}Force and displacement measured as a function of time}
@ -1000,243 +992,190 @@ exportFig('figs/test_joints_meas_F_d_lin_fit.pdf', 'width', 'half', 'height', 'n
#+end_subfigure
#+end_figure
** TODO Comparison of the measured Stiffnesses
Now, let's estimate the bending stiffness and stroke for all the flexible joints.
** Measured flexible joint stiffnesses
The same measurement is performed for all the 16 flexible joints, both in the $x$ and $y$ directions.
The measured angular motion as a function of the applied torque are shown in Figure ref:fig:test_joints_meas_bending_all_raw_data for all the 16 flexible joints.
This gives a first idea of the dispersion of the measured bending stiffnesses (i.e. slope of the linear region) and of the angular stroke.
An histogram of the measured bending stiffnesses is show in Figure ref:fig:test_joints_bend_stiff_hist.
Most of the bending stiffnesses are between $4.6\,Nm/rad$ and $5.0\,Nm/rad$.
#+begin_src matlab :exports none
%% Initialize variables
kRx = zeros(1,16);
kSx = zeros(1,16);
Rmx = zeros(1,16);
%% Measure the bending stiffness and Stroke for all the flexible joints
figure;
hold on;
%% Start with the X-bending
% Initialize variables
Rx = zeros(1,16); % Bending stiffnesses [Nm/rad]
kSx = zeros(1,16); % Bending stiffnesses at "stop" [Nm/rad]
Rmx = zeros(1,16); % Bending stroke [rad]
for i = 1:16
%% Load the data
load(['meas_stiff_flex_' num2str(i) '_x.mat'], 't', 'F', 'd');
% Load the data
load(sprintf('meas_stiff_flex_%i_x.mat', i), 't', 'F', 'd');
%% Automatic Zero of the force
F = F - mean(F(t > 0.1 & t < 0.3));
%% Start measurement at t = 0.2 s
% Start measurement at t = 0.2 s
d = d(t > 0.2);
F = F(t > 0.2);
t = t(t > 0.2); t = t - t(1);
%% Estimate linear region and "stop" region
% Zero the force
F = F - mean(F(t < 0.2));
% Find when the force sensor touches the flexible joint
i_l_start = find(F > 0.3, 1, 'first');
% Zero the displacement when it comes in contact
d = d - d(i_l_start);
[~, i_s_stop] = max(F);
i_l_stop = find(d > 0.9*d(i_s_stop), 1, 'first');
i_s_start = find(F > max(F)-1, 1, 'first');
F_l = F(i_l_start:i_l_stop);
d_l = d(i_l_start:i_l_stop);
% Compute torque and angular displacement
h = 22.5e-3; % Height [m]
Tx = h * F; % Applied torque in [Nm]
thetax = atan2(d, h); % Measured angle in [rad]
F_s = F(i_s_start:i_s_stop);
d_s = d(i_s_start:i_s_stop);
% Find then the maximum torque is applied
[~, i_s_stop] = max(Tx);
% Linear region stops ~ when 90% of the stroke is reached
i_l_stop = find(thetax > 0.9*thetax(i_s_stop), 1, 'first');
% Mechanical "Stop" region start ~20Nmm before maximum torque is applied
i_s_start = find(Tx > max(Tx)-20e-3, 1, 'first');
%% Straight line fit
fit_l = polyfit(F_l, d_l, 1);
fit_s = polyfit(F_s, d_s, 1);
% Linear fit in the "linear" region
fit_l = polyfit(Tx(i_l_start:i_l_stop), thetax(i_l_start:i_l_stop), 1);
%% Reset displacement based on fit
d = d - fit_l(2);
% Linear fit in the "mechanical stop" region
fit_s = polyfit(Tx(i_s_start:i_s_stop), thetax(i_s_start:i_s_stop), 1);
% Reset displacement more precisely based on fit
thetax = thetax - fit_l(2);
fit_s(2) = fit_s(2) - fit_l(2);
fit_l(2) = 0;
%% Estimated Stroke
d_max = fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1));
%% Save stiffnesses and stroke
kRx(i) = (h)^2/fit_l(1);
kSx(i) = (h)^2/fit_s(1);
Rmx(i) = atan2(d_max,h);
% Estimation of the bending stiffness and bending stroke
kRx(i) = 1/fit_l(1); % Bending Stiffness [Nm/rad]
kSx(i) = 1/fit_s(1); % Mechanical "Stop" Stiffness [Nm/rad]
Rmx(i) = fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1)); % Maximum angular stroke [rad]
if i == 1
plot(Tx(1:10:i_s_stop), 1e3*thetax(1:10:i_s_stop), '-', 'color', [colors(1,:), 0.4], ...
'DisplayName', '$k_{R_x}$')
else
plot(Tx(1:10:i_s_stop), 1e3*thetax(1:10:i_s_stop), '-', 'color', [colors(1,:), 0.4], ...
'HandleVisibility', 'off')
end
end
#+end_src
#+begin_src matlab :exports none
%% Initialize variables
kRy = zeros(1,16);
kSy = zeros(1,16);
Rmy = zeros(1,16);
%% Continue with the Y-bending
% Initialize variables
kRy = zeros(1,16); % Bending stiffnesses [Nm/rad]
kSy = zeros(1,16); % Bending stiffnesses at "stop" [Nm/rad]
Rmy = zeros(1,16); % Bending stroke [rad]
for i = 1:16
%% Load the data
load(['meas_stiff_flex_' num2str(i) '_y.mat'], 't', 'F', 'd');
% Load the data
load(sprintf('meas_stiff_flex_%i_y.mat', i), 't', 'F', 'd');
%% Automatic Zero of the force
F = F - mean(F(t > 0.1 & t < 0.3));
%% Start measurement at t = 0.2 s
% Start measurement at t = 0.2 s
d = d(t > 0.2);
F = F(t > 0.2);
t = t(t > 0.2); t = t - t(1);
%% Estimate linear region and "stop" region
% Zero the force
F = F - mean(F(t < 0.2));
% Find when the force sensor touches the flexible joint
i_l_start = find(F > 0.3, 1, 'first');
% Zero the displacement when it comes in contact
d = d - d(i_l_start);
[~, i_s_stop] = max(F);
i_l_stop = find(d > 0.9*d(i_s_stop), 1, 'first');
i_s_start = find(F > max(F)-1, 1, 'first');
F_l = F(i_l_start:i_l_stop);
d_l = d(i_l_start:i_l_stop);
% Compute torque and angular displacement
h = 22.5e-3; % Height [m]
Ty = h * F; % Applied torque in [Nm]
thetay = atan2(d, h); % Measured angle in [rad]
F_s = F(i_s_start:i_s_stop);
d_s = d(i_s_start:i_s_stop);
% Find then the maximum torque is applied
[~, i_s_stop] = max(Ty);
% Linear region stops ~ when 90% of the stroke is reached
i_l_stop = find(thetay > 0.9*thetay(i_s_stop), 1, 'first');
% Mechanical "Stop" region start ~20Nmm before maximum torque is applied
i_s_start = find(Ty > max(Ty)-20e-3, 1, 'first');
%% Straight line fit
fit_l = polyfit(F_l, d_l, 1);
fit_s = polyfit(F_s, d_s, 1);
% Linear fit in the "linear" region
fit_l = polyfit(Ty(i_l_start:i_l_stop), thetay(i_l_start:i_l_stop), 1);
%% Reset displacement based on fit
d = d - fit_l(2);
% Linear fit in the "mechanical stop" region
fit_s = polyfit(Ty(i_s_start:i_s_stop), thetay(i_s_start:i_s_stop), 1);
% Reset displacement more precisely based on fit
thetay = thetay - fit_l(2);
fit_s(2) = fit_s(2) - fit_l(2);
fit_l(2) = 0;
%% Estimated Stroke
d_max = fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1));
%% Save stiffnesses and stroke
kRy(i) = (h)^2/fit_l(1);
kSy(i) = (h)^2/fit_s(1);
Rmy(i) = atan2(d_max,h);
% Estimation of the bending stiffness and bending stroke
kRy(i) = 1/fit_l(1); % Bending Stiffness [Nm/rad]
kSy(i) = 1/fit_s(1); % Mechanical "Stop" Stiffness [Nm/rad]
Rmy(i) = fit_l(1)*fit_s(2)/(fit_l(1) - fit_s(1)); % Maximum angular stroke [rad]
if i == 1
plot(Ty(1:10:i_s_stop), 1e3*thetay(1:10:i_s_stop), '-', 'color', [colors(2,:), 0.4], ...
'DisplayName', '$k_{R_y}$')
else
plot(Ty(1:10:i_s_stop), 1e3*thetay(1:10:i_s_stop), '-', 'color', [colors(2,:), 0.4], ...
'HandleVisibility', 'off')
end
end
#+end_src
The results are summarized in Table ref:tab:test_joints_meas_results_x_dir for the X direction and in Table ref:tab:test_joints_meas_results_y_dir for the Y direction.
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([kRx; kSx; 1e3*Rmx]', {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'}, {'$R_{R_x}$ [Nm/rad]', '$k_{R_x,s}$ [Nm/rad]', '$R_{x,\text{max}}$ [mrad]'}, ' %.1f ');
#+end_src
#+name: tab:test_joints_meas_results_x_dir
#+caption: Measured characteristics of the flexible joints in the X direction
#+attr_latex: :environment tabularx :width 0.6\linewidth :align cccc
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | $R_{R_x}$ [Nm/rad] | $k_{R_x,s}$ [Nm/rad] | $R_{x,\text{max}}$ [mrad] |
|----+--------------------+----------------------+---------------------------|
| 1 | 5.5 | 173.6 | 18.9 |
| 2 | 6.1 | 195.0 | 17.6 |
| 3 | 6.1 | 191.3 | 17.7 |
| 4 | 5.8 | 136.7 | 18.3 |
| 5 | 5.7 | 88.9 | 22.0 |
| 6 | 5.7 | 183.9 | 18.7 |
| 7 | 5.7 | 157.9 | 17.9 |
| 8 | 5.8 | 166.1 | 17.9 |
| 9 | 5.8 | 159.5 | 18.2 |
| 10 | 6.0 | 143.6 | 18.1 |
| 11 | 5.0 | 163.8 | 17.7 |
| 12 | 6.1 | 111.9 | 17.0 |
| 13 | 6.0 | 142.0 | 17.4 |
| 14 | 5.8 | 130.1 | 17.9 |
| 15 | 5.7 | 170.7 | 18.6 |
| 16 | 6.0 | 148.7 | 17.5 |
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([kRy; kSy; 1e3*Rmy]', {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'}, {'$R_{R_y}$ [Nm/rad]', '$k_{R_y,s}$ [Nm/rad]', '$R_{y,\text{may}}$ [mrad]'}, ' %.1f ');
#+end_src
#+name: tab:test_joints_meas_results_y_dir
#+caption: Measured characteristics of the flexible joints in the Y direction
#+attr_latex: :environment tabularx :width 0.6\linewidth :align cccc
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | $R_{R_y}$ [Nm/rad] | $k_{R_y,s}$ [Nm/rad] | $R_{y,\text{may}}$ [mrad] |
|----+--------------------+----------------------+---------------------------|
| 1 | 5.7 | 323.5 | 17.9 |
| 2 | 5.9 | 306.0 | 17.2 |
| 3 | 6.0 | 224.4 | 16.8 |
| 4 | 5.7 | 247.3 | 17.8 |
| 5 | 5.8 | 250.9 | 13.0 |
| 6 | 5.8 | 244.5 | 17.8 |
| 7 | 5.3 | 214.8 | 18.1 |
| 8 | 5.8 | 217.2 | 17.6 |
| 9 | 5.7 | 225.0 | 17.6 |
| 10 | 6.0 | 254.7 | 17.3 |
| 11 | 4.9 | 261.1 | 18.4 |
| 12 | 5.9 | 161.5 | 16.7 |
| 13 | 6.1 | 227.6 | 16.8 |
| 14 | 5.9 | 221.3 | 17.8 |
| 15 | 5.4 | 241.5 | 17.8 |
| 16 | 5.3 | 291.1 | 17.7 |
The dispersion of the measured bending stiffness is shown in Figure ref:fig:test_joints_bend_stiff_hist and of the bending stroke in Figure ref:fig:test_joints_bend_stroke_hist.
#+begin_src matlab :exports none
figure;
hold on;
histogram(kRx, 'DisplayName', '$k_{R_x}$')
histogram(kRy, 'DisplayName', '$k_{R_y}$')
hold off;
xlabel('Bending Stiffness [Nm/rad]')
legend('FontSize', 8);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/test_joints_bend_stiff_hist.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:test_joints_bend_stiff_hist
#+caption: Histogram of the measured bending stiffness
#+RESULTS:
[[file:figs/test_joints_bend_stiff_hist.png]]
#+begin_src matlab :exports none
figure;
hold on;
histogram(1e3*Rmx, 'DisplayName', '$k_{R_x}$')
histogram(1e3*Rmy, 'DisplayName', '$k_{R_y}$')
hold off;
xlabel('Bending Stroke [mrad]')
legend('FontSize', 8);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/test_joints_bend_stroke_hist.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:test_joints_bend_stroke_hist
#+caption: Histogram of the measured bending stroke
#+RESULTS:
[[file:figs/test_joints_bend_stroke_hist.png]]
The relation between the measured beam thickness and the measured bending stiffness is shown in Figure ref:fig:test_joints_thickness_stiffness.
#+begin_src matlab :exports none
load('flex_meas_dim.mat', 'meas_flex');
figure;
hold on;
plot((meas_flex(:,1)+meas_flex(:,2))/2, kRx, 'o', 'DisplayName', '$x$')
plot((meas_flex(:,3)+meas_flex(:,4))/2, kRy, 'o', 'DisplayName', '$y$')
hold off;
xlabel('Flexible Beam Thickness [$\mu m$]');
ylabel('Bending Stiffness [Nm/rad]');
xlabel('Torque $T$ [Nm]');
ylabel('Angle $\theta$ [mrad]');
xlim([0, 0.15]);
ylim([-5,25]);
legend('location', 'southeast', 'FontSize', 8);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/test_joints_thickness_stiffness.pdf', 'width', 'wide', 'height', 'normal');
exportFig('figs/test_joints_meas_bending_all_raw_data.pdf', 'width', 'half', 'height', 'normal');
#+end_src
#+name: fig:test_joints_thickness_stiffness
#+caption: Measured bending stiffness as a function of the estimated flexible beam thickness
#+RESULTS:
[[file:figs/test_joints_thickness_stiffness.png]]
#+begin_src matlab :exports none
figure;
histogram([kRx, kRy], [4:0.2:5])
xlabel('Bending stiffness [Nm/rad]')
xticks([4:0.2:5])
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/test_joints_bend_stiff_hist.pdf', 'width', 'half', 'height', 'normal');
#+end_src
#+name: fig:test_joints_meas_bending_results
#+caption: Result of measured $k_{R_x}$ and $k_{R_y}$ stiffnesses for all the 16 flexible joints. Raw data are shown in (\subref{fig:test_joints_meas_bending_all_raw_data}). An histogram of the measured stiffnesses is shown in (\subref{fig:test_joints_bend_stiff_hist})
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_joints_meas_bending_all_raw_data}Measured torque and angular motion for all the flexible joints}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :height 5.3cm
[[file:figs/test_joints_meas_bending_all_raw_data.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:test_joints_bend_stiff_hist}Histogram of the measured bending stiffness in the x and y directions}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :height 5.3cm
[[file:figs/test_joints_bend_stiff_hist.png]]
#+end_subfigure
#+end_figure
** Conclusion
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_important
The measured bending stiffness and bending stroke of the flexible joints are very close to the estimated one using a Finite Element Model.
The characteristics of all the flexible joints are also quite close to each other.
This should allow us to model them with unique parameters.
#+end_important
* Conclusion
<<sec:test_joints_conclusion>>

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2024-04-05 Fri 17:52
% Created 2024-04-06 Sat 00:30
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@ -29,6 +29,7 @@ Deviations from this ideal properties will impact the dynamics of the Nano-Hexap
During the detailed design phase, specifications in term of stiffness and stroke have been determined and are summarized in Table \ref{tab:test_joints_specs}.
\begin{table}[htbp]
\caption{\label{tab:test_joints_specs}Specifications for the flexible joints and estimated characteristics from the Finite Element Model}
\centering
\begin{tabularx}{0.5\linewidth}{Xcc}
\toprule
@ -41,8 +42,6 @@ Torsion Stiffness & \(< 500\,Nm/\text{rad}\) & 260\\
Bending Stroke & \(> 1\,\text{mrad}\) & 24.5\\
\bottomrule
\end{tabularx}
\caption{\label{tab:test_joints_specs}Specifications for the flexible joints and estimated characteristics from the Finite Element Model}
\end{table}
After optimization using a finite element model, the geometry shown in Figure \ref{fig:test_joints_schematic} has been obtained and the corresponding flexible joints characteristics are summarized in Table \ref{tab:test_joints_specs}.
@ -104,6 +103,7 @@ Finally, the test bench is manufacturer and used to measure the bending stiffnes
Results are shown in Section \ref{sec:test_joints_bending_stiffness_meas}
\begin{table}[htbp]
\caption{\label{tab:test_joints_section_matlab_code}Report sections and corresponding Matlab files}
\centering
\begin{tabularx}{0.6\linewidth}{lX}
\toprule
@ -114,8 +114,6 @@ Section \ref{sec:test_joints_test_bench_desc} & \texttt{test\_joints\_2\_bench\_
Section \ref{sec:test_joints_bending_stiffness_meas} & \texttt{test\_joints\_3\_bending\_stiff\_meas.m}\\
\bottomrule
\end{tabularx}
\caption{\label{tab:test_joints_section_matlab_code}Report sections and corresponding Matlab files}
\end{table}
\chapter{Dimensional Measurements}
\label{sec:test_joints_flex_dim_meas}
@ -359,6 +357,7 @@ The most important source of error comes from estimation error of the distance b
An overall accuracy of \(\approx 5\,\%\) can be expected with this measurement bench, which should be enough for a first estimation of the bending stiffness of the flexible joints.
\begin{table}[htbp]
\caption{\label{tab:test_joints_error_budget}Summary of the error budget for the estimation of the bending stiffness}
\centering
\begin{tabularx}{0.4\linewidth}{lX}
\toprule
@ -371,8 +370,6 @@ Displacement sensor & \(\epsilon_d < 0.01\,\%\)\\
Force sensor & \(\epsilon_F < 1\,\%\)\\
\bottomrule
\end{tabularx}
\caption{\label{tab:test_joints_error_budget}Summary of the error budget for the estimation of the bending stiffness}
\end{table}
\chapter{Bending Stiffness Measurement}
\label{sec:test_joints_bending_stiffness_meas}
@ -397,7 +394,6 @@ A closer view on the force sensor tip is shown in Figure \ref{fig:test_joints_pi
\caption{\label{fig:test_joints_picture_bench}Caption with reference to sub figure (\subref{fig:fig_label_a})}
\end{figure}
\section{Load Cell Calibration}
In order to estimate the measured errors of the load cell ``FC2231'', it is compared against another load cell\footnote{XFL212R-50N from TE Connectivity. Measurement range is \(50\,N\). Specified accuracy is \(1\,\%\) of the full range}.
The two load cells are measured simultaneously while they are pushed against each other (see Figure \ref{fig:test_joints_force_sensor_calib_picture}).
The contact between the two load cells is well defined as one has a spherical interface while the other has a flat surface.
@ -419,11 +415,11 @@ However, the estimated non-linearity is bellow \(1\,\%\) for forces between \(0.
\end{center}
\subcaption{\label{fig:test_joints_force_sensor_calib_fit}Measured two force and linear fit}
\end{subfigure}
\caption{\label{fig:test_joints_force_sensor_calib}Caption with reference to sub figure (\subref{fig:test_joints_force_sensor_calib_picture}), (\subref{fig:test_joints_force_sensor_calib_fit})}
\caption{\label{fig:test_joints_force_sensor_calib}Estimation of the load cell accuracy. A picture of the measurement bench is shown in (\subref{fig:test_joints_force_sensor_calib_picture}). Comparison of the two measured forces is made in (\subref{fig:test_joints_force_sensor_calib_fit})}
\end{figure}
\section{Load Cell Stiffness}
The objective of this measurement is to estimate the stiffness \(k_F\) of the force sensor.
To do so, a stiff element (much stiffer than the estimated \(k_F \approx 1\,N/\mu m\)) is fixed in front of the force sensor as shown in Figure \ref{fig:test_joints_meas_force_sensor_stiffness}.
To do so, a stiff element (much stiffer than the estimated \(k_F \approx 1\,N/\mu m\)) is fixed in front of the force sensor as shown in Figure \ref{fig:test_joints_meas_force_sensor_stiffness_picture}.
Then, the force sensor is pushed again this stiff element while the force and the encoder displacement are measured.
Measured displacement as a function of the force is shown in Figure \ref{fig:test_joints_force_sensor_stiffness_fit}.
The load cell stiffness can then be estimated by computing a linear fit, and is found to be \(k_F \approx 0.75\,N/\mu m\).
@ -433,7 +429,7 @@ The load cell stiffness can then be estimated by computing a linear fit, and is
\begin{center}
\includegraphics[scale=1,height=5.5cm]{figs/test_joints_meas_force_sensor_stiffness_picture.jpg}
\end{center}
\subcaption{\label{fig:test_joints_meas_force_sensor_stiffness_picture}Picture of the test}
\subcaption{\label{fig:test_joints_meas_force_sensor_stiffness_picture}Picture of the measurement bench}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
@ -441,10 +437,9 @@ The load cell stiffness can then be estimated by computing a linear fit, and is
\end{center}
\subcaption{\label{fig:test_joints_force_sensor_stiffness_fit}Measured displacement as a function of the force}
\end{subfigure}
\caption{\label{fig:test_joints_meas_force_sensor_stiffness}Estimation of the load cell stiffness. (\subref{fig:test_joints_meas_force_sensor_stiffness_picture}) (\subref{fig:test_joints_meas_force_sensor_stiffness_fit})}
\caption{\label{fig:test_joints_meas_force_sensor_stiffness}Estimation of the load cell stiffness. Measurement setup is shown in (\subref{fig:test_joints_meas_force_sensor_stiffness_picture}). Measurement results is shown in (\subref{fig:test_joints_force_sensor_stiffness_fit}).}
\end{figure}
\section{Analysis of one measurement}
\section{Bending Stiffness estimation}
The actual stiffness measurement in now performed by manually moving the translation stage from a start position where the force sensor is not yet in contact with the flexible joint to a position where flexible joint is on its mechanical stop.
The measured force and displacement as a function of time are shown in Figure \ref{fig:test_joints_meas_bend_time}.
@ -467,98 +462,36 @@ The bending stroke can also be estimated as shown in Figure \ref{fig:test_joints
\end{center}
\subcaption{\label{fig:test_joints_meas_F_d_lin_fit}Angular displacement measured as a function of the applied torque}
\end{subfigure}
\caption{\label{fig:test_joints_meas_example}Results obtained on the first flexible joint. Measured force and displacement are shown in (\subref{fig:test_joints_meas_bend_time}). The estimated angular displacement \(\theta_y\) as a function of the estimated applied torque \(T_{y}\) is shown in (\subref{fig:test_joints_meas_F_d_lin_fit}). The bending stiffness \(k_{R_y}\) of the flexible joint can be estimated by computing a best linear fit (red dashed line).}
\caption{\label{fig:test_joints_meas_example}Results obtained on the first flexible joint. Measured force and displacement are shown in (\subref{fig:test_joints_meas_bend_time}). The estimated angular displacement \(\theta_x\) as a function of the estimated applied torque \(T_{x}\) is shown in (\subref{fig:test_joints_meas_F_d_lin_fit}). The bending stiffness \(k_{R_x}\) of the flexible joint can be estimated by computing a best linear fit (red dashed line).}
\end{figure}
\section{Bending stiffness and bending stroke of all the flexible joints}
\section{Measured flexible joint stiffnesses}
The same measurement is performed for all the 16 flexible joints, both in the \(x\) and \(y\) directions.
The measured angular motion as a function of the applied torque are shown in Figure \ref{fig:test_joints_meas_bending_all_raw_data} for all the 16 flexible joints.
This gives a first idea of the dispersion of the measured bending stiffnesses (i.e. slope of the linear region) and of the angular stroke.
Now, let's estimate the bending stiffness and stroke for all the flexible joints.
The results are summarized in Table \ref{tab:test_joints_meas_results_x_dir} for the X direction and in Table \ref{tab:test_joints_meas_results_y_dir} for the Y direction.
\begin{table}[htbp]
\centering
\begin{tabularx}{0.6\linewidth}{cccc}
\toprule
& \(R_{R_x}\) {[}Nm/rad] & \(k_{R_x,s}\) {[}Nm/rad] & \(R_{x,\text{max}}\) {[}mrad]\\
\midrule
1 & 5.5 & 173.6 & 18.9\\
2 & 6.1 & 195.0 & 17.6\\
3 & 6.1 & 191.3 & 17.7\\
4 & 5.8 & 136.7 & 18.3\\
5 & 5.7 & 88.9 & 22.0\\
6 & 5.7 & 183.9 & 18.7\\
7 & 5.7 & 157.9 & 17.9\\
8 & 5.8 & 166.1 & 17.9\\
9 & 5.8 & 159.5 & 18.2\\
10 & 6.0 & 143.6 & 18.1\\
11 & 5.0 & 163.8 & 17.7\\
12 & 6.1 & 111.9 & 17.0\\
13 & 6.0 & 142.0 & 17.4\\
14 & 5.8 & 130.1 & 17.9\\
15 & 5.7 & 170.7 & 18.6\\
16 & 6.0 & 148.7 & 17.5\\
\bottomrule
\end{tabularx}
\caption{\label{tab:test_joints_meas_results_x_dir}Measured characteristics of the flexible joints in the X direction}
\end{table}
\begin{table}[htbp]
\centering
\begin{tabularx}{0.6\linewidth}{cccc}
\toprule
& \(R_{R_y}\) {[}Nm/rad] & \(k_{R_y,s}\) {[}Nm/rad] & \(R_{y,\text{may}}\) {[}mrad]\\
\midrule
1 & 5.7 & 323.5 & 17.9\\
2 & 5.9 & 306.0 & 17.2\\
3 & 6.0 & 224.4 & 16.8\\
4 & 5.7 & 247.3 & 17.8\\
5 & 5.8 & 250.9 & 13.0\\
6 & 5.8 & 244.5 & 17.8\\
7 & 5.3 & 214.8 & 18.1\\
8 & 5.8 & 217.2 & 17.6\\
9 & 5.7 & 225.0 & 17.6\\
10 & 6.0 & 254.7 & 17.3\\
11 & 4.9 & 261.1 & 18.4\\
12 & 5.9 & 161.5 & 16.7\\
13 & 6.1 & 227.6 & 16.8\\
14 & 5.9 & 221.3 & 17.8\\
15 & 5.4 & 241.5 & 17.8\\
16 & 5.3 & 291.1 & 17.7\\
\bottomrule
\end{tabularx}
\caption{\label{tab:test_joints_meas_results_y_dir}Measured characteristics of the flexible joints in the Y direction}
\end{table}
\section{Analysis}
The dispersion of the measured bending stiffness is shown in Figure \ref{fig:test_joints_bend_stiff_hist} and of the bending stroke in Figure \ref{fig:test_joints_bend_stroke_hist}.
An histogram of the measured bending stiffnesses is show in Figure \ref{fig:test_joints_bend_stiff_hist}.
Most of the bending stiffnesses are between \(4.6\,Nm/rad\) and \(5.0\,Nm/rad\).
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/test_joints_bend_stiff_hist.png}
\caption{\label{fig:test_joints_bend_stiff_hist}Histogram of the measured bending stiffness}
\end{figure}
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/test_joints_bend_stroke_hist.png}
\caption{\label{fig:test_joints_bend_stroke_hist}Histogram of the measured bending stroke}
\end{figure}
The relation between the measured beam thickness and the measured bending stiffness is shown in Figure \ref{fig:test_joints_thickness_stiffness}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/test_joints_thickness_stiffness.png}
\caption{\label{fig:test_joints_thickness_stiffness}Measured bending stiffness as a function of the estimated flexible beam thickness}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,height=5.3cm]{figs/test_joints_meas_bending_all_raw_data.png}
\end{center}
\subcaption{\label{fig:test_joints_meas_bending_all_raw_data}Measured torque and angular motion for all the flexible joints}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,height=5.3cm]{figs/test_joints_bend_stiff_hist.png}
\end{center}
\subcaption{\label{fig:test_joints_bend_stiff_hist}Histogram of the measured bending stiffness in the x and y directions}
\end{subfigure}
\caption{\label{fig:test_joints_meas_bending_results}Result of measured \(k_{R_x}\) and \(k_{R_y}\) stiffnesses for all the 16 flexible joints. Raw data are shown in (\subref{fig:test_joints_meas_bending_all_raw_data}). An histogram of the measured stiffnesses is shown in (\subref{fig:test_joints_bend_stiff_hist})}
\end{figure}
\section*{Conclusion}
\begin{important}
The measured bending stiffness and bending stroke of the flexible joints are very close to the estimated one using a Finite Element Model.
The characteristics of all the flexible joints are also quite close to each other.
This should allow us to model them with unique parameters.
\end{important}
\chapter{Conclusion}
\label{sec:test_joints_conclusion}
\printbibliography[heading=bibintoc,title={Bibliography}]