Rework Matlab figure size + Start section 4

This commit is contained in:
Thomas Dehaeze 2021-05-20 16:27:51 +02:00
parent c114cdbc58
commit 1fda0d3383
26 changed files with 1305 additions and 887 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View 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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

@ -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
<<sec:application_ligo>>
** 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
<<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:
- 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}$
- Between $\SI{0.008}{Hz}$ to $\SI{0.04}{Hz}$, the filter 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$
- Above $\SI{0.1}{Hz}$, the magnitude of the complementary filter should be less than $0.045$
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 $|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 $L_1(s)$ should attenuate the input signal proportional to frequency cubed
- 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 $|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
<<sec:ligo_weights>>

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2021-05-20 jeu. 11:13
% Created 2021-05-20 jeu. 16:26
% Intended LaTeX compiler: pdflatex
\documentclass[preprint, sort&compress]{elsarticle}
\usepackage[utf8]{inputenc}
@ -58,7 +58,7 @@ Sensor fusion \sep{} Optimal filters \sep{} \(\mathcal{H}_\infty\) synthesis \se
\end{frontmatter}
\section{Introduction}
\label{sec:org810a8ae}
\label{sec:orgc28ff6a}
\label{sec:introduction}
\begin{itemize}
\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.
\section{Sensor Fusion and Complementary Filters Requirements}
\label{sec:orge97289b}
\label{sec:org5a2a4a4}
\label{sec:requirements}
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.
These requirements are discussed in this section.
\subsection{Sensor Fusion Architecture}
\label{sec:org0a17c4e}
\label{sec:orgb29eeb0}
\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\).
@ -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.
\subsection{Sensor Models and Sensor Normalization}
\label{sec:org52d9122}
\label{sec:org749994d}
\label{sec:sensor_models}
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}
\subsection{Noise Sensor Filtering}
\label{sec:orgf08876b}
\label{sec:org0f07eb6}
\label{sec:noise_filtering}
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.
\subsection{Sensor Fusion Robustness}
\label{sec:org3269d9e}
\label{sec:orgdb0117a}
\label{sec:fusion_robustness}
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.
\section{Complementary Filters Shaping}
\label{sec:orga11797e}
\label{sec:orgba2ddcd}
\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.
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.
\subsection{Synthesis Objective}
\label{sec:orgc196ed6}
\label{sec:orgef373f7}
\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}.
@ -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.
\subsection{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis}
\label{sec:orgf037f4b}
\label{sec:org9d293ca}
\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.
@ -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.
\subsection{Weighting Functions Design}
\label{sec:org80ebc41}
\label{sec:org552a374}
\label{sec:hinf_weighting_func}
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}
\subsection{Validation of the proposed synthesis method}
\label{sec:orge831635}
\label{sec:orgdf78400}
\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:
@ -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.
\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}
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.
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 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}
\label{sec:orgd3d9b91}
\label{sec:org45a6d0a}
\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}
\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 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.04}{Hz}\) to \(\SI{0.1}{Hz}\), the magnitude of the transfer function should be less than \(3\)
\item Above \(\SI{0.1}{Hz}\), the magnitude of the complementary filter should be less than \(0.045\)
\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 \(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 \(|L_1(j\omega)|\) should be less than \(3\)
\item Above \(\SI{0.1}{Hz}\), the magnitude \(|H_1(j\omega)|\) should be less than \(0.045\)
\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}
\label{sec:orgcda22a3}
\label{sec:orgeca6c60}
\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.
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}
\subsection{\(\mathcal{H}_\infty\) Synthesis}
\label{sec:org5fc1ebf}
\label{sec:orgcaaff49}
\label{sec:ligo_results}
\(\mathcal{H}_\infty\) synthesis is performed using the architecture shown in Fig. \ref{eq:generalized_plant}.
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}
\section{Discussion}
\label{sec:org2363233}
\label{sec:orga827f5f}
\subsection{Alternative configuration}
\label{sec:org164637d}
\label{sec:org7abd40b}
\begin{itemize}
\item Feedback architecture : Similar to mixed sensitivity (add schematic of feedback loop with weights)
\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
\subsection{Imposing zero at origin / roll-off}
\label{sec:orgf116368}
\label{sec:orge105bdf}
3 methods:
Link to literature about doing that with mixed sensitivity
\subsection{Synthesis of Three Complementary Filters}
\label{sec:orgbdd0317}
\label{sec:org3fd7562}
\label{sec:hinf_three_comp_filters}
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.
@ -570,7 +593,7 @@ The bode plots of the obtained complementary filters are shown in Fig. \ref{fig:
\end{figure}
\section{Conclusion}
\label{sec:org150800b}
\label{sec:orgc3f0120}
\label{sec:conclusion}
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.
@ -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.
\section*{Acknowledgment}
\label{sec:org6c6a099}
\label{sec:org1be2c18}
This research benefited from a FRIA grant from the French Community of Belgium.
\bibliographystyle{elsarticle-num}

View File

@ -93,19 +93,6 @@
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,
author = {Robert Mahony and Tarek Hamel and Jean-Michel Pflimlin},
title = {Nonlinear Complementary Filters on the Special Orthogonal
@ -471,7 +458,7 @@
number = 3,
pages = {321--325},
year = 1975,
doi = 10.1109/TAES.1975.308081,
doi = {10.1109/TAES.1975.308081},
url = {https://doi.org/10.1109/TAES.1975.308081},
keywords = {sensor fusion, complementary filters},
publisher = {IEEE},
@ -488,8 +475,8 @@
}
@inproceedings{becker15_compl_filter_desig_three_frequen_bands,
author = {Becker, Thiago; Fabro, Joao Alberto; Oliveira, Andre
Schneider de; Reis, Luis Paulo},
author = {Becker, Thiago and Fabro, Joao Alberto and Oliveira, Andre
Schneider de and Reis, Luis Paulo},
title = {Complementary Filter Design with Three Frequency Bands:
Robot Attitude Estimation},
booktitle = {International Conference on Autonomous Robot Systems and
@ -538,7 +525,7 @@
number = 5,
pages = {483--497},
year = 2001,
doi = 10.1177/095965180121500505,
doi = {10.1177/095965180121500505},
url = {https://doi.org/10.1177/095965180121500505},
keywords = {sensor fusion, complementary filters},
publisher = {SAGE Publications Sage UK: London, England},
@ -554,3 +541,48 @@
url = {https://doi.org/10.1109/tct.1957.1086345},
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,
}

View File

@ -292,7 +292,7 @@ xlim([freqs(1), freqs(end)]);
#+end_src
#+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
#+name: fig:hinf_filters_results
@ -492,14 +492,14 @@ plot(freqs, 180/pi*phase(squeeze(freqresp(H3, freqs, 'Hz'))));
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-360:90:360]); ylim([-270, 270]);
yticks([-180:90:180]); ylim([-220, 220]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+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
#+name: fig:three_complementary_filters_results
@ -739,30 +739,39 @@ tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
plot(w, abs(H), 'k-');
plot(w, abs(1-H), 'k--');
hold off;
set(gca,'ColorOrderIndex',1)
plot(w, abs(1-H), '-', 'DisplayName', '$L_1$');
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');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
ylim([5e-3, 5]);
set(gca, 'XTickLabel',[]); ylabel('Magnitude');
hold off;
ylim([5e-3, 10]);
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
leg.ItemTokenSize(1) = 16;
% Phase
ax2 = nexttile;
hold on;
plot(w, 180/pi*unwrap(angle(H)), 'k-');
plot(w, 180/pi*unwrap(angle(1-H)), 'k--');
plot(w, 180/pi*unwrap(angle(1-H)), '-');
plot(w, 180/pi*unwrap(angle(H)), '-');
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-450:90:180]); ylim([-450, 200]);
yticks([-360:180:180]); ylim([-380, 200]);
linkaxes([ax1,ax2],'x');
xlim([1e-3, 1]);
#+end_src
#+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
#+name: fig:fir_filter_ligo
@ -812,22 +821,22 @@ wL = minreal(ss(wL));
figure;
hold on;
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(inv(wH), freqs, 'Hz'))), '-', 'DisplayName', '$|w_H|^{-1}$');
set(gca,'ColorOrderIndex',2);
plot(freqs, abs(squeeze(freqresp(inv(wL), freqs, 'Hz'))), '-', 'DisplayName', '$|w_L|^{-1}$');
plot(freqs, abs(squeeze(freqresp(inv(wL), freqs, 'Hz'))), '-', 'DisplayName', '$|W_L|^{-1}$');
plot([0.1, 10], [0.045, 0.045], 'k:', 'DisplayName', 'Spec. on $L_1$');
plot([0.0001, 0.008], [8e-3, 8e-3], 'k--', 'DisplayName', 'Spec.');
set(gca,'ColorOrderIndex',2);
plot(freqs, abs(squeeze(freqresp(inv(wH), freqs, 'Hz'))), '-', 'DisplayName', '$|W_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');
plot([0.1, 10], [0.045, 0.045], 'k--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
ylim([5e-3, 10]);
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
leg.ItemTokenSize(1) = 16;
#+end_src
#+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;
hold on;
set(gca,'ColorOrderIndex',1);
plot([0.0001, 0.008], [8e-3, 8e-3], ':', 'DisplayName', 'Spec. on $H_H$');
set(gca,'ColorOrderIndex',1);
plot([0.008 0.04], [8e-3, 1], ':', 'HandleVisibility', 'off');
set(gca,'ColorOrderIndex',1);
plot([0.04 0.1], [3, 3], ':', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'DisplayName', '$L_1^\prime$');
plot([0.1, 10], [0.045, 0.045], 'k:', 'DisplayName', 'Spec. on $L_1$');
set(gca,'ColorOrderIndex',2);
plot([0.1, 10], [0.045, 0.045], ':', 'DisplayName', 'Spec. on $H_L$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'DisplayName', '$H_H$');
set(gca,'ColorOrderIndex',2);
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'DisplayName', '$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$');
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');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
ylim([5e-3, 10]);
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
leg.ItemTokenSize(1) = 16;
#+end_src
#+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]);
hold on;
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'))), '-', ...
'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);
plot(w, abs(H), '--', ...
'DisplayName', '$H_H(s)$ - FIR');
set(gca,'ColorOrderIndex',2);
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;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude');
@ -972,25 +976,25 @@ leg.ItemTokenSize(1) = 16;
ax2 = nexttile;
hold on;
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')))), '-');
set(gca,'ColorOrderIndex',2);
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Hh, freqs, 'Hz')))), '-');
set(gca,'ColorOrderIndex',1);
plot(w, 180/pi*unwrap(angle(H)), '--');
set(gca,'ColorOrderIndex',2);
plot(w, 180/pi*unwrap(angle(1-H)), '--');
set(gca,'ColorOrderIndex',2);
plot(w, 180/pi*unwrap(angle(H)), '--');
set(gca, 'XScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks([-450:90:180]); ylim([-450, 200]);
yticks([-360:180:180]); ylim([-380, 200]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+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
#+name: fig:comp_fir_ligo_hinf

View File

@ -6,6 +6,8 @@ s = zpk('s');
freqs = logspace(-3, 0, 1000);
addpath('./src');
% Specifications
% The specifications for the filters are:
% 1. From $0$ to $0.008\text{ Hz}$,the magnitude of the filters transfer function should be less than or equal to $8 \times 10^{-3}$
@ -31,7 +33,8 @@ xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-4, 10]);
legend('location', 'northeast');
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% FIR Filter
% 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;
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = subplot(2,1,1);
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
plot(w, abs(H), 'k-');
plot(w, abs(1-H), 'k--');
@ -195,18 +200,18 @@ ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
ylim([5e-3, 5]);
ax2 = subplot(2,1,2);
% Phase
ax2 = nexttile;
hold on;
plot(w, 180/pi*angle(H), 'k-');
plot(w, 180/pi*angle(1-H), 'k--');
plot(w, 180/pi*unwrap(angle(H)), 'k-');
plot(w, 180/pi*unwrap(angle(1-H)), 'k--');
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-540:90:360]);
yticks([-450:90:180]); ylim([-450, 200]);
linkaxes([ax1,ax2],'x');
xlim([1e-3, 1]);
xticks([0.01, 0.1, 1, 10, 100, 1000]);
% Weights
% 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;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
legend('location', 'southeast');
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% H-Infinity Synthesis
% 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;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
legend('location', 'southeast');
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% 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]].
figure;
ax1 = subplot(2,1,1);
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
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);
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);
plot(w, abs(H), '--');
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');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude');
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;
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);
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);
plot(w, 180/pi*angle(H), '--', 'DisplayName', 'FIR filters');
plot(w, 180/pi*unwrap(angle(H)), '--');
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');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks([-540:90:360]);
legend('location', 'northeast');
yticks([-450:90:180]); ylim([-450, 200]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
xticks([0.001, 0.01, 0.1, 1]);

View File

@ -6,6 +6,8 @@ s = zpk('s');
freqs = logspace(-1, 3, 1000);
addpath('./src');
% Design of Weighting Function
% A formula is proposed to help the design of the weighting functions:
% \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]].
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
% #+caption: Amplitude of the proposed formula for the weighting functions
% [[file:figs-tikz/weight_formula.png]]
% #+caption: Gain of the Weighting Function formula
% #+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;
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;
figure;
@ -45,9 +80,10 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([5e-4, 20]);
ylim([1e-4, 20]);
xticks([0.1, 1, 10, 100, 1000]);
legend('location', 'northeast');
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% H-Infinity Synthesis
% We define the generalized plant $P$ on matlab.
@ -67,35 +103,28 @@ P = [W1 -W1;
% #+RESULTS:
% #+begin_example
% [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
% 1.050e+03 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
% 525.050 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
% 262.575 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
% 131.337 2.8e+01 2.4e-07 4.1e+00 -1.0e-13 0.0000 p
% 65.719 2.8e+01 2.4e-07 4.1e+00 -9.5e-14 0.0000 p
% 32.909 2.8e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
% 16.505 2.8e+01 2.4e-07 4.1e+00 -1.0e-13 0.0000 p
% 8.302 2.8e+01 2.4e-07 4.1e+00 -7.2e-14 0.0000 p
% 4.201 2.8e+01 2.4e-07 4.1e+00 -2.5e-25 0.0000 p
% 2.151 2.7e+01 2.4e-07 4.1e+00 -3.8e-14 0.0000 p
% 1.125 2.6e+01 2.4e-07 4.1e+00 -5.4e-24 0.0000 p
% 0.613 2.3e+01 -3.7e+01# 4.1e+00 0.0e+00 0.0000 f
% 0.869 2.6e+01 -3.7e+02# 4.1e+00 0.0e+00 0.0000 f
% 0.997 2.6e+01 -1.1e+04# 4.1e+00 0.0e+00 0.0000 f
% 1.061 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 p
% 1.029 2.6e+01 2.4e-07 4.1e+00 0.0e+00 0.0000 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 X>=0 Y>=0 rho(XY)<1 p/f
% 1.795e+01 1.4e-07 0.0e+00 1.481e-16 p
% 2.406e+00 1.4e-07 0.0e+00 3.604e-15 p
% 8.806e-01 -3.1e+02 # -1.4e-16 7.370e-19 f
% 1.456e+00 1.4e-07 0.0e+00 1.499e-18 p
% 1.132e+00 1.4e-07 0.0e+00 8.587e-15 p
% 9.985e-01 1.4e-07 0.0e+00 2.331e-13 p
% 9.377e-01 -7.7e+02 # -6.6e-17 3.744e-14 f
% 9.676e-01 -2.0e+03 # -5.7e-17 1.046e-13 f
% 9.829e-01 -6.6e+03 # -1.1e-16 2.949e-13 f
% 9.907e-01 1.4e-07 0.0e+00 2.374e-19 p
% 9.868e-01 -1.6e+04 # -6.4e-17 5.331e-14 f
% 9.887e-01 -5.1e+04 # -1.5e-17 2.703e-19 f
% 9.897e-01 1.4e-07 0.0e+00 1.583e-11 p
% Limiting gains...
% 9.897e-01 1.5e-07 0.0e+00 1.183e-12 p
% 9.897e-01 6.9e-07 0.0e+00 1.365e-12 p
% Gamma value achieved: 1.0036
% Best performance (actual): 0.9897
% #+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]].
@ -108,8 +137,10 @@ H1 = 1 - H2;
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = subplot(2,1,1);
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
set(gca,'ColorOrderIndex',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');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
ylim([5e-4, 20]);
legend('location', 'northeast');
ylim([1e-4, 20]);
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;
set(gca,'ColorOrderIndex',1)
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;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-360:90:360]);
yticks([-180:90:180]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
xticks([0.1, 1, 10, 100, 1000]);

View File

@ -6,6 +6,8 @@ s = zpk('s');
freqs = logspace(-2, 4, 1000);
addpath('./src');
% 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');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
xticks([0.01, 0.1, 1, 10, 100, 1000]);
legend('location', 'northeast');
xlim([freqs(1), freqs(end)]); ylim([2e-4, 1.3e1])
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% H-Infinity Synthesis
% Then we create the generalized plant =P=.
@ -54,8 +56,10 @@ H3 = tf(H(2));
H1 = 1 - H2 - H3;
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = subplot(2,1,1);
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
set(gca,'ColorOrderIndex',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');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
ylim([5e-4, 20]);
legend('location', 'northeast');
ylim([1e-4, 20]);
leg = legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
leg.ItemTokenSize(1) = 18;
ax2 = subplot(2,1,2);
% Phase
ax2 = nexttile;
hold on;
set(gca,'ColorOrderIndex',1)
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;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-360:90:360]);
yticks([-360:90:360]); ylim([-270, 270]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
xticks([0.1, 1, 10, 100, 1000]);

View File

@ -418,7 +418,7 @@ Filter Design for Active Vibration Isolation of LIGO][4]]).
functions and designed complementary filters
[[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
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.

View File

@ -374,6 +374,55 @@ Configuration file is accessible [[file:config.org][here]].
#+RESULTS:
[[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
#+begin_src latex :file comp_filter_three_hinf.pdf :tangle figs/comp_filter_three_hinf.tex
\begin{tikzpicture}