Rework Matlab figure size + Start section 4
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 70 KiB |
BIN
journal/figs/ligo_super_sensor_architecture.pdf
Normal file
BIN
journal/figs/ligo_super_sensor_architecture.png
Normal file
After Width: | Height: | Size: 29 KiB |
307
journal/figs/ligo_super_sensor_architecture.svg
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="309.174pt" height="118.386pt" viewBox="0 0 309.174 118.386" 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 4.9375 -1.84375 C 4.9375 -2.828125 4.296875 -3.640625 3.453125 -3.84375 L 2.1875 -4.15625 C 1.578125 -4.296875 1.1875 -4.828125 1.1875 -5.40625 C 1.1875 -6.109375 1.71875 -6.703125 2.5 -6.703125 C 4.15625 -6.703125 4.375 -5.078125 4.421875 -4.640625 C 4.4375 -4.578125 4.4375 -4.515625 4.546875 -4.515625 C 4.671875 -4.515625 4.671875 -4.5625 4.671875 -4.75 L 4.671875 -6.75 C 4.671875 -6.921875 4.671875 -6.984375 4.5625 -6.984375 C 4.5 -6.984375 4.484375 -6.96875 4.421875 -6.859375 L 4.078125 -6.296875 C 3.78125 -6.578125 3.375 -6.984375 2.484375 -6.984375 C 1.390625 -6.984375 0.5625 -6.109375 0.5625 -5.0625 C 0.5625 -4.234375 1.078125 -3.515625 1.859375 -3.25 C 1.96875 -3.203125 2.46875 -3.09375 3.15625 -2.921875 C 3.421875 -2.859375 3.71875 -2.78125 4 -2.421875 C 4.203125 -2.15625 4.3125 -1.828125 4.3125 -1.5 C 4.3125 -0.796875 3.8125 -0.09375 2.984375 -0.09375 C 2.6875 -0.09375 1.9375 -0.140625 1.421875 -0.625 C 0.84375 -1.15625 0.8125 -1.796875 0.796875 -2.15625 C 0.796875 -2.25 0.71875 -2.25 0.6875 -2.25 C 0.5625 -2.25 0.5625 -2.171875 0.5625 -2 L 0.5625 -0.015625 C 0.5625 0.15625 0.5625 0.21875 0.65625 0.21875 C 0.734375 0.21875 0.75 0.203125 0.8125 0.09375 C 0.8125 0.09375 0.84375 0.046875 1.171875 -0.46875 C 1.46875 -0.140625 2.109375 0.21875 2.984375 0.21875 C 4.15625 0.21875 4.9375 -0.75 4.9375 -1.84375 Z M 4.9375 -1.84375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-2">
|
||||||
|
<path style="stroke:none;" d="M 5.296875 0 L 5.296875 -0.3125 C 4.609375 -0.3125 4.53125 -0.375 4.53125 -0.859375 L 4.53125 -4.375 L 3.078125 -4.265625 L 3.078125 -3.96875 C 3.765625 -3.96875 3.84375 -3.890625 3.84375 -3.40625 L 3.84375 -1.640625 C 3.84375 -0.78125 3.375 -0.109375 2.640625 -0.109375 C 1.8125 -0.109375 1.765625 -0.578125 1.765625 -1.09375 L 1.765625 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.09375 -3.96875 1.09375 -3.9375 1.09375 -3.046875 L 1.09375 -1.5625 C 1.09375 -0.796875 1.09375 0.109375 2.59375 0.109375 C 3.15625 0.109375 3.59375 -0.171875 3.875 -0.78125 L 3.875 0.109375 Z M 5.296875 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-3">
|
||||||
|
<path style="stroke:none;" d="M 5.15625 -2.140625 C 5.15625 -3.390625 4.203125 -4.375 3.09375 -4.375 C 2.3125 -4.375 1.90625 -3.9375 1.703125 -3.71875 L 1.703125 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.984375 -3.96875 1.046875 -3.90625 1.046875 -3.46875 L 1.046875 1.171875 C 1.046875 1.609375 0.9375 1.609375 0.28125 1.609375 L 0.28125 1.921875 L 1.390625 1.890625 L 2.5 1.921875 L 2.5 1.609375 C 1.84375 1.609375 1.734375 1.609375 1.734375 1.171875 L 1.734375 -0.578125 C 1.78125 -0.421875 2.203125 0.109375 2.953125 0.109375 C 4.125 0.109375 5.15625 -0.859375 5.15625 -2.140625 Z M 4.34375 -2.140625 C 4.34375 -0.9375 3.640625 -0.109375 2.90625 -0.109375 C 2.515625 -0.109375 2.140625 -0.3125 1.875 -0.71875 C 1.734375 -0.921875 1.734375 -0.9375 1.734375 -1.125 L 1.734375 -3.34375 C 2.015625 -3.84375 2.5 -4.125 3.015625 -4.125 C 3.734375 -4.125 4.34375 -3.265625 4.34375 -2.140625 Z M 4.34375 -2.140625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-4">
|
||||||
|
<path style="stroke:none;" d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.890625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.5 -0.140625 2.609375 -0.140625 2.515625 -0.140625 C 2.015625 -0.140625 1.625 -0.4375 1.390625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.28125 L 3.859375 -2.28125 C 4.078125 -2.28125 4.109375 -2.28125 4.109375 -2.5 C 4.109375 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.171875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.109375 -0.984375 4.109375 -1.171875 Z M 3.453125 -2.5 L 1.109375 -2.5 C 1.171875 -3.96875 2 -4.21875 2.34375 -4.21875 C 3.359375 -4.21875 3.453125 -2.875 3.453125 -2.5 Z M 3.453125 -2.5 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-5">
|
||||||
|
<path style="stroke:none;" d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.375 2.875 -4.375 C 2.15625 -4.375 1.796875 -3.71875 1.65625 -3.28125 L 1.65625 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.890625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.796875 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.765625 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.15625 2.875 -4.15625 C 2.9375 -4.15625 2.96875 -4.15625 2.984375 -4.15625 C 2.953125 -4.140625 2.75 -4.015625 2.75 -3.765625 C 2.75 -3.484375 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.453125 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-6">
|
||||||
|
<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-7">
|
||||||
|
<path style="stroke:none;" d="M 3.5625 -1.265625 C 3.5625 -1.796875 3.265625 -2.09375 3.15625 -2.203125 C 2.828125 -2.53125 2.4375 -2.609375 2.015625 -2.6875 C 1.46875 -2.796875 0.796875 -2.921875 0.796875 -3.5 C 0.796875 -3.84375 1.0625 -4.25 1.90625 -4.25 C 3 -4.25 3.046875 -3.359375 3.078125 -3.046875 C 3.078125 -2.96875 3.1875 -2.96875 3.1875 -2.96875 C 3.3125 -2.96875 3.3125 -3.015625 3.3125 -3.203125 L 3.3125 -4.203125 C 3.3125 -4.375 3.3125 -4.4375 3.203125 -4.4375 C 3.15625 -4.4375 3.140625 -4.4375 3.015625 -4.3125 C 2.984375 -4.28125 2.875 -4.1875 2.84375 -4.15625 C 2.46875 -4.4375 2.0625 -4.4375 1.90625 -4.4375 C 0.703125 -4.4375 0.328125 -3.78125 0.328125 -3.21875 C 0.328125 -2.875 0.484375 -2.59375 0.75 -2.375 C 1.0625 -2.125 1.34375 -2.0625 2.0625 -1.921875 C 2.28125 -1.875 3.09375 -1.71875 3.09375 -1.015625 C 3.09375 -0.5 2.75 -0.109375 1.96875 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.515625 C 0.5625 -1.640625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.609375 0.328125 -1.4375 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.875 -0.3125 C 1.3125 0.09375 1.765625 0.109375 1.96875 0.109375 C 3.109375 0.109375 3.5625 -0.5625 3.5625 -1.265625 Z M 3.5625 -1.265625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-8">
|
||||||
|
<path style="stroke:none;" d="M 4.671875 -2.125 C 4.671875 -3.390625 3.671875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.609375 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.578125 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.21875 2.46875 -4.21875 C 2.90625 -4.21875 3.328125 -4 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-9">
|
||||||
|
<path style="stroke:none;" d="M 1.71875 -6.640625 C 1.75 -6.828125 1.578125 -6.984375 1.375 -6.984375 C 1.171875 -6.984375 1.015625 -6.828125 1.03125 -6.640625 L 1.25 -4.1875 L 1.5 -4.1875 Z M 2.671875 -6.640625 C 2.6875 -6.828125 2.53125 -6.984375 2.328125 -6.984375 C 2.125 -6.984375 1.96875 -6.828125 1.984375 -6.640625 L 2.203125 -4.1875 L 2.453125 -4.1875 Z M 2.671875 -6.640625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-10">
|
||||||
|
<path style="stroke:none;" d="M 3.296875 0 L 3.296875 -0.3125 L 3.046875 -0.3125 C 2.265625 -0.3125 2.234375 -0.421875 2.234375 -0.765625 L 2.234375 -6 C 2.234375 -6.34375 2.265625 -6.453125 3.046875 -6.453125 L 3.296875 -6.453125 L 3.296875 -6.765625 C 2.953125 -6.734375 2.171875 -6.734375 1.796875 -6.734375 C 1.40625 -6.734375 0.625 -6.734375 0.28125 -6.765625 L 0.28125 -6.453125 L 0.53125 -6.453125 C 1.3125 -6.453125 1.34375 -6.34375 1.34375 -6 L 1.34375 -0.765625 C 1.34375 -0.421875 1.3125 -0.3125 0.53125 -0.3125 L 0.28125 -0.3125 L 0.28125 0 C 0.625 -0.03125 1.40625 -0.03125 1.78125 -0.03125 C 2.171875 -0.03125 2.953125 -0.03125 3.296875 0 Z M 3.296875 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-11">
|
||||||
|
<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="glyph0-12">
|
||||||
|
<path style="stroke:none;" d="M 2.453125 0 L 2.453125 -0.3125 C 1.796875 -0.3125 1.75 -0.359375 1.75 -0.75 L 1.75 -4.375 L 0.359375 -4.265625 L 0.359375 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.421875 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 C 1.765625 -0.03125 2.109375 -0.015625 2.453125 0 Z M 1.90625 -5.984375 C 1.90625 -6.25 1.671875 -6.515625 1.375 -6.515625 C 1.046875 -6.515625 0.84375 -6.234375 0.84375 -5.984375 C 0.84375 -5.71875 1.0625 -5.453125 1.359375 -5.453125 C 1.703125 -5.453125 1.90625 -5.734375 1.90625 -5.984375 Z M 1.90625 -5.984375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-13">
|
||||||
|
<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-14">
|
||||||
|
<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-15">
|
||||||
|
<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-16">
|
||||||
|
<path style="stroke:none;" d="M 8.046875 0 L 8.046875 -0.3125 C 7.53125 -0.3125 7.296875 -0.3125 7.28125 -0.609375 L 7.28125 -2.5 C 7.28125 -3.34375 7.28125 -3.65625 6.96875 -4.015625 C 6.828125 -4.1875 6.515625 -4.375 5.9375 -4.375 C 5.109375 -4.375 4.671875 -3.78125 4.5 -3.40625 C 4.359375 -4.265625 3.625 -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 L 5.296875 0 L 5.296875 -0.3125 C 4.640625 -0.3125 4.53125 -0.3125 4.53125 -0.75 L 4.53125 -2.578125 C 4.53125 -3.609375 5.234375 -4.15625 5.859375 -4.15625 C 6.484375 -4.15625 6.59375 -3.625 6.59375 -3.0625 L 6.59375 -0.75 C 6.59375 -0.3125 6.484375 -0.3125 5.828125 -0.3125 L 5.828125 0 L 6.9375 -0.03125 Z M 8.046875 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-17">
|
||||||
|
<path style="stroke:none;" d="M 7.28125 -2.390625 L 7.28125 -2.703125 L 6.078125 -2.671875 C 5.671875 -2.671875 4.828125 -2.671875 4.484375 -2.703125 L 4.484375 -2.390625 L 4.796875 -2.390625 C 5.6875 -2.390625 5.71875 -2.28125 5.71875 -1.921875 L 5.71875 -1.28125 C 5.71875 -0.171875 4.453125 -0.09375 4.1875 -0.09375 C 3.53125 -0.09375 1.578125 -0.4375 1.578125 -3.390625 C 1.578125 -6.34375 3.53125 -6.671875 4.125 -6.671875 C 5.1875 -6.671875 6.078125 -5.78125 6.28125 -4.328125 C 6.296875 -4.1875 6.296875 -4.15625 6.4375 -4.15625 C 6.59375 -4.15625 6.59375 -4.1875 6.59375 -4.390625 L 6.59375 -6.75 C 6.59375 -6.921875 6.59375 -6.984375 6.484375 -6.984375 C 6.453125 -6.984375 6.40625 -6.984375 6.328125 -6.859375 L 5.828125 -6.125 C 5.515625 -6.453125 4.984375 -6.984375 4 -6.984375 C 2.15625 -6.984375 0.5625 -5.421875 0.5625 -3.390625 C 0.5625 -1.359375 2.140625 0.21875 4.015625 0.21875 C 4.75 0.21875 5.53125 -0.046875 5.875 -0.625 C 6 -0.40625 6.40625 -0.015625 6.515625 -0.015625 C 6.59375 -0.015625 6.59375 -0.09375 6.59375 -0.234375 L 6.59375 -1.96875 C 6.59375 -2.34375 6.640625 -2.390625 7.28125 -2.390625 Z M 7.28125 -2.390625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-18">
|
||||||
|
<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.34375 -4.375 1.90625 -3.78125 1.75 -3.421875 L 1.75 -6.875 L 0.3125 -6.765625 L 0.3125 -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.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-19">
|
||||||
|
<path style="stroke:none;" d="M 3.28125 2.375 C 3.28125 2.34375 3.28125 2.328125 3.109375 2.15625 C 1.875 0.90625 1.5625 -0.953125 1.5625 -2.484375 C 1.5625 -4.203125 1.9375 -5.921875 3.15625 -7.15625 C 3.28125 -7.28125 3.28125 -7.296875 3.28125 -7.328125 C 3.28125 -7.40625 3.234375 -7.4375 3.1875 -7.4375 C 3.078125 -7.4375 2.1875 -6.75 1.609375 -5.5 C 1.09375 -4.40625 0.984375 -3.3125 0.984375 -2.484375 C 0.984375 -1.703125 1.09375 -0.5 1.640625 0.609375 C 2.234375 1.828125 3.078125 2.484375 3.1875 2.484375 C 3.234375 2.484375 3.28125 2.453125 3.28125 2.375 Z M 3.28125 2.375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-20">
|
||||||
|
<path style="stroke:none;" d="M 2.859375 -2.484375 C 2.859375 -3.25 2.75 -4.453125 2.203125 -5.5625 C 1.609375 -6.78125 0.765625 -7.4375 0.65625 -7.4375 C 0.609375 -7.4375 0.5625 -7.390625 0.5625 -7.328125 C 0.5625 -7.296875 0.5625 -7.28125 0.75 -7.109375 C 1.71875 -6.125 2.28125 -4.546875 2.28125 -2.484375 C 2.28125 -0.78125 1.921875 0.953125 0.6875 2.203125 C 0.5625 2.328125 0.5625 2.34375 0.5625 2.375 C 0.5625 2.4375 0.609375 2.484375 0.65625 2.484375 C 0.765625 2.484375 1.65625 1.796875 2.234375 0.546875 C 2.75 -0.546875 2.859375 -1.640625 2.859375 -2.484375 Z M 2.859375 -2.484375 "/>
|
||||||
|
</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 6.375 -2.453125 C 6.375 -2.484375 6.34375 -2.5625 6.25 -2.5625 C 6.15625 -2.5625 6.15625 -2.5 6.078125 -2.34375 C 5.75 -1.4375 5.3125 -0.3125 3.59375 -0.3125 L 2.671875 -0.3125 C 2.53125 -0.3125 2.5 -0.3125 2.453125 -0.3125 C 2.34375 -0.328125 2.3125 -0.34375 2.3125 -0.421875 C 2.3125 -0.453125 2.3125 -0.46875 2.375 -0.640625 L 3.703125 -6 C 3.796875 -6.34375 3.828125 -6.453125 4.75 -6.453125 C 5.046875 -6.453125 5.125 -6.453125 5.125 -6.640625 C 5.125 -6.765625 5.015625 -6.765625 4.96875 -6.765625 L 3.5 -6.734375 L 2.1875 -6.765625 C 2.125 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.46875 0 0.65625 0 L 5.234375 0 C 5.484375 0 5.484375 0 5.546875 -0.171875 L 6.328125 -2.3125 C 6.375 -2.421875 6.375 -2.453125 6.375 -2.453125 Z M 6.375 -2.453125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-2">
|
||||||
|
<path style="stroke:none;" d="M 3.921875 -1.53125 C 3.921875 -1.890625 3.734375 -2.140625 3.609375 -2.265625 C 3.34375 -2.53125 3.0625 -2.578125 2.625 -2.671875 C 2.265625 -2.75 1.875 -2.828125 1.875 -3.265625 C 1.875 -3.5625 2.109375 -4.15625 2.984375 -4.15625 C 3.234375 -4.15625 3.71875 -4.09375 3.875 -3.703125 C 3.59375 -3.6875 3.390625 -3.484375 3.390625 -3.265625 C 3.390625 -3.125 3.484375 -2.96875 3.703125 -2.96875 C 3.921875 -2.96875 4.15625 -3.140625 4.15625 -3.53125 C 4.15625 -3.96875 3.734375 -4.375 2.984375 -4.375 C 1.671875 -4.375 1.3125 -3.375 1.3125 -2.9375 C 1.3125 -2.15625 2.046875 -2.015625 2.328125 -1.953125 C 2.84375 -1.859375 3.359375 -1.75 3.359375 -1.203125 C 3.359375 -0.9375 3.125 -0.109375 1.9375 -0.109375 C 1.796875 -0.109375 1.046875 -0.109375 0.8125 -0.640625 C 1.1875 -0.578125 1.4375 -0.875 1.4375 -1.15625 C 1.4375 -1.390625 1.28125 -1.5 1.0625 -1.5 C 0.8125 -1.5 0.515625 -1.296875 0.515625 -0.859375 C 0.515625 -0.28125 1.078125 0.109375 1.9375 0.109375 C 3.53125 0.109375 3.921875 -1.09375 3.921875 -1.53125 Z M 3.921875 -1.53125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph1-3">
|
||||||
|
<path style="stroke:none;" d="M 7.109375 -0.203125 C 7.109375 -0.3125 7.03125 -0.3125 6.828125 -0.3125 C 6.46875 -0.3125 6.1875 -0.3125 6.1875 -0.484375 C 6.1875 -0.546875 6.21875 -0.59375 6.21875 -0.65625 L 7.5625 -6 C 7.640625 -6.359375 7.671875 -6.453125 8.390625 -6.453125 C 8.640625 -6.453125 8.734375 -6.453125 8.734375 -6.65625 C 8.734375 -6.765625 8.625 -6.765625 8.59375 -6.765625 L 7.328125 -6.734375 L 6.046875 -6.765625 C 5.96875 -6.765625 5.859375 -6.765625 5.859375 -6.5625 C 5.859375 -6.453125 5.9375 -6.453125 6.125 -6.453125 C 6.125 -6.453125 6.34375 -6.453125 6.515625 -6.4375 C 6.6875 -6.421875 6.78125 -6.40625 6.78125 -6.28125 C 6.78125 -6.234375 6.765625 -6.21875 6.734375 -6.09375 L 6.140625 -3.671875 L 3.125 -3.671875 L 3.703125 -6 C 3.796875 -6.359375 3.828125 -6.453125 4.53125 -6.453125 C 4.796875 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.765625 4.765625 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.109375 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.0625 -3.375 L 5.375 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.234375 -0.3125 4.234375 -0.109375 C 4.234375 0 4.375 0 4.375 0 L 5.640625 -0.03125 L 6.265625 -0.015625 C 6.484375 -0.015625 6.703125 0 6.921875 0 C 7 0 7.109375 0 7.109375 -0.203125 Z M 7.109375 -0.203125 "/>
|
||||||
|
</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 3.5 -1.265625 L 3.265625 -1.265625 C 3.25 -1.109375 3.171875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.421875 2.515625 -1.75 C 3.03125 -2.171875 3.5 -2.59375 3.5 -3.25 C 3.5 -4.09375 2.765625 -4.609375 1.875 -4.609375 C 1.015625 -4.609375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3.015625 0.734375 -2.96875 0.8125 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.46875 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.203125 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.65625 2.40625 -2.171875 2.171875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.5 -1.265625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph2-2">
|
||||||
|
<path style="stroke:none;" d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.40625 C 2.328125 -4.59375 2.3125 -4.609375 2.109375 -4.609375 C 1.671875 -4.171875 1.046875 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
|
||||||
|
</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 8.0625 -2.984375 C 8.0625 -3.203125 7.875 -3.203125 7.6875 -3.203125 L 4.515625 -3.203125 L 4.515625 -6.375 C 4.515625 -6.546875 4.515625 -6.75 4.3125 -6.75 C 4.09375 -6.75 4.09375 -6.5625 4.09375 -6.375 L 4.09375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.09375 -2.78125 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.515625 0.765625 4.515625 0.578125 4.515625 0.390625 L 4.515625 -2.78125 L 7.6875 -2.78125 C 7.859375 -2.78125 8.0625 -2.78125 8.0625 -2.984375 Z M 8.0625 -2.984375 "/>
|
||||||
|
</symbol>
|
||||||
|
</g>
|
||||||
|
<clipPath id="clip1">
|
||||||
|
<path d="M 20 0 L 286 0 L 286 117.773438 L 20 117.773438 Z M 20 0 "/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip2">
|
||||||
|
<path d="M 0.386719 53 L 40 53 L 40 55 L 0.386719 55 Z M 0.386719 53 "/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip3">
|
||||||
|
<path d="M 287 38 L 307.964844 38 L 307.964844 70 L 287 70 Z M 287 38 "/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g id="surface1">
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;" d="M 21.15625 116.78125 L 284.722656 116.78125 L 284.722656 0.992188 L 21.15625 0.992188 Z M 21.15625 116.78125 "/>
|
||||||
|
<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 -53.553778 -34.820927 L 211.379595 -34.820927 L 211.379595 81.568667 L -53.553778 81.568667 Z M -53.553778 -34.820927 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="124.663198" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="130.169858" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="135.676519" y="11.124305"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-4" x="141.460693" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="145.86622" y="11.124305"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="153.048864" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="158.555525" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="162.961051" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="168.467712" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="172.377679" y="11.124305"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="177.333277" y="11.124305"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(89.99939%,89.99939%,89.99939%);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 -50.565705 -31.832853 L 123.351179 -31.832853 L 123.351179 43.17133 L -50.565705 43.17133 Z M -50.565705 -31.832853 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-9" x="61.162539" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="64.867344" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="68.446277" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="73.952938" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="78.358465" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="82.24068" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="86.095144" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-13" x="88.848475" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="93.804073" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="96.557403" y="78.949534"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="103.562637" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="109.069297" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="114.575958" y="78.949534"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-4" x="120.360132" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="124.765659" y="78.949534"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="131.948303" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="137.454964" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="141.860491" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="147.367151" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="151.277118" y="78.949534"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="156.232716" y="78.949534"/>
|
||||||
|
</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 -20.991235 49.634365 L 20.991004 49.634365 L 20.991004 75.093852 L -20.991235 75.093852 Z M -20.991235 49.634365 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-15" x="56.85488" y="17.565896"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-8" x="63.322927" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="68.278525" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="72.188492" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="74.941822" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="78.796287" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="81.549617" y="17.565896"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="86.505215" y="17.565896"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="60.351744" y="29.460207"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="65.858405" y="29.460207"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="70.263931" y="29.460207"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="75.770592" y="29.460207"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="79.680559" y="29.460207"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="84.636157" y="29.460207"/>
|
||||||
|
</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 -30.760391 17.008998 L 30.760159 17.008998 L 30.760159 39.68459 L -30.760391 39.68459 Z M -30.760391 17.008998 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="47.136285" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="52.642946" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="57.048472" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="59.801803" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="63.71177" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="71.97077" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="76.926368" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="85.185368" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="89.590894" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="93.445359" y="57.35354"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="97.850885" y="57.35354"/>
|
||||||
|
</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 -24.941304 -28.346113 L 24.941072 -28.346113 L 24.941072 -5.670521 L -24.941304 -5.670521 Z M -24.941304 -28.346113 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-17" x="52.925261" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="60.702577" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="65.108103" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="70.063702" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="75.570362" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="81.077023" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="86.032621" y="101.510523"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="91.539282" y="101.510523"/>
|
||||||
|
</g>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 31.5625 53.9375 C 31.5625 52.84375 30.675781 51.957031 29.578125 51.957031 C 28.484375 51.957031 27.597656 52.84375 27.597656 53.9375 C 27.597656 55.035156 28.484375 55.921875 29.578125 55.921875 C 30.675781 55.921875 31.5625 55.035156 31.5625 53.9375 Z M 31.5625 53.9375 "/>
|
||||||
|
<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 62.937904 17.008998 L 93.246631 17.008998 L 93.246631 39.68459 L 62.937904 39.68459 Z M 62.937904 17.008998 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-1" x="140.348845" y="56.417395"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph2-1" x="147.093863" y="57.903687"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="151.539804" y="56.417395"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-2" x="155.39481" y="56.417395"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-20" x="160.040715" y="56.417395"/>
|
||||||
|
</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 62.187941 -28.346113 L 93.996594 -28.346113 L 93.996594 -5.670521 L 62.187941 -5.670521 Z M 62.187941 -28.346113 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-3" x="139.60172" y="101.537384"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph2-1" x="147.840988" y="103.02467"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="152.286929" y="101.537384"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-2" x="156.141935" y="101.537384"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-20" x="160.78784" y="101.537384"/>
|
||||||
|
</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 120.363105 -0.000641115 C 120.363105 3.851265 117.237604 6.97284 113.385698 6.97284 C 109.533792 6.97284 106.412217 3.851265 106.412217 -0.000641115 C 106.412217 -3.852547 109.533792 -6.974122 113.385698 -6.974122 C 117.237604 -6.974122 120.363105 -3.852547 120.363105 -0.000641115 Z M 120.363105 -0.000641115 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph3-1" x="182.919058" y="85.040942"/>
|
||||||
|
</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 152.042184 -11.3404 L 183.850837 -11.3404 L 183.850837 11.339118 L 152.042184 11.339118 Z M 152.042184 -11.3404 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-3" x="228.991109" y="84.61714"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph2-2" x="237.230376" y="86.104426"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="241.676318" y="84.61714"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-2" x="245.531324" y="84.61714"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-20" x="250.177229" y="84.61714"/>
|
||||||
|
</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 152.792147 51.024349 L 183.100874 51.024349 L 183.100874 73.699942 L 152.792147 73.699942 Z M 152.792147 51.024349 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-1" x="229.738234" y="22.576907"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph2-2" x="236.483251" y="24.064193"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="240.929193" y="22.576907"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph1-2" x="244.784199" y="22.576907"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-20" x="249.430103" y="22.576907"/>
|
||||||
|
</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 205.403448 28.348757 C 205.403448 32.196737 202.277946 35.322238 198.42604 35.322238 C 194.574134 35.322238 191.452559 32.196737 191.452559 28.348757 C 191.452559 24.496851 194.574134 21.37135 198.42604 21.37135 C 202.277946 21.37135 205.403448 24.496851 205.403448 28.348757 Z M 205.403448 28.348757 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph3-1" x="267.52028" y="56.840203"/>
|
||||||
|
</g>
|
||||||
|
<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 -73.433696 28.348757 L -35.892339 28.348757 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
</g>
|
||||||
|
<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.053162 0.00195725 L 1.608354 1.682503 L 3.088648 0.00195725 L 1.608354 -1.682515 Z M 6.053162 0.00195725 " transform="matrix(0.99484,0,0,-0.99484,35.903851,53.939447)"/>
|
||||||
|
<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 -45.088224 28.348757 L -45.088224 62.364109 L -26.123183 62.364109 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.053478 0.00122878 L 1.608669 1.681775 L 3.088963 0.00122878 L 1.608669 -1.683244 Z M 6.053478 0.00122878 " transform="matrix(0.99484,0,0,-0.99484,45.622287,20.098879)"/>
|
||||||
|
<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 -45.088224 28.348757 L -45.088224 -17.006354 L -30.073252 -17.006354 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.053779 0.00188637 L 1.608971 1.682432 L 3.089265 0.00188637 L 1.608971 -1.682586 Z M 6.053779 0.00188637 " transform="matrix(0.99484,0,0,-0.99484,41.6923,99.06047)"/>
|
||||||
|
<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 21.489671 62.364109 L 147.660199 62.364109 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.054631 0.00122878 L 1.609822 1.681775 L 3.086189 0.00122878 L 1.609822 -1.683244 Z M 6.054631 0.00122878 " transform="matrix(0.99484,0,0,-0.99484,218.507859,20.098879)"/>
|
||||||
|
<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 31.258826 28.348757 L 57.805957 28.348757 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.054568 0.00195725 L 1.609759 1.682503 L 3.086127 0.00195725 L 1.609759 -1.682515 Z M 6.054568 0.00195725 " transform="matrix(0.99484,0,0,-0.99484,129.117297,53.939447)"/>
|
||||||
|
<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 25.439739 -17.006354 L 57.055993 -17.006354 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.055265 0.00188637 L 1.610456 1.682432 L 3.086823 0.00188637 L 1.610456 -1.682586 Z M 6.055265 0.00188637 " transform="matrix(0.99484,0,0,-0.99484,128.37051,99.06047)"/>
|
||||||
|
<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 93.745298 28.348757 L 113.385698 28.348757 L 113.385698 11.606121 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.051744 -0.00154187 L 1.606935 1.682931 L 3.087229 -0.00154187 L 1.606935 -1.682088 Z M 6.051744 -0.00154187 " transform="matrix(0,0.99484,0.99484,0,187.235909,67.768544)"/>
|
||||||
|
<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 94.495261 -17.006354 L 113.385698 -17.006354 L 113.385698 -11.607403 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.054378 0.00154187 L 1.609569 1.682088 L 3.085937 0.00154187 L 1.609569 -1.682931 Z M 6.054378 0.00154187 " transform="matrix(0,-0.99484,-0.99484,0,187.235909,96.511421)"/>
|
||||||
|
<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 120.363105 -0.000641115 L 146.910236 -0.000641115 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.055327 -0.000641115 L 1.610519 1.683831 L 3.086886 -0.000641115 L 1.610519 -1.681187 Z M 6.055327 -0.000641115 " transform="matrix(0.99484,0,0,-0.99484,217.761072,82.139987)"/>
|
||||||
|
<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 183.59954 62.364109 L 198.42604 62.364109 L 198.42604 39.955519 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.053082 -0.00161979 L 1.608273 1.682853 L 3.088567 -0.00161979 L 1.608273 -1.682166 Z M 6.053082 -0.00161979 " transform="matrix(0,0.99484,0.99484,0,271.837549,39.567994)"/>
|
||||||
|
<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 184.349504 -0.000641115 L 198.42604 -0.000641115 L 198.42604 16.738069 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<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.05305 0.00161979 L 1.608241 1.682166 L 3.088535 0.00161979 L 1.608241 -1.682853 Z M 6.05305 0.00161979 " transform="matrix(0,-0.99484,-0.99484,0,271.837549,68.310881)"/>
|
||||||
|
<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 205.403448 28.348757 L 229.115638 28.348757 " transform="matrix(0.99484,0,0,-0.99484,74.433709,82.139987)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 305.566406 53.9375 L 301.144531 52.265625 L 302.613281 53.9375 L 301.144531 55.613281 Z M 305.566406 53.9375 "/>
|
||||||
|
<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.055149 0.00195725 L 1.610341 1.682503 L 3.086708 0.00195725 L 1.610341 -1.682515 Z M 6.055149 0.00195725 " transform="matrix(0.99484,0,0,-0.99484,299.542499,53.939447)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 150 KiB |
@ -596,20 +596,42 @@ A more complex real life example is taken up in the next section.
|
|||||||
* Application: Design of Complementary Filters used in the Active Vibration Isolation System at the LIGO
|
* Application: Design of Complementary Filters used in the Active Vibration Isolation System at the LIGO
|
||||||
<<sec:application_ligo>>
|
<<sec:application_ligo>>
|
||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
Several complementary filters are used in the active isolation system at the LIGO cite:hua05_low_ligo,hua04_polyp_fir_compl_filter_contr_system.
|
|
||||||
The requirements on those filters are very tight and thus their design is complex.
|
|
||||||
The approach used in cite:hua05_low_ligo for their design is to write the synthesis of complementary FIR filters as a convex optimization problem.
|
|
||||||
The obtained FIR filters are compliant with the requirements. However they are of very high order so their implementation is quite complex.
|
|
||||||
|
|
||||||
The effectiveness of the proposed method is demonstrated by designing complementary filters with the same requirements as the one described in cite:hua05_low_ligo.
|
Sensor fusion using complementary filters are widely used in active vibration isolation systems in gravitational wave detectors such at the LIGO cite:matichard15_seism_isolat_advan_ligo,hua05_low_ligo, the VIRGO cite:lucia18_low_frequen_optim_perfor_advan,heijningen18_low and the KAGRA cite:akutsu21_vibrat_isolat_system_beam_split.
|
||||||
|
|
||||||
|
In the first isolation stage at the LIGO, two sets of complementary filters are used and included in a feedback loop cite:hua04_low_ligo.
|
||||||
|
A set of complementary filters ($L_2,H_2$) is first used to fuse a seismometer and a geophone.
|
||||||
|
Then, another set of complementary filters ($L_1,H_1$) is used to merge the output of the first "inertial super sensor" with a position sensor.
|
||||||
|
A simplified block diagram of the sensor fusion architecture is shown in Figure ref:fig:ligo_super_sensor_architecture.
|
||||||
|
|
||||||
|
#+name: fig:ligo_super_sensor_architecture
|
||||||
|
#+caption: Simplified block diagram of the sensor blending strategy for the first stage at the LIGO cite:hua04_low_ligo
|
||||||
|
#+attr_latex: :scale 1
|
||||||
|
[[file:figs/ligo_super_sensor_architecture.pdf]]
|
||||||
|
|
||||||
|
The fusion of the position sensor at low frequency with the "inertial super sensor" at high frequency using the complementary filters ($L_1,H_1$) is done for several reasons, first of which is to give the super sensor a DC sensibility and therefore allow the feedback loop to have authority at zero frequency.
|
||||||
|
The requirements on those filters are very tight and thus their design is complex and should be expressed as an optimization problem.
|
||||||
|
|
||||||
|
The approach used in cite:hua05_low_ligo is to use FIR complementary filters and to write the synthesis as a convex optimization problem.
|
||||||
|
After synthesis, the obtained FIR filters were found to be compliant with the requirements.
|
||||||
|
However they are of very high order so their implementation is quite complex.
|
||||||
|
In this section, the effectiveness of the proposed complementary filter synthesis strategy is demonstrated on the same set of requirements.
|
||||||
|
|
||||||
** Complementary Filters Specifications
|
** Complementary Filters Specifications
|
||||||
<<sec:ligo_specifications>>
|
<<sec:ligo_specifications>>
|
||||||
The specifications for one pair of complementary filters used at the LIGO are summarized below (for further details, refer to cite:hua04_polyp_fir_compl_filter_contr_system) and shown in Fig. ref:fig:ligo_weights:
|
The specifications for the set of complementary filters ($L_1,H_1$) used at the LIGO are summarized below (for further details, refer to cite:hua04_polyp_fir_compl_filter_contr_system):
|
||||||
- From $0$ to $\SI{0.008}{Hz}$, the magnitude of the filter's transfer function should be less or equal to $8 \times 10^{-4}$
|
- From $0$ to $\SI{0.008}{Hz}$, the magnitude $|L_1(j\omega)|$ should be less or equal to $8 \times 10^{-4}$
|
||||||
- Between $\SI{0.008}{Hz}$ to $\SI{0.04}{Hz}$, the filter should attenuate the input signal proportional to frequency cubed
|
- Between $\SI{0.008}{Hz}$ to $\SI{0.04}{Hz}$, the filter $L_1(s)$ should attenuate the input signal proportional to frequency cubed
|
||||||
- Between $\SI{0.04}{Hz}$ to $\SI{0.1}{Hz}$, the magnitude of the transfer function should be less than $3$
|
- Between $\SI{0.04}{Hz}$ to $\SI{0.1}{Hz}$, the magnitude $|L_1(j\omega)|$ should be less than $3$
|
||||||
- Above $\SI{0.1}{Hz}$, the magnitude of the complementary filter should be less than $0.045$
|
- Above $\SI{0.1}{Hz}$, the magnitude $|H_1(j\omega)|$ should be less than $0.045$
|
||||||
|
|
||||||
|
These specifications are therefore upper bounds on the complementary filters' magnitudes.
|
||||||
|
They are physically represented in Figure ref:fig:fir_filter_ligo as well as the obtained magnitude of the FIR filters in cite:hua05_low_ligo.
|
||||||
|
|
||||||
|
#+name: fig:fir_filter_ligo
|
||||||
|
#+caption: Specifications and Bode plot of the obtained FIR filters in cite:hua05_low_ligo
|
||||||
|
#+attr_latex: :scale 1
|
||||||
|
[[file:figs/fir_filter_ligo.pdf]]
|
||||||
|
|
||||||
** Weighting Functions Design
|
** Weighting Functions Design
|
||||||
<<sec:ligo_weights>>
|
<<sec:ligo_weights>>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
% Created 2021-05-20 jeu. 11:13
|
% Created 2021-05-20 jeu. 16:26
|
||||||
% Intended LaTeX compiler: pdflatex
|
% Intended LaTeX compiler: pdflatex
|
||||||
\documentclass[preprint, sort&compress]{elsarticle}
|
\documentclass[preprint, sort&compress]{elsarticle}
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
@ -58,7 +58,7 @@ Sensor fusion \sep{} Optimal filters \sep{} \(\mathcal{H}_\infty\) synthesis \se
|
|||||||
\end{frontmatter}
|
\end{frontmatter}
|
||||||
|
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
\label{sec:org810a8ae}
|
\label{sec:orgc28ff6a}
|
||||||
\label{sec:introduction}
|
\label{sec:introduction}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \cite{bendat57_optim_filter_indep_measur_two} roots of sensor fusion
|
\item \cite{bendat57_optim_filter_indep_measur_two} roots of sensor fusion
|
||||||
@ -105,13 +105,13 @@ Most of the requirements => shape of the complementary filters
|
|||||||
=> propose a way to shape complementary filters.
|
=> propose a way to shape complementary filters.
|
||||||
|
|
||||||
\section{Sensor Fusion and Complementary Filters Requirements}
|
\section{Sensor Fusion and Complementary Filters Requirements}
|
||||||
\label{sec:orge97289b}
|
\label{sec:org5a2a4a4}
|
||||||
\label{sec:requirements}
|
\label{sec:requirements}
|
||||||
Complementary filters provides a framework for fusing signals from different sensors.
|
Complementary filters provides a framework for fusing signals from different sensors.
|
||||||
As the effectiveness of the fusion depends on the proper design of the complementary filters, they are expected to fulfill certain requirements.
|
As the effectiveness of the fusion depends on the proper design of the complementary filters, they are expected to fulfill certain requirements.
|
||||||
These requirements are discussed in this section.
|
These requirements are discussed in this section.
|
||||||
\subsection{Sensor Fusion Architecture}
|
\subsection{Sensor Fusion Architecture}
|
||||||
\label{sec:org0a17c4e}
|
\label{sec:orgb29eeb0}
|
||||||
\label{sec:sensor_fusion}
|
\label{sec:sensor_fusion}
|
||||||
|
|
||||||
A general sensor fusion architecture using complementary filters is shown in Figure \ref{fig:sensor_fusion_overview} where several sensors (here two) are measuring the same physical quantity \(x\).
|
A general sensor fusion architecture using complementary filters is shown in Figure \ref{fig:sensor_fusion_overview} where several sensors (here two) are measuring the same physical quantity \(x\).
|
||||||
@ -138,7 +138,7 @@ Therefore, a pair of strict complementary filter needs to satisfy the following
|
|||||||
It will soon become clear why the complementary property is important.
|
It will soon become clear why the complementary property is important.
|
||||||
|
|
||||||
\subsection{Sensor Models and Sensor Normalization}
|
\subsection{Sensor Models and Sensor Normalization}
|
||||||
\label{sec:org52d9122}
|
\label{sec:org749994d}
|
||||||
\label{sec:sensor_models}
|
\label{sec:sensor_models}
|
||||||
|
|
||||||
In order to study such sensor fusion architecture, a model of the sensors is required.
|
In order to study such sensor fusion architecture, a model of the sensors is required.
|
||||||
@ -187,7 +187,7 @@ The super sensor output is therefore equal to:
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Noise Sensor Filtering}
|
\subsection{Noise Sensor Filtering}
|
||||||
\label{sec:orgf08876b}
|
\label{sec:org0f07eb6}
|
||||||
\label{sec:noise_filtering}
|
\label{sec:noise_filtering}
|
||||||
|
|
||||||
In this section, it is supposed that all the sensors are perfectly calibrated, such that:
|
In this section, it is supposed that all the sensors are perfectly calibrated, such that:
|
||||||
@ -227,7 +227,7 @@ In such case, to lower the noise of the super sensor, the value of the norm \(|H
|
|||||||
Therefore, by properly shaping the norm of the complementary filters, it is possible to minimize the noise of the super sensor noise.
|
Therefore, by properly shaping the norm of the complementary filters, it is possible to minimize the noise of the super sensor noise.
|
||||||
|
|
||||||
\subsection{Sensor Fusion Robustness}
|
\subsection{Sensor Fusion Robustness}
|
||||||
\label{sec:org3269d9e}
|
\label{sec:orgdb0117a}
|
||||||
\label{sec:fusion_robustness}
|
\label{sec:fusion_robustness}
|
||||||
|
|
||||||
In practical systems the sensor normalization is not perfect and condition \eqref{eq:perfect_dynamics} is not verified.
|
In practical systems the sensor normalization is not perfect and condition \eqref{eq:perfect_dynamics} is not verified.
|
||||||
@ -289,14 +289,14 @@ As it is generally desired to limit the maximum phase added by the super sensor,
|
|||||||
Typically, the norm of the complementary filter \(|H_i(j\omega)|\) should be made small when \(|w_i(j\omega)|\) is large, i.e., at frequencies where the sensor dynamics is uncertain.
|
Typically, the norm of the complementary filter \(|H_i(j\omega)|\) should be made small when \(|w_i(j\omega)|\) is large, i.e., at frequencies where the sensor dynamics is uncertain.
|
||||||
|
|
||||||
\section{Complementary Filters Shaping}
|
\section{Complementary Filters Shaping}
|
||||||
\label{sec:orga11797e}
|
\label{sec:orgba2ddcd}
|
||||||
\label{sec:hinf_method}
|
\label{sec:hinf_method}
|
||||||
As shown in Section \ref{sec:requirements}, the noise and robustness of the ``super sensor'' are determined by the complementary filters norms.
|
As shown in Section \ref{sec:requirements}, the noise and robustness of the ``super sensor'' are determined by the complementary filters norms.
|
||||||
Therefore, a complementary filters synthesis method that allows to shape their norms would be of great use.
|
Therefore, a complementary filters synthesis method that allows to shape their norms would be of great use.
|
||||||
|
|
||||||
In this section, such synthesis is proposed by expressing this problem as a \(\mathcal{H}_\infty\) norm optimization.
|
In this section, such synthesis is proposed by expressing this problem as a \(\mathcal{H}_\infty\) norm optimization.
|
||||||
\subsection{Synthesis Objective}
|
\subsection{Synthesis Objective}
|
||||||
\label{sec:orgc196ed6}
|
\label{sec:orgef373f7}
|
||||||
\label{sec:synthesis_objective}
|
\label{sec:synthesis_objective}
|
||||||
|
|
||||||
The synthesis objective is to shape the norm of two filters \(H_1(s)\) and \(H_2(s)\) while ensuring their complementary property \eqref{eq:comp_filter}.
|
The synthesis objective is to shape the norm of two filters \(H_1(s)\) and \(H_2(s)\) while ensuring their complementary property \eqref{eq:comp_filter}.
|
||||||
@ -313,7 +313,7 @@ This is equivalent as to finding proper and stable transfer functions \(H_1(s)\)
|
|||||||
where \(W_1(s)\) and \(W_2(s)\) are two weighting transfer functions that are chosen to specify the maximum wanted norms of the complementary filters during the synthesis.
|
where \(W_1(s)\) and \(W_2(s)\) are two weighting transfer functions that are chosen to specify the maximum wanted norms of the complementary filters during the synthesis.
|
||||||
|
|
||||||
\subsection{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis}
|
\subsection{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis}
|
||||||
\label{sec:orgf037f4b}
|
\label{sec:org9d293ca}
|
||||||
\label{sec:hinf_synthesis}
|
\label{sec:hinf_synthesis}
|
||||||
|
|
||||||
In this section, it is shown that the synthesis objective can be easily expressed as a standard \(\mathcal{H}_\infty\) optimal control problem and therefore solved using convenient tools readily available.
|
In this section, it is shown that the synthesis objective can be easily expressed as a standard \(\mathcal{H}_\infty\) optimal control problem and therefore solved using convenient tools readily available.
|
||||||
@ -354,7 +354,7 @@ Therefore, applying the \(\mathcal{H}_\infty\) synthesis on the standard plant \
|
|||||||
The above optimization problem can be efficiently solved in Matlab \cite{matlab20} using the Robust Control Toolbox.
|
The above optimization problem can be efficiently solved in Matlab \cite{matlab20} using the Robust Control Toolbox.
|
||||||
|
|
||||||
\subsection{Weighting Functions Design}
|
\subsection{Weighting Functions Design}
|
||||||
\label{sec:org80ebc41}
|
\label{sec:org552a374}
|
||||||
\label{sec:hinf_weighting_func}
|
\label{sec:hinf_weighting_func}
|
||||||
|
|
||||||
Weighting functions are used during the synthesis to specify what is the maximum allowed norms of the complementary filters.
|
Weighting functions are used during the synthesis to specify what is the maximum allowed norms of the complementary filters.
|
||||||
@ -404,7 +404,7 @@ The typical shape of a weighting function generated using \eqref{eq:weight_formu
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Validation of the proposed synthesis method}
|
\subsection{Validation of the proposed synthesis method}
|
||||||
\label{sec:orge831635}
|
\label{sec:orgdf78400}
|
||||||
\label{sec:hinf_example}
|
\label{sec:hinf_example}
|
||||||
|
|
||||||
The proposed methodology for the design of complementary filters is now applied on a simple example where two complementary filters \(H_1(s)\) and \(H_2(s)\) have to be designed such that:
|
The proposed methodology for the design of complementary filters is now applied on a simple example where two complementary filters \(H_1(s)\) and \(H_2(s)\) have to be designed such that:
|
||||||
@ -465,27 +465,50 @@ This simple example illustrates the fact that the proposed methodology for compl
|
|||||||
A more complex real life example is taken up in the next section.
|
A more complex real life example is taken up in the next section.
|
||||||
|
|
||||||
\section{Application: Design of Complementary Filters used in the Active Vibration Isolation System at the LIGO}
|
\section{Application: Design of Complementary Filters used in the Active Vibration Isolation System at the LIGO}
|
||||||
\label{sec:org5405518}
|
\label{sec:orgd51fb42}
|
||||||
\label{sec:application_ligo}
|
\label{sec:application_ligo}
|
||||||
Several complementary filters are used in the active isolation system at the LIGO \cite{hua05_low_ligo,hua04_polyp_fir_compl_filter_contr_system}.
|
Sensor fusion using complementary filters are widely used in active vibration isolation systems in gravitational wave detectors such at the LIGO \cite{matichard15_seism_isolat_advan_ligo,hua05_low_ligo}, the VIRGO \cite{lucia18_low_frequen_optim_perfor_advan,heijningen18_low} and the KAGRA \cite{akutsu21_vibrat_isolat_system_beam_split}.
|
||||||
The requirements on those filters are very tight and thus their design is complex.
|
|
||||||
The approach used in \cite{hua05_low_ligo} for their design is to write the synthesis of complementary FIR filters as a convex optimization problem.
|
|
||||||
The obtained FIR filters are compliant with the requirements. However they are of very high order so their implementation is quite complex.
|
|
||||||
|
|
||||||
The effectiveness of the proposed method is demonstrated by designing complementary filters with the same requirements as the one described in \cite{hua05_low_ligo}.
|
In the first isolation stage at the LIGO, two sets of complementary filters are used and included in a feedback loop \cite{hua04_low_ligo}.
|
||||||
|
A set of complementary filters (\(L_2,H_2\)) is first used to fuse a seismometer and a geophone.
|
||||||
|
Then, another set of complementary filters (\(L_1,H_1\)) is used to merge the output of the first ``inertial super sensor'' with a position sensor.
|
||||||
|
A simplified block diagram of the sensor fusion architecture is shown in Figure \ref{fig:ligo_super_sensor_architecture}.
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,scale=1]{figs/ligo_super_sensor_architecture.pdf}
|
||||||
|
\caption{\label{fig:ligo_super_sensor_architecture}Simplified block diagram of the sensor blending strategy for the first stage at the LIGO \cite{hua04_low_ligo}}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
The fusion of the position sensor at low frequency with the ``inertial super sensor'' at high frequency using the complementary filters (\(L_1,H_1\)) is done for several reasons, first of which is to give the super sensor a DC sensibility and therefore allow the feedback loop to have authority at zero frequency.
|
||||||
|
The requirements on those filters are very tight and thus their design is complex and should be expressed as an optimization problem.
|
||||||
|
|
||||||
|
The approach used in \cite{hua05_low_ligo} is to use FIR complementary filters and to write the synthesis as a convex optimization problem.
|
||||||
|
After synthesis, the obtained FIR filters were found to be compliant with the requirements.
|
||||||
|
However they are of very high order so their implementation is quite complex.
|
||||||
|
In this section, the effectiveness of the proposed complementary filter synthesis strategy is demonstrated on the same set of requirements.
|
||||||
\subsection{Complementary Filters Specifications}
|
\subsection{Complementary Filters Specifications}
|
||||||
\label{sec:orgd3d9b91}
|
\label{sec:org45a6d0a}
|
||||||
\label{sec:ligo_specifications}
|
\label{sec:ligo_specifications}
|
||||||
The specifications for one pair of complementary filters used at the LIGO are summarized below (for further details, refer to \cite{hua04_polyp_fir_compl_filter_contr_system}) and shown in Fig. \ref{fig:ligo_weights}:
|
The specifications for the set of complementary filters (\(L_1,H_1\)) used at the LIGO are summarized below (for further details, refer to \cite{hua04_polyp_fir_compl_filter_contr_system}):
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item From \(0\) to \(\SI{0.008}{Hz}\), the magnitude of the filter's transfer function should be less or equal to \(8 \times 10^{-4}\)
|
\item From \(0\) to \(\SI{0.008}{Hz}\), the magnitude \(|L_1(j\omega)|\) should be less or equal to \(8 \times 10^{-4}\)
|
||||||
\item Between \(\SI{0.008}{Hz}\) to \(\SI{0.04}{Hz}\), the filter should attenuate the input signal proportional to frequency cubed
|
\item Between \(\SI{0.008}{Hz}\) to \(\SI{0.04}{Hz}\), the filter \(L_1(s)\) should attenuate the input signal proportional to frequency cubed
|
||||||
\item Between \(\SI{0.04}{Hz}\) to \(\SI{0.1}{Hz}\), the magnitude of the transfer function should be less than \(3\)
|
\item Between \(\SI{0.04}{Hz}\) to \(\SI{0.1}{Hz}\), the magnitude \(|L_1(j\omega)|\) should be less than \(3\)
|
||||||
\item Above \(\SI{0.1}{Hz}\), the magnitude of the complementary filter should be less than \(0.045\)
|
\item Above \(\SI{0.1}{Hz}\), the magnitude \(|H_1(j\omega)|\) should be less than \(0.045\)
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
These specifications are therefore upper bounds on the complementary filters' magnitudes.
|
||||||
|
They are physically represented in Figure \ref{fig:fir_filter_ligo} as well as the obtained magnitude of the FIR filters in \cite{hua05_low_ligo}.
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,scale=1]{figs/fir_filter_ligo.pdf}
|
||||||
|
\caption{\label{fig:fir_filter_ligo}Specifications and Bode plot of the obtained FIR filters in \cite{hua05_low_ligo}}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Weighting Functions Design}
|
\subsection{Weighting Functions Design}
|
||||||
\label{sec:orgcda22a3}
|
\label{sec:orgeca6c60}
|
||||||
\label{sec:ligo_weights}
|
\label{sec:ligo_weights}
|
||||||
The weighting functions should be designed such that their inverse magnitude is as close as possible to the specifications in order to not over-constrain the synthesis problem.
|
The weighting functions should be designed such that their inverse magnitude is as close as possible to the specifications in order to not over-constrain the synthesis problem.
|
||||||
However, the order of each weight should stay reasonably small in order to reduce the computational costs of the optimization problem as well as for the physical implementation of the filters.
|
However, the order of each weight should stay reasonably small in order to reduce the computational costs of the optimization problem as well as for the physical implementation of the filters.
|
||||||
@ -501,7 +524,7 @@ The magnitudes of the weighting functions are shown in Fig. \ref{fig:ligo_weight
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\subsection{\(\mathcal{H}_\infty\) Synthesis}
|
\subsection{\(\mathcal{H}_\infty\) Synthesis}
|
||||||
\label{sec:org5fc1ebf}
|
\label{sec:orgcaaff49}
|
||||||
\label{sec:ligo_results}
|
\label{sec:ligo_results}
|
||||||
\(\mathcal{H}_\infty\) synthesis is performed using the architecture shown in Fig. \ref{eq:generalized_plant}.
|
\(\mathcal{H}_\infty\) synthesis is performed using the architecture shown in Fig. \ref{eq:generalized_plant}.
|
||||||
The complementary filters obtained are of order \(27\).
|
The complementary filters obtained are of order \(27\).
|
||||||
@ -515,9 +538,9 @@ They are found to be very close to each other and this shows the effectiveness o
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\section{Discussion}
|
\section{Discussion}
|
||||||
\label{sec:org2363233}
|
\label{sec:orga827f5f}
|
||||||
\subsection{Alternative configuration}
|
\subsection{Alternative configuration}
|
||||||
\label{sec:org164637d}
|
\label{sec:org7abd40b}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Feedback architecture : Similar to mixed sensitivity (add schematic of feedback loop with weights)
|
\item Feedback architecture : Similar to mixed sensitivity (add schematic of feedback loop with weights)
|
||||||
\item 2 inputs / 1 output
|
\item 2 inputs / 1 output
|
||||||
@ -526,13 +549,13 @@ They are found to be very close to each other and this shows the effectiveness o
|
|||||||
Explain differences
|
Explain differences
|
||||||
|
|
||||||
\subsection{Imposing zero at origin / roll-off}
|
\subsection{Imposing zero at origin / roll-off}
|
||||||
\label{sec:orgf116368}
|
\label{sec:orge105bdf}
|
||||||
3 methods:
|
3 methods:
|
||||||
|
|
||||||
Link to literature about doing that with mixed sensitivity
|
Link to literature about doing that with mixed sensitivity
|
||||||
|
|
||||||
\subsection{Synthesis of Three Complementary Filters}
|
\subsection{Synthesis of Three Complementary Filters}
|
||||||
\label{sec:orgbdd0317}
|
\label{sec:org3fd7562}
|
||||||
\label{sec:hinf_three_comp_filters}
|
\label{sec:hinf_three_comp_filters}
|
||||||
Some applications may require to merge more than two sensors.
|
Some applications may require to merge more than two sensors.
|
||||||
In such a case, it is necessary to design as many complementary filters as the number of sensors used.
|
In such a case, it is necessary to design as many complementary filters as the number of sensors used.
|
||||||
@ -570,7 +593,7 @@ The bode plots of the obtained complementary filters are shown in Fig. \ref{fig:
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\section{Conclusion}
|
\section{Conclusion}
|
||||||
\label{sec:org150800b}
|
\label{sec:orgc3f0120}
|
||||||
\label{sec:conclusion}
|
\label{sec:conclusion}
|
||||||
This paper has shown how complementary filters can be used to combine multiple sensors in order to obtain a super sensor.
|
This paper has shown how complementary filters can be used to combine multiple sensors in order to obtain a super sensor.
|
||||||
Typical specification on the super sensor noise and on the robustness of the sensor fusion has been shown to be linked to the norm of the complementary filters.
|
Typical specification on the super sensor noise and on the robustness of the sensor fusion has been shown to be linked to the norm of the complementary filters.
|
||||||
@ -578,7 +601,7 @@ Therefore, a synthesis method that permits the shaping of the complementary filt
|
|||||||
Future work will aim at further developing this synthesis method for the robust and optimal synthesis of complementary filters used in sensor fusion.
|
Future work will aim at further developing this synthesis method for the robust and optimal synthesis of complementary filters used in sensor fusion.
|
||||||
|
|
||||||
\section*{Acknowledgment}
|
\section*{Acknowledgment}
|
||||||
\label{sec:org6c6a099}
|
\label{sec:org1be2c18}
|
||||||
This research benefited from a FRIA grant from the French Community of Belgium.
|
This research benefited from a FRIA grant from the French Community of Belgium.
|
||||||
|
|
||||||
\bibliographystyle{elsarticle-num}
|
\bibliographystyle{elsarticle-num}
|
||||||
|
@ -93,19 +93,6 @@
|
|||||||
series = {Robot Control 1991},
|
series = {Robot Control 1991},
|
||||||
}
|
}
|
||||||
|
|
||||||
@article{brown72_integ_navig_system_kalman_filter,
|
|
||||||
author = {R. G. Brown},
|
|
||||||
title = {Integrated Navigation Systems and Kalman Filtering: a
|
|
||||||
Perspective},
|
|
||||||
journal = {Navigation},
|
|
||||||
volume = 19,
|
|
||||||
number = 4,
|
|
||||||
pages = {355-362},
|
|
||||||
year = 1972,
|
|
||||||
doi = {10.1002/j.2161-4296.1972.tb01706.x},
|
|
||||||
url = {https://doi.org/10.1002/j.2161-4296.1972.tb01706.x},
|
|
||||||
}
|
|
||||||
|
|
||||||
@article{mahony08_nonlin_compl_filter_special_orthog_group,
|
@article{mahony08_nonlin_compl_filter_special_orthog_group,
|
||||||
author = {Robert Mahony and Tarek Hamel and Jean-Michel Pflimlin},
|
author = {Robert Mahony and Tarek Hamel and Jean-Michel Pflimlin},
|
||||||
title = {Nonlinear Complementary Filters on the Special Orthogonal
|
title = {Nonlinear Complementary Filters on the Special Orthogonal
|
||||||
@ -471,7 +458,7 @@
|
|||||||
number = 3,
|
number = 3,
|
||||||
pages = {321--325},
|
pages = {321--325},
|
||||||
year = 1975,
|
year = 1975,
|
||||||
doi = 10.1109/TAES.1975.308081,
|
doi = {10.1109/TAES.1975.308081},
|
||||||
url = {https://doi.org/10.1109/TAES.1975.308081},
|
url = {https://doi.org/10.1109/TAES.1975.308081},
|
||||||
keywords = {sensor fusion, complementary filters},
|
keywords = {sensor fusion, complementary filters},
|
||||||
publisher = {IEEE},
|
publisher = {IEEE},
|
||||||
@ -488,8 +475,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@inproceedings{becker15_compl_filter_desig_three_frequen_bands,
|
@inproceedings{becker15_compl_filter_desig_three_frequen_bands,
|
||||||
author = {Becker, Thiago; Fabro, Joao Alberto; Oliveira, Andre
|
author = {Becker, Thiago and Fabro, Joao Alberto and Oliveira, Andre
|
||||||
Schneider de; Reis, Luis Paulo},
|
Schneider de and Reis, Luis Paulo},
|
||||||
title = {Complementary Filter Design with Three Frequency Bands:
|
title = {Complementary Filter Design with Three Frequency Bands:
|
||||||
Robot Attitude Estimation},
|
Robot Attitude Estimation},
|
||||||
booktitle = {International Conference on Autonomous Robot Systems and
|
booktitle = {International Conference on Autonomous Robot Systems and
|
||||||
@ -538,7 +525,7 @@
|
|||||||
number = 5,
|
number = 5,
|
||||||
pages = {483--497},
|
pages = {483--497},
|
||||||
year = 2001,
|
year = 2001,
|
||||||
doi = 10.1177/095965180121500505,
|
doi = {10.1177/095965180121500505},
|
||||||
url = {https://doi.org/10.1177/095965180121500505},
|
url = {https://doi.org/10.1177/095965180121500505},
|
||||||
keywords = {sensor fusion, complementary filters},
|
keywords = {sensor fusion, complementary filters},
|
||||||
publisher = {SAGE Publications Sage UK: London, England},
|
publisher = {SAGE Publications Sage UK: London, England},
|
||||||
@ -554,3 +541,48 @@
|
|||||||
url = {https://doi.org/10.1109/tct.1957.1086345},
|
url = {https://doi.org/10.1109/tct.1957.1086345},
|
||||||
page = {--},
|
page = {--},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@inproceedings{hua04_low_ligo,
|
||||||
|
author = {Hua, Wensheng and Adhikari, R and DeBra, Daniel B and
|
||||||
|
Giaime, Joseph A and Hammond, Giles Dominic and Hardham, C and
|
||||||
|
Hennessy, Mike and How, Jonathan P and Lantz, Brian T and
|
||||||
|
Macinnis, M and others},
|
||||||
|
title = {Low-frequency active vibration isolation for advanced LIGO},
|
||||||
|
booktitle = {Gravitational Wave and Particle Astrophysics Detectors},
|
||||||
|
year = 2004,
|
||||||
|
volume = 5500,
|
||||||
|
pages = {194--205},
|
||||||
|
organization = {International Society for Optics and Photonics},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{akutsu21_vibrat_isolat_system_beam_split,
|
||||||
|
author = {Akutsu, T and Ando, M and Arai, K and Arai, Y and Araki, S
|
||||||
|
and Araya, A and Aritomi, N and Asada, H and Aso, Y and Bae, S
|
||||||
|
and others},
|
||||||
|
title = {Vibration Isolation Systems for the Beam Splitter and
|
||||||
|
Signal Recycling Mirrors of the Kagra Gravitational Wave
|
||||||
|
Detector},
|
||||||
|
journal = {Classical and Quantum Gravity},
|
||||||
|
volume = 38,
|
||||||
|
number = 6,
|
||||||
|
pages = 065011,
|
||||||
|
year = 2021,
|
||||||
|
publisher = {IOP Publishing},
|
||||||
|
}
|
||||||
|
|
||||||
|
@phdthesis{heijningen18_low,
|
||||||
|
author = {van Heijningen, JV},
|
||||||
|
school = {Vrije Universiteit},
|
||||||
|
title = {Low-frequency performance improvement of seismic
|
||||||
|
attenuation systems and vibration sensors for next generation
|
||||||
|
gravitational wave detectors},
|
||||||
|
year = 2018,
|
||||||
|
}
|
||||||
|
|
||||||
|
@phdthesis{lucia18_low_frequen_optim_perfor_advan,
|
||||||
|
author = {Trozzo Lucia},
|
||||||
|
school = {University of Siena},
|
||||||
|
title = {Low Frequency Optimization and Performance of Advanced
|
||||||
|
Virgo Seismic Isolation System},
|
||||||
|
year = 2018,
|
||||||
|
}
|
||||||
|
106
matlab/index.org
@ -292,7 +292,7 @@ xlim([freqs(1), freqs(end)]);
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/hinf_filters_results.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/hinf_filters_results.pdf', 'width', 'wide', 'height', 600);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:hinf_filters_results
|
#+name: fig:hinf_filters_results
|
||||||
@ -492,14 +492,14 @@ plot(freqs, 180/pi*phase(squeeze(freqresp(H3, freqs, 'Hz'))));
|
|||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
yticks([-360:90:360]); ylim([-270, 270]);
|
yticks([-180:90:180]); ylim([-220, 220]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/three_complementary_filters_results.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/three_complementary_filters_results.pdf', 'width', 'wide', 'height', 600);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:three_complementary_filters_results
|
#+name: fig:three_complementary_filters_results
|
||||||
@ -739,30 +739,39 @@ tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
|||||||
% Magnitude
|
% Magnitude
|
||||||
ax1 = nexttile([2, 1]);
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(w, abs(H), 'k-');
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(w, abs(1-H), 'k--');
|
plot(w, abs(1-H), '-', 'DisplayName', '$L_1$');
|
||||||
hold off;
|
plot([0.1, 10], [0.045, 0.045], 'k:', 'DisplayName', 'Spec. on $L_1$');
|
||||||
|
|
||||||
|
set(gca,'ColorOrderIndex',2)
|
||||||
|
plot(w, abs(H), '-', 'DisplayName', '$H_1$');
|
||||||
|
plot([0.0001, 0.008], [8e-3, 8e-3], 'k--', 'DisplayName', 'Spec. on $H_1$');
|
||||||
|
plot([0.008 0.04], [8e-3, 1], 'k--', 'HandleVisibility', 'off');
|
||||||
|
plot([0.04 0.1], [3, 3], 'k--', 'HandleVisibility', 'off');
|
||||||
|
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
set(gca, 'XTickLabel',[]); ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
hold off;
|
||||||
ylim([5e-3, 5]);
|
ylim([5e-3, 10]);
|
||||||
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
|
leg.ItemTokenSize(1) = 16;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(w, 180/pi*unwrap(angle(H)), 'k-');
|
plot(w, 180/pi*unwrap(angle(1-H)), '-');
|
||||||
plot(w, 180/pi*unwrap(angle(1-H)), 'k--');
|
plot(w, 180/pi*unwrap(angle(H)), '-');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
yticks([-450:90:180]); ylim([-450, 200]);
|
yticks([-360:180:180]); ylim([-380, 200]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([1e-3, 1]);
|
xlim([1e-3, 1]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/fir_filter_ligo.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/fir_filter_ligo.pdf', 'width', 'wide', 'height', 600);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:fir_filter_ligo
|
#+name: fig:fir_filter_ligo
|
||||||
@ -812,22 +821,22 @@ wL = minreal(ss(wL));
|
|||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(freqs, abs(squeeze(freqresp(inv(wH), freqs, 'Hz'))), '-', 'DisplayName', '$|w_H|^{-1}$');
|
plot(freqs, abs(squeeze(freqresp(inv(wL), freqs, 'Hz'))), '-', 'DisplayName', '$|W_L|^{-1}$');
|
||||||
set(gca,'ColorOrderIndex',2);
|
plot([0.1, 10], [0.045, 0.045], 'k:', 'DisplayName', 'Spec. on $L_1$');
|
||||||
plot(freqs, abs(squeeze(freqresp(inv(wL), freqs, 'Hz'))), '-', 'DisplayName', '$|w_L|^{-1}$');
|
|
||||||
|
|
||||||
plot([0.0001, 0.008], [8e-3, 8e-3], 'k--', 'DisplayName', 'Spec.');
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot([0.008 0.04], [8e-3, 1], 'k--', 'HandleVisibility', 'off');
|
plot(freqs, abs(squeeze(freqresp(inv(wH), freqs, 'Hz'))), '-', 'DisplayName', '$|W_H|^{-1}$');
|
||||||
plot([0.04 0.1], [3, 3], 'k--', 'HandleVisibility', 'off');
|
plot([0.0001, 0.008], [8e-3, 8e-3], 'k--', 'DisplayName', 'Spec. on $H_1$');
|
||||||
plot([0.1, 10], [0.045, 0.045], 'k--', 'HandleVisibility', 'off');
|
plot([0.008 0.04], [8e-3, 1], 'k--', 'HandleVisibility', 'off');
|
||||||
|
plot([0.04 0.1], [3, 3], 'k--', 'HandleVisibility', 'off');
|
||||||
|
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([1e-3, 10]);
|
ylim([5e-3, 10]);
|
||||||
leg = legend('location', 'southeast', 'FontSize', 8);
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
leg.ItemTokenSize(1) = 18;
|
leg.ItemTokenSize(1) = 16;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
@ -905,27 +914,22 @@ The bode plot of the obtained filters as shown on figure [[fig:hinf_synthesis_li
|
|||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot([0.0001, 0.008], [8e-3, 8e-3], ':', 'DisplayName', 'Spec. on $H_H$');
|
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'DisplayName', '$L_1^\prime$');
|
||||||
set(gca,'ColorOrderIndex',1);
|
plot([0.1, 10], [0.045, 0.045], 'k:', 'DisplayName', 'Spec. on $L_1$');
|
||||||
plot([0.008 0.04], [8e-3, 1], ':', 'HandleVisibility', 'off');
|
|
||||||
set(gca,'ColorOrderIndex',1);
|
|
||||||
plot([0.04 0.1], [3, 3], ':', 'HandleVisibility', 'off');
|
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',2);
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot([0.1, 10], [0.045, 0.045], ':', 'DisplayName', 'Spec. on $H_L$');
|
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'DisplayName', '$H_1^\prime$');
|
||||||
|
plot([0.0001, 0.008], [8e-3, 8e-3], 'k--', 'DisplayName', 'Spec. on $H_1$');
|
||||||
set(gca,'ColorOrderIndex',1);
|
plot([0.008 0.04], [8e-3, 1], 'k--', 'HandleVisibility', 'off');
|
||||||
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'DisplayName', '$H_H$');
|
plot([0.04 0.1], [3, 3], 'k--', 'HandleVisibility', 'off');
|
||||||
set(gca,'ColorOrderIndex',2);
|
|
||||||
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'DisplayName', '$H_L$');
|
|
||||||
|
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([1e-3, 10]);
|
ylim([5e-3, 10]);
|
||||||
leg = legend('location', 'southeast', 'FontSize', 8);
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
leg.ItemTokenSize(1) = 18;
|
leg.ItemTokenSize(1) = 16;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
@ -948,18 +952,18 @@ tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
|||||||
ax1 = nexttile([2, 1]);
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', ...
|
|
||||||
'DisplayName', '$H_H(s)$ - $\mathcal{H}_\infty$');
|
|
||||||
set(gca,'ColorOrderIndex',2);
|
|
||||||
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', ...
|
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', ...
|
||||||
'DisplayName', '$H_L(s)$ - $\mathcal{H}_\infty$');
|
'DisplayName', '$L_1(s)$ - $\mathcal{H}_\infty$');
|
||||||
|
set(gca,'ColorOrderIndex',2);
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', '$H_1(s)$ - $\mathcal{H}_\infty$');
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(w, abs(H), '--', ...
|
|
||||||
'DisplayName', '$H_H(s)$ - FIR');
|
|
||||||
set(gca,'ColorOrderIndex',2);
|
|
||||||
plot(w, abs(1-H), '--', ...
|
plot(w, abs(1-H), '--', ...
|
||||||
'DisplayName', '$H_L(s)$ - FIR');
|
'DisplayName', '$L_1(s)$ - FIR');
|
||||||
|
set(gca,'ColorOrderIndex',2);
|
||||||
|
plot(w, abs(H), '--', ...
|
||||||
|
'DisplayName', '$H_1(s)$ - FIR');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
@ -972,25 +976,25 @@ leg.ItemTokenSize(1) = 16;
|
|||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hh, freqs, 'Hz')))), '-');
|
|
||||||
set(gca,'ColorOrderIndex',2);
|
|
||||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hl, freqs, 'Hz')))), '-');
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hl, freqs, 'Hz')))), '-');
|
||||||
|
set(gca,'ColorOrderIndex',2);
|
||||||
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hh, freqs, 'Hz')))), '-');
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(w, 180/pi*unwrap(angle(H)), '--');
|
|
||||||
set(gca,'ColorOrderIndex',2);
|
|
||||||
plot(w, 180/pi*unwrap(angle(1-H)), '--');
|
plot(w, 180/pi*unwrap(angle(1-H)), '--');
|
||||||
|
set(gca,'ColorOrderIndex',2);
|
||||||
|
plot(w, 180/pi*unwrap(angle(H)), '--');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks([-450:90:180]); ylim([-450, 200]);
|
yticks([-360:180:180]); ylim([-380, 200]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/comp_fir_ligo_hinf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/comp_fir_ligo_hinf.pdf', 'width', 'wide', 'height', 600);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:comp_fir_ligo_hinf
|
#+name: fig:comp_fir_ligo_hinf
|
||||||
|
@ -6,6 +6,8 @@ s = zpk('s');
|
|||||||
|
|
||||||
freqs = logspace(-3, 0, 1000);
|
freqs = logspace(-3, 0, 1000);
|
||||||
|
|
||||||
|
addpath('./src');
|
||||||
|
|
||||||
% Specifications
|
% Specifications
|
||||||
% The specifications for the filters are:
|
% The specifications for the filters are:
|
||||||
% 1. From $0$ to $0.008\text{ Hz}$,the magnitude of the filter’s transfer function should be less than or equal to $8 \times 10^{-3}$
|
% 1. From $0$ to $0.008\text{ Hz}$,the magnitude of the filter’s transfer function should be less than or equal to $8 \times 10^{-3}$
|
||||||
@ -31,7 +33,8 @@ xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
|||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([1e-4, 10]);
|
ylim([1e-4, 10]);
|
||||||
legend('location', 'northeast');
|
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
% FIR Filter
|
% FIR Filter
|
||||||
% We here try to implement the FIR complementary filter synthesis as explained in cite:hua05_low_ligo.
|
% We here try to implement the FIR complementary filter synthesis as explained in cite:hua05_low_ligo.
|
||||||
@ -184,8 +187,10 @@ w = [w1 w2 w3 w4];
|
|||||||
H = [exp(-j*kron(w'.*2*pi,[0:n-1]))]*h;
|
H = [exp(-j*kron(w'.*2*pi,[0:n-1]))]*h;
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = subplot(2,1,1);
|
% Magnitude
|
||||||
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(w, abs(H), 'k-');
|
plot(w, abs(H), 'k-');
|
||||||
plot(w, abs(1-H), 'k--');
|
plot(w, abs(1-H), 'k--');
|
||||||
@ -195,18 +200,18 @@ ylabel('Magnitude');
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylim([5e-3, 5]);
|
ylim([5e-3, 5]);
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
% Phase
|
||||||
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(w, 180/pi*angle(H), 'k-');
|
plot(w, 180/pi*unwrap(angle(H)), 'k-');
|
||||||
plot(w, 180/pi*angle(1-H), 'k--');
|
plot(w, 180/pi*unwrap(angle(1-H)), 'k--');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
yticks([-540:90:360]);
|
yticks([-450:90:180]); ylim([-450, 200]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([1e-3, 1]);
|
xlim([1e-3, 1]);
|
||||||
xticks([0.01, 0.1, 1, 10, 100, 1000]);
|
|
||||||
|
|
||||||
% Weights
|
% Weights
|
||||||
% We design weights that will be used for the $\mathcal{H}_\infty$ synthesis of the complementary filters.
|
% We design weights that will be used for the $\mathcal{H}_\infty$ synthesis of the complementary filters.
|
||||||
@ -260,7 +265,8 @@ xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
|||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([1e-3, 10]);
|
ylim([1e-3, 10]);
|
||||||
legend('location', 'southeast');
|
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
% H-Infinity Synthesis
|
% H-Infinity Synthesis
|
||||||
% We define the generalized plant as shown on figure [[fig:h_infinity_robst_fusion]].
|
% We define the generalized plant as shown on figure [[fig:h_infinity_robst_fusion]].
|
||||||
@ -349,47 +355,56 @@ xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
|||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([1e-3, 10]);
|
ylim([1e-3, 10]);
|
||||||
legend('location', 'southeast');
|
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
% Compare FIR and H-Infinity Filters
|
% Compare FIR and H-Infinity Filters
|
||||||
% Let's now compare the FIR filters designed in cite:hua05_low_ligo and the one obtained with the $\mathcal{H}_\infty$ synthesis on figure [[fig:comp_fir_ligo_hinf]].
|
% Let's now compare the FIR filters designed in cite:hua05_low_ligo and the one obtained with the $\mathcal{H}_\infty$ synthesis on figure [[fig:comp_fir_ligo_hinf]].
|
||||||
|
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
ax1 = subplot(2,1,1);
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
|
% Magnitude
|
||||||
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-');
|
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', '$H_H(s)$ - $\mathcal{H}_\infty$');
|
||||||
set(gca,'ColorOrderIndex',2);
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-');
|
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', '$H_L(s)$ - $\mathcal{H}_\infty$');
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(w, abs(H), '--');
|
plot(w, abs(H), '--', ...
|
||||||
|
'DisplayName', '$H_H(s)$ - FIR');
|
||||||
set(gca,'ColorOrderIndex',2);
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot(w, abs(1-H), '--');
|
plot(w, abs(1-H), '--', ...
|
||||||
|
'DisplayName', '$H_L(s)$ - FIR');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylim([1e-3, 10]);
|
ylim([5e-3, 10]);
|
||||||
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
|
leg.ItemTokenSize(1) = 16;
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
% Phase
|
||||||
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'DisplayName', '$\mathcal{H}_\infty$ filters');
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hh, freqs, 'Hz')))), '-');
|
||||||
set(gca,'ColorOrderIndex',2);
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'HandleVisibility', 'off');
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hl, freqs, 'Hz')))), '-');
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',1);
|
set(gca,'ColorOrderIndex',1);
|
||||||
plot(w, 180/pi*angle(H), '--', 'DisplayName', 'FIR filters');
|
plot(w, 180/pi*unwrap(angle(H)), '--');
|
||||||
set(gca,'ColorOrderIndex',2);
|
set(gca,'ColorOrderIndex',2);
|
||||||
plot(w, 180/pi*angle(1-H), '--', 'HandleVisibility', 'off');
|
plot(w, 180/pi*unwrap(angle(1-H)), '--');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks([-540:90:360]);
|
yticks([-450:90:180]); ylim([-450, 200]);
|
||||||
legend('location', 'northeast');
|
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
xticks([0.001, 0.01, 0.1, 1]);
|
|
||||||
|
@ -6,6 +6,8 @@ s = zpk('s');
|
|||||||
|
|
||||||
freqs = logspace(-1, 3, 1000);
|
freqs = logspace(-1, 3, 1000);
|
||||||
|
|
||||||
|
addpath('./src');
|
||||||
|
|
||||||
% Design of Weighting Function
|
% Design of Weighting Function
|
||||||
% A formula is proposed to help the design of the weighting functions:
|
% A formula is proposed to help the design of the weighting functions:
|
||||||
% \begin{equation}
|
% \begin{equation}
|
||||||
@ -24,15 +26,48 @@ freqs = logspace(-1, 3, 1000);
|
|||||||
|
|
||||||
% The general shape of a weighting function generated using the formula is shown in figure [[fig:weight_formula]].
|
% The general shape of a weighting function generated using the formula is shown in figure [[fig:weight_formula]].
|
||||||
|
|
||||||
|
|
||||||
|
n = 3; w0 = 2*pi*10; G0 = 1e-3; G1 = 1e1; Gc = 2;
|
||||||
|
|
||||||
|
W = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(freqresp(W, freqs, 'Hz'))), 'k-');
|
||||||
|
|
||||||
|
plot([1e-3 1e0], [G0 G0], 'k--', 'LineWidth', 1)
|
||||||
|
text(1e0, G0, '$\quad G_0$')
|
||||||
|
|
||||||
|
plot([1e1 1e3], [G1 G1], 'k--', 'LineWidth', 1)
|
||||||
|
text(1e1,G1,'$G_{\infty}\quad$','HorizontalAlignment', 'right')
|
||||||
|
|
||||||
|
plot([w0/2/pi w0/2/pi], [1 2*Gc], 'k--', 'LineWidth', 1)
|
||||||
|
text(w0/2/pi,1,'$\omega_c$','VerticalAlignment', 'top', 'HorizontalAlignment', 'center')
|
||||||
|
|
||||||
|
plot([w0/2/pi/2 2*w0/2/pi], [Gc Gc], 'k--', 'LineWidth', 1)
|
||||||
|
text(w0/2/pi/2, Gc, '$G_c \quad$','HorizontalAlignment', 'right')
|
||||||
|
|
||||||
|
text(w0/5/pi/2, abs(evalfr(W, j*w0/5)), 'Slope: $n \quad$', 'HorizontalAlignment', 'right')
|
||||||
|
|
||||||
|
text(w0/2/pi, abs(evalfr(W, j*w0)), '$\bullet$', 'HorizontalAlignment', 'center')
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
|
hold off;
|
||||||
|
xlim([freqs(1), freqs(end)]);
|
||||||
|
ylim([5e-4, 20]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% #+name: fig:weight_formula
|
% #+name: fig:weight_formula
|
||||||
% #+caption: Amplitude of the proposed formula for the weighting functions
|
% #+caption: Gain of the Weighting Function formula
|
||||||
% [[file:figs-tikz/weight_formula.png]]
|
% #+RESULTS:
|
||||||
|
% [[file:figs/weight_formula.png]]
|
||||||
|
|
||||||
|
|
||||||
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
|
n = 2; w0 = 2*pi*10; G0 = 1/10; G1 = 1000; Gc = 0.45;
|
||||||
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
|
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
|
||||||
|
|
||||||
n = 3; w0 = 2*pi*10; G0 = 1000; G1 = 0.1; Gc = 1/2;
|
n = 3; w0 = 2*pi*10; G0 = 1000; G1 = 0.1; Gc = 0.45;
|
||||||
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
|
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
@ -45,9 +80,10 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
|||||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
ylim([5e-4, 20]);
|
ylim([1e-4, 20]);
|
||||||
xticks([0.1, 1, 10, 100, 1000]);
|
xticks([0.1, 1, 10, 100, 1000]);
|
||||||
legend('location', 'northeast');
|
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
% H-Infinity Synthesis
|
% H-Infinity Synthesis
|
||||||
% We define the generalized plant $P$ on matlab.
|
% We define the generalized plant $P$ on matlab.
|
||||||
@ -67,35 +103,28 @@ P = [W1 -W1;
|
|||||||
% #+RESULTS:
|
% #+RESULTS:
|
||||||
% #+begin_example
|
% #+begin_example
|
||||||
% [H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
|
% [H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
|
||||||
% Resetting value of Gamma min based on D_11, D_12, D_21 terms
|
|
||||||
|
|
||||||
% Test bounds: 0.1000 < gamma <= 1050.0000
|
% Test bounds: 0.3223 <= gamma <= 1000
|
||||||
|
|
||||||
% gamma hamx_eig xinf_eig hamy_eig yinf_eig nrho_xy p/f
|
% gamma X>=0 Y>=0 rho(XY)<1 p/f
|
||||||
% 1.050e+03 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 1.795e+01 1.4e-07 0.0e+00 1.481e-16 p
|
||||||
% 525.050 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 2.406e+00 1.4e-07 0.0e+00 3.604e-15 p
|
||||||
% 262.575 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 8.806e-01 -3.1e+02 # -1.4e-16 7.370e-19 f
|
||||||
% 131.337 2.8e+01 2.4e-07 4.1e+00 -1.0e-13 0.0000 p
|
% 1.456e+00 1.4e-07 0.0e+00 1.499e-18 p
|
||||||
% 65.719 2.8e+01 2.4e-07 4.1e+00 -9.5e-14 0.0000 p
|
% 1.132e+00 1.4e-07 0.0e+00 8.587e-15 p
|
||||||
% 32.909 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 9.985e-01 1.4e-07 0.0e+00 2.331e-13 p
|
||||||
% 16.505 2.8e+01 2.4e-07 4.1e+00 -1.0e-13 0.0000 p
|
% 9.377e-01 -7.7e+02 # -6.6e-17 3.744e-14 f
|
||||||
% 8.302 2.8e+01 2.4e-07 4.1e+00 -7.2e-14 0.0000 p
|
% 9.676e-01 -2.0e+03 # -5.7e-17 1.046e-13 f
|
||||||
% 4.201 2.8e+01 2.4e-07 4.1e+00 -2.5e-25 0.0000 p
|
% 9.829e-01 -6.6e+03 # -1.1e-16 2.949e-13 f
|
||||||
% 2.151 2.7e+01 2.4e-07 4.1e+00 -3.8e-14 0.0000 p
|
% 9.907e-01 1.4e-07 0.0e+00 2.374e-19 p
|
||||||
% 1.125 2.6e+01 2.4e-07 4.1e+00 -5.4e-24 0.0000 p
|
% 9.868e-01 -1.6e+04 # -6.4e-17 5.331e-14 f
|
||||||
% 0.613 2.3e+01 -3.7e+01# 4.1e+00 0.0e+00 0.0000 f
|
% 9.887e-01 -5.1e+04 # -1.5e-17 2.703e-19 f
|
||||||
% 0.869 2.6e+01 -3.7e+02# 4.1e+00 0.0e+00 0.0000 f
|
% 9.897e-01 1.4e-07 0.0e+00 1.583e-11 p
|
||||||
% 0.997 2.6e+01 -1.1e+04# 4.1e+00 0.0e+00 0.0000 f
|
% Limiting gains...
|
||||||
% 1.061 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 9.897e-01 1.5e-07 0.0e+00 1.183e-12 p
|
||||||
% 1.029 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
% 9.897e-01 6.9e-07 0.0e+00 1.365e-12 p
|
||||||
% 1.013 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
|
||||||
% 1.005 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
|
||||||
% 1.001 2.6e+01 -3.1e+04# 4.1e+00 -3.8e-14 0.0000 f
|
|
||||||
% 1.003 2.6e+01 -2.8e+05# 4.1e+00 0.0e+00 0.0000 f
|
|
||||||
% 1.004 2.6e+01 2.4e-07 4.1e+00 -5.8e-24 0.0000 p
|
|
||||||
% 1.004 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
|
|
||||||
|
|
||||||
% Gamma value achieved: 1.0036
|
% Best performance (actual): 0.9897
|
||||||
% #+end_example
|
% #+end_example
|
||||||
|
|
||||||
% We then define the high pass filter $H_1 = 1 - H_2$. The bode plot of both $H_1$ and $H_2$ is shown on figure [[fig:hinf_filters_results]].
|
% We then define the high pass filter $H_1 = 1 - H_2$. The bode plot of both $H_1$ and $H_2$ is shown on figure [[fig:hinf_filters_results]].
|
||||||
@ -108,8 +137,10 @@ H1 = 1 - H2;
|
|||||||
|
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = subplot(2,1,1);
|
% Magnitude
|
||||||
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$w_1$');
|
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$w_1$');
|
||||||
@ -125,10 +156,13 @@ hold off;
|
|||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylim([5e-4, 20]);
|
ylim([1e-4, 20]);
|
||||||
legend('location', 'northeast');
|
yticks([1e-4, 1e-3, 1e-2, 1e-1, 1, 1e1]);
|
||||||
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
% Phase
|
||||||
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
|
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
|
||||||
@ -137,8 +171,7 @@ plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
|
|||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
yticks([-360:90:360]);
|
yticks([-180:90:180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
xticks([0.1, 1, 10, 100, 1000]);
|
|
||||||
|
@ -6,6 +6,8 @@ s = zpk('s');
|
|||||||
|
|
||||||
freqs = logspace(-2, 4, 1000);
|
freqs = logspace(-2, 4, 1000);
|
||||||
|
|
||||||
|
addpath('./src');
|
||||||
|
|
||||||
% Weights
|
% Weights
|
||||||
% First we define the weights.
|
% First we define the weights.
|
||||||
|
|
||||||
@ -28,9 +30,9 @@ plot(freqs, 1./abs(squeeze(freqresp(W3, freqs, 'Hz'))), '--', 'DisplayName', '$|
|
|||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]); ylim([2e-4, 1.3e1])
|
||||||
xticks([0.01, 0.1, 1, 10, 100, 1000]);
|
leg = legend('location', 'northeast', 'FontSize', 8);
|
||||||
legend('location', 'northeast');
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
% H-Infinity Synthesis
|
% H-Infinity Synthesis
|
||||||
% Then we create the generalized plant =P=.
|
% Then we create the generalized plant =P=.
|
||||||
@ -54,8 +56,10 @@ H3 = tf(H(2));
|
|||||||
H1 = 1 - H2 - H3;
|
H1 = 1 - H2 - H3;
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = subplot(2,1,1);
|
% Magnitude
|
||||||
|
ax1 = nexttile([2, 1]);
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$|W_1|^{-1}$');
|
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$|W_1|^{-1}$');
|
||||||
@ -74,10 +78,12 @@ hold off;
|
|||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylim([5e-4, 20]);
|
ylim([1e-4, 20]);
|
||||||
legend('location', 'northeast');
|
leg = legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
|
leg.ItemTokenSize(1) = 18;
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
% Phase
|
||||||
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))));
|
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))));
|
||||||
@ -88,8 +94,7 @@ plot(freqs, 180/pi*phase(squeeze(freqresp(H3, freqs, 'Hz'))));
|
|||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
set(gca, 'XScale', 'log');
|
set(gca, 'XScale', 'log');
|
||||||
yticks([-360:90:360]);
|
yticks([-360:90:360]); ylim([-270, 270]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
xticks([0.1, 1, 10, 100, 1000]);
|
|
||||||
|
@ -418,7 +418,7 @@ Filter Design for Active Vibration Isolation of LIGO][4]]).
|
|||||||
functions and designed complementary filters
|
functions and designed complementary filters
|
||||||
[[file:figs/hinf_filters_results.pdf]]
|
[[file:figs/hinf_filters_results.pdf]]
|
||||||
|
|
||||||
** Extension to set of three complementary filters
|
** TODO Extension to set of three complementary filters
|
||||||
In certain applications, more than two sensors are used to measure the
|
In certain applications, more than two sensors are used to measure the
|
||||||
same quantity and can be merged together to form a "super sensor". In
|
same quantity and can be merged together to form a "super sensor". In
|
||||||
such case, a set of three (or more) complementary filters is required.
|
such case, a set of three (or more) complementary filters is required.
|
||||||
|
@ -374,6 +374,55 @@ Configuration file is accessible [[file:config.org][here]].
|
|||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/h_infinity_robust_fusion.png]]
|
[[file:figs/h_infinity_robust_fusion.png]]
|
||||||
|
|
||||||
|
* Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters
|
||||||
|
#+begin_src latex :file ligo_super_sensor_architecture.pdf :tangle figs/ligo_super_sensor_architecture.tex :exports both
|
||||||
|
\definecolor{myblue}{rgb}{0, 0.447, 0.741}
|
||||||
|
\definecolor{myred}{rgb}{0.8500, 0.325, 0.098}
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[block, align=center] (position) at (0, 2.2) {Position\\Sensor};
|
||||||
|
\node[block, align=center] (seismometer) at (0, 1.0) {Seismometer};
|
||||||
|
\node[block, align=center] (geophone) at (0,-0.6) {Geophone};
|
||||||
|
|
||||||
|
\node[branch, left=0.4 of seismometer] (x);
|
||||||
|
|
||||||
|
\node[block, right=1.1 of seismometer](H1){$L_2(s)$};
|
||||||
|
\node[block](H2) at (H1|-geophone) {$H_2(s)$};
|
||||||
|
|
||||||
|
\node[addb] (add) at (4, 0){};
|
||||||
|
\node[block, right=1.1 of add](H2p) {$H_1(s)$};
|
||||||
|
\node[block] (H1p) at (H2p|-position) {$L_1(s)$};
|
||||||
|
|
||||||
|
\node[addb] (addp) at (7, 1.0){};
|
||||||
|
|
||||||
|
\draw[->] ($(x)+(-1.0, 0)$) -- (seismometer.west);
|
||||||
|
\draw[->] (x.center) |- (position.west);
|
||||||
|
\draw[->] (x.center) |- (geophone.west);
|
||||||
|
\draw[->] (position.east) -- (H1p.west);
|
||||||
|
\draw[->] (seismometer.east) -- (H1.west);
|
||||||
|
\draw[->] (geophone.east) -- (H2.west);
|
||||||
|
\draw[->] (H1) -| (add.north);
|
||||||
|
\draw[->] (H2) -| (add.south);
|
||||||
|
\draw[->] (add.east) -- (H2p.west);
|
||||||
|
\draw[->] (H1p) -| (addp.north);
|
||||||
|
\draw[->] (H2p) -| (addp.south);
|
||||||
|
\draw[->] (addp.east) -- ++(1.0, 0);
|
||||||
|
|
||||||
|
\begin{scope}[on background layer]
|
||||||
|
\node[fit={(x.west|-geophone.south) (position.north-|addp.east)}, fill=black!20!white, draw, inner sep=6pt] (supersensor) {};
|
||||||
|
\node[below] at (supersensor.north) {Super Sensor};
|
||||||
|
|
||||||
|
\node[fit={(x.west|-seismometer.north) (add.east|-geophone.south)}, fill=black!10!white, draw, inner sep=3pt] (superinertialsensor) {};
|
||||||
|
\node[] at (superinertialsensor.center) {"Inertial" Super Sensor};
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:ligo_super_sensor_architecture
|
||||||
|
#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters ([[./figs/ligo_super_sensor_architecture.png][png]], [[./figs/ligo_super_sensor_architecture.pdf][pdf]], [[./figs/ligo_super_sensor_architecture.tex][tex]]).
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/ligo_super_sensor_architecture.png]]
|
||||||
|
|
||||||
* Architecture for $\mathcal{H}_\infty$ synthesis of three complementary filters
|
* Architecture for $\mathcal{H}_\infty$ synthesis of three complementary filters
|
||||||
#+begin_src latex :file comp_filter_three_hinf.pdf :tangle figs/comp_filter_three_hinf.tex
|
#+begin_src latex :file comp_filter_three_hinf.pdf :tangle figs/comp_filter_three_hinf.tex
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
|