Rework analysis of encoders fixed to the struts
This commit is contained in:
parent
b9b67558c3
commit
4b260cdbe8
BIN
figs/control_architecture_iff_struts.pdf
Normal file
BIN
figs/control_architecture_iff_struts.pdf
Normal file
Binary file not shown.
BIN
figs/control_architecture_iff_struts.png
Normal file
BIN
figs/control_architecture_iff_struts.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
156
figs/control_architecture_iff_struts.svg
Normal file
156
figs/control_architecture_iff_struts.svg
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="192.996pt" height="99.37pt" viewBox="0 0 192.996 99.37" version="1.2">
|
||||||
|
<defs>
|
||||||
|
<g>
|
||||||
|
<symbol overflow="visible" id="glyph0-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-1">
|
||||||
|
<path style="stroke:none;" d="M 6.1875 -4.921875 C 6.1875 -5.890625 5.203125 -6.765625 3.84375 -6.765625 L 0.34375 -6.765625 L 0.34375 -6.453125 L 0.578125 -6.453125 C 1.34375 -6.453125 1.359375 -6.34375 1.359375 -6 L 1.359375 -0.765625 C 1.359375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.6875 -0.03125 1.421875 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.921875 -0.03125 3.265625 0 L 3.265625 -0.3125 L 3.03125 -0.3125 C 2.265625 -0.3125 2.25 -0.421875 2.25 -0.765625 L 2.25 -3.125 L 3.921875 -3.125 C 5.109375 -3.125 6.1875 -3.9375 6.1875 -4.921875 Z M 5.15625 -4.921875 C 5.15625 -4.453125 5.15625 -3.390625 3.59375 -3.390625 L 2.21875 -3.390625 L 2.21875 -6.0625 C 2.21875 -6.390625 2.234375 -6.453125 2.703125 -6.453125 L 3.59375 -6.453125 C 5.15625 -6.453125 5.15625 -5.40625 5.15625 -4.921875 Z M 5.15625 -4.921875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-2">
|
||||||
|
<path style="stroke:none;" d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.875 L 0.328125 -6.765625 L 0.328125 -6.453125 C 1.015625 -6.453125 1.09375 -6.390625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-3">
|
||||||
|
<path style="stroke:none;" d="M 4.78125 -0.875 L 4.78125 -1.4375 L 4.53125 -1.4375 L 4.53125 -0.875 C 4.53125 -0.3125 4.296875 -0.25 4.1875 -0.25 C 3.859375 -0.25 3.8125 -0.6875 3.8125 -0.75 L 3.8125 -2.71875 C 3.8125 -3.140625 3.8125 -3.53125 3.453125 -3.890625 C 3.078125 -4.28125 2.578125 -4.4375 2.09375 -4.4375 C 1.28125 -4.4375 0.609375 -3.96875 0.609375 -3.3125 C 0.609375 -3.015625 0.796875 -2.859375 1.0625 -2.859375 C 1.34375 -2.859375 1.515625 -3.046875 1.515625 -3.3125 C 1.515625 -3.421875 1.46875 -3.75 1.015625 -3.765625 C 1.28125 -4.109375 1.765625 -4.21875 2.078125 -4.21875 C 2.5625 -4.21875 3.125 -3.828125 3.125 -2.953125 L 3.125 -2.578125 C 2.625 -2.5625 1.9375 -2.53125 1.3125 -2.234375 C 0.5625 -1.890625 0.3125 -1.375 0.3125 -0.9375 C 0.3125 -0.140625 1.28125 0.109375 1.90625 0.109375 C 2.5625 0.109375 3.015625 -0.28125 3.203125 -0.75 C 3.234375 -0.359375 3.5 0.0625 3.96875 0.0625 C 4.1875 0.0625 4.78125 -0.078125 4.78125 -0.875 Z M 3.125 -1.390625 C 3.125 -0.453125 2.421875 -0.109375 1.96875 -0.109375 C 1.484375 -0.109375 1.078125 -0.453125 1.078125 -0.953125 C 1.078125 -1.5 1.5 -2.3125 3.125 -2.375 Z M 3.125 -1.390625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-4">
|
||||||
|
<path style="stroke:none;" d="M 5.296875 0 L 5.296875 -0.3125 C 4.78125 -0.3125 4.53125 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.34375 4.53125 -3.65625 4.21875 -4.015625 C 4.078125 -4.1875 3.75 -4.375 3.1875 -4.375 C 2.453125 -4.375 1.984375 -3.953125 1.71875 -3.34375 L 1.71875 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.890625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -2.578125 C 1.765625 -3.609375 2.484375 -4.15625 3.109375 -4.15625 C 3.734375 -4.15625 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.1875 -0.03125 Z M 5.296875 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-5">
|
||||||
|
<path style="stroke:none;" d="M 3.28125 -1.234375 L 3.28125 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.125 -3.96875 L 3.125 -4.265625 L 1.71875 -4.265625 L 1.71875 -6.09375 L 1.46875 -6.09375 C 1.453125 -5.28125 1.15625 -4.21875 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.28125 -0.59375 3.28125 -1.234375 Z M 3.28125 -1.234375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-1">
|
||||||
|
<path style="stroke:none;" d="M 5.828125 -4.15625 C 6.5 -4.625 8.3125 -5.90625 8.65625 -6.078125 C 8.890625 -6.203125 9.09375 -6.3125 9.59375 -6.328125 C 9.78125 -6.34375 9.9375 -6.34375 9.9375 -6.625 C 9.9375 -6.703125 9.859375 -6.796875 9.75 -6.796875 C 9.515625 -6.796875 9.21875 -6.765625 8.96875 -6.765625 C 8.5625 -6.765625 8.140625 -6.796875 7.734375 -6.796875 C 7.640625 -6.796875 7.453125 -6.796875 7.453125 -6.515625 C 7.453125 -6.328125 7.625 -6.328125 7.6875 -6.328125 C 7.765625 -6.328125 7.96875 -6.3125 8.140625 -6.265625 L 3.625 -3.140625 L 4.40625 -6.296875 C 4.625 -6.328125 4.96875 -6.328125 5.078125 -6.328125 C 5.203125 -6.328125 5.40625 -6.328125 5.453125 -6.359375 C 5.546875 -6.421875 5.5625 -6.609375 5.5625 -6.625 C 5.5625 -6.75 5.453125 -6.796875 5.34375 -6.796875 C 5.09375 -6.796875 4.828125 -6.78125 4.59375 -6.78125 C 4.34375 -6.78125 4.09375 -6.765625 3.84375 -6.765625 C 3.59375 -6.765625 3.328125 -6.78125 3.078125 -6.78125 C 2.828125 -6.78125 2.5625 -6.796875 2.296875 -6.796875 C 2.203125 -6.796875 2.015625 -6.796875 2.015625 -6.515625 C 2.015625 -6.328125 2.140625 -6.328125 2.421875 -6.328125 C 2.640625 -6.328125 2.828125 -6.3125 3.03125 -6.3125 L 1.609375 -0.65625 C 1.578125 -0.5 1.5625 -0.5 1.390625 -0.46875 C 1.21875 -0.46875 1.015625 -0.46875 0.859375 -0.46875 C 0.609375 -0.46875 0.578125 -0.46875 0.546875 -0.453125 C 0.421875 -0.375 0.421875 -0.21875 0.421875 -0.171875 C 0.421875 -0.15625 0.4375 0 0.640625 0 C 0.890625 0 1.15625 -0.015625 1.390625 -0.015625 C 1.640625 -0.015625 1.90625 -0.03125 2.15625 -0.03125 C 2.40625 -0.03125 2.671875 -0.015625 2.90625 -0.015625 C 3.171875 -0.015625 3.4375 0 3.6875 0 C 3.78125 0 3.859375 0 3.90625 -0.0625 C 3.953125 -0.125 3.96875 -0.265625 3.96875 -0.28125 C 3.96875 -0.46875 3.828125 -0.46875 3.5625 -0.46875 C 3.359375 -0.46875 3.171875 -0.46875 2.96875 -0.484375 L 3.484375 -2.546875 L 4.703125 -3.390625 L 6.1875 -0.53125 C 5.984375 -0.46875 5.6875 -0.46875 5.640625 -0.46875 C 5.515625 -0.46875 5.453125 -0.46875 5.40625 -0.390625 C 5.359375 -0.34375 5.34375 -0.203125 5.34375 -0.171875 C 5.34375 -0.171875 5.34375 0 5.546875 0 C 5.875 0 6.6875 -0.03125 7.015625 -0.03125 C 7.21875 -0.03125 7.4375 -0.015625 7.640625 -0.015625 C 7.84375 -0.015625 8.046875 0 8.234375 0 C 8.3125 0 8.515625 0 8.515625 -0.28125 C 8.515625 -0.46875 8.34375 -0.46875 8.1875 -0.46875 C 7.734375 -0.46875 7.71875 -0.5 7.640625 -0.65625 Z M 5.828125 -4.15625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-2">
|
||||||
|
<path style="stroke:none;" d="M 3.453125 -3.453125 L 5.296875 -3.453125 C 5.5 -3.453125 5.625 -3.453125 5.78125 -3.59375 C 5.984375 -3.765625 5.984375 -4 5.984375 -4.015625 C 5.984375 -4.390625 5.625 -4.390625 5.453125 -4.390625 L 2.203125 -4.390625 C 1.984375 -4.390625 1.5625 -4.390625 1.046875 -3.921875 C 0.6875 -3.609375 0.3125 -3.09375 0.3125 -3 C 0.3125 -2.859375 0.421875 -2.859375 0.53125 -2.859375 C 0.6875 -2.859375 0.6875 -2.875 0.78125 -2.984375 C 1.15625 -3.453125 1.8125 -3.453125 2 -3.453125 L 2.890625 -3.453125 L 2.53125 -2.390625 C 2.453125 -2.15625 2.234375 -1.515625 2.15625 -1.265625 C 2.046875 -0.953125 1.859375 -0.421875 1.859375 -0.3125 C 1.859375 -0.046875 2.078125 0.125 2.3125 0.125 C 2.390625 0.125 2.890625 0.125 2.984375 -0.53125 Z M 3.453125 -3.453125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-3">
|
||||||
|
<path style="stroke:none;" d="M 5.578125 -3.140625 C 5.640625 -3.421875 5.765625 -3.890625 5.765625 -3.96875 C 5.765625 -4.171875 5.609375 -4.390625 5.296875 -4.390625 C 5.140625 -4.390625 4.78125 -4.3125 4.640625 -3.875 C 4.609375 -3.734375 4.15625 -1.9375 4.078125 -1.609375 C 4.015625 -1.390625 3.953125 -1.09375 3.9375 -0.921875 C 3.75 -0.6875 3.375 -0.28125 2.859375 -0.28125 C 2.28125 -0.28125 2.265625 -0.765625 2.265625 -1 C 2.265625 -1.609375 2.578125 -2.375 2.859375 -3.09375 C 2.953125 -3.34375 2.984375 -3.421875 2.984375 -3.59375 C 2.984375 -4.15625 2.40625 -4.484375 1.859375 -4.484375 C 0.8125 -4.484375 0.3125 -3.125 0.3125 -2.9375 C 0.3125 -2.796875 0.46875 -2.796875 0.5625 -2.796875 C 0.671875 -2.796875 0.75 -2.796875 0.78125 -2.921875 C 1.109375 -4.015625 1.640625 -4.125 1.796875 -4.125 C 1.875 -4.125 1.96875 -4.125 1.96875 -3.90625 C 1.96875 -3.6875 1.859375 -3.40625 1.8125 -3.28125 C 1.390625 -2.25 1.203125 -1.6875 1.203125 -1.203125 C 1.203125 -0.078125 2.203125 0.078125 2.78125 0.078125 C 3.078125 0.078125 3.5 0.046875 4.046875 -0.46875 C 4.359375 0.015625 4.9375 0.078125 5.171875 0.078125 C 5.53125 0.078125 5.828125 -0.125 6.03125 -0.484375 C 6.28125 -0.875 6.40625 -1.421875 6.40625 -1.46875 C 6.40625 -1.609375 6.265625 -1.609375 6.171875 -1.609375 C 6.0625 -1.609375 6.015625 -1.609375 5.96875 -1.5625 C 5.953125 -1.53125 5.953125 -1.515625 5.890625 -1.265625 C 5.703125 -0.5 5.484375 -0.28125 5.21875 -0.28125 C 5.078125 -0.28125 5 -0.375 5 -0.640625 C 5 -0.8125 5.03125 -0.96875 5.125 -1.359375 C 5.203125 -1.640625 5.296875 -2.046875 5.34375 -2.265625 Z M 5.578125 -3.140625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph2-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph2-1">
|
||||||
|
<path style="stroke:none;" d="M 2.515625 0 L 2.515625 -0.25 L 2.328125 -0.25 C 1.765625 -0.25 1.765625 -0.328125 1.765625 -0.5625 L 1.765625 -4.171875 C 1.765625 -4.40625 1.765625 -4.484375 2.328125 -4.484375 L 2.515625 -4.484375 L 2.515625 -4.734375 L 1.4375 -4.703125 L 0.359375 -4.734375 L 0.359375 -4.484375 L 0.53125 -4.484375 C 1.109375 -4.484375 1.109375 -4.40625 1.109375 -4.171875 L 1.109375 -0.5625 C 1.109375 -0.328125 1.109375 -0.25 0.53125 -0.25 L 0.359375 -0.25 L 0.359375 0 L 1.421875 -0.03125 Z M 2.515625 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph2-2">
|
||||||
|
<path style="stroke:none;" d="M 4.734375 -3.109375 L 4.515625 -4.703125 L 0.390625 -4.703125 L 0.390625 -4.453125 L 0.5625 -4.453125 C 1.09375 -4.453125 1.109375 -4.390625 1.109375 -4.15625 L 1.109375 -0.5625 C 1.109375 -0.328125 1.09375 -0.25 0.5625 -0.25 L 0.390625 -0.25 L 0.390625 0 L 1.4375 -0.03125 L 2.65625 0 L 2.65625 -0.25 L 2.421875 -0.25 C 1.765625 -0.25 1.765625 -0.34375 1.765625 -0.5625 L 1.765625 -2.234375 L 2.4375 -2.234375 C 3.125 -2.234375 3.21875 -2.03125 3.21875 -1.421875 L 3.46875 -1.421875 L 3.46875 -3.296875 L 3.21875 -3.296875 C 3.21875 -2.703125 3.125 -2.484375 2.4375 -2.484375 L 1.765625 -2.484375 L 1.765625 -4.1875 C 1.765625 -4.40625 1.765625 -4.453125 2.09375 -4.453125 L 3.0625 -4.453125 C 4.1875 -4.453125 4.375 -4.09375 4.5 -3.109375 Z M 4.734375 -3.109375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph3-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph3-1">
|
||||||
|
<path style="stroke:none;" d="M 11.515625 -4.265625 C 11.515625 -4.5625 11.234375 -4.5625 10.984375 -4.5625 L 6.453125 -4.5625 L 6.453125 -9.109375 C 6.453125 -9.34375 6.453125 -9.625 6.15625 -9.625 C 5.84375 -9.625 5.84375 -9.359375 5.84375 -9.109375 L 5.84375 -4.5625 L 1.3125 -4.5625 C 1.078125 -4.5625 0.78125 -4.5625 0.78125 -4.28125 C 0.78125 -3.96875 1.0625 -3.96875 1.3125 -3.96875 L 5.84375 -3.96875 L 5.84375 0.5625 C 5.84375 0.796875 5.84375 1.09375 6.140625 1.09375 C 6.453125 1.09375 6.453125 0.828125 6.453125 0.5625 L 6.453125 -3.96875 L 10.984375 -3.96875 C 11.21875 -3.96875 11.515625 -3.96875 11.515625 -4.265625 Z M 11.515625 -4.265625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph4-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph4-1">
|
||||||
|
<path style="stroke:none;" d="M 6.6875 -0.984375 C 6.6875 -1.078125 6.609375 -1.078125 6.578125 -1.078125 C 6.484375 -1.078125 6.484375 -1.046875 6.453125 -0.96875 C 6.296875 -0.40625 6 -0.125 5.71875 -0.125 C 5.578125 -0.125 5.546875 -0.21875 5.546875 -0.375 C 5.546875 -0.53125 5.578125 -0.625 5.703125 -0.921875 C 5.78125 -1.140625 6.078125 -1.875 6.078125 -2.265625 C 6.078125 -2.375 6.078125 -2.671875 5.8125 -2.875 C 5.703125 -2.96875 5.5 -3.0625 5.171875 -3.0625 C 4.546875 -3.0625 4.15625 -2.65625 3.9375 -2.359375 C 3.890625 -2.953125 3.390625 -3.0625 3.03125 -3.0625 C 2.46875 -3.0625 2.078125 -2.703125 1.859375 -2.421875 C 1.8125 -2.90625 1.40625 -3.0625 1.125 -3.0625 C 0.828125 -3.0625 0.671875 -2.84375 0.578125 -2.6875 C 0.421875 -2.421875 0.328125 -2.03125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.921875 0.59375 -2.109375 C 0.703125 -2.53125 0.828125 -2.859375 1.109375 -2.859375 C 1.28125 -2.859375 1.328125 -2.71875 1.328125 -2.53125 C 1.328125 -2.390625 1.265625 -2.140625 1.21875 -1.953125 L 1.0625 -1.328125 L 0.84375 -0.4375 C 0.8125 -0.34375 0.78125 -0.171875 0.78125 -0.15625 C 0.78125 0 0.90625 0.0625 1.015625 0.0625 C 1.140625 0.0625 1.25 -0.015625 1.28125 -0.078125 C 1.3125 -0.140625 1.375 -0.375 1.40625 -0.515625 L 1.5625 -1.140625 C 1.609375 -1.296875 1.640625 -1.4375 1.671875 -1.609375 C 1.75 -1.890625 1.765625 -1.9375 1.96875 -2.234375 C 2.171875 -2.5 2.484375 -2.859375 3.015625 -2.859375 C 3.40625 -2.859375 3.421875 -2.515625 3.421875 -2.375 C 3.421875 -2.203125 3.40625 -2.109375 3.296875 -1.734375 L 3.015625 -0.5625 C 2.96875 -0.421875 2.90625 -0.1875 2.90625 -0.15625 C 2.90625 0 3.03125 0.0625 3.15625 0.0625 C 3.28125 0.0625 3.390625 -0.015625 3.421875 -0.078125 C 3.453125 -0.140625 3.515625 -0.375 3.546875 -0.515625 L 3.703125 -1.140625 C 3.734375 -1.296875 3.78125 -1.4375 3.8125 -1.609375 C 3.890625 -1.90625 3.890625 -1.921875 4.03125 -2.125 C 4.25 -2.46875 4.59375 -2.859375 5.140625 -2.859375 C 5.53125 -2.859375 5.546875 -2.546875 5.546875 -2.375 C 5.546875 -1.96875 5.25 -1.1875 5.140625 -0.90625 C 5.0625 -0.703125 5.03125 -0.640625 5.03125 -0.53125 C 5.03125 -0.15625 5.34375 0.0625 5.703125 0.0625 C 6.390625 0.0625 6.6875 -0.890625 6.6875 -0.984375 Z M 6.6875 -0.984375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph5-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph5-1">
|
||||||
|
<path style="stroke:none;" d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.46875 4.671875 -1.34375 C 4.5 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.640625 -0.875 3.6875 -1.046875 L 5.109375 -6.765625 C 5.109375 -6.765625 5.109375 -6.875 4.984375 -6.875 C 4.828125 -6.875 3.890625 -6.78125 3.71875 -6.765625 C 3.640625 -6.75 3.59375 -6.703125 3.59375 -6.578125 C 3.59375 -6.453125 3.671875 -6.453125 3.828125 -6.453125 C 4.296875 -6.453125 4.3125 -6.390625 4.3125 -6.296875 L 4.296875 -6.09375 L 3.6875 -3.75 C 3.515625 -4.109375 3.234375 -4.375 2.78125 -4.375 C 1.625 -4.375 0.390625 -2.921875 0.390625 -1.46875 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.90625 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.421875 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.796875 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.046875 -1.171875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.75 1.640625 -3.203125 C 1.953125 -3.796875 2.390625 -4.15625 2.796875 -4.15625 C 3.4375 -4.15625 3.578125 -3.34375 3.578125 -3.28125 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph6-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph6-1">
|
||||||
|
<path style="stroke:none;" d="M 7.4375 -1.53125 C 7.4375 -1.640625 7.3125 -1.65625 7.265625 -1.65625 C 6.96875 -1.65625 6.109375 -1.265625 6 -0.75 C 5.515625 -0.75 5.15625 -0.796875 4.375 -0.953125 C 4 -1.015625 3.21875 -1.171875 2.65625 -1.171875 C 2.578125 -1.171875 2.46875 -1.171875 2.390625 -1.15625 C 2.71875 -1.71875 2.84375 -2.171875 3.015625 -2.828125 C 3.203125 -3.609375 3.609375 -5.015625 4.359375 -5.859375 C 4.484375 -6 4.53125 -6.046875 4.78125 -6.046875 C 5.234375 -6.046875 5.421875 -5.6875 5.421875 -5.359375 C 5.421875 -5.25 5.390625 -5.140625 5.390625 -5.109375 C 5.390625 -5 5.515625 -4.96875 5.5625 -4.96875 C 5.703125 -4.96875 6 -5.046875 6.375 -5.3125 C 6.78125 -5.578125 6.828125 -5.75 6.828125 -6.046875 C 6.828125 -6.546875 6.53125 -6.96875 5.859375 -6.96875 C 5.234375 -6.96875 4.34375 -6.65625 3.53125 -5.9375 C 2.390625 -4.9375 1.890625 -3.3125 1.609375 -2.171875 C 1.453125 -1.578125 1.25 -0.78125 0.828125 -0.453125 C 0.71875 -0.359375 0.390625 -0.109375 0.390625 0.046875 C 0.390625 0.15625 0.5 0.171875 0.5625 0.171875 C 0.640625 0.171875 0.9375 0.15625 1.5 -0.25 C 1.859375 -0.25 2.203125 -0.234375 3.09375 -0.0625 C 3.546875 0.03125 4.265625 0.171875 4.828125 0.171875 C 6.15625 0.171875 7.4375 -1 7.4375 -1.53125 Z M 7.4375 -1.53125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph7-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph7-1">
|
||||||
|
<path style="stroke:none;" d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
|
||||||
|
</symbol>
|
||||||
|
</g>
|
||||||
|
<clipPath id="clip1">
|
||||||
|
<path d="M 77 40 L 164 40 L 164 98.742188 L 77 98.742188 Z M 77 40 "/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip2">
|
||||||
|
<path d="M 171 42 L 192.386719 42 L 192.386719 74 L 171 74 Z M 171 42 "/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip3">
|
||||||
|
<path d="M 171 65 L 192.386719 65 L 192.386719 97 L 171 97 Z M 171 65 "/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g id="surface1">
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 78.226562 97.753906 L 162.730469 97.753906 L 162.730469 41.414062 L 78.226562 41.414062 Z M 78.226562 97.753906 "/>
|
||||||
|
<g clip-path="url(#clip1)" clip-rule="nonzero">
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -42.521277 -28.34866 L 42.518379 -28.34866 L 42.518379 28.348375 L -42.521277 28.348375 Z M -42.521277 -28.34866 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="108.723491" y="72.994221"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="115.461319" y="72.994221"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="118.211494" y="72.994221"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="123.161411" y="72.994221"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-5" x="128.384565" y="72.994221"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.008987 40.67997 L 17.01002 40.67997 L 17.01002 69.026522 L -17.008987 69.026522 Z M -17.008987 40.67997 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-1" x="108.886458" y="17.729595"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph2-1" x="118.501499" y="19.214183"/>
|
||||||
|
<use xlink:href="#glyph2-2" x="121.361454" y="19.214183"/>
|
||||||
|
<use xlink:href="#glyph2-2" x="126.469458" y="19.214183"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -71.367068 0.00182273 C -71.367068 5.501313 -75.82484 9.963016 -81.328261 9.963016 C -86.831683 9.963016 -91.289454 5.501313 -91.289454 0.00182273 C -91.289454 -5.501599 -86.831683 -9.963301 -81.328261 -9.963301 C -75.82484 -9.963301 -71.367068 -5.501599 -71.367068 0.00182273 Z M -71.367068 0.00182273 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph3-1" x="33.508351" y="73.72459"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 43.017618 11.539353 L 66.733434 11.539353 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 189.984375 58.117188 L 185.570312 56.445312 L 187.039062 58.117188 L 185.570312 59.792969 Z M 189.984375 58.117188 "/>
|
||||||
|
<g clip-path="url(#clip2)" clip-rule="nonzero">
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052003 0.00154292 L 1.609956 1.684018 L 3.088018 0.00154292 L 1.609956 -1.684863 Z M 6.052003 0.00154292 " transform="matrix(0.9937,0,0,-0.9937,183.970499,58.118721)"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-2" x="174.923785" y="66.313576"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph4-1" x="180.080094" y="67.799157"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 43.017618 -11.539638 L 66.733434 -11.539638 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 189.984375 81.050781 L 185.570312 79.375 L 187.039062 81.050781 L 185.570312 82.722656 Z M 189.984375 81.050781 "/>
|
||||||
|
<g clip-path="url(#clip3)" clip-rule="nonzero">
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052003 -0.00182847 L 1.609956 1.684577 L 3.088018 -0.00182847 L 1.609956 -1.684303 Z M 6.052003 -0.00182847 " transform="matrix(0.9937,0,0,-0.9937,183.970499,81.048964)"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph5-1" x="167.124234" y="91.71851"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph6-1" x="172.276568" y="91.71851"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph4-1" x="180.080094" y="93.204091"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 60.027121 11.539353 L 60.027121 54.855212 L 22.139995 54.855212 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053836 -0.000181583 L 1.607857 1.682293 L 3.085919 -0.000181583 L 1.607857 -1.682656 Z M 6.053836 -0.000181583 " transform="matrix(-0.9937,0,0,0.9937,145.300853,15.074399)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 182.109375 58.117188 C 182.109375 57.023438 181.222656 56.140625 180.128906 56.140625 C 179.035156 56.140625 178.148438 57.023438 178.148438 58.117188 C 178.148438 59.210938 179.035156 60.097656 180.128906 60.097656 C 181.222656 60.097656 182.109375 59.210938 182.109375 58.117188 Z M 182.109375 58.117188 "/>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.504295 54.855212 L -81.328261 54.855212 L -81.328261 14.597683 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052728 -0.000351346 L 1.61068 1.682123 L 3.088742 -0.000351346 L 1.61068 -1.682826 Z M 6.052728 -0.000351346 " transform="matrix(0,0.9937,0.9937,0,39.664412,52.258842)"/>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -71.367068 0.00182273 L -47.651252 0.00182273 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054738 0.00182273 L 1.60876 1.684297 L 3.086822 0.00182273 L 1.60876 -1.684583 Z M 6.054738 0.00182273 " transform="matrix(0.9937,0,0,-0.9937,70.307625,69.583842)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-3" x="67.196768" y="65.789896"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -95.924122 0.00182273 L -119.636006 0.00182273 " transform="matrix(0.9937,0,0,-0.9937,120.479956,69.583842)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054209 0.00182273 L 1.608231 1.684297 L 3.086292 0.00182273 L 1.608231 -1.684583 Z M 6.054209 0.00182273 " transform="matrix(0.9937,0,0,-0.9937,22.339401,69.583842)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-3" x="5.392603" y="65.789896"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph7-1" x="12.134857" y="62.196677"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 25 KiB |
3438
figs/enc_struts_iff_opt_damp_comp_flex_model_diag.pdf
Normal file
3438
figs/enc_struts_iff_opt_damp_comp_flex_model_diag.pdf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_diag.png
Normal file
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_diag.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 176 KiB |
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.pdf
Normal file
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.pdf
Normal file
Binary file not shown.
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.png
Normal file
BIN
figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 256 KiB |
BIN
figs/ref_track_nass_exp_hac_iff_struts.pdf
Normal file
BIN
figs/ref_track_nass_exp_hac_iff_struts.pdf
Normal file
Binary file not shown.
BIN
figs/ref_track_nass_exp_hac_iff_struts.png
Normal file
BIN
figs/ref_track_nass_exp_hac_iff_struts.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
figs/ref_track_nass_exp_hac_iff_struts_zoom.pdf
Normal file
BIN
figs/ref_track_nass_exp_hac_iff_struts_zoom.pdf
Normal file
Binary file not shown.
BIN
figs/ref_track_nass_exp_hac_iff_struts_zoom.png
Normal file
BIN
figs/ref_track_nass_exp_hac_iff_struts_zoom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
@ -142,10 +142,10 @@ This document is divided in the following sections:
|
|||||||
- Section [[sec:encoders_struts]]: the encoders are fixed to the struts
|
- Section [[sec:encoders_struts]]: the encoders are fixed to the struts
|
||||||
- Section [[sec:encoders_plates]]: the encoders are fixed to the plates
|
- Section [[sec:encoders_plates]]: the encoders are fixed to the plates
|
||||||
|
|
||||||
* Encoders fixed to the Struts
|
* Encoders fixed to the Struts - Dynamics
|
||||||
<<sec:encoders_struts>>
|
<<sec:encoders_struts>>
|
||||||
|
|
||||||
** Introduction
|
** Introduction :ignore:
|
||||||
In this section, the encoders are fixed to the struts.
|
In this section, the encoders are fixed to the struts.
|
||||||
|
|
||||||
It is divided in the following sections:
|
It is divided in the following sections:
|
||||||
@ -1556,9 +1556,6 @@ linkaxes([ax1,ax2],'x');
|
|||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Flexible model + encoders fixed to the plates
|
*** Flexible model + encoders fixed to the plates
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Identify the IFF Plant (transfer function from u to taum)
|
%% Identify the IFF Plant (transfer function from u to taum)
|
||||||
@ -1661,6 +1658,47 @@ exportFig('figs/dvf_plant_comp_struts_plates.pdf', 'width', 'wide', 'height', 't
|
|||||||
<<sec:enc_struts_iff>>
|
<<sec:enc_struts_iff>>
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
|
|
||||||
|
In this section, the Integral Force Feedback (IFF) control strategy is applied to the nano-hexapod.
|
||||||
|
The main goal of this to add damping to the nano-hexapod's modes.
|
||||||
|
|
||||||
|
The control architecture is shown in Figure [[fig:control_architecture_iff_struts]] where $\bm{K}_\text{IFF}$ is a diagonal $6 \times 6$ controller.
|
||||||
|
|
||||||
|
The system as then a new input $\bm{u}^\prime$, and the transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ should be easier to control than the initial transfer function from $\bm{u}$ to $d\bm{\mathcal{L}}_m$.
|
||||||
|
|
||||||
|
#+begin_src latex :file control_architecture_iff_struts.pdf
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% Blocs
|
||||||
|
\node[block={3.0cm}{2.0cm}] (P) {Plant};
|
||||||
|
\coordinate[] (inputF) at ($(P.south west)!0.5!(P.north west)$);
|
||||||
|
\coordinate[] (outputF) at ($(P.south east)!0.7!(P.north east)$);
|
||||||
|
\coordinate[] (outputL) at ($(P.south east)!0.3!(P.north east)$);
|
||||||
|
|
||||||
|
\node[block, above=0.4 of P] (Kiff) {$\bm{K}_\text{IFF}$};
|
||||||
|
\node[addb, left= of inputF] (addF) {};
|
||||||
|
|
||||||
|
% Connections and labels
|
||||||
|
\draw[->] (outputF) -- ++(1, 0) node[below left]{$\bm{\tau}_m$};
|
||||||
|
\draw[->] (outputL) -- ++(1, 0) node[below left]{$d\bm{\mathcal{L}}_m$};
|
||||||
|
|
||||||
|
\draw[->] ($(outputF) + (0.6, 0)$)node[branch]{} |- (Kiff.east);
|
||||||
|
\draw[->] (Kiff.west) -| (addF.north);
|
||||||
|
\draw[->] (addF.east) -- (inputF) node[above left]{$\bm{u}$};
|
||||||
|
\draw[<-] (addF.west) -- ++(-1, 0) node[above right]{$\bm{u}^\prime$};
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:control_architecture_iff_struts
|
||||||
|
#+caption: Integral Force Feedback Strategy
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/control_architecture_iff_struts.png]]
|
||||||
|
|
||||||
|
This section is structured as follow:
|
||||||
|
- Section [[sec:iff_struts_plant_id]]: Using the Simscape model (APA taken as 2DoF model), the transfer function from $\bm{u}$ to $\bm{\tau}_m$ is identified. Based on the obtained dynamics, the control law is developed and the optimal gain is estimated using the Root Locus.
|
||||||
|
- Section [[sec:iff_struts_effect_plant]]: Still using the Simscape model, the effect of the IFF gain on the the transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ is studied.
|
||||||
|
- Section [[sec:iff_struts_effect_plant_exp]]: The same is performed experimentally: several IFF gains are used and the damped plant is identified each time.
|
||||||
|
- Section [[sec:iff_struts_opt_gain]]: The damped model and the identified damped system are compared for the optimal IFF gain. It is found that IFF indeed adds a lot of damping into the system. However it is not efficient in damping the spurious struts modes.
|
||||||
|
- Section [[sec:iff_struts_comp_flex_model]]: Finally, a "flexible" model of the APA is used in the Simscape model and the optimally damped model is compared with the measurements.
|
||||||
|
|
||||||
*** Matlab Init :noexport:ignore:
|
*** Matlab Init :noexport:ignore:
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
<<matlab-dir>>
|
<<matlab-dir>>
|
||||||
@ -1715,7 +1753,10 @@ Rx = zeros(1, 7);
|
|||||||
open(mdl)
|
open(mdl)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Identification of the IFF Plant
|
*** IFF Control Law and Optimal Gain
|
||||||
|
<<sec:iff_struts_plant_id>>
|
||||||
|
|
||||||
|
Let's use a model of the Nano-Hexapod with the encoders fixed to the struts and the APA taken as 2DoF model.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Initialize Nano-Hexapod
|
%% Initialize Nano-Hexapod
|
||||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||||
@ -1724,6 +1765,7 @@ n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
|||||||
'actuator_type', '2dof');
|
'actuator_type', '2dof');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The transfer function from $\bm{u}$ to $\bm{\tau}_m$ is identified.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Identify the IFF Plant (transfer function from u to taum)
|
%% Identify the IFF Plant (transfer function from u to taum)
|
||||||
clear io; io_i = 1;
|
clear io; io_i = 1;
|
||||||
@ -1733,15 +1775,18 @@ io(io_i) = linio([mdl, '/dum'], 1, 'openoutput'); io_i = io_i + 1; % Force Sens
|
|||||||
Giff = exp(-s*Ts)*linearize(mdl, io, 0.0, options);
|
Giff = exp(-s*Ts)*linearize(mdl, io, 0.0, options);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Root Locus and Decentralized Loop gain
|
The IFF controller is defined as shown below:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% IFF Controller
|
%% IFF Controller
|
||||||
Kiff_g1 = -(1/(s + 2*pi*40))*... % Low pass filter (provides integral action above 40Hz)
|
Kiff_g1 = -(1/(s + 2*pi*40))*... % LPF: provides integral action above 40Hz
|
||||||
(s/(s + 2*pi*30))*... % High pass filter to limit low frequency gain
|
(s/(s + 2*pi*30))*... % HPF: limit low frequency gain
|
||||||
(1/(1 + s/2/pi/500))*... % Low pass filter to be more robust to high frequency resonances
|
(1/(1 + s/2/pi/500))*... % LPF: more robust to high frequency resonances
|
||||||
eye(6); % Diagonal 6x6 controller
|
eye(6); % Diagonal 6x6 controller
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Then, the poles of the system are shown in the complex plane as a function of the controller gain (i.e. Root Locus plot) in Figure [[fig:enc_struts_iff_root_locus]].
|
||||||
|
A gain of $400$ is chosen as the "optimal" gain as it visually seems to be the gain that adds the maximum damping to all the suspension modes simultaneously.
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Root Locus for IFF
|
%% Root Locus for IFF
|
||||||
gains = logspace(1, 4, 100);
|
gains = logspace(1, 4, 100);
|
||||||
@ -1784,17 +1829,20 @@ exportFig('figs/enc_struts_iff_root_locus.pdf', 'width', 'wide', 'height', 'tall
|
|||||||
Then the "optimal" IFF controller is:
|
Then the "optimal" IFF controller is:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% IFF controller with Optimal gain
|
%% IFF controller with Optimal gain
|
||||||
Kiff = g*Kiff_g1;
|
Kiff = 400*Kiff_g1;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no
|
And it is saved for further use.
|
||||||
|
#+begin_src matlab :exports none :tangle no
|
||||||
save('matlab/mat/Kiff.mat', 'Kiff')
|
save('matlab/mat/Kiff.mat', 'Kiff')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :exports none :eval no
|
#+begin_src matlab :eval no
|
||||||
save('mat/Kiff.mat', 'Kiff')
|
save('mat/Kiff.mat', 'Kiff')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The bode plots of the "diagonal" elements of the loop gain are shown in Figure [[fig:enc_struts_iff_opt_loop_gain]].
|
||||||
|
It is shown that the phase and gain margins are quite high and the loop gain is large arround the resonances.
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot of the "decentralized loop gain"
|
%% Bode plot of the "decentralized loop gain"
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -1852,12 +1900,10 @@ exportFig('figs/enc_struts_iff_opt_loop_gain.pdf', 'width', 'wide', 'height', 't
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/enc_struts_iff_opt_loop_gain.png]]
|
[[file:figs/enc_struts_iff_opt_loop_gain.png]]
|
||||||
|
|
||||||
*** Multiple Gains - Simulation
|
*** Effect of IFF on the plant - Simulations
|
||||||
#+begin_src matlab
|
<<sec:iff_struts_effect_plant>>
|
||||||
%% Tested IFF gains
|
|
||||||
iff_gains = [4, 10, 20, 40, 100, 200, 400];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
Still using the Simscape model with encoders fixed to the struts and 2DoF APA, the IFF strategy is tested.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Initialize the Simscape model in closed loop
|
%% Initialize the Simscape model in closed loop
|
||||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||||
@ -1867,13 +1913,20 @@ n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
|||||||
'controller_type', 'iff');
|
'controller_type', 'iff');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The following IFF gains are tried:
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Tested IFF gains
|
||||||
|
iff_gains = [4, 10, 20, 40, 100, 200, 400];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the transfer functions from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ are identified for all the IFF gains.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Identify the (damped) transfer function from u to dLm for different values of the IFF gain
|
%% Identify the (damped) transfer function from u to dLm for different values of the IFF gain
|
||||||
Gd_iff = {zeros(1, length(iff_gains))};
|
Gd_iff = {zeros(1, length(iff_gains))};
|
||||||
|
|
||||||
clear io; io_i = 1;
|
clear io; io_i = 1;
|
||||||
io(io_i) = linio([mdl, '/du'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
io(io_i) = linio([mdl, '/du'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
||||||
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1; % Strut Displacement (encoder)
|
io(io_i) = linio([mdl, '/dL'], 1, 'openoutput'); io_i = io_i + 1; % Strut Displacement (encoder)
|
||||||
|
|
||||||
for i = 1:length(iff_gains)
|
for i = 1:length(iff_gains)
|
||||||
Kiff = iff_gains(i)*Kiff_g1*eye(6); % IFF Controller
|
Kiff = iff_gains(i)*Kiff_g1*eye(6); % IFF Controller
|
||||||
@ -1883,6 +1936,7 @@ for i = 1:length(iff_gains)
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The obtained dynamics are shown in Figure [[fig:enc_struts_iff_gains_effect_dvf_plant]].
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot of the transfer function from u to dLm for tested values of the IFF gain
|
%% Bode plot of the transfer function from u to dLm for tested values of the IFF gain
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -1925,11 +1979,14 @@ exportFig('figs/enc_struts_iff_gains_effect_dvf_plant.pdf', 'width', 'wide', 'he
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/enc_struts_iff_gains_effect_dvf_plant.png]]
|
[[file:figs/enc_struts_iff_gains_effect_dvf_plant.png]]
|
||||||
|
|
||||||
*** Experimental Results - Gains
|
*** Effect of IFF on the plant - Experimental Results
|
||||||
|
<<sec:iff_struts_effect_plant_exp>>
|
||||||
|
|
||||||
**** Introduction :ignore:
|
**** Introduction :ignore:
|
||||||
Let's look at the damping introduced by IFF as a function of the IFF gain and compare that with the results obtained using the Simscape model.
|
The IFF strategy is applied experimentally and the transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ is identified for all the defined values of the gain.
|
||||||
|
|
||||||
**** Load Data
|
**** Load Data
|
||||||
|
First load the identification data.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Load Identification Data
|
%% Load Identification Data
|
||||||
meas_iff_gains = {};
|
meas_iff_gains = {};
|
||||||
@ -1940,6 +1997,7 @@ end
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** Spectral Analysis - Setup
|
**** Spectral Analysis - Setup
|
||||||
|
And define the useful variables that will be used for the identification using the =tfestimate= function.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Setup useful variables
|
%% Setup useful variables
|
||||||
% Sampling Time [s]
|
% Sampling Time [s]
|
||||||
@ -1956,6 +2014,7 @@ win = hanning(ceil(1*Fs));
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** DVF Plant
|
**** DVF Plant
|
||||||
|
The transfer functions are estimated for all the values of the gain.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% DVF Plant (transfer function from u to dLm)
|
%% DVF Plant (transfer function from u to dLm)
|
||||||
G_iff_gains = {};
|
G_iff_gains = {};
|
||||||
@ -1965,6 +2024,8 @@ for i = 1:length(iff_gains)
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The obtained dynamics as shown in the bode plot in Figure [[fig:comp_iff_gains_dvf_plant]].
|
||||||
|
The dashed curves are the results obtained using the model, and the solid curves the results from the experimental identification.
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot of the transfer function from u to dLm for tested values of the IFF gain
|
%% Bode plot of the transfer function from u to dLm for tested values of the IFF gain
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -1976,7 +2037,7 @@ ax1 = nexttile([2,1]);
|
|||||||
hold on;
|
hold on;
|
||||||
for i = 1:length(iff_gains)
|
for i = 1:length(iff_gains)
|
||||||
plot(f, abs(G_iff_gains{i}), '-', ...
|
plot(f, abs(G_iff_gains{i}), '-', ...
|
||||||
'DisplayName', sprintf('$g_{iff} = %.0f$', iff_gains(i)));
|
'DisplayName', sprintf('$g = %.0f$', iff_gains(i)));
|
||||||
end
|
end
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
for i = 1:length(iff_gains)
|
for i = 1:length(iff_gains)
|
||||||
@ -2016,6 +2077,7 @@ exportFig('figs/comp_iff_gains_dvf_plant.pdf', 'width', 'wide', 'height', 'tall'
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/comp_iff_gains_dvf_plant.png]]
|
[[file:figs/comp_iff_gains_dvf_plant.png]]
|
||||||
|
|
||||||
|
The bode plot is then zoomed on the suspension modes of the nano-hexapod in Figure [[fig:comp_iff_gains_dvf_plant_zoom]].
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
xlim([20, 200]);
|
xlim([20, 200]);
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -2032,12 +2094,16 @@ exportFig('figs/comp_iff_gains_dvf_plant_zoom.pdf', 'width', 'wide', 'height', '
|
|||||||
#+begin_important
|
#+begin_important
|
||||||
The IFF control strategy is very effective for the damping of the suspension modes.
|
The IFF control strategy is very effective for the damping of the suspension modes.
|
||||||
It however does not damp the modes at 200Hz, 300Hz and 400Hz (flexible modes of the APA).
|
It however does not damp the modes at 200Hz, 300Hz and 400Hz (flexible modes of the APA).
|
||||||
This is very logical.
|
|
||||||
|
|
||||||
Also, the experimental results and the models obtained from the Simscape model are in agreement.
|
Also, the experimental results and the models obtained from the Simscape model are in agreement concerning the damped system (up to the flexible modes).
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
**** Experimental Results - Comparison of the un-damped and fully damped system
|
**** Experimental Results - Comparison of the un-damped and fully damped system
|
||||||
|
The un-damped and damped experimental plants are compared in Figure [[fig:comp_undamped_opt_iff_gain_diagonal]] (diagonal terms).
|
||||||
|
|
||||||
|
It is very clear that all the suspension modes are very well damped thanks to IFF.
|
||||||
|
However, there is little to no effect on the flexible modes of the struts and of the plate.
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot for the transfer function from u to dLm
|
%% Bode plot for the transfer function from u to dLm
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -2099,17 +2165,14 @@ exportFig('figs/comp_undamped_opt_iff_gain_diagonal.pdf', 'width', 'wide', 'heig
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/comp_undamped_opt_iff_gain_diagonal.png]]
|
[[file:figs/comp_undamped_opt_iff_gain_diagonal.png]]
|
||||||
|
|
||||||
#+begin_question
|
|
||||||
A series of modes at around 205Hz are also damped.
|
|
||||||
|
|
||||||
Are these damped modes at 205Hz additional "suspension" modes or flexible modes of the struts?
|
|
||||||
#+end_question
|
|
||||||
|
|
||||||
*** Experimental Results - Damped Plant with Optimal gain
|
*** Experimental Results - Damped Plant with Optimal gain
|
||||||
|
<<sec:iff_struts_opt_gain>>
|
||||||
|
|
||||||
**** Introduction :ignore:
|
**** Introduction :ignore:
|
||||||
Let's now look at the $6 \times 6$ damped plant with the optimal gain $g = 400$.
|
Let's now look at the $6 \times 6$ damped plant with the optimal gain $g = 400$.
|
||||||
|
|
||||||
**** Load Data
|
**** Load Data
|
||||||
|
The experimental data are loaded.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Load Identification Data
|
%% Load Identification Data
|
||||||
meas_iff_struts = {};
|
meas_iff_struts = {};
|
||||||
@ -2120,6 +2183,7 @@ end
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** Spectral Analysis - Setup
|
**** Spectral Analysis - Setup
|
||||||
|
And the parameters useful for the spectral analysis are defined.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Setup useful variables
|
%% Setup useful variables
|
||||||
% Sampling Time [s]
|
% Sampling Time [s]
|
||||||
@ -2136,6 +2200,7 @@ win = hanning(ceil(1*Fs));
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** DVF Plant
|
**** DVF Plant
|
||||||
|
Finally, the $6 \times 6$ plant is identified using the =tfestimate= function.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% DVF Plant (transfer function from u to dLm)
|
%% DVF Plant (transfer function from u to dLm)
|
||||||
G_iff_opt = {};
|
G_iff_opt = {};
|
||||||
@ -2145,6 +2210,7 @@ for i = 1:6
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The obtained diagonal elements are compared with the model in Figure [[fig:damped_iff_plant_comp_diagonal]].
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot for the transfer function from u to dLm
|
%% Bode plot for the transfer function from u to dLm
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -2204,6 +2270,7 @@ exportFig('figs/damped_iff_plant_comp_diagonal.pdf', 'width', 'wide', 'height',
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/damped_iff_plant_comp_diagonal.png]]
|
[[file:figs/damped_iff_plant_comp_diagonal.png]]
|
||||||
|
|
||||||
|
And all the off-diagonal elements are compared with the model in Figure [[fig:damped_iff_plant_comp_off_diagonal]].
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
%% Bode plot for the transfer function from u to dLm
|
%% Bode plot for the transfer function from u to dLm
|
||||||
freqs = 2*logspace(1, 3, 1000);
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
@ -2278,13 +2345,203 @@ exportFig('figs/damped_iff_plant_comp_off_diagonal.pdf', 'width', 'wide', 'heigh
|
|||||||
|
|
||||||
#+begin_important
|
#+begin_important
|
||||||
With the IFF control strategy applied and the optimal gain used, the suspension modes are very well damped.
|
With the IFF control strategy applied and the optimal gain used, the suspension modes are very well damped.
|
||||||
Remains the undamped flexible modes of the APA (200Hz, 300Hz, 400Hz), and the modes of the plates (700Hz).
|
Remains the un-damped flexible modes of the APA (200Hz, 300Hz, 400Hz), and the modes of the plates (700Hz).
|
||||||
|
|
||||||
The Simscape model and the experimental results are in very good agreement.
|
The Simscape model and the experimental results are in very good agreement.
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
|
*** Comparison with the Flexible model
|
||||||
|
<<sec:iff_struts_comp_flex_model>>
|
||||||
|
|
||||||
|
When using the 2-DoF model for the APA, the flexible modes of the struts were not modelled, and it was the main limitation of the model.
|
||||||
|
Now, let's use a flexible model for the APA, and see if the obtained damped plant using the model is similar to the measured dynamics.
|
||||||
|
|
||||||
|
First, the nano-hexapod is initialized.
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Estimated misalignement of the struts
|
||||||
|
d_aligns = [[-0.05, -0.3, 0];
|
||||||
|
[ 0, 0.5, 0];
|
||||||
|
[-0.1, -0.3, 0];
|
||||||
|
[ 0, 0.3, 0];
|
||||||
|
[-0.05, 0.05, 0];
|
||||||
|
[0, 0, 0]]*1e-3;
|
||||||
|
|
||||||
|
|
||||||
|
%% Initialize Nano-Hexapod
|
||||||
|
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||||
|
'flex_top_type', '4dof', ...
|
||||||
|
'motion_sensor_type', 'struts', ...
|
||||||
|
'actuator_type', 'flexible', ...
|
||||||
|
'actuator_d_align', d_aligns, ...
|
||||||
|
'controller_type', 'iff');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the "optimal" controller is loaded.
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Optimal IFF controller
|
||||||
|
load('Kiff.mat', 'Kiff');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ is identified using the Simscape model.
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Linearized inputs/outputs
|
||||||
|
clear io; io_i = 1;
|
||||||
|
io(io_i) = linio([mdl, '/du'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
||||||
|
io(io_i) = linio([mdl, '/dL'], 1, 'openoutput'); io_i = io_i + 1; % Strut Displacement (encoder)
|
||||||
|
|
||||||
|
%% Identification of the plant
|
||||||
|
Gd_iff = exp(-s*Ts)*linearize(mdl, io, 0.0, options);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The obtained diagonal elements are shown in Figure [[fig:enc_struts_iff_opt_damp_comp_flex_model_diag]] while the off-diagonal elements are shown in Figure [[fig:enc_struts_iff_opt_damp_comp_flex_model_off_diag]].
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Bode plot for the transfer function from u to dLm
|
||||||
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
|
ax1 = nexttile([2,1]);
|
||||||
|
hold on;
|
||||||
|
% Diagonal Elements FRF
|
||||||
|
plot(f, abs(G_iff_opt{1}(:,1)), 'color', [0,0,0,0.2], ...
|
||||||
|
'DisplayName', '$d\mathcal{L}_{m,i}/u^\prime_i$ - FRF')
|
||||||
|
for i = 2:6
|
||||||
|
plot(f, abs(G_iff_opt{i}(:,i)), 'color', [0,0,0,0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
end
|
||||||
|
|
||||||
|
% Diagonal Elements Model
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gd_iff(1,1), freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', '$d\mathcal{L}_{m,i}/u^\prime_i$ - Model')
|
||||||
|
for i = 2:6
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gd_iff(i,i), freqs, 'Hz'))), '-', ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
end
|
||||||
|
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Amplitude $d\mathcal{L}_m/u^\prime$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
|
ylim([1e-9, 1e-3]);
|
||||||
|
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 3);
|
||||||
|
|
||||||
|
ax2 = nexttile;
|
||||||
|
hold on;
|
||||||
|
for i =1:6
|
||||||
|
plot(f, 180/pi*angle(G_iff_opt{i}(:,i)), 'color', [0,0,0,0.2]);
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, 180/pi*angle(squeeze(freqresp(Gd_iff(i,i), freqs, 'Hz'))));
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
hold off;
|
||||||
|
yticks(-360:90:360);
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([20, 2e3]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/enc_struts_iff_opt_damp_comp_flex_model_diag.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:enc_struts_iff_opt_damp_comp_flex_model_diag
|
||||||
|
#+caption: Diagonal elements of the transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ - comparison of the measured FRF and the identified dynamics using the flexible model
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/enc_struts_iff_opt_damp_comp_flex_model_diag.png]]
|
||||||
|
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Bode plot for the transfer function from u to dLm
|
||||||
|
freqs = 2*logspace(1, 3, 1000);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
|
ax1 = nexttile([2,1]);
|
||||||
|
hold on;
|
||||||
|
% Off diagonal FRF
|
||||||
|
plot(f, abs(G_iff_opt{1}(:,2)), 'color', [0,0,0,0.2], ...
|
||||||
|
'DisplayName', '$d\mathcal{L}_{m,i}/u^\prime_j$ - FRF')
|
||||||
|
for i = 1:5
|
||||||
|
for j = i+1:6
|
||||||
|
plot(f, abs(G_iff_opt{i}(:,j)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Off diagonal Model
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gd_iff(1,2), freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', '$d\mathcal{L}_{m,i}/u^\prime_j$ - Model')
|
||||||
|
for i = 1:5
|
||||||
|
for j = i+1:6
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gd_iff(i,j), freqs, 'Hz'))), ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Amplitude $d\mathcal{L}_m/u^\prime$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
|
ylim([1e-9, 1e-3]);
|
||||||
|
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 3);
|
||||||
|
|
||||||
|
ax2 = nexttile;
|
||||||
|
hold on;
|
||||||
|
% Off diagonal FRF
|
||||||
|
for i = 1:5
|
||||||
|
for j = i+1:6
|
||||||
|
plot(f, 180/pi*angle(G_iff_opt{i}(:,j)), 'color', [0, 0, 0, 0.2]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Off diagonal Model
|
||||||
|
for i = 1:5
|
||||||
|
for j = i+1:6
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(freqs, 180/pi*angle(squeeze(freqresp(Gd_iff(i,j), freqs, 'Hz'))));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
hold off;
|
||||||
|
yticks(-360:90:360);
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([20, 2e3]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:enc_struts_iff_opt_damp_comp_flex_model_off_diag
|
||||||
|
#+caption: Off-diagonal elements of the transfer function from $\bm{u}^\prime$ to $d\bm{\mathcal{L}}_m$ - comparison of the measured FRF and the identified dynamics using the flexible model
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/enc_struts_iff_opt_damp_comp_flex_model_off_diag.png]]
|
||||||
|
|
||||||
|
#+begin_important
|
||||||
|
Using flexible models for the APA, the agreement between the Simscape model of the nano-hexapod and the measured FRF is very good.
|
||||||
|
|
||||||
|
Only the flexible mode of the top-plate is not appearing in the model which is very logical as the top plate is taken as a solid body.
|
||||||
|
#+end_important
|
||||||
|
|
||||||
|
*** Conclusion
|
||||||
|
#+begin_important
|
||||||
|
The decentralized Integral Force Feedback strategy applied on the nano-hexapod is very effective in damping all the suspension modes.
|
||||||
|
|
||||||
|
The Simscape model (especially when using a flexible model for the APA) is shown to be very accurate, even when IFF is applied.
|
||||||
|
#+end_important
|
||||||
|
|
||||||
** Modal Analysis
|
** Modal Analysis
|
||||||
<<sec:enc_struts_modal_analysis>>
|
<<sec:enc_struts_modal_analysis>>
|
||||||
|
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
Several 3-axis accelerometers are fixed on the top platform of the nano-hexapod as shown in Figure [[fig:compliance_vertical_comp_iff]].
|
Several 3-axis accelerometers are fixed on the top platform of the nano-hexapod as shown in Figure [[fig:compliance_vertical_comp_iff]].
|
||||||
|
|
||||||
@ -2300,6 +2557,10 @@ The top platform is then excited using an instrumented hammer as shown in Figure
|
|||||||
#+attr_latex: :width \linewidth
|
#+attr_latex: :width \linewidth
|
||||||
[[file:figs/hammer_excitation_compliance_meas.jpg]]
|
[[file:figs/hammer_excitation_compliance_meas.jpg]]
|
||||||
|
|
||||||
|
From this experiment, the resonance frequencies and the associated mode shapes can be computed (Section [[sec:modal_analysis_mode_shapes]]).
|
||||||
|
Then, in Section [[sec:compliance_effect_iff]], the vertical compliance of the nano-hexapod is experimentally estimated.
|
||||||
|
Finally, in Section [[sec:compliance_effect_iff_comp_model]], the measured compliance is compare with the estimated one from the Simscape model.
|
||||||
|
|
||||||
*** Matlab Init :noexport:ignore:
|
*** Matlab Init :noexport:ignore:
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
<<matlab-dir>>
|
<<matlab-dir>>
|
||||||
@ -2350,7 +2611,42 @@ Rx = zeros(1, 7);
|
|||||||
open(mdl)
|
open(mdl)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Effectiveness of the IFF Strategy - Compliance
|
*** Obtained Mode Shapes
|
||||||
|
<<sec:modal_analysis_mode_shapes>>
|
||||||
|
|
||||||
|
We can observe the mode shapes of the first 6 modes that are the suspension modes (the plate is behaving as a solid body) in Figure [[fig:mode_shapes_annotated]].
|
||||||
|
|
||||||
|
#+name: fig:mode_shapes_annotated
|
||||||
|
#+caption: Measured mode shapes for the first six modes
|
||||||
|
#+attr_latex: :width \linewidth
|
||||||
|
[[file:figs/mode_shapes_annotated.gif]]
|
||||||
|
|
||||||
|
Then, there is a mode at 692Hz which corresponds to a flexible mode of the top plate (Figure [[fig:mode_shapes_flexible_annotated]]).
|
||||||
|
|
||||||
|
#+name: fig:mode_shapes_flexible_annotated
|
||||||
|
#+caption: First flexible mode at 692Hz
|
||||||
|
#+attr_latex: :width 0.3\linewidth
|
||||||
|
[[file:figs/ModeShapeFlex1_crop.gif]]
|
||||||
|
|
||||||
|
The obtained modes are summarized in Table [[tab:description_modes]].
|
||||||
|
|
||||||
|
#+name: tab:description_modes
|
||||||
|
#+caption: Description of the identified modes
|
||||||
|
#+attr_latex: :environment tabularx :width 0.7\linewidth :align ccX
|
||||||
|
#+attr_latex: :center t :booktabs t :float t
|
||||||
|
| Mode | Freq. [Hz] | Description |
|
||||||
|
|------+------------+----------------------------------------------|
|
||||||
|
| 1 | 105 | Suspension Mode: Y-translation |
|
||||||
|
| 2 | 107 | Suspension Mode: X-translation |
|
||||||
|
| 3 | 131 | Suspension Mode: Z-translation |
|
||||||
|
| 4 | 161 | Suspension Mode: Y-tilt |
|
||||||
|
| 5 | 162 | Suspension Mode: X-tilt |
|
||||||
|
| 6 | 180 | Suspension Mode: Z-rotation |
|
||||||
|
| 7 | 692 | (flexible) Membrane mode of the top platform |
|
||||||
|
|
||||||
|
*** Nano-Hexapod Compliance - Effect of IFF
|
||||||
|
<<sec:compliance_effect_iff>>
|
||||||
|
|
||||||
In this section, we wish to estimated the effectiveness of the IFF strategy concerning the compliance.
|
In this section, we wish to estimated the effectiveness of the IFF strategy concerning the compliance.
|
||||||
|
|
||||||
The top plate is excited vertically using the instrumented hammer two times:
|
The top plate is excited vertically using the instrumented hammer two times:
|
||||||
@ -2371,7 +2667,6 @@ d_frf_iff = 10/5*(frf_iff.FFT1_H1_4_1_RMS_Y_Mod + frf_iff.FFT1_H1_7_1_RMS_Y_Mod
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The vertical compliance (magnitude of the transfer function from a vertical force applied on the top plate to the vertical motion of the top plate) is shown in Figure [[fig:compliance_vertical_comp_iff]].
|
The vertical compliance (magnitude of the transfer function from a vertical force applied on the top plate to the vertical motion of the top plate) is shown in Figure [[fig:compliance_vertical_comp_iff]].
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
@ -2394,13 +2689,15 @@ exportFig('figs/compliance_vertical_comp_iff.pdf', 'width', 'wide', 'height', 'n
|
|||||||
[[file:figs/compliance_vertical_comp_iff.png]]
|
[[file:figs/compliance_vertical_comp_iff.png]]
|
||||||
|
|
||||||
#+begin_important
|
#+begin_important
|
||||||
From Figure [[fig:compliance_vertical_comp_iff]], it is clear that the IFF control strategy is very effective in damping the suspensions modes of the nano-hexapode.
|
From Figure [[fig:compliance_vertical_comp_iff]], it is clear that the IFF control strategy is very effective in damping the suspensions modes of the nano-hexapod.
|
||||||
It also has the effect of degrading (slightly) the vertical compliance at low frequency.
|
It also has the effect of (slightly) degrading the vertical compliance at low frequency.
|
||||||
|
|
||||||
It also seems some damping can be added to the modes at around 205Hz which are flexible modes of the struts.
|
It also seems some damping can be added to the modes at around 205Hz which are flexible modes of the struts.
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
*** Comparison with the Simscape Model
|
*** Comparison with the Simscape Model
|
||||||
|
<<sec:compliance_effect_iff_comp_model>>
|
||||||
|
|
||||||
Let's now compare the measured vertical compliance with the vertical compliance as estimated from the Simscape model.
|
Let's now compare the measured vertical compliance with the vertical compliance as estimated from the Simscape model.
|
||||||
|
|
||||||
The transfer function from a vertical external force to the absolute motion of the top platform is identified (with and without IFF) using the Simscape model.
|
The transfer function from a vertical external force to the absolute motion of the top platform is identified (with and without IFF) using the Simscape model.
|
||||||
@ -2462,40 +2759,7 @@ exportFig('figs/compliance_vertical_comp_model_iff.pdf', 'width', 'wide', 'heigh
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/compliance_vertical_comp_model_iff.png]]
|
[[file:figs/compliance_vertical_comp_model_iff.png]]
|
||||||
|
|
||||||
*** Obtained Mode Shapes
|
** TODO Accelerometers fixed on the top platform :noexport:
|
||||||
Then, several excitation are performed using the instrumented Hammer and the mode shapes are extracted.
|
|
||||||
|
|
||||||
We can observe the mode shapes of the first 6 modes that are the suspension modes (the plate is behaving as a solid body) in Figure [[fig:mode_shapes_annotated]].
|
|
||||||
|
|
||||||
#+name: fig:mode_shapes_annotated
|
|
||||||
#+caption: Measured mode shapes for the first six modes
|
|
||||||
#+attr_latex: :width \linewidth
|
|
||||||
[[file:figs/mode_shapes_annotated.gif]]
|
|
||||||
|
|
||||||
Then, there is a mode at 692Hz which corresponds to a flexible mode of the top plate (Figure [[fig:mode_shapes_flexible_annotated]]).
|
|
||||||
|
|
||||||
#+name: fig:mode_shapes_flexible_annotated
|
|
||||||
#+caption: First flexible mode at 692Hz
|
|
||||||
#+attr_latex: :width 0.3\linewidth
|
|
||||||
[[file:figs/ModeShapeFlex1_crop.gif]]
|
|
||||||
|
|
||||||
The obtained modes are summarized in Table [[tab:description_modes]].
|
|
||||||
|
|
||||||
#+name: tab:description_modes
|
|
||||||
#+caption: Description of the identified modes
|
|
||||||
#+attr_latex: :environment tabularx :width 0.7\linewidth :align ccX
|
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
|
||||||
| Mode | Freq. [Hz] | Description |
|
|
||||||
|------+------------+----------------------------------------------|
|
|
||||||
| 1 | 105 | Suspension Mode: Y-translation |
|
|
||||||
| 2 | 107 | Suspension Mode: X-translation |
|
|
||||||
| 3 | 131 | Suspension Mode: Z-translation |
|
|
||||||
| 4 | 161 | Suspension Mode: Y-tilt |
|
|
||||||
| 5 | 162 | Suspension Mode: X-tilt |
|
|
||||||
| 6 | 180 | Suspension Mode: Z-rotation |
|
|
||||||
| 7 | 692 | (flexible) Membrane mode of the top platform |
|
|
||||||
|
|
||||||
** Accelerometers fixed on the top platform
|
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
|
|
||||||
#+name: fig:acc_top_plat_top_view
|
#+name: fig:acc_top_plat_top_view
|
||||||
@ -2839,7 +3103,18 @@ xlim([50, 5e2]); ylim([1e-7, 1e-1]);
|
|||||||
legend('location', 'southwest');
|
legend('location', 'southwest');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Encoders fixed to the plates
|
** Conclusion
|
||||||
|
#+begin_important
|
||||||
|
From the previous analysis, several conclusions can be drawn:
|
||||||
|
- Decentralized IFF is very effective in damping the "suspension" modes of the nano-hexapod (Figure [[fig:comp_undamped_opt_iff_gain_diagonal]])
|
||||||
|
- Decentralized IFF does not damp the "spurious" modes of the struts nor the flexible modes of the top plate (Figure [[fig:comp_undamped_opt_iff_gain_diagonal]])
|
||||||
|
- Even though the Simscape model and the experimentally measured FRF are in good agreement (Figures [[fig:enc_struts_iff_opt_damp_comp_flex_model_diag]] and [[fig:enc_struts_iff_opt_damp_comp_flex_model_off_diag]]), the obtain dynamics from the control inputs $\bm{u}$ and the encoders $d\bm{\mathcal{L}}_m$ is very difficult to control
|
||||||
|
|
||||||
|
Therefore, in the following sections, the encoders will be fixed to the plates.
|
||||||
|
The goal is to be less sensitive to the flexible modes of the struts.
|
||||||
|
#+end_important
|
||||||
|
|
||||||
|
* Encoders fixed to the plates - Dynamics
|
||||||
<<sec:encoders_plates>>
|
<<sec:encoders_plates>>
|
||||||
|
|
||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
@ -3587,7 +3862,6 @@ exportFig('figs/enc_plates_dvf_comp_offdiag_simscape.pdf', 'width', 'wide', 'hei
|
|||||||
<<sec:enc_plates_iff>>
|
<<sec:enc_plates_iff>>
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
|
|
||||||
|
|
||||||
#+begin_src latex :file control_architecture_iff.pdf
|
#+begin_src latex :file control_architecture_iff.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -4172,6 +4446,11 @@ save('matlab/mat/damped_plant_enc_plates.mat', 'f', 'Ts', 'G_enc_iff_opt')
|
|||||||
save('mat/damped_plant_enc_plates.mat', 'f', 'Ts', 'G_enc_iff_opt')
|
save('mat/damped_plant_enc_plates.mat', 'f', 'Ts', 'G_enc_iff_opt')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Conclusion
|
||||||
|
* HAC-IFF
|
||||||
|
<<sec:hac_iff>>
|
||||||
|
|
||||||
|
** Introduction :ignore:
|
||||||
** HAC Control - Frame of the struts
|
** HAC Control - Frame of the struts
|
||||||
<<sec:hac_iff_struts>>
|
<<sec:hac_iff_struts>>
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
@ -4530,6 +4809,78 @@ isstable(Gd_iff_hac_opt)
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
: 1
|
: 1
|
||||||
|
|
||||||
|
*** Experimental Measurements
|
||||||
|
#+begin_src matlab
|
||||||
|
load('hac_iff_more_lead_huddle.mat', 't', 'Va', 'Vs', 'de')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
rms(de)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Xe = [inv(n_hexapod.geometry.J)*de']';
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
figure;
|
||||||
|
plot3(Xe(:,1), Xe(:,2), Xe(:,3))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** HAC Control - Cartesian Frame
|
||||||
|
#+begin_src matlab
|
||||||
|
load('damped_plant_enc_plates.mat', 'f', 'Ts', 'G_enc_iff_opt')
|
||||||
|
load('jacobian.mat', 'J');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
From the transfer function from $\bm{\tau}$ to $d\bm{\mathcal{L}}_m$, let's compute the transfer function from $\bm{\mathcal{F}}$ to $d\bm{\mathcal{X}}_m$.
|
||||||
|
#+begin_src matlab
|
||||||
|
G_dvf_J = permute(pagemtimes(inv(J), pagemtimes(permute(G_enc_iff_opt, [2 3 1]), inv(J'))), [3 1 2]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
labels = {'$D_x/F_{x}$', '$D_y/F_{y}$', '$D_z/F_{z}$', '$R_{x}/M_{x}$', '$R_{y}/M_{y}$', '$R_{R}/M_{z}$'};
|
||||||
|
|
||||||
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
|
ax1 = nexttile([2,1]);
|
||||||
|
hold on;
|
||||||
|
for i = 1:5
|
||||||
|
for j = i+1:6
|
||||||
|
plot(f, abs(G_dvf_J(:, i, j)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for i =1:6
|
||||||
|
set(gca,'ColorOrderIndex',i)
|
||||||
|
plot(f, abs(G_dvf_J(:,i , i)), ...
|
||||||
|
'DisplayName', labels{i});
|
||||||
|
end
|
||||||
|
plot(f, abs(G_dvf_J(:, 1, 2)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'DisplayName', '$D_i/F_j$');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
|
ylim([1e-7, 1e-1]);
|
||||||
|
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 3);
|
||||||
|
|
||||||
|
ax2 = nexttile;
|
||||||
|
hold on;
|
||||||
|
for i =1:6
|
||||||
|
set(gca,'ColorOrderIndex',i)
|
||||||
|
plot(f, 180/pi*angle(G_dvf_J(:,i , i)));
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
hold off;
|
||||||
|
yticks(-360:90:360);
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([20, 2e3]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Reference Tracking
|
** Reference Tracking
|
||||||
<<sec:hac_iff_struts_ref_track>>
|
<<sec:hac_iff_struts_ref_track>>
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
@ -4875,10 +5226,91 @@ save('matlab/mat/reference_path.mat', 'Rx_yz', 'Rx_nass')
|
|||||||
save('mat/reference_path.mat', 'Rx_yz', 'Rx_nass')
|
save('mat/reference_path.mat', 'Rx_yz', 'Rx_nass')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Experimental Results
|
*** Experimental Measurements
|
||||||
|
#+begin_src matlab
|
||||||
|
load('hac_iff_more_lead_nass_scan.mat', 't', 'Va', 'Vs', 'de')
|
||||||
|
t = t - t(1);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Feedforward (Open-Loop) Control
|
#+begin_src matlab
|
||||||
*** Introduction
|
load('reference_path.mat', 'Rx_yz', 'Rx_nass')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Xe = [inv(n_hexapod.geometry.J)*de']';
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot3(Xe(:,1), Xe(:,2), Xe(:,3))
|
||||||
|
plot3(Rx_nass(:,2), Rx_nass(:,3), Rx_nass(:,4))
|
||||||
|
hold off;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
i_top = Xe(:,3) > 1.9e-6;
|
||||||
|
i_rx = Rx_nass(:,4) > 0;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
scatter(1e6*Xe(i_top,1), 1e6*Xe(i_top,2),'o','MarkerEdgeAlpha',0.2);
|
||||||
|
plot(1e6*Rx_nass(i_rx,2), 1e6*Rx_nass(i_rx,3), '--');
|
||||||
|
hold off;
|
||||||
|
xlabel('X [$\mu m$]'); ylabel('Y [$\mu m$]');
|
||||||
|
axis equal;
|
||||||
|
xlim([-10.5, 10.5]); ylim([-4.5, 4.5]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/ref_track_nass_exp_hac_iff_struts.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:ref_track_nass_exp_hac_iff_struts
|
||||||
|
#+caption: XY trajectory
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/ref_track_nass_exp_hac_iff_struts.png]]
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
axis equal;
|
||||||
|
xlim([4.5, 4.7]); ylim([-0.15, 0.05]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/ref_track_nass_exp_hac_iff_struts_zoom.pdf', 'width', 'normal', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:ref_track_nass_exp_hac_iff_struts_zoom
|
||||||
|
#+caption:
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/ref_track_nass_exp_hac_iff_struts_zoom.png]]
|
||||||
|
|
||||||
|
|
||||||
|
Positioning Errors:
|
||||||
|
#+begin_src matlab
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(t, 1e6*Xe(:,4), '-', 'DisplayName', '$\epsilon_{\theta_x}$');
|
||||||
|
plot(t, 1e6*Xe(:,5), '-', 'DisplayName', '$\epsilon_{\theta_y}$');
|
||||||
|
plot(t, 1e6*Xe(:,6), '-', 'DisplayName', '$\epsilon_{\theta_z}$');
|
||||||
|
hold off;
|
||||||
|
xlabel('Time [s]'); ylabel('Z error [$\mu$ rad]');
|
||||||
|
legend('location', 'northeast');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Huddle test
|
||||||
|
- [ ] Compare signals without control and with control but no reference tracking
|
||||||
|
|
||||||
|
* Feedforward Control
|
||||||
|
<<sec:feedforward>>
|
||||||
|
|
||||||
|
** Introduction :ignore:
|
||||||
|
|
||||||
#+begin_src latex :file control_architecture_iff_feedforward.pdf
|
#+begin_src latex :file control_architecture_iff_feedforward.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
@ -4914,7 +5346,11 @@ save('mat/reference_path.mat', 'Rx_yz', 'Rx_nass')
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/control_architecture_iff_feedforward.png]]
|
[[file:figs/control_architecture_iff_feedforward.png]]
|
||||||
|
|
||||||
*** Matlab Init :noexport:ignore:
|
Main problems:
|
||||||
|
- Non-linearity: Creep, Hysteresis
|
||||||
|
- Variability of the plant
|
||||||
|
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
<<matlab-dir>>
|
<<matlab-dir>>
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -4970,7 +5406,7 @@ Rx = zeros(1, 7);
|
|||||||
colors = colororder;
|
colors = colororder;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Simple Feedforward Controller
|
** Simple Feedforward Controller
|
||||||
Let's estimate the mean DC gain for the damped plant (diagonal elements:)
|
Let's estimate the mean DC gain for the damped plant (diagonal elements:)
|
||||||
#+begin_src matlab :results value replace :exports results :tangle no
|
#+begin_src matlab :results value replace :exports results :tangle no
|
||||||
mean(diag(abs(squeeze(mean(G_enc_iff_opt(f>2 & f<4,:,:))))))
|
mean(diag(abs(squeeze(mean(G_enc_iff_opt(f>2 & f<4,:,:))))))
|
||||||
@ -5041,11 +5477,13 @@ save('matlab/mat/feedforward_iff.mat', 'Kff_iff_L')
|
|||||||
save('mat/feedforward_iff.mat', 'Kff_iff_L')
|
save('mat/feedforward_iff.mat', 'Kff_iff_L')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Test with Simscape Model
|
** Test with Simscape Model
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
load('reference_path.mat', 'Rx_yz');
|
load('reference_path.mat', 'Rx_yz');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
* Further work :noexport:
|
||||||
** Feedback/Feedforward control in the frame of the struts
|
** Feedback/Feedforward control in the frame of the struts
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
|
|
||||||
@ -5092,6 +5530,7 @@ load('reference_path.mat', 'Rx_yz');
|
|||||||
[[file:figs/control_architecture_hac_iff_L_feedforward.png]]
|
[[file:figs/control_architecture_hac_iff_L_feedforward.png]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Functions
|
* Functions
|
||||||
** =generateXYZTrajectory=
|
** =generateXYZTrajectory=
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user