add all files
This commit is contained in:
BIN
C2-test-bench-flexible-joints/mat/calibration_force_sensor.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/calibration_force_sensor.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/flex_meas_dim.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/flex_meas_dim.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/force_sensor_stiffness_meas.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/force_sensor_stiffness_meas.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_10_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_10_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_10_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_10_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_11_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_11_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_11_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_11_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_12_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_12_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_12_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_12_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_13_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_13_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_13_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_13_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_14_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_14_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_14_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_14_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_15_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_15_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_15_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_15_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_16_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_16_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_16_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_16_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_1_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_1_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_1_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_1_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_2_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_2_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_2_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_2_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_3_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_3_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_3_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_3_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_4_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_4_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_4_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_4_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_5_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_5_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_5_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_5_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_6_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_6_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_6_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_6_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_7_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_7_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_7_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_7_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_8_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_8_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_8_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_8_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_9_x.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_9_x.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_9_y.mat
(Stored with Git LFS)
Normal file
BIN
C2-test-bench-flexible-joints/mat/meas_stiff_flex_9_y.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
40
C2-test-bench-flexible-joints/test_joints_1_dim_meas.m
Normal file
40
C2-test-bench-flexible-joints/test_joints_1_dim_meas.m
Normal file
@@ -0,0 +1,40 @@
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Path for functions, data and scripts
|
||||
addpath('./mat/'); % Path for data
|
||||
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
|
||||
%% Measured gap for the 16 flexible joints
|
||||
meas_flex = [[223, 226, 224, 214];
|
||||
[229, 231, 237, 224];
|
||||
[234, 230, 239, 231];
|
||||
[233, 227, 229, 232];
|
||||
[225, 212, 228, 228];
|
||||
[220, 221, 224, 220];
|
||||
[206, 207, 228, 226];
|
||||
[230, 224, 224, 223];
|
||||
[223, 231, 228, 233];
|
||||
[228, 230, 235, 231];
|
||||
[197, 207, 211, 204];
|
||||
[227, 226, 225, 226];
|
||||
[215, 228, 231, 220];
|
||||
[216, 224, 224, 221];
|
||||
[209, 214, 220, 221];
|
||||
[213, 210, 230, 229]];
|
||||
|
||||
%% 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])
|
||||
|
||||
%% Save beam sizes
|
||||
save('./mat/flex_meas_dim.mat', 'meas_flex');
|
@@ -0,0 +1,50 @@
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Path for functions, data and scripts
|
||||
addpath('./mat/'); % Path for data
|
||||
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
|
||||
%% Parameters for study
|
||||
kRx = 5; % Bending Stiffness [Nm/rad]
|
||||
Rxmax = 25e-3; % Bending Stroke [rad]
|
||||
h = 22.5e-3; % Height [m]
|
||||
|
||||
%% Estimation of the force to test the full stroke
|
||||
Fxmax = kRx*Rxmax/h; % Force to induce maximum stroke [N]
|
||||
|
||||
%% Estimated maximum stroke [m]
|
||||
dxmax = h*tan(Rxmax);
|
||||
|
||||
%% 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]
|
||||
|
||||
%% Height between the joint's center and the force application point
|
||||
h = 22.5e-3; % [m]
|
||||
|
||||
%% Estimated error due to shear
|
||||
epsilon_s = 100*abs(1-1/(1 + kb/(ks*h^2))); % Error in %
|
||||
|
||||
%% Estimated error due to limited load cell stiffness
|
||||
kF = 50/0.05e-3; % Estimated load cell stiffness [N/m]
|
||||
epsilon_f = 100*abs(1-1/(1 + kb/(kF*h^2))); % Error in %
|
309
C2-test-bench-flexible-joints/test_joints_3_bending_stiff_meas.m
Normal file
309
C2-test-bench-flexible-joints/test_joints_3_bending_stiff_meas.m
Normal file
@@ -0,0 +1,309 @@
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Path for functions, data and scripts
|
||||
addpath('./mat/'); % Path for data
|
||||
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
|
||||
%% Force Sensor Calibration
|
||||
% Load measurement data
|
||||
load('calibration_force_sensor.mat', 't', 'F', 'Fc')
|
||||
|
||||
% Remove any offset such that they are both measuring no force when not in contact.
|
||||
F = F - mean(F( t > 0.5 & t < 1.0)); % FC2231 [N]
|
||||
Fc = Fc - mean(Fc(t > 0.5 & t < 1.0)); % XFL212R [N]
|
||||
|
||||
% Only get useful stroke
|
||||
F = F( t > 2 & t < 2.2);
|
||||
Fc = Fc(t > 2 & t < 2.2);
|
||||
t = t( t > 2 & t < 2.2);
|
||||
|
||||
% Make a line fit
|
||||
fit_F = polyfit(Fc, F, 1);
|
||||
|
||||
% Estimate the gain mismatch
|
||||
F_gain_mismatch = 100*(1 - fit_F(1)); % in %
|
||||
|
||||
% Estimate non-linearity of the sensors
|
||||
F_non_linearity = 100*(F - (Fc*fit_F(1) + fit_F(2)))./Fc; % in %
|
||||
|
||||
%% Measured two forces and linear fit
|
||||
figure;
|
||||
yyaxis left
|
||||
hold on;
|
||||
plot(Fc, F, '.', 'DisplayName', 'Raw Data');
|
||||
plot([0, 6], [0,6]*fit_F(1) + fit_F(2), '-', 'color', [colors(3,:), 0.5], 'DisplayName', 'Line Fit');
|
||||
hold off;
|
||||
xlabel('XFL212R [N]'); ylabel('FC2231 [N]');
|
||||
xlim([0,6]); ylim([0,6]);
|
||||
xticks([0:6])
|
||||
yticks([0:6])
|
||||
|
||||
yyaxis right
|
||||
plot(Fc, movmean(F_non_linearity, 200), '-', 'DisplayName', 'Non linearity');
|
||||
ylim([-0.15, 0.15]);
|
||||
ylabel('Non Linearity [$\%$]')
|
||||
|
||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
|
||||
%% Estimaetd load cell stiffness
|
||||
% Load measurement data
|
||||
load('force_sensor_stiffness_meas.mat', 't', 'F', 'd')
|
||||
|
||||
% Remove offset
|
||||
F = F - mean(F(t > 0.5 & t < 1.0));
|
||||
|
||||
% Select important part of data
|
||||
F = F( t > 4.55 & t < 7.24);
|
||||
d = d( t > 4.55 & t < 7.24); d = d - d(1);
|
||||
t = t( t > 4.55 & t < 7.24);
|
||||
|
||||
% Linear fit
|
||||
fit_k = polyfit(F(F<10), d(F<10), 1);
|
||||
|
||||
%% Displacement as a function of the measured force
|
||||
figure;
|
||||
hold on;
|
||||
plot(F, 1e6*d, 'k-', 'DisplayName', 'Raw Data');
|
||||
plot(F([1,end]), 1e6*(F([1,end])*fit_k(1) + fit_k(2)), '--', 'DisplayName', sprintf('Fit, $k_F \\approx %.2f N/\\mu m$', 1e-6/fit_k(1)));
|
||||
hold off;
|
||||
xlabel('Force [$N$]'); ylabel('Displacement [$\mu m$]');
|
||||
xlim([0,45]); ylim([0,60]);
|
||||
legend('location', 'southeast', 'FontSize', 8);
|
||||
|
||||
%% 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');
|
||||
|
||||
% 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);
|
||||
|
||||
% 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');
|
||||
|
||||
% 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(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');
|
||||
|
||||
% Linear fit in the "linear" region
|
||||
fit_l = polyfit(Tx(i_l_start:i_l_stop), thetax(i_l_start:i_l_stop), 1);
|
||||
|
||||
% 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;
|
||||
|
||||
%% Estimation of the bending stiffness
|
||||
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]
|
||||
Tx_at_theta_max = (fit_s(2) - fit_l(2))/(fit_l(1) - fit_s(1));
|
||||
|
||||
%% Measured force and displacement as a function of time
|
||||
figure;
|
||||
yyaxis left
|
||||
hold on;
|
||||
plot(t, F);
|
||||
plot(0.8*cos(0:0.01:2*pi)+0.8, ...
|
||||
2.8*sin(0:0.01:2*pi)-1, 'k--', 'HandleVisibility', 'off');
|
||||
text(1.8, -1.2, sprintf('Not in\ncontact'), 'horizontalalignment', 'left');
|
||||
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_y$ [N]');
|
||||
ylim([-4, 6])
|
||||
ylimr = get(gca,'Ylim');
|
||||
|
||||
yyaxis right
|
||||
plot(t, 1e3*d);
|
||||
xlabel('Time [s]');
|
||||
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])
|
||||
|
||||
% Regions where to plot the fitted data
|
||||
Tx_l_fit = [0, Tx_at_theta_max];
|
||||
Tx_s_fit = [Tx_at_theta_max, Tx(i_s_stop)];
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
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_{x,\\max} = %.1f$ mrad', 1e3*theta_max), 'horizontalalignment', 'left');
|
||||
hold off;
|
||||
xlabel('Torque $T_x$ [Nm]');
|
||||
ylabel('Angle $\theta_x$ [mrad]');
|
||||
xlim([0, 0.15]);
|
||||
ylim([-5,25]);
|
||||
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
|
||||
%% 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(sprintf('meas_stiff_flex_%i_x.mat', i), 't', 'F', 'd');
|
||||
|
||||
% 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);
|
||||
|
||||
% 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);
|
||||
|
||||
% 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]
|
||||
|
||||
% 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');
|
||||
|
||||
% Linear fit in the "linear" region
|
||||
fit_l = polyfit(Tx(i_l_start:i_l_stop), thetax(i_l_start:i_l_stop), 1);
|
||||
|
||||
% 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;
|
||||
|
||||
% 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
|
||||
|
||||
%% 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(sprintf('meas_stiff_flex_%i_y.mat', i), 't', 'F', 'd');
|
||||
|
||||
% 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);
|
||||
|
||||
% 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);
|
||||
|
||||
% 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]
|
||||
|
||||
% 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');
|
||||
|
||||
% Linear fit in the "linear" region
|
||||
fit_l = polyfit(Ty(i_l_start:i_l_stop), thetay(i_l_start:i_l_stop), 1);
|
||||
|
||||
% 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;
|
||||
|
||||
% 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
|
||||
|
||||
xlabel('Torque $T$ [Nm]');
|
||||
ylabel('Angle $\theta$ [mrad]');
|
||||
xlim([0, 0.15]);
|
||||
ylim([-5,25]);
|
||||
legend('location', 'southeast', 'FontSize', 8);
|
||||
|
||||
figure;
|
||||
histogram([kRx, kRy], [4:0.2:5])
|
||||
xlabel('Bending stiffness [Nm/rad]')
|
||||
xticks([4:0.2:5])
|
Reference in New Issue
Block a user