Add all before first review

This commit is contained in:
Thomas Dehaeze 2024-10-25 14:57:22 +02:00
parent 2ce3d04703
commit 39379714c0
19 changed files with 605 additions and 337 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 300 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.1 MiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 620 KiB

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1" version="1.1"
id="svg2" id="svg2"
width="476.98245" width="476.98245"
height="261.98425" height="261.98425"
viewBox="0 0 476.98245 261.98425" viewBox="0 0 476.98245 261.98425"
sodipodi:docname="strut_mounting_step_0.svg" sodipodi:docname="test_struts_mounting_step_0.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata <metadata
id="metadata8"> id="metadata8">
<rdf:RDF> <rdf:RDF>
@ -29,6 +29,25 @@
</metadata> </metadata>
<defs <defs
id="defs6"> id="defs6">
<marker
style="overflow:visible"
id="ConcaveTriangle"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Concave triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.7)"
d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
id="path7" />
</marker>
<marker <marker
style="overflow:visible" style="overflow:visible"
id="Arrow2Mend" id="Arrow2Mend"
@ -75,6 +94,63 @@
y="654.33423" y="654.33423"
transform="rotate(2.6502343)" /> transform="rotate(2.6502343)" />
</clipPath> </clipPath>
<marker
style="overflow:visible"
id="ConcaveTriangle-3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Concave triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.7)"
d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
id="path7-6" />
</marker>
<marker
style="overflow:visible"
id="ConcaveTriangle-3-6"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Concave triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.7)"
d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
id="path7-6-2" />
</marker>
<marker
style="overflow:visible"
id="ConcaveTriangle-1"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Concave triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.7)"
d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
id="path7-8" />
</marker>
</defs> </defs>
<sodipodi:namedview <sodipodi:namedview
pagecolor="#ffffff" pagecolor="#ffffff"
@ -85,18 +161,21 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="2536" inkscape:window-width="2560"
inkscape:window-height="1371" inkscape:window-height="1440"
id="namedview4" id="namedview4"
showgrid="false" showgrid="false"
inkscape:zoom="2.4193548" inkscape:zoom="2.4193548"
inkscape:cx="249.87385" inkscape:cx="213.69334"
inkscape:cy="127.13204" inkscape:cy="116.97334"
inkscape:window-x="12" inkscape:window-x="2560"
inkscape:window-y="57" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="g10" inkscape:current-layer="g1942"
inkscape:document-rotation="0" /> inkscape:document-rotation="0"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
inkscape:label="Image" inkscape:label="Image"
@ -116,7 +195,7 @@
<text <text
xml:space="preserve" xml:space="preserve"
id="text847" id="text847"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect849);" /> style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect849)" />
<path <path
style="fill:none;stroke:#d95218;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" style="fill:none;stroke:#d95218;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1"
d="m 889.31362,723.08885 377.48668,-2.03543" d="m 889.31362,723.08885 377.48668,-2.03543"
@ -150,6 +229,95 @@
x="627.77942" x="627.77942"
y="483.48038" y="483.48038"
id="tspan868">Coaxiality</tspan></text> id="tspan868">Coaxiality</tspan></text>
<rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6-3"
width="25.235725"
height="30.226471"
x="860.73566"
y="447.58722" />
<text
xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff"
x="873.36285"
y="469.38318"
id="text866-6"><tspan
sodipodi:role="line"
x="873.36285"
y="469.38318"
id="tspan868-7"
style="font-weight:normal">B</tspan></text>
<rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6-3-5"
width="25.235725"
height="30.226471"
x="442.66345"
y="447.58722" />
<text
xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff"
x="455.29065"
y="469.38318"
id="text866-6-3"><tspan
sodipodi:role="line"
x="455.29065"
y="469.38318"
id="tspan868-7-5">A</tspan></text>
<rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6-3-6"
width="25.235725"
height="30.226471"
x="439.79114"
y="532.59399" />
<text
xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff"
x="452.41833"
y="554.38995"
id="text866-6-2"><tspan
sodipodi:role="line"
x="452.41833"
y="554.38995"
id="tspan868-7-9">C</tspan></text>
<rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6-3-1"
width="25.235725"
height="30.226471"
x="863.94751"
y="530.73669" />
<text
xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff"
x="876.57471"
y="552.53265"
id="text866-6-27"><tspan
sodipodi:role="line"
x="876.57471"
y="552.53265"
id="tspan868-7-0">D</tspan></text>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1"
d="m 467.89917,462.70045 h 15.31935 l 13.15931,21.10961"
id="path1"
sodipodi:nodetypes="ccc" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-1);stop-color:#000000"
d="m 465.02686,547.70721 h 15.31935 l 12.20451,-16.37184"
id="path1-7"
sodipodi:nodetypes="ccc" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-3);stop-color:#000000"
d="M 860.73566,462.70045 H 845.41631 L 832.257,483.81006"
id="path1-0"
sodipodi:nodetypes="ccc" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-3-6);stop-color:#000000"
d="M 863.94751,545.84991 H 848.62816 L 837.87669,530.23415"
id="path1-0-6"
sodipodi:nodetypes="ccc" />
</g> </g>
</g> </g>
</g> </g>
@ -161,9 +329,8 @@
id="rect855-1-6-8" id="rect855-1-6-8"
width="122.10855" width="122.10855"
height="30.22644" height="30.22644"
x="520.28076" x="1012.5117"
y="553.35583" y="779.29901" />
transform="translate(492.23098,225.94318)" />
<text <text
xml:space="preserve" xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle" style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle"

Before

Width:  |  Height:  |  Size: 4.1 MiB

After

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -5,7 +5,7 @@
width="597.79761" width="597.79761"
height="350.63458" height="350.63458"
viewBox="0 0 597.79761 350.63457" viewBox="0 0 597.79761 350.63457"
sodipodi:docname="test_struts_mounting_step_3.svg" sodipodi:docname="test_struts_mounting_step_2.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -43,21 +43,6 @@
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path16794" /> id="path16794" />
</marker> </marker>
<marker
style="overflow:visible"
id="Arrow2Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path2321" />
</marker>
<marker <marker
style="overflow:visible" style="overflow:visible"
id="Arrow2Mend-6" id="Arrow2Mend-6"
@ -83,6 +68,20 @@
x="-158.80353" x="-158.80353"
y="-28.943981" /> y="-28.943981" />
</clipPath> </clipPath>
<marker
style="overflow:visible"
id="marker16796-3"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path16794-6" />
</marker>
</defs> </defs>
<sodipodi:namedview <sodipodi:namedview
pagecolor="#ffffff" pagecolor="#ffffff"
@ -93,17 +92,17 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="2534" inkscape:window-width="2560"
inkscape:window-height="1367" inkscape:window-height="1440"
id="namedview2339" id="namedview2339"
showgrid="false" showgrid="false"
inkscape:zoom="0.8553711" inkscape:zoom="6.8429688"
inkscape:cx="702.61901" inkscape:cx="183.39993"
inkscape:cy="102.29478" inkscape:cy="192.89873"
inkscape:window-x="11" inkscape:window-x="2560"
inkscape:window-y="60" inkscape:window-y="0"
inkscape:window-maximized="1" inkscape:window-maximized="1"
inkscape:current-layer="g16702" inkscape:current-layer="g2345"
inkscape:document-rotation="0" inkscape:document-rotation="0"
inkscape:snap-midpoints="true" inkscape:snap-midpoints="true"
inkscape:snap-smooth-nodes="true" inkscape:snap-smooth-nodes="true"
@ -125,36 +124,15 @@
y="-88.473511" y="-88.473511"
clip-path="url(#clipPath1)" clip-path="url(#clipPath1)"
style="stroke-width:0.699852" /> style="stroke-width:0.699852" />
<g
id="g16702"
transform="translate(-720.94101,-402.14003)">
<rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6"
width="144.15677"
height="30.226471"
x="579.034"
y="463.70047" />
<text
xml:space="preserve"
style="font-size:18.6667px;line-height:1.25;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff"
x="651.1217"
y="483.48038"
id="text866"><tspan
sodipodi:role="line"
x="651.1217"
y="483.48038"
id="tspan868">Cylindrical Nut</tspan></text>
</g>
<g <g
id="g16707" id="g16707"
transform="translate(-515.41435,-269.20633)"> transform="translate(-515.41435,-269.20633)">
<rect <rect
style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000" style="fill:#000000;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
id="rect855-1-6-4" id="rect855-1-6-4"
width="166.7166" width="172.09402"
height="30.226471" height="30.226471"
x="362.22742" x="359.53873"
y="433.30426" /> y="433.30426" />
<text <text
xml:space="preserve" xml:space="preserve"
@ -165,16 +143,16 @@
sodipodi:role="line" sodipodi:role="line"
x="445.32437" x="445.32437"
y="453.08417" y="453.08417"
id="tspan868-7">Cylindrical Washer</tspan></text> id="tspan868-7">Cylindrical Washers</tspan></text>
</g> </g>
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="M 2.2497864,76.673672 H 45.319591 l 27.028953,27.028958"
id="path16717" />
<path <path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker16796);stop-color:#000000;stop-opacity:1" style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker16796);stop-color:#000000;stop-opacity:1"
d="m 13.529686,179.21116 h 37.607242 l 28.21492,-43.55127" d="m 16.218401,179.21117 34.918527,-1e-5 28.21492,-43.55127"
id="path16751" id="path16751"
sodipodi:nodetypes="ccc" /> sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;-inkscape-stroke:none;marker-end:url(#marker16796);stop-color:#000000;stop-opacity:1"
d="m 28.65209,179.21117 34.352,-59.49941"
id="path1" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 4.2 MiB

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -12,7 +12,7 @@ addpath('./src/'); % Path for functions
colors = colororder; colors = colororder;
% Measured results % Measured results
% The obtained frequency response functions are shown in Figure ref:fig:test_struts_spur_res_frf. % The obtained frequency response functions for the three configurations (X-bending, Y-bending and Z-torsion) are shown in Figure ref:fig:test_struts_spur_res_frf_no_enc when the encoder is not fixed to the strut and in Figure ref:fig:test_struts_spur_res_frf_enc when the encoder is fixed to the strut.
%% Load Data (without the encoder) %% Load Data (without the encoder)
@ -41,6 +41,7 @@ hold off;
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Amplitude'); xlabel('Frequency [Hz]'); ylabel('Amplitude');
xlim([50, 8e2]); ylim([5e-7, 3e-4]) xlim([50, 8e2]); ylim([5e-7, 3e-4])
xticks([50, 100, 500]);
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
%% Plot the responses (with the encoder) %% Plot the responses (with the encoder)
@ -59,4 +60,5 @@ hold off;
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Amplitude'); xlabel('Frequency [Hz]'); ylabel('Amplitude');
xlim([50, 8e2]); ylim([5e-7, 3e-4]) xlim([50, 8e2]); ylim([5e-7, 3e-4])
xticks([50, 100, 500]);
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);

View File

@ -63,11 +63,33 @@ enc_frf = [frf_sweep(i_lf); frf_noise_hf(i_hf)]; % Combine the FRF
% Figure ref:fig:test_struts_effect_encoder_int % System identification is performed in two cases:
% Same goes for the transfer function from excitation voltage $u$ to the axial motion of the strut $d_a$ as measured by the interferometer (). % - no encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_front)
% - one encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_coder)
% The transfer function from the excitation voltage $u$ to the generated voltage $V_s$ by the sensor stack is not influence by the fixation of the encoder (Figure ref:fig:test_struts_effect_encoder_iff). % #+name: fig:test_struts_bench_leg_with_without_enc
% This means that the IFF control strategy should be as effective whether or not the encoders are fixed to the struts. % #+caption: Struts fixed to the test bench with clamped flexible joints. The coder can be fixed to the struts (\subref{fig:test_struts_bench_leg_coder}) or removed (\subref{fig:test_struts_bench_leg_front})
% #+attr_latex: :options [htbp]
% #+begin_figure
% #+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_leg_coder}Strut with encoder}
% #+attr_latex: :options {0.5\textwidth}
% #+begin_subfigure
% #+attr_latex: :height 6cm
% [[file:figs/test_struts_bench_leg_coder.jpg]]
% #+end_subfigure
% #+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_leg_front}Strut without encoder}
% #+attr_latex: :options {0.5\textwidth}
% #+begin_subfigure
% #+attr_latex: :height 6cm
% [[file:figs/test_struts_bench_leg_front.jpg]]
% #+end_subfigure
% #+end_figure
% The obtained frequency response functions are compared in Figure ref:fig:test_struts_effect_encoder.
% It is found that the encoder has very little effect on the transfer function from excitation voltage $u$ to the axial motion of the strut $d_a$ as measured by the interferometer (Figure ref:fig:test_struts_effect_encoder_int).
% This means that the axial motion of the strut is unaffected by the presence of the encoder.
% Similarly, it has very little effect on the transfer function from $u$ to the sensor stack voltage $V_s$ (Figure ref:fig:test_struts_effect_encoder_iff).
% This means that the integral force feedback control strategy should be as effective whether the encoders are fixed to the struts.
%% Plot the FRF from u to da with and without the encoder %% Plot the FRF from u to da with and without the encoder
@ -131,17 +153,12 @@ xlim([10, 2e3]);
% The dynamics as measured by the encoder and by the interferometers are compared in Figure ref:fig:test_struts_comp_enc_int. % The dynamics as measured by the encoder and by the interferometers are compared in Figure ref:fig:test_struts_comp_enc_int.
% The dynamics from the excitation voltage $u$ to the measured displacement by the encoder $d_e$ presents much more complicated behavior than the transfer function to the displacement as measured by the Interferometer (compared in Figure ref:fig:test_struts_comp_enc_int). % The dynamics from the excitation voltage $u$ to the measured displacement by the encoder $d_e$ presents a behavior that is much more complex than the dynamics to the displacement as measured by the interferometer (comparison made in Figure ref:fig:test_struts_comp_enc_int).
% It will be further investigated why the two dynamics as so different and what are causing all these resonances. % Three additional resonance frequencies can be observed at 197Hz, 290Hz and 376Hz.
% These resonance frequencies correspond to flexible modes of the strut that were studied in Section ref:sec:test_struts_flexible_modes.
% As shown in Figure ref:fig:test_struts_comp_enc_int, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz. % The good news is that these resonances are not seen on the interferometer and are therefore not impacting the axial motion of the strut (which is what is important for the hexapod positioning).
% These resonances correspond to parasitic resonances of the strut itself that was estimated using a finite element model of the strut (Figure ref:fig:test_struts_mode_shapes): % However, these resonances are making the use of encoder fixed to the strut difficult.
% - Mode in X-bending at 189Hz
% - Mode in Y-bending at 285Hz
% - Mode in Z-torsion at 400Hz
% The good news is that these resonances are not seen on the interferometer (they are therefore not impacting the axial motion of the strut).
% But these resonances are making the use of encoder fixed to the strut difficult.
figure; figure;
@ -222,8 +239,9 @@ end
% Then, the transfer function from the DAC output voltage $u$ to the measured displacement by the Attocube is computed for all the struts and shown in Figure ref:fig:test_struts_comp_interf_plants. % Then, the dynamics of all the mounted struts (only 5 at the time of the experiment) are all measured using the same test bench.
% All the struts are giving very similar FRF. % The obtained dynamics from $u$ to $d_a$ are compared in Figure ref:fig:test_struts_comp_interf_plants while is dynamics from $u$ to $V_s$ are compared in Figure ref:fig:test_struts_comp_iff_plants.
% Very good match can be observed between all the struts.
%% Plot the FRF from u to de (interferometer) %% Plot the FRF from u to de (interferometer)
@ -308,11 +326,12 @@ xlim([10, 2e3]);
% #+end_subfigure % #+end_subfigure
% #+end_figure % #+end_figure
% There is a very large variability of the dynamics as measured by the encoder as shown in Figure ref:fig:test_struts_comp_enc_plants. % The same comparison is made for the transfer function from $u$ to $d_e$ (encoder output) in Figure ref:fig:test_struts_comp_enc_plants.
% This time, large dynamics differences are observed between the 5 struts.
% Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same. % Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same.
% Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other. % Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other.
% All of this will be studied in Section ref:sec:test_struts_simscape using the Simscape model. % It will be further investigated why such differences are observed (see Section ref:ssec:test_struts_effect_misalignment).
%% Bode plot of the FRF from u to de %% Bode plot of the FRF from u to de

View File

@ -78,7 +78,7 @@ Gs_flex.OutputName = {'Vs', 'de', 'da'};
% However, the transfer function from $u$ to encoder displacement $d_e$ are not well matching for both models. % However, the transfer function from $u$ to encoder displacement $d_e$ are not well matching for both models.
% For the 2DoF model, this is normal as the resonances affecting the dynamics are not modelled at all (the APA300ML is modelled as infinitely rigid in all directions except the translation along it's actuation axis). % For the 2DoF model, this is normal as the resonances affecting the dynamics are not modelled at all (the APA300ML is modelled as infinitely rigid in all directions except the translation along it's actuation axis).
% For the flexible model, it will be shown in the next section that by adding some misalignment betwen the flexible joints and the APA300ML, this model can better represent the observed dynamics. % For the flexible model, it will be shown in the next section that by adding some misalignment between the flexible joints and the APA300ML, this model can better represent the observed dynamics.
%% Compare the FRF and identified dynamics from u to Vs and da %% Compare the FRF and identified dynamics from u to Vs and da
@ -222,8 +222,8 @@ xlim([10, 2e3]);
% The misalignment in the $y$ direction mostly influences: % The misalignment in the $y$ direction mostly influences:
% - the presence of the flexible mode at 200Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_1) % - the presence of the flexible mode at 200Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_1)
% - the location of the complex conjugate zero between the first two resonances: % - the location of the complex conjugate zero between the first two resonances:
% - if $d_y < 0$: there is no zero between the two resonances and possibly not even between the second and third ones % - if $d_{y} < 0$: there is no zero between the two resonances and possibly not even between the second and third ones
% - if $d_y > 0$: there is a complex conjugate zero between the first two resonances % - if $d_{y} > 0$: there is a complex conjugate zero between the first two resonances
% - the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero) % - the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero)
% The same can be done for a misalignment in the $x$ direction. % The same can be done for a misalignment in the $x$ direction.

View File

@ -1,4 +1,5 @@
\usepackage{float} \usepackage{float}
\floatplacement{figure}{h}
\usepackage{caption,tabularx,booktabs} \usepackage{caption,tabularx,booktabs}
\usepackage{bm} \usepackage{bm}

View File

@ -100,22 +100,21 @@ To integrate:
- [X] Check [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa300ml/test-bench-apa300ml.org::*New Measurements - IFF Root Locus][New Measurements - IFF Root Locus]] - [X] Check [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa300ml/test-bench-apa300ml.org::*New Measurements - IFF Root Locus][New Measurements - IFF Root Locus]]
*no, it is only for the APA and not the strut* *no, it is only for the APA and not the strut*
** DONE [#B] Rework mounting procedure section
** TODO [#C] Add schematic of the test bench with signals CLOSED: [2024-04-02 Tue 17:12]
here: [[*Introduction][Introduction]]
- $u$
- $d_e$
- $d_a$
** TODO [#B] Rework mounting procedure section
- [X] Use smaller images, maybe one subfigure for all the steps - [X] Use smaller images, maybe one subfigure for all the steps
- [ ] Add some notes to the figure ref:fig:test_struts_mounting_bench_first_concept - [ ] Add some notes to the figure ref:fig:test_struts_mounting_bench_first_concept
- [ ] Explain clearly the mounting goals (coaxiality, etc.) - [ ] Explain clearly the mounting goals (coaxiality, etc.)
- [ ] Speak about the "pin" that is used to align the APA with respect to the flexible joints (initially not used) - [ ] Speak about the "pin" that is used to align the APA with respect to the flexible joints (initially not used)
** DONE [#C] Add schematic of the test bench with signals
CLOSED: [2024-04-02 Tue 14:25]
- $u$
- $d_e$
- $d_a$
** DONE [#B] Rework flexible mode measurements ** DONE [#B] Rework flexible mode measurements
CLOSED: [2024-03-25 Mon 16:35] CLOSED: [2024-03-25 Mon 16:35]
@ -126,61 +125,81 @@ CLOSED: [2024-03-25 Mon 15:09]
* Introduction :ignore: * Introduction :ignore:
In this document, a test-bench is used to characterize the struts of the nano-hexapod. The Nano-Hexapod struts (shown in Figure ref:fig:test_struts_picture_strut) are composed of:
- Two flexible joints that are fixed at the two ends of the strut
Each strut includes (Figure ref:fig:test_struts_picture_strut): - One Amplified Piezoelectric Actuator[fn:5]
- 2 flexible joints at each ends. - One optical encoder[fn:6]
These flexible joints have been characterized in a separate test bench (see ...).
- 1 Amplified Piezoelectric Actuator (APA300ML) (described in Section ...).
Two stacks are used as an actuator and one stack as a (force) sensor.
- 1 encoder (Renishaw Vionic) that has been characterized in a separate test bench (see ...).
#+name: fig:test_struts_picture_strut #+name: fig:test_struts_picture_strut
#+caption: One strut including two flexible joints, an amplified piezoelectric actuator and an encoder #+caption: One strut including two flexible joints, an amplified piezoelectric actuator and an encoder
#+attr_latex: :width 0.8\linewidth #+attr_latex: :width 0.8\linewidth
[[file:figs/test_struts_picture_strut.jpg]] [[file:figs/test_struts_picture_strut.jpg]]
Then the struts are mounted (procedure described in Section ref:sec:test_struts_mounting), and are fixed to the same measurement bench. After the strut elements have been individually characterized (see previous sections), the struts are assembled.
The goals are to: The mounting procedure of the struts is explained in Section ref:sec:test_struts_mounting.
- Section ref:sec:test_struts_dynamical_meas: Identify the dynamics from the generated DAC voltage to: A mounting bench is used to ensure the coaxiality between the two ends of the struts.
- the sensors stack generated voltage This way, no angular stroke is lost when mounted to the nano-hexapod.
- the measured displacement by the encoder
- the measured displacement by the interferometer (representing encoders that would be fixed to the nano-hexapod's plates instead of the struts)
- Section ref:sec:test_struts_simscape: Compare the measurements with the Simscape model of the struts and tune the models
The final goal of the work presented in this document is to have an accurate Simscape model of the struts that can then be included in the Simscape model of the nano-hexapod. Then the flexible modes of the struts are experimentally measured and compared with a finite element model (Section ref:sec:test_struts_flexible_modes).
#+name: tab:test_struts_section_matlab_code Dynamical measurements on the strut are performed with the same test bench that was used to characterize the APA300ML dynamics (Section ref:sec:test_struts_dynamical_meas).
#+caption: Report sections and corresponding Matlab files It is found that the dynamics from the DAC voltage to the displacement measured by the encoder is complex due to the flexible modes of the struts found in Section ref:sec:test_struts_flexible_modes.
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lX
#+attr_latex: :center t :booktabs t The models of the struts are then compared with the measured dynamics (Section ref:sec:test_struts_simscape).
| *Sections* | *Matlab File* | The model dynamics from the DAC voltage to the axial motion of the strut (measured by an interferometer) and to the force sensor voltage are matching well the experiment.
|--------------------------------------------+----------------------------------| However, this is not the case for the dynamics from DAC voltage to encoder displacement.
| Section ref:sec:test_struts_flexible_modes | =test_struts_1_flexible_modes.m= | It is found that the complex dynamics is due to a misalignment between the flexible joints and the APA.
| Section ref:sec:test_struts_dynamical_meas | =test_struts_2_dynamical_meas.m= |
| Section ref:sec:test_struts_simscape | =test_struts_3_simscape_model.m= | # #+name: tab:test_struts_section_matlab_code
# #+caption: Report sections and corresponding Matlab files
# #+attr_latex: :environment tabularx :width 0.6\linewidth :align lX
# #+attr_latex: :center t :booktabs t
# | *Sections* | *Matlab File* |
# |--------------------------------------------+----------------------------------|
# | Section ref:sec:test_struts_flexible_modes | =test_struts_1_flexible_modes.m= |
# | Section ref:sec:test_struts_dynamical_meas | =test_struts_2_dynamical_meas.m= |
# | Section ref:sec:test_struts_simscape | =test_struts_3_simscape_modelm= |
* Mounting Procedure * Mounting Procedure
<<sec:test_struts_mounting>> <<sec:test_struts_mounting>>
** Introduction :ignore: ** Introduction :ignore:
A mounting bench has been developed to ensure:
- Good coaxial alignment between the interfaces (cylinders) of the flexible joints.
This is important to not loose to much angular stroke when they will be integrated into the nano-hexapod
- Uniform length across all struts
- Precise alignment of the APA with the two flexible joints
- Reproducible and consistent assembly between all the struts
** Mounting Bench ** Mounting Bench
A mounting bench is used to greatly simply the mounting of the struts as well as ensuring the correct strut length and coaxiality of the flexible joint's interfaces.
This is very important in order to not loose any stroke when the struts will be mounted on the nano-hexapod.
A CAD view of the mounting bench is shown in Figure ref:fig:test_struts_mounting_bench_first_concept. A CAD view of the mounting bench is shown in Figure ref:fig:test_struts_mounting_bench_first_concept.
It consists of a "main frame" (Figure ref:fig:test_struts_mounting_step_0) precisely machined to ensure both the correct strut length and strut coaxiality.
The coaxiality is ensured by having good flatness (specified at $20\,\mu m$) between surfaces A and B, and between surfaces C and D.
Such flatness has been checked using a Faro arm[fn:1] (see Figure ref:fig:test_struts_check_dimensions_bench) and was found to comply with the requirements.
The strut length (defined by the distance between the rotation points of the two flexible joints) is ensured by using precisely machines dowel holes.
Faro arm[fn:1]
#+name: fig:test_struts_mounting_bench_first_concept #+name: fig:test_struts_mounting
#+caption: CAD view of the mounting bench #+caption: Strut mounting bench
#+attr_latex: :width 0.6\linewidth #+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_struts_mounting_bench_first_concept}CAD view of the mounting bench}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width \linewidth
[[file:figs/test_struts_mounting_bench_first_concept.png]] [[file:figs/test_struts_mounting_bench_first_concept.png]]
#+end_subfigure
The main part of the bench is here to ensure both the correct strut length and strut coaxiality as shown in Figure ref:fig:test_struts_mounting_step_0. #+attr_latex: :caption \subcaption{\label{fig:test_struts_mounting_overview}Exploded view}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width \linewidth
[[file:figs/test_struts_mounting_overview.jpg]]
#+end_subfigure
#+end_figure
#+name: fig:test_struts_mounting_base_part #+name: fig:test_struts_mounting_base_part
#+caption: Caption..., add foot note with Faro arm #+caption: Main element of the mounting bench for the struts that ensure good coaxility of the two flexible joints as well as the length of the struts.
#+attr_latex: :options [htbp] #+attr_latex: :options [htbp]
#+begin_figure #+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_struts_mounting_step_0}Useful features of the main mounting element} #+attr_latex: :caption \subcaption{\label{fig:test_struts_mounting_step_0}Useful features of the main mounting element}
@ -197,30 +216,12 @@ The main part of the bench is here to ensure both the correct strut length and s
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
The tight tolerances of this element has been verified as shown in Figure ref:fig:test_struts_check_dimensions_bench and were found to comply with the requirements. The flexible joints are not directly fixed to the mounting bench but to a cylindrical "sleeve" shown in Figures ref:fig:test_struts_cylindrical_mounting_part_top and ref:fig:test_struts_cylindrical_mounting_part_bot.
The goal of these "sleeves" is to avoid any mechanical stress that could damage the flexible joints during the mounting procedure.
The flexible joints are rigidly fixed to cylindrical tools shown in Figures ref:fig:test_struts_cylindrical_mounting_part_top and ref:fig:test_struts_cylindrical_mounting_part_bot which are then mounted on the mounting tool shown in Figure ref:fig:test_struts_mounting_step_0. These "sleeves" have one dowel groove (that are fitted to the dowel holes shown in Figure ref:fig:test_struts_mounting_step_0) that will determine the length of the mounted strut.
This cylindrical tool is here to protect the flexible joints when tightening the screws and therefore applying large torque.
** Mounting Procedure
- [ ] Better explain the mounting procedure
- [ ] Speak about the "locating" pins that are used to aligned the APA with the two flexible joints
The mounting procedure is as follows:
1. Screw flexible joints inside the cylindrical interface element shown in Figure ref:fig:test_struts_cylindrical_mounting
2. Fix the two interface elements. One of the two should be clamped, the other one should have its axial rotation free.
Visually align the clamped one horizontally. (Figure ref:fig:test_struts_mounting_step_1)
3. Put cylindrical washers, APA and interface pieces on top of the flexible joints (Figure ref:fig:test_struts_mounting_step_2)
4. Put the 4 screws just in contact such that everything is correctly positioned and such that the "free" flexible joint is correctly oriented
5. Put the 8 lateral screws in contact
6. Tighten the 4 screws to fix the APA on the two flexible joints (using a torque screwdriver)
7. Remove the 4 laterals screws
8. (optional) Put the APA horizontally and fix the encoder and align it to maximize the contrast (Figure ref:fig:test_struts_mounting_step_3)
9. Disassemble to have an properly mounted strut (Figure ref:fig:test_struts_mounting_step_4) for which the coaxiality between the two flexible joint's interfaces is good
#+name: fig:test_struts_cylindrical_mounting #+name: fig:test_struts_cylindrical_mounting
#+caption: Preparation of the flexible joints by fixing them in their cylindrical interface #+caption: Preparation of the flexible joints by fixing them in their cylindrical "sleeve"
#+attr_latex: :options [htbp] #+attr_latex: :options [htbp]
#+begin_figure #+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_struts_cylindrical_mounting_part_top}Cylindral Interface (Top)} #+attr_latex: :caption \subcaption{\label{fig:test_struts_cylindrical_mounting_part_top}Cylindral Interface (Top)}
@ -243,6 +244,20 @@ The mounting procedure is as follows:
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
** Mounting Procedure
The "sleeves" are mounted to the main element as shown in Figure ref:fig:test_struts_mounting_step_0.
The left sleeve has a thigh fit such that its orientation is fixed (it is roughly aligned horizontally) while the right sleeve has a loose fit such that it can rotate (it will get the same orientation as the fixed one when tightening the screws).
Then the cylindrical washers and the APA300ML are stacked on top of the flexible joints as shown in Figure ref:fig:test_struts_mounting_step_2 and screwed together using a torque screwdriver.
A dowel pin is used to laterally align the APA300ML with the flexible joints (see the dowel slot on the flexible joints in Figure ref:fig:test_struts_mounting_joints).
The two cylindrical washers are used to allow proper mounting even if the two APA interfaces are not parallel.
The encoder and ruler are then fixed to the strut and properly aligned as shown in Figure ref:fig:test_struts_mounting_step_3.
Finally, the strut can be disassembled from the mounting bench (Figure ref:fig:test_struts_mounting_step_4).
Thanks to this mounting procedure, coaxiality and length between the two flexible joint's interfaces can be obtained within the wanted tolerances.
#+name: fig:test_struts_mounting_steps #+name: fig:test_struts_mounting_steps
#+caption: Steps for mounting the struts. #+caption: Steps for mounting the struts.
#+attr_latex: :options [htbp] #+attr_latex: :options [htbp]
@ -282,7 +297,10 @@ The mounting procedure is as follows:
<<sec:test_struts_flexible_modes>> <<sec:test_struts_flexible_modes>>
** Introduction ** Introduction
From a Finite Element Model of the struts, it have been found that three main resonances are foreseen to be problematic for the control of the APA300ML (Figure ref:fig:test_struts_mode_shapes): an "X-bending" mode at 189Hz, a "Y-bending" mode at 285Hz and a "Z-torsion" mode at 400Hz. A Finite Element Model[fn:3] of the struts is developed and is used to estimate the flexible modes.
Inertia of the encoder (estimated at $15\,g$) is taken into account.
The two cylindrical interfaces are fixed, and the first three flexible modes are computed.
The modes shapes are displayed in Figure ref:fig:test_struts_mode_shapes: an "X-bending" mode at 189Hz, a "Y-bending" mode at 285Hz and a "Z-torsion" mode at 400Hz.
#+name: fig:test_struts_mode_shapes #+name: fig:test_struts_mode_shapes
#+caption: Spurious resonances of the struts estimated from a Finite Element Model #+caption: Spurious resonances of the struts estimated from a Finite Element Model
@ -331,8 +349,8 @@ From a Finite Element Model of the struts, it have been found that three main re
** Measurement Setup ** Measurement Setup
A Laser vibrometer is measuring the difference of motion between two beam path (red points in Figure ref:fig:test_struts_meas_modes). In order to experimentally measure these mode shapes, a Laser vibrometer is used to measure the difference of motion between two beam path (red points in Figure ref:fig:test_struts_meas_modes).
The strut is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed. The strut is then excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed.
The "X-bending" mode is measured as shown in Figure ref:fig:test_struts_meas_x_bending. The "X-bending" mode is measured as shown in Figure ref:fig:test_struts_meas_x_bending.
The "Y-bending" mode is measured as shown in Figure ref:fig:test_struts_meas_y_bending. The "Y-bending" mode is measured as shown in Figure ref:fig:test_struts_meas_y_bending.
@ -365,7 +383,7 @@ This is done with and without the encoder fixed to the strut.
#+end_figure #+end_figure
** Measured results ** Measured results
The obtained frequency response functions are shown in Figure ref:fig:test_struts_spur_res_frf. The obtained frequency response functions for the three configurations (X-bending, Y-bending and Z-torsion) are shown in Figure ref:fig:test_struts_spur_res_frf_no_enc when the encoder is not fixed to the strut and in Figure ref:fig:test_struts_spur_res_frf_enc when the encoder is fixed to the strut.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Load Data (without the encoder) %% Load Data (without the encoder)
@ -396,6 +414,7 @@ hold off;
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Amplitude'); xlabel('Frequency [Hz]'); ylabel('Amplitude');
xlim([50, 8e2]); ylim([5e-7, 3e-4]) xlim([50, 8e2]); ylim([5e-7, 3e-4])
xticks([50, 100, 500]);
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
#+end_src #+end_src
@ -420,6 +439,7 @@ hold off;
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Amplitude'); xlabel('Frequency [Hz]'); ylabel('Amplitude');
xlim([50, 8e2]); ylim([5e-7, 3e-4]) xlim([50, 8e2]); ylim([5e-7, 3e-4])
xticks([50, 100, 500]);
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
#+end_src #+end_src
@ -445,22 +465,25 @@ exportFig('figs/test_struts_spur_res_frf_enc.pdf', 'width', 'half', 'height', 'n
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
** Conclusion :ignore: ** Conclusion
:PROPERTIES:
:UNNUMBERED: t
:END:
Table ref:tab:test_struts_spur_mode_freqs summarizes the measured resonance frequencies as well as the computed ones using the Finite Element Model. Table ref:tab:test_struts_spur_mode_freqs summarizes the measured resonance frequencies as well as the computed ones using the Finite Element Model.
It is shown that: It is shown that:
- the resonance frequencies of the 3 modes are only slightly increasing when the encoder is removed - the resonance frequencies of the 3 modes are only slightly decreased when the encoder is fixed to the strut
- the computed resonance frequencies from the FEM are very close to the measured one when the encoder is fixed to the strut - the computed resonance frequencies from the FEM are very close to the measured one when the encoder is fixed to the strut
#+name: tab:test_struts_spur_mode_freqs #+name: tab:test_struts_spur_mode_freqs
#+caption: Measured frequency of the strut spurious modes #+caption: Measured frequency of the flexible modes of the strut
#+attr_latex: :environment tabularx :width 0.7\linewidth :align Xccc #+attr_latex: :environment tabularx :width 0.9\linewidth :align Xccc
#+attr_latex: :center t :booktabs t :float t #+attr_latex: :center t :booktabs t :float t
| *Mode* | *Struts (FEM)* | *Struts (exp)* | *Plates (exp)* | | *Mode* | *FEM with Encoder* | *Exp. with Encoder* | *Exp. without Encoder* |
|-----------+----------------+----------------+----------------| |-----------+--------------------+---------------------+------------------------|
| X-Bending | 189Hz | 198Hz | 226Hz | | X-Bending | 189Hz | 198Hz | 226Hz |
| Y-Bending | 285Hz | 293Hz | 337Hz | | Y-Bending | 285Hz | 293Hz | 337Hz |
| Z-Torsion | 400Hz | 381Hz | 398Hz | | Z-Torsion | 400Hz | 381Hz | 398Hz |
* Dynamical measurements * Dynamical measurements
:PROPERTIES: :PROPERTIES:
@ -469,10 +492,14 @@ It is shown that:
<<sec:test_struts_dynamical_meas>> <<sec:test_struts_dynamical_meas>>
** Introduction :ignore: ** Introduction :ignore:
The bench is shown in Figure ref:fig:test_struts_bench_leg. In order to measure the dynamics of the strut, the same test bench used to measure the APA300ML dynamics is used.
The strut mounted on the bench is shown in Figure ref:fig:test_struts_bench_leg_overview
A schematic of the bench and the associated signals are shown in Figure ref:fig:test_struts_bench_schematic.
A fiber interferometer[fn:4] is used to measure the motion of the granite (i.e. the axial motion of the strut).
#+name: fig:test_struts_bench_leg #+name: fig:test_struts_bench_leg
#+caption: Experimental setup used to measured the dynamics of the struts. #+caption: Experimental setup used to measure the dynamics of the struts.
#+attr_latex: :options [htbp] #+attr_latex: :options [htbp]
#+begin_figure #+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_leg_overview}Overview Picture} #+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_leg_overview}Overview Picture}
@ -484,7 +511,7 @@ The bench is shown in Figure ref:fig:test_struts_bench_leg.
#+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_schematic}Schematic} #+attr_latex: :caption \subcaption{\label{fig:test_struts_bench_schematic}Schematic}
#+attr_latex: :options {0.68\textwidth} #+attr_latex: :options {0.68\textwidth}
#+begin_subfigure #+begin_subfigure
#+attr_latex: :scale 1 #+attr_latex: :height 214px
[[file:figs/test_struts_bench_schematic.png]] [[file:figs/test_struts_bench_schematic.png]]
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
@ -565,7 +592,9 @@ iff_with_enc_frf = [frf_sweep(i_lf); frf_noise_hf(i_hf)]; % Combine the FRF
enc_frf = [frf_sweep(i_lf); frf_noise_hf(i_hf)]; % Combine the FRF enc_frf = [frf_sweep(i_lf); frf_noise_hf(i_hf)]; % Combine the FRF
#+end_src #+end_src
Measurements are performed either when no encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_front) or when one encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_coder). System identification is performed in two cases:
- no encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_front)
- one encoder is fixed to the strut (Figure ref:fig:test_struts_bench_leg_coder)
#+name: fig:test_struts_bench_leg_with_without_enc #+name: fig:test_struts_bench_leg_with_without_enc
#+caption: Struts fixed to the test bench with clamped flexible joints. The coder can be fixed to the struts (\subref{fig:test_struts_bench_leg_coder}) or removed (\subref{fig:test_struts_bench_leg_front}) #+caption: Struts fixed to the test bench with clamped flexible joints. The coder can be fixed to the struts (\subref{fig:test_struts_bench_leg_coder}) or removed (\subref{fig:test_struts_bench_leg_front})
@ -585,11 +614,11 @@ Measurements are performed either when no encoder is fixed to the strut (Figure
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
Figure ref:fig:test_struts_effect_encoder_int The obtained frequency response functions are compared in Figure ref:fig:test_struts_effect_encoder.
Same goes for the transfer function from excitation voltage $u$ to the axial motion of the strut $d_a$ as measured by the interferometer (). It is found that the encoder has very little effect on the transfer function from excitation voltage $u$ to the axial motion of the strut $d_a$ as measured by the interferometer (Figure ref:fig:test_struts_effect_encoder_int).
This means that the axial motion of the strut is unaffected by the presence of the encoder.
The transfer function from the excitation voltage $u$ to the generated voltage $V_s$ by the sensor stack is not influence by the fixation of the encoder (Figure ref:fig:test_struts_effect_encoder_iff). Similarly, it has very little effect on the transfer function from $u$ to the sensor stack voltage $V_s$ (Figure ref:fig:test_struts_effect_encoder_iff).
This means that the IFF control strategy should be as effective whether or not the encoders are fixed to the struts. This means that the integral force feedback control strategy should be as effective whether the encoders are fixed to the struts.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the FRF from u to da with and without the encoder %% Plot the FRF from u to da with and without the encoder
@ -682,17 +711,12 @@ exportFig('figs/test_struts_effect_encoder_iff.pdf', 'width', 'half', 'height',
The dynamics as measured by the encoder and by the interferometers are compared in Figure ref:fig:test_struts_comp_enc_int. The dynamics as measured by the encoder and by the interferometers are compared in Figure ref:fig:test_struts_comp_enc_int.
The dynamics from the excitation voltage $u$ to the measured displacement by the encoder $d_e$ presents much more complicated behavior than the transfer function to the displacement as measured by the Interferometer (compared in Figure ref:fig:test_struts_comp_enc_int). The dynamics from the excitation voltage $u$ to the measured displacement by the encoder $d_e$ presents a behavior that is much more complex than the dynamics to the displacement as measured by the interferometer (comparison made in Figure ref:fig:test_struts_comp_enc_int).
It will be further investigated why the two dynamics as so different and what are causing all these resonances. Three additional resonance frequencies can be observed at 197Hz, 290Hz and 376Hz.
These resonance frequencies correspond to flexible modes of the strut that were studied in Section ref:sec:test_struts_flexible_modes.
As shown in Figure ref:fig:test_struts_comp_enc_int, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz. The good news is that these resonances are not seen on the interferometer and are therefore not impacting the axial motion of the strut (which is what is important for the hexapod positioning).
These resonances correspond to parasitic resonances of the strut itself that was estimated using a finite element model of the strut (Figure ref:fig:test_struts_mode_shapes): However, these resonances are making the use of encoder fixed to the strut difficult.
- Mode in X-bending at 189Hz
- Mode in Y-bending at 285Hz
- Mode in Z-torsion at 400Hz
The good news is that these resonances are not seen on the interferometer (they are therefore not impacting the axial motion of the strut).
But these resonances are making the use of encoder fixed to the strut difficult.
#+begin_src matlab :exports none #+begin_src matlab :exports none
figure; figure;
@ -782,8 +806,9 @@ for i = 1:length(strut_nums)
end end
#+end_src #+end_src
Then, the transfer function from the DAC output voltage $u$ to the measured displacement by the Attocube is computed for all the struts and shown in Figure ref:fig:test_struts_comp_interf_plants. Then, the dynamics of all the mounted struts (only 5 at the time of the experiment) are all measured using the same test bench.
All the struts are giving very similar FRF. The obtained dynamics from $u$ to $d_a$ are compared in Figure ref:fig:test_struts_comp_interf_plants while is dynamics from $u$ to $V_s$ are compared in Figure ref:fig:test_struts_comp_iff_plants.
Very good match can be observed between all the struts.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the FRF from u to de (interferometer) %% Plot the FRF from u to de (interferometer)
@ -877,11 +902,12 @@ exportFig('figs/test_struts_comp_iff_plants.pdf', 'width', 'half', 'height', 'ta
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
There is a very large variability of the dynamics as measured by the encoder as shown in Figure ref:fig:test_struts_comp_enc_plants. The same comparison is made for the transfer function from $u$ to $d_e$ (encoder output) in Figure ref:fig:test_struts_comp_enc_plants.
This time, large dynamics differences are observed between the 5 struts.
Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same. Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same.
Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other. Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other.
All of this will be studied in Section ref:sec:test_struts_simscape using the Simscape model. It will be further investigated why such differences are observed (see Section ref:ssec:test_struts_effect_misalignment).
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Bode plot of the FRF from u to de %% Bode plot of the FRF from u to de
@ -925,11 +951,15 @@ exportFig('figs/test_struts_comp_enc_plants.pdf', 'width', 'wide', 'height', 'ta
#+RESULTS: #+RESULTS:
[[file:figs/test_struts_comp_enc_plants.png]] [[file:figs/test_struts_comp_enc_plants.png]]
** Conclusion :ignore: ** Conclusion
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_important #+begin_important
All the struts are giving very consistent behavior from the excitation voltage $u$ to the force sensor generated voltage $V_s$ and to the interferometer measured displacement $d_a$. All the struts are giving very consistent behavior from the excitation voltage $u$ to the force sensor generated voltage $V_s$ and to the interferometer measured displacement $d_a$.
However, the dynamics from $u$ to the encoder measurement $d_e$ is much more complex and variable from one strut to the other most likely due to poor alignment of the APA with respect to the flexible joints. However, the dynamics from $u$ to the encoder measurement $d_e$ is much more complex and variable from one strut to the other.
The reason behind this variability will be studied in the next section thanks to the model of the strut.
#+end_important #+end_important
#+begin_src matlab :tangle no :exports none #+begin_src matlab :tangle no :exports none
@ -1057,7 +1087,7 @@ The model dynamics from DAC voltage $u$ to the axial motion of the strut $d_a$ (
However, the transfer function from $u$ to encoder displacement $d_e$ are not well matching for both models. However, the transfer function from $u$ to encoder displacement $d_e$ are not well matching for both models.
For the 2DoF model, this is normal as the resonances affecting the dynamics are not modelled at all (the APA300ML is modelled as infinitely rigid in all directions except the translation along it's actuation axis). For the 2DoF model, this is normal as the resonances affecting the dynamics are not modelled at all (the APA300ML is modelled as infinitely rigid in all directions except the translation along it's actuation axis).
For the flexible model, it will be shown in the next section that by adding some misalignment betwen the flexible joints and the APA300ML, this model can better represent the observed dynamics. For the flexible model, it will be shown in the next section that by adding some misalignment between the flexible joints and the APA300ML, this model can better represent the observed dynamics.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Compare the FRF and identified dynamics from u to Vs and da %% Compare the FRF and identified dynamics from u to Vs and da
@ -1242,8 +1272,8 @@ The alignment of the APA with the flexible joints as a *huge* influence on the d
The misalignment in the $y$ direction mostly influences: The misalignment in the $y$ direction mostly influences:
- the presence of the flexible mode at 200Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_1) - the presence of the flexible mode at 200Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_1)
- the location of the complex conjugate zero between the first two resonances: - the location of the complex conjugate zero between the first two resonances:
- if $d_y < 0$: there is no zero between the two resonances and possibly not even between the second and third ones - if $d_{y} < 0$: there is no zero between the two resonances and possibly not even between the second and third ones
- if $d_y > 0$: there is a complex conjugate zero between the first two resonances - if $d_{y} > 0$: there is a complex conjugate zero between the first two resonances
- the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero) - the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero)
The same can be done for a misalignment in the $x$ direction. The same can be done for a misalignment in the $x$ direction.
@ -1863,7 +1893,10 @@ This method gives nice match between the measured FRF and the one extracted from
Using this method, an axial stiffness of $70 N/\mu m$ is found to give good results (and is reasonable based on the finite element models). Using this method, an axial stiffness of $70 N/\mu m$ is found to give good results (and is reasonable based on the finite element models).
** Conclusion :ignore: ** Conclusion
:PROPERTIES:
:UNNUMBERED: t
:END:
* Conclusion * Conclusion
<<sec:test_struts_conclusion>> <<sec:test_struts_conclusion>>
@ -2265,5 +2298,10 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
#+end_src #+end_src
* Footnotes * Footnotes
[fn:2]Heidenhain MT25, specified accuracy of $\pm 0.5\,\mu m$
[fn:1]Faro Arm Platinum 4ft, specified accuracy of $\pm 13\mu m$ [fn:6] Vionic from Renishaw
[fn:5] The APA300ML from Cedrat Technologies
[fn:4] Two fiber intereferometers were used: an IDS3010 from Attocube and a quDIS from QuTools
[fn:3] Using Ansys\textsuperscript{\textregistered}. Flexible Joints and APA Shell material is stainless steel =1.4542=. Encoder and ruler support material is aluminium.
[fn:2] Heidenhain MT25, specified accuracy of $\pm 0.5\,\mu m$
[fn:1] Faro Arm Platinum 4ft, specified accuracy of $\pm 13\mu m$

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2024-03-27 Wed 22:22 % Created 2024-04-08 Mon 09:55
% Intended LaTeX compiler: pdflatex % Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@ -22,15 +22,11 @@
\tableofcontents \tableofcontents
\clearpage \clearpage
In this document, a test-bench is used to characterize the struts of the nano-hexapod. The Nano-Hexapod struts (shown in Figure \ref{fig:test_struts_picture_strut}) each consists of:
Each strut includes (Figure \ref{fig:test_struts_picture_strut}):
\begin{itemize} \begin{itemize}
\item 2 flexible joints at each ends. \item Two flexible joints that are fixed at the two ends of the strut
These flexible joints have been characterized in a separate test bench (see \ldots{}). \item One Amplified Piezoelectric Actuator (APA300ML)
\item 1 Amplified Piezoelectric Actuator (APA300ML) (described in Section \ldots{}). \item One encoder (Renishaw Vionic)
Two stacks are used as an actuator and one stack as a (force) sensor.
\item 1 encoder (Renishaw Vionic) that has been characterized in a separate test bench (see \ldots{}).
\end{itemize} \end{itemize}
\begin{figure}[htbp] \begin{figure}[htbp]
@ -39,19 +35,20 @@ Two stacks are used as an actuator and one stack as a (force) sensor.
\caption{\label{fig:test_struts_picture_strut}One strut including two flexible joints, an amplified piezoelectric actuator and an encoder} \caption{\label{fig:test_struts_picture_strut}One strut including two flexible joints, an amplified piezoelectric actuator and an encoder}
\end{figure} \end{figure}
Then the struts are mounted (procedure described in Section \ref{sec:test_struts_mounting}), and are fixed to the same measurement bench. Now that all the strut elements have been individually characterized (see previous sections), the struts can be assembled.
The goals are to: The mounting procedure of the struts is explained in Section \ref{sec:test_struts_mounting}.
\begin{itemize} A mounting bench is used to ensure the coaxiality between the two ends of the struts.
\item Section \ref{sec:test_struts_dynamical_meas}: Identify the dynamics from the generated DAC voltage to: This way, no angular stroke is lost when mounted to the nano-hexapod.
\begin{itemize}
\item the sensors stack generated voltage
\item the measured displacement by the encoder
\item the measured displacement by the interferometer (representing encoders that would be fixed to the nano-hexapod's plates instead of the struts)
\end{itemize}
\item Section \ref{sec:test_struts_simscape}: Compare the measurements with the Simscape model of the struts and tune the models
\end{itemize}
The final goal of the work presented in this document is to have an accurate Simscape model of the struts that can then be included in the Simscape model of the nano-hexapod. Then the flexible modes of the struts are experimentally measured and compared with a finite element model (Section \ref{sec:test_struts_flexible_modes}).
Dynamical measurements on the strut are performed with the same bench used to characterize the APA300ML dynamics in Section \ref{sec:test_struts_dynamical_meas}.
It is found that the dynamics from DAC voltage to the displacement measured by the encoder is complex due to the flexible modes of the struts found in Section \ref{sec:test_struts_flexible_modes}.
The models of the struts are then compared with the measured dynamics (Section \ref{sec:test_struts_simscape}).
The model dynamics from the DAC voltage to the axial motion of the strut (measured by an interferometer) and to the force sensor voltage are matching well the experiment.
However, this is not the case for the dynamics from DAC voltage to encoder displacement.
It is found that the complex dynamics is due to a misalignment between the flexible joints and the APA.
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:test_struts_section_matlab_code}Report sections and corresponding Matlab files} \caption{\label{tab:test_struts_section_matlab_code}Report sections and corresponding Matlab files}
@ -68,23 +65,38 @@ Section \ref{sec:test_struts_simscape} & \texttt{test\_struts\_3\_simscape\_mode
\end{table} \end{table}
\chapter{Mounting Procedure} \chapter{Mounting Procedure}
\label{sec:test_struts_mounting} \label{sec:test_struts_mounting}
A mounting bench has been develop to ensure:
\begin{itemize}
\item Good coaxial alignment between the interfaces (cylinders) of the flexible joints to minimize the angular stroke lost during their integration into the nano-hexapod
\item Uniform length across all struts
\item Precise alignment of the APA with the two flexible joints
\item The assembly is reproducible and consistent from one strut to the other
\end{itemize}
\section{Mounting Bench} \section{Mounting Bench}
A mounting bench is used to greatly simply the mounting of the struts as well as ensuring the correct strut length and coaxiality of the flexible joint's interfaces.
This is very important in order to not loose any stroke when the struts will be mounted on the nano-hexapod.
A CAD view of the mounting bench is shown in Figure \ref{fig:test_struts_mounting_bench_first_concept}. A CAD view of the mounting bench is shown in Figure \ref{fig:test_struts_mounting_bench_first_concept}.
It consists of a ``main frame'' (Figure \ref{fig:test_struts_mounting_step_0}) precisely machined to ensure both the correct strut length and strut coaxiality.
The coaxiality is ensured by having good flatness (specified at \(20\,\mu m\)) between surfaces A and B, and between surfaces C and D.
Such flatness has been checked using a Faro arm\footnote{Faro Arm Platinum 4ft, specified accuracy of \(\pm 13\mu m\)} (see Figure \ref{fig:test_struts_check_dimensions_bench}) and was found to comply with the requirements.
The strut length (defined by the distance between the rotation points of the two flexible joints) is ensured by using precisely machines dowel holes.
Faro arm\footnote{Faro Arm Platinum 4ft, specified accuracy of \(\pm 13\mu m\)}
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \begin{subfigure}{0.49\textwidth}
\includegraphics[scale=1,width=0.6\linewidth]{figs/test_struts_mounting_bench_first_concept.png} \begin{center}
\caption{\label{fig:test_struts_mounting_bench_first_concept}CAD view of the mounting bench} \includegraphics[scale=1,width=\linewidth]{figs/test_struts_mounting_bench_first_concept.png}
\end{center}
\subcaption{\label{fig:test_struts_mounting_bench_first_concept}CAD view of the mounting bench}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,width=\linewidth]{figs/test_struts_mounting_overview-crop.jpg}
\end{center}
\subcaption{\label{fig:test_struts_mounting_overview}Exploded view}
\end{subfigure}
\caption{\label{fig:test_struts_mounting}Strut mounting bench}
\end{figure} \end{figure}
The main part of the bench is here to ensure both the correct strut length and strut coaxiality as shown in Figure \ref{fig:test_struts_mounting_step_0}.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.56\textwidth} \begin{subfigure}{0.56\textwidth}
\begin{center} \begin{center}
@ -98,33 +110,12 @@ The main part of the bench is here to ensure both the correct strut length and s
\end{center} \end{center}
\subcaption{\label{fig:test_struts_check_dimensions_bench}Dimensional check} \subcaption{\label{fig:test_struts_check_dimensions_bench}Dimensional check}
\end{subfigure} \end{subfigure}
\caption{\label{fig:test_struts_mounting_base_part}Caption\ldots{}, add foot note with Faro arm} \caption{\label{fig:test_struts_mounting_base_part}Main element of the mounting bench for the struts that ensure good coaxility of the two flexible joints as well as the length of the struts.}
\end{figure} \end{figure}
The tight tolerances of this element has been verified as shown in Figure \ref{fig:test_struts_check_dimensions_bench} and were found to comply with the requirements. The flexible joints are not directly fixed to the mounting bench but to to a cylindrical ``sleeve'' shown in Figures \ref{fig:test_struts_cylindrical_mounting_part_top} and \ref{fig:test_struts_cylindrical_mounting_part_bot}.
The goal of these ``sleeves'' is to avoid any mechanical stress that could damage the flexible joints during the mounting procedure.
The flexible joints are rigidly fixed to cylindrical tools shown in Figures \ref{fig:test_struts_cylindrical_mounting_part_top} and \ref{fig:test_struts_cylindrical_mounting_part_bot} which are then mounted on the mounting tool shown in Figure \ref{fig:test_struts_mounting_step_0}. These ``sleeves'' have one dowel groove (that are fitted to the dowel holes shown in Figure \ref{fig:test_struts_mounting_step_0}) that will determine the length of the mounted strut.
This cylindrical tool is here to protect the flexible joints when tightening the screws and therefore applying large torque.
\section{Mounting Procedure}
\begin{itemize}
\item[{$\square$}] Better explain the mounting procedure
\item[{$\square$}] Speak about the ``locating'' pins that are used to aligned the APA with the two flexible joints
\end{itemize}
The mounting procedure is as follows:
\begin{enumerate}
\item Screw flexible joints inside the cylindrical interface element shown in Figure \ref{fig:test_struts_cylindrical_mounting}
\item Fix the two interface elements. One of the two should be clamped, the other one should have its axial rotation free.
Visually align the clamped one horizontally. (Figure \ref{fig:test_struts_mounting_step_1})
\item Put cylindrical washers, APA and interface pieces on top of the flexible joints (Figure \ref{fig:test_struts_mounting_step_2})
\item Put the 4 screws just in contact such that everything is correctly positioned and such that the ``free'' flexible joint is correctly oriented
\item Put the 8 lateral screws in contact
\item Tighten the 4 screws to fix the APA on the two flexible joints (using a torque screwdriver)
\item Remove the 4 laterals screws
\item (optional) Put the APA horizontally and fix the encoder and align it to maximize the contrast (Figure \ref{fig:test_struts_mounting_step_3})
\item Disassemble to have an properly mounted strut (Figure \ref{fig:test_struts_mounting_step_4}) for which the coaxiality between the two flexible joint's interfaces is good
\end{enumerate}
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth} \begin{subfigure}{0.33\textwidth}
@ -145,8 +136,21 @@ Visually align the clamped one horizontally. (Figure \ref{fig:test_struts_mounti
\end{center} \end{center}
\subcaption{\label{fig:test_struts_mounting_joints}Mounted flexible joints} \subcaption{\label{fig:test_struts_mounting_joints}Mounted flexible joints}
\end{subfigure} \end{subfigure}
\caption{\label{fig:test_struts_cylindrical_mounting}Preparation of the flexible joints by fixing them in their cylindrical interface} \caption{\label{fig:test_struts_cylindrical_mounting}Preparation of the flexible joints by fixing them in their cylindrical ``sleeve''}
\end{figure} \end{figure}
\section{Mounting Procedure}
The ``sleeves'' are mounted to the main element as shown in Figure \ref{fig:test_struts_mounting_step_0}.
The left sleeve has a thigh fit such that its orientation is fixed (it is roughly aligned horizontally) while the right sleeve has a loose fit such that it can rotate (it will get the same orientation as the fixed one when tightening the screws).
Then the cylindrical washers and the APA300ML are stacked on top of the flexible joints as shown in Figure \ref{fig:test_struts_mounting_step_2} and screwed together using a torque screwdriver.
A dowel pin is used to laterally align the APA300ML with the flexible joints (see the dowel slot on the flexible joints in Figure \ref{fig:test_struts_mounting_joints}).
The two cylindrical washers are used to allow proper mounting even if the two APA interfaces are not parallel.
The encoder and ruler are then fixed to the strut and properly aligned as shown in Figure \ref{fig:test_struts_mounting_step_3}.
Finally, the strut can be disassembled from the mounting bench (Figure \ref{fig:test_struts_mounting_step_4}).
Thanks to this mounting procedure, coaxiality and length between the two flexible joint's interfaces can be obtained within the wanted tolerances.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.5\textwidth} \begin{subfigure}{0.5\textwidth}
@ -181,7 +185,10 @@ Visually align the clamped one horizontally. (Figure \ref{fig:test_struts_mounti
\label{sec:test_struts_flexible_modes} \label{sec:test_struts_flexible_modes}
\section{Introduction} \section{Introduction}
From a Finite Element Model of the struts, it have been found that three main resonances are foreseen to be problematic for the control of the APA300ML (Figure \ref{fig:test_struts_mode_shapes}): an ``X-bending'' mode at 189Hz, a ``Y-bending'' mode at 285Hz and a ``Z-torsion'' mode at 400Hz. A Finite Element Model\footnote{Using Ansys\textsuperscript{\textregistered}. Flexible Joints and APA Shell material is stainless steel \texttt{1.4542}. Encoder and ruler support material is aluminium.} of the struts is developed and is used to estimate the flexible modes.
Inertia of the encoder (estimated at \(15\,g\)) is taken into account.
The two cylindrical interfaces are fixed, and the first three flexible modes are computed.
The modes shapes are displayed in Figure \ref{fig:test_struts_mode_shapes}: an ``X-bending'' mode at 189Hz, a ``Y-bending'' mode at 285Hz and a ``Z-torsion'' mode at 400Hz.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth} \begin{subfigure}{0.33\textwidth}
@ -206,8 +213,8 @@ From a Finite Element Model of the struts, it have been found that three main re
\end{figure} \end{figure}
\section{Measurement Setup} \section{Measurement Setup}
A Laser vibrometer is measuring the difference of motion between two beam path (red points in Figure \ref{fig:test_struts_meas_modes}). In order to experimentally measure these mode shapes, a Laser vibrometer is used to measure the difference of motion between two beam path (red points in Figure \ref{fig:test_struts_meas_modes}).
The strut is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed. The strut is then excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed.
The ``X-bending'' mode is measured as shown in Figure \ref{fig:test_struts_meas_x_bending}. The ``X-bending'' mode is measured as shown in Figure \ref{fig:test_struts_meas_x_bending}.
The ``Y-bending'' mode is measured as shown in Figure \ref{fig:test_struts_meas_y_bending}. The ``Y-bending'' mode is measured as shown in Figure \ref{fig:test_struts_meas_y_bending}.
@ -237,7 +244,7 @@ This is done with and without the encoder fixed to the strut.
\caption{\label{fig:test_struts_meas_modes}Measurement of strut flexible modes} \caption{\label{fig:test_struts_meas_modes}Measurement of strut flexible modes}
\end{figure} \end{figure}
\section{Measured results} \section{Measured results}
The obtained frequency response functions are shown in Figure \ref{fig:test_struts_spur_res_frf}. The obtained frequency response functions for the three configurations (X-bending, Y-bending and Z-torsion) are shown in Figure \ref{fig:test_struts_spur_res_frf_no_enc} when the encoder is not fixed to the strut and in Figure \ref{fig:test_struts_spur_res_frf_enc} when the encoder is fixed to the strut.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth} \begin{subfigure}{0.49\textwidth}
@ -254,19 +261,20 @@ The obtained frequency response functions are shown in Figure \ref{fig:test_stru
\end{subfigure} \end{subfigure}
\caption{\label{fig:test_struts_spur_res_frf}Measured frequency response functions without the encoder \ref{fig:test_struts_spur_res_frf} and with the encoder \ref{fig:test_struts_spur_res_frf_enc}} \caption{\label{fig:test_struts_spur_res_frf}Measured frequency response functions without the encoder \ref{fig:test_struts_spur_res_frf} and with the encoder \ref{fig:test_struts_spur_res_frf_enc}}
\end{figure} \end{figure}
\section*{Conclusion}
Table \ref{tab:test_struts_spur_mode_freqs} summarizes the measured resonance frequencies as well as the computed ones using the Finite Element Model. Table \ref{tab:test_struts_spur_mode_freqs} summarizes the measured resonance frequencies as well as the computed ones using the Finite Element Model.
It is shown that: It is shown that:
\begin{itemize} \begin{itemize}
\item the resonance frequencies of the 3 modes are only slightly increasing when the encoder is removed \item the resonance frequencies of the 3 modes are only slightly decreased when the encoder is fixed to the strut
\item the computed resonance frequencies from the FEM are very close to the measured one when the encoder is fixed to the strut \item the computed resonance frequencies from the FEM are very close to the measured one when the encoder is fixed to the strut
\end{itemize} \end{itemize}
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:test_struts_spur_mode_freqs}Measured frequency of the strut spurious modes} \caption{\label{tab:test_struts_spur_mode_freqs}Measured frequency of the flexible modes of the strut}
\centering \centering
\begin{tabularx}{0.7\linewidth}{Xccc} \begin{tabularx}{0.9\linewidth}{Xccc}
\toprule \toprule
\textbf{Mode} & \textbf{Struts (FEM)} & \textbf{Struts (exp)} & \textbf{Plates (exp)}\\ \textbf{Mode} & \textbf{FEM with Encoder} & \textbf{Exp. with Encoder} & \textbf{Exp. without Encoder}\\
\midrule \midrule
X-Bending & 189Hz & 198Hz & 226Hz\\ X-Bending & 189Hz & 198Hz & 226Hz\\
Y-Bending & 285Hz & 293Hz & 337Hz\\ Y-Bending & 285Hz & 293Hz & 337Hz\\
@ -276,7 +284,11 @@ Z-Torsion & 400Hz & 381Hz & 398Hz\\
\end{table} \end{table}
\chapter{Dynamical measurements} \chapter{Dynamical measurements}
\label{sec:test_struts_dynamical_meas} \label{sec:test_struts_dynamical_meas}
The bench is shown in Figure \ref{fig:test_struts_bench_leg}. In order to measure the dynamics of the strut, the same test bench used to measure the APA300ML dynamics is used.
The strut mounted on the bench is shown in Figure \ref{fig:test_struts_bench_leg_overview}
A schematic of the bench and the associated signals are shown in Figure \ref{fig:test_struts_bench_schematic}.
A fiber interferometer\footnote{Two fiber intereferometers were used: an IDS3010 from Attocube and a quDIS from QuTools} is used to measure the motion of the granite (i.e. the axial motion of the strut).
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.32\textwidth} \begin{subfigure}{0.32\textwidth}
@ -287,7 +299,7 @@ The bench is shown in Figure \ref{fig:test_struts_bench_leg}.
\end{subfigure} \end{subfigure}
\begin{subfigure}{0.68\textwidth} \begin{subfigure}{0.68\textwidth}
\begin{center} \begin{center}
\includegraphics[scale=1,scale=1]{figs/test_struts_bench_schematic.png} \includegraphics[scale=1,height=214px]{figs/test_struts_bench_schematic.png}
\end{center} \end{center}
\subcaption{\label{fig:test_struts_bench_schematic}Schematic} \subcaption{\label{fig:test_struts_bench_schematic}Schematic}
\end{subfigure} \end{subfigure}
@ -300,7 +312,11 @@ Finally, all the measured struts are compared in terms of dynamics in Section \r
\section{Effect of the Encoder on the measured dynamics} \section{Effect of the Encoder on the measured dynamics}
\label{ssec:test_struts_effect_encoder} \label{ssec:test_struts_effect_encoder}
Measurements are performed either when no encoder is fixed to the strut (Figure \ref{fig:test_struts_bench_leg_front}) or when one encoder is fixed to the strut (Figure \ref{fig:test_struts_bench_leg_coder}). System identification is performed in two cases:
\begin{itemize}
\item no encoder is fixed to the strut (Figure \ref{fig:test_struts_bench_leg_front})
\item one encoder is fixed to the strut (Figure \ref{fig:test_struts_bench_leg_coder})
\end{itemize}
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.5\textwidth} \begin{subfigure}{0.5\textwidth}
@ -318,11 +334,11 @@ Measurements are performed either when no encoder is fixed to the strut (Figure
\caption{\label{fig:test_struts_bench_leg_with_without_enc}Struts fixed to the test bench with clamped flexible joints. The coder can be fixed to the struts (\subref{fig:test_struts_bench_leg_coder}) or removed (\subref{fig:test_struts_bench_leg_front})} \caption{\label{fig:test_struts_bench_leg_with_without_enc}Struts fixed to the test bench with clamped flexible joints. The coder can be fixed to the struts (\subref{fig:test_struts_bench_leg_coder}) or removed (\subref{fig:test_struts_bench_leg_front})}
\end{figure} \end{figure}
Figure \ref{fig:test_struts_effect_encoder_int} The obtained frequency response functions are compared in Figure \ref{fig:test_struts_effect_encoder}.
Same goes for the transfer function from excitation voltage \(u\) to the axial motion of the strut \(d_a\) as measured by the interferometer (). It is found that the encoder as very little effect on the transfer function from excitation voltage \(u\) to the axial motion of the strut \(d_a\) as measured by the interferometer (Figure \ref{fig:test_struts_effect_encoder_int}).
This means that the axial motion of the strut is unaffected by the precense of the encoder.
The transfer function from the excitation voltage \(u\) to the generated voltage \(V_s\) by the sensor stack is not influence by the fixation of the encoder (Figure \ref{fig:test_struts_effect_encoder_iff}). Similarly, it has very little effect on the transfer function from \(u\) to the sensor stack voltage \(V_s\) (Figure \ref{fig:test_struts_effect_encoder_iff}).
This means that the IFF control strategy should be as effective whether or not the encoders are fixed to the struts. This means that the integral force feedback control strategy should be as effective whether or not the encoders are fixed to the struts.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth} \begin{subfigure}{0.49\textwidth}
@ -344,19 +360,12 @@ This means that the IFF control strategy should be as effective whether or not t
The dynamics as measured by the encoder and by the interferometers are compared in Figure \ref{fig:test_struts_comp_enc_int}. The dynamics as measured by the encoder and by the interferometers are compared in Figure \ref{fig:test_struts_comp_enc_int}.
The dynamics from the excitation voltage \(u\) to the measured displacement by the encoder \(d_e\) presents much more complicated behavior than the transfer function to the displacement as measured by the Interferometer (compared in Figure \ref{fig:test_struts_comp_enc_int}). The dynamics from the excitation voltage \(u\) to the measured displacement by the encoder \(d_e\) presents a behavior that is much more complex than the dynamics to the displacement as measured by the interferometer (comparison made in Figure \ref{fig:test_struts_comp_enc_int}).
It will be further investigated why the two dynamics as so different and what are causing all these resonances. Three additional resonance frequencies can be observed at 197Hz, 290Hz and 376Hz.
These resonance frequencies correspond to flexible modes of the strut that were studied in Section \ref{sec:test_struts_flexible_modes}.
As shown in Figure \ref{fig:test_struts_comp_enc_int}, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz. The good news is that these resonances are not seen on the interferometer and are therefore not impacting the axial motion of the strut (which is what is important for the hexapod positioning).
These resonances correspond to parasitic resonances of the strut itself that was estimated using a finite element model of the strut (Figure \ref{fig:test_struts_mode_shapes}): However, these resonances are making the use of encoder fixed to the strut difficult.
\begin{itemize}
\item Mode in X-bending at 189Hz
\item Mode in Y-bending at 285Hz
\item Mode in Z-torsion at 400Hz
\end{itemize}
The good news is that these resonances are not seen on the interferometer (they are therefore not impacting the axial motion of the strut).
But these resonances are making the use of encoder fixed to the strut difficult.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
@ -366,8 +375,9 @@ But these resonances are making the use of encoder fixed to the strut difficult.
\section{Comparison of all the Struts} \section{Comparison of all the Struts}
\label{ssec:test_struts_comp_all_struts} \label{ssec:test_struts_comp_all_struts}
Then, the transfer function from the DAC output voltage \(u\) to the measured displacement by the Attocube is computed for all the struts and shown in Figure \ref{fig:test_struts_comp_interf_plants}. Then, the dynamics of all the mounted struts (only 5 at the time of the experiment) are all measured using the same test bench.
All the struts are giving very similar FRF. The obtained dynamics from \(u\) to \(d_a\) are compared in Figure \ref{fig:test_struts_comp_interf_plants} while is dynamics from \(u\) to \(V_s\) are compared in Figure \ref{fig:test_struts_comp_iff_plants}.
Very good match can be observed between all the struts.
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth} \begin{subfigure}{0.49\textwidth}
@ -385,20 +395,23 @@ All the struts are giving very similar FRF.
\caption{\label{fig:test_struts_comp_plants}Comparison of the measured plants} \caption{\label{fig:test_struts_comp_plants}Comparison of the measured plants}
\end{figure} \end{figure}
There is a very large variability of the dynamics as measured by the encoder as shown in Figure \ref{fig:test_struts_comp_enc_plants}. The same comparison is made for the transfer function from \(u\) to \(d_e\) (encoder output) in Figure \ref{fig:test_struts_comp_enc_plants}.
This time, large dynamics differences are observed between the 5 struts.
Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same. Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same.
Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other. Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other.
All of this will be studied in Section \ref{sec:test_struts_simscape} using the Simscape model. It will be further investigated why such differences are observed (see Section \ref{ssec:test_struts_effect_misalignment}).
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\includegraphics[scale=1]{figs/test_struts_comp_enc_plants.png} \includegraphics[scale=1]{figs/test_struts_comp_enc_plants.png}
\caption{\label{fig:test_struts_comp_enc_plants}Estimated frequency response functions from \(u\) to the encoder \(d_e\) for all the mounted struts} \caption{\label{fig:test_struts_comp_enc_plants}Estimated frequency response functions from \(u\) to the encoder \(d_e\) for all the mounted struts}
\end{figure} \end{figure}
\section*{Conclusion}
\begin{important} \begin{important}
All the struts are giving very consistent behavior from the excitation voltage \(u\) to the force sensor generated voltage \(V_s\) and to the interferometer measured displacement \(d_a\). All the struts are giving very consistent behavior from the excitation voltage \(u\) to the force sensor generated voltage \(V_s\) and to the interferometer measured displacement \(d_a\).
However, the dynamics from \(u\) to the encoder measurement \(d_e\) is much more complex and variable from one strut to the other most likely due to poor alignment of the APA with respect to the flexible joints. However, the dynamics from \(u\) to the encoder measurement \(d_e\) is much more complex and variable from one strut to the other.
The reason behind this variability will be studied in the next section thanks to the model of the strut.
\end{important} \end{important}
\chapter{Strut Model} \chapter{Strut Model}
\label{sec:test_struts_simscape} \label{sec:test_struts_simscape}
@ -638,6 +651,7 @@ Using the measured FRF on the test-bench, if is therefore possible to estimate t
This method gives nice match between the measured FRF and the one extracted from the simscape model, however it could give not so accurate values of the joint's axial stiffness as other factors are also influencing the location of the zero. This method gives nice match between the measured FRF and the one extracted from the simscape model, however it could give not so accurate values of the joint's axial stiffness as other factors are also influencing the location of the zero.
Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good results (and is reasonable based on the finite element models). Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good results (and is reasonable based on the finite element models).
\section*{Conclusion}
\chapter{Conclusion} \chapter{Conclusion}
\label{sec:test_struts_conclusion} \label{sec:test_struts_conclusion}
\printbibliography[heading=bibintoc,title={Bibliography}] \printbibliography[heading=bibintoc,title={Bibliography}]