Add recommendation for geometry
This commit is contained in:
117
delta-robot.org
117
delta-robot.org
@@ -121,7 +121,7 @@ The Delta Robot geometry is defined as shown in Figure [[fig:delta_robot_schemat
|
||||
|
||||
The geometry is fully defined by three parameters:
|
||||
- =d=: Cube's size (i.e., the length of the cube edge)
|
||||
- =a=: Distance from cube's vertex to top flexible joint
|
||||
- =b=: Distance from cube's vertex to top flexible joint
|
||||
- =L=: Distance between two flexible joints (i.e., the length of the struts)
|
||||
|
||||
#+name: fig:delta_robot_schematic
|
||||
@@ -622,7 +622,7 @@ The goal is to extract specifications for the flexible joints of the six struts,
|
||||
The cube's edge length is equal to 50mm, the distance between cube's vertices and top joints is 20mm and the length of the struts (i.e. the distance between the two flexible joints of the same strut) is 50mm.
|
||||
The actuator stiffness is $1\,N/\mu m$.
|
||||
|
||||
The obtained geometry is shown in Figure [].
|
||||
The obtained geometry is shown in Figure [[fig:delta_robot_studied_geometry]].
|
||||
|
||||
#+begin_src matlab
|
||||
%% Geometry
|
||||
@@ -1192,6 +1192,17 @@ exportFig('figs/delta_robot_shear_stiffness_compliance.pdf', 'width', 'full', 'h
|
||||
In this section, the effect of the geometry on the system properties are studied.
|
||||
The goal is to better understand the different trade-offs, and to extract specifications in terms of the Delta Robot geometry.
|
||||
|
||||
Reasonable values for the flexible joints are taken:
|
||||
- Bending stiffness of 50Nm/rad
|
||||
- Torsional stiffness of 500Nm/rad
|
||||
- Axial stiffness of 100N/um
|
||||
- Shear stiffness of 100N/um
|
||||
|
||||
The effect of the following geometrical features are studied:
|
||||
- The cube's size in Section [[ssec:delta_robot_flexible_geometry_cube_size]]
|
||||
- The strut length in Section [[ssec:delta_robot_flexible_geometry_strut_length]]
|
||||
- The location of the payload's Center of Mass with respect to the cube's center in Section [[ssec:delta_robot_flexible_geometry_com]]
|
||||
|
||||
** 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>>
|
||||
@@ -1217,23 +1228,85 @@ The goal is to better understand the different trade-offs, and to extract specif
|
||||
<<m-init-other>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
%% Geometry
|
||||
d = 50e-3; % Cube's edge length [m]
|
||||
b = 20e-3; % Distance between cube's vertices and top joints [m]
|
||||
L = 50e-3; % Length of the struts [m]
|
||||
|
||||
%% Actuator
|
||||
k = 1e6; % [N/m]
|
||||
|
||||
%% Sample on top
|
||||
sample = initializeSample('type', 'cylindrical', 'm', 1, 'H', 50e-3, 'R', 20e-3);
|
||||
#+end_src
|
||||
|
||||
** Effect of cube's size
|
||||
*** Introduction :ignore:
|
||||
<<ssec:delta_robot_flexible_geometry_cube_size>>
|
||||
*** Obtained geometries
|
||||
|
||||
Let's choose reasonable values for the flexible joints:
|
||||
- Bending stiffness of 50Nm/rad
|
||||
- Torsional stiffness of 500Nm/rad
|
||||
- Axial stiffness of 100N/um
|
||||
- Shear stiffness of 100N/um
|
||||
The cube size is varied from 10mm (Figure [[fig:delta_robot_cube_size_small]]) to 100mm (Figure [[fig:delta_robot_cube_size_large]]) to study the effect on the system dynamics.
|
||||
|
||||
And we see the effect of changing the cube's size.
|
||||
#+begin_src matlab
|
||||
%% Effect of torsional stiffness on the plant dynamics
|
||||
delta_robot = initializeStewartPlatform();
|
||||
delta_robot = generateDeltaRobot(delta_robot, 'd', 10e-3, 'b', b, 'L', L);
|
||||
delta_robot = computeJointsPose(delta_robot);
|
||||
delta_robot = initializeActuatorDynamics(delta_robot);
|
||||
delta_robot = initializeJointDynamics(delta_robot);
|
||||
delta_robot = initializeCylindricalStruts(delta_robot);
|
||||
delta_robot = computeJacobian(delta_robot);
|
||||
delta_robot = initializeStewartPose(delta_robot);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Delta Robot Architecture
|
||||
displayArchitecture(delta_robot, 'labels', false, 'frames', false);
|
||||
plotCube(delta_robot, 'Hc', 10e-3/sqrt(3), 'FOc', delta_robot.geometry.H+delta_robot.platform_M.MO_B(3), 'color', [0,0,0,0.2], 'link_to_struts', false);
|
||||
view([70, 30]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/delta_robot_cube_size_small.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:delta_robot_cube_size_small
|
||||
#+caption: Obtained Delta Robot for a cube's size of 10mm
|
||||
#+RESULTS:
|
||||
[[file:figs/delta_robot_cube_size_small.png]]
|
||||
|
||||
#+begin_src matlab
|
||||
%% Effect of torsional stiffness on the plant dynamics
|
||||
delta_robot = initializeStewartPlatform();
|
||||
delta_robot = generateDeltaRobot(delta_robot, 'd', 100e-3, 'b', b, 'L', L);
|
||||
delta_robot = computeJointsPose(delta_robot);
|
||||
delta_robot = initializeActuatorDynamics(delta_robot);
|
||||
delta_robot = initializeJointDynamics(delta_robot);
|
||||
delta_robot = initializeCylindricalStruts(delta_robot);
|
||||
delta_robot = computeJacobian(delta_robot);
|
||||
delta_robot = initializeStewartPose(delta_robot);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Delta Robot Architecture
|
||||
displayArchitecture(delta_robot, 'labels', false, 'frames', false);
|
||||
plotCube(delta_robot, 'Hc', 100e-3/sqrt(3), 'FOc', delta_robot.geometry.H+delta_robot.platform_M.MO_B(3), 'color', [0,0,0,0.2], 'link_to_struts', false);
|
||||
view([70, 30]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/delta_robot_cube_size_large.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:delta_robot_cube_size_large
|
||||
#+caption: Obtained Delta Robot for a cube's size of 100mm
|
||||
#+RESULTS:
|
||||
[[file:figs/delta_robot_cube_size_large.png]]
|
||||
|
||||
*** Effect on the plant dynamics
|
||||
|
||||
- [ ] *Understand why such different dynamics between 3dof_a joints and 6dof joints with very high shear stiffnesses*
|
||||
|
||||
The effect of the cube's size on the plant dynamics is shown in Figure [[fig:delta_robot_cube_size_plant_dynamics]]:
|
||||
- coupling decreases with the cube's size
|
||||
- coupling decreases with the cube's size (probably because of the reduced effect of the flexible joints' bending stiffness)
|
||||
- one resonance frequency increases with the cube's size (resonances in rotation), which may be beneficial from a control point of view
|
||||
- coupling at the main resonance varies with the cube's size, but it may also depend on the relative position between the CoM and the cube's center
|
||||
|
||||
@@ -1257,7 +1330,6 @@ for i = 1:length(cube_sizes)
|
||||
delta_robot = generateDeltaRobot(delta_robot, 'd', cube_sizes(i), 'b', b, 'L', L);
|
||||
delta_robot = computeJointsPose(delta_robot);
|
||||
delta_robot = initializeActuatorDynamics(delta_robot, 'type', '1dof', 'k', k);
|
||||
% delta_robot = initializeJointDynamics(delta_robot, 'type_F', '3dof_a', 'type_M', '3dof_a', 'Ka', joint_axial, 'Kf', joint_bending, 'Kt', joint_torsion, 'Ks', joint_shear);
|
||||
delta_robot = initializeJointDynamics(delta_robot, 'type_F', '6dof', 'type_M', '6dof', 'Ka', joint_axial, 'Kf', joint_bending, 'Kt', joint_torsion, 'Ks', joint_shear);
|
||||
delta_robot = initializeCylindricalStruts(delta_robot);
|
||||
delta_robot = computeJacobian(delta_robot);
|
||||
@@ -1294,7 +1366,7 @@ end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||
leg = legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg = legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
% xlim([1, 1e4]);
|
||||
ylim([1e-12, 1e-4])
|
||||
@@ -1313,6 +1385,9 @@ exportFig('figs/delta_robot_cube_size_plant_dynamics.pdf', 'width', 'wide', 'hei
|
||||
|
||||
As shown in Figure [[fig:delta_robot_cube_size_compliance_rotation]], the stiffness of the delta robot in rotation increases with the cube's size.
|
||||
|
||||
Therefore, if possible the cube's size should be increased.
|
||||
With a cube size of 50mm, the resonance frequency is already above 1kHz with seems reasonable.
|
||||
|
||||
#+begin_src matlab
|
||||
%% Effect of torsional stiffness on the plant dynamics
|
||||
joint_axial = 100e6; % [N/m]
|
||||
@@ -1359,7 +1434,7 @@ for i = 1:length(cube_sizes)
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude [rad/Nm]');
|
||||
leg = legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
% xlim([1, 1e4]);
|
||||
@@ -1375,9 +1450,8 @@ exportFig('figs/delta_robot_cube_size_compliance_rotation.pdf', 'width', 'wide',
|
||||
#+RESULTS:
|
||||
[[file:figs/delta_robot_cube_size_compliance_rotation.png]]
|
||||
|
||||
With a cube size of 50mm, the resonance frequency is already above 1kHz with seems reasonable.
|
||||
|
||||
** Effect of the strut length
|
||||
<<ssec:delta_robot_flexible_geometry_strut_length>>
|
||||
*** Introduction :ignore:
|
||||
Let's choose reasonable values for the flexible joints:
|
||||
- Bending stiffness of 50Nm/rad
|
||||
@@ -1485,7 +1559,6 @@ As shown in Figure [[fig:delta_robot_strut_length_plant_dynamics]], having longe
|
||||
This rotation is proportional to the strut length.
|
||||
Then, this rotation, combined with the limited compliance in bending of the flexible joints induces some force applied on the other actuators, hence the coupling.
|
||||
This is similar to what was observed when varying the bending stiffness of the flexible joints: the coupling was increased with an increased of the bending stiffness (See Figure [[fig:delta_robot_bending_stiffness_couplign]])
|
||||
*So we should also observed a decrease of the coupling when decreasing the bending stiffness of the actuators*
|
||||
|
||||
But even with relatively short struts (20mm and above), the low frequency decoupling is already around two orders of magnitude, which is enough from a control point of view.
|
||||
So, the struts length can be optimized to not decrease too much the stiffness of the platform while still getting good low frequency decoupling.
|
||||
@@ -1565,6 +1638,7 @@ exportFig('figs/delta_robot_strut_length_plant_dynamics.pdf', 'width', 'wide', '
|
||||
[[file:figs/delta_robot_strut_length_plant_dynamics.png]]
|
||||
|
||||
** Having the Center of Mass at the cube's center
|
||||
<<ssec:delta_robot_flexible_geometry_com>>
|
||||
|
||||
To make things easier, we take a top platform with no mass, mass-less struts, and we put a payload on top of the platform.
|
||||
|
||||
@@ -1666,6 +1740,13 @@ exportFig('figs/delta_robot_CoM_pos_effect_plant.pdf', 'width', 'wide', 'height'
|
||||
|
||||
** Conclusion
|
||||
|
||||
#+name: tab:delta_robot_geometry_recommendations
|
||||
#+caption: Recommendations for the Delta Robot Geometry
|
||||
| Geometrical feature | Effect | Recommendation |
|
||||
|---------------------+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------|
|
||||
| Cube's size =d= | Increasing the cube's size increases the rotational stiffness | Should be make as large as possible |
|
||||
| Strut length =L= | Changes the stiffness and coupling of the system (by changing the effect of the flexible joint bending stiffness) | Trade-off between higher stiffness and lower coupling |
|
||||
|
||||
* Conclusion
|
||||
|
||||
* Bibliography :ignore:
|
||||
|
||||
Reference in New Issue
Block a user