Rework section 3

This commit is contained in:
Thomas Dehaeze 2021-05-20 11:14:26 +02:00
parent afcd720965
commit c114cdbc58
13 changed files with 292 additions and 260 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -1,195 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="156.063pt" height="136.315pt" viewBox="0 0 156.063 136.315" version="1.2"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="156.063pt" height="104.137pt" viewBox="0 0 156.063 104.137" version="1.2">
<defs> <defs>
<g> <g>
<symbol overflow="visible" id="glyph0-0"> <symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/> <path style="stroke:none;" d=""/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-1"> <symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 7.46875 -5.265625 C 7.46875 -6.03125 6.8125 -6.765625 5.515625 -6.765625 L 2.3125 -6.765625 C 2.125 -6.765625 2.015625 -6.765625 2.015625 -6.578125 C 2.015625 -6.453125 2.09375 -6.453125 2.296875 -6.453125 C 2.421875 -6.453125 2.609375 -6.453125 2.71875 -6.4375 C 2.875 -6.421875 2.9375 -6.390625 2.9375 -6.28125 C 2.9375 -6.234375 2.9375 -6.21875 2.90625 -6.09375 L 1.578125 -0.765625 C 1.46875 -0.390625 1.453125 -0.3125 0.671875 -0.3125 C 0.5 -0.3125 0.390625 -0.3125 0.390625 -0.125 C 0.390625 0 0.515625 0 0.546875 0 L 1.796875 -0.03125 L 2.4375 -0.015625 C 2.65625 -0.015625 2.875 0 3.078125 0 C 3.15625 0 3.28125 0 3.28125 -0.203125 C 3.28125 -0.3125 3.1875 -0.3125 3 -0.3125 C 2.640625 -0.3125 2.359375 -0.3125 2.359375 -0.484375 C 2.359375 -0.546875 2.375 -0.59375 2.390625 -0.65625 L 3 -3.125 L 4.6875 -3.125 C 6.09375 -3.125 7.46875 -4.15625 7.46875 -5.265625 Z M 6.546875 -5.515625 C 6.546875 -5.125 6.34375 -4.265625 5.96875 -3.90625 C 5.46875 -3.46875 4.875 -3.390625 4.4375 -3.390625 L 3.046875 -3.390625 L 3.71875 -6.078125 C 3.796875 -6.421875 3.828125 -6.453125 4.25 -6.453125 L 5.203125 -6.453125 C 6.015625 -6.453125 6.546875 -6.1875 6.546875 -5.515625 Z M 6.546875 -5.515625 "/> <path style="stroke:none;" d="M 7.453125 -5.25 C 7.453125 -6.015625 6.796875 -6.75 5.5 -6.75 L 2.296875 -6.75 C 2.109375 -6.75 2 -6.75 2 -6.5625 C 2 -6.4375 2.09375 -6.4375 2.296875 -6.4375 C 2.421875 -6.4375 2.59375 -6.421875 2.71875 -6.421875 C 2.875 -6.40625 2.9375 -6.375 2.9375 -6.265625 C 2.9375 -6.21875 2.921875 -6.1875 2.890625 -6.078125 L 1.5625 -0.765625 C 1.46875 -0.390625 1.453125 -0.3125 0.671875 -0.3125 C 0.5 -0.3125 0.390625 -0.3125 0.390625 -0.125 C 0.390625 0 0.515625 0 0.546875 0 L 1.796875 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.078125 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.1875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.375 -0.59375 2.375 -0.65625 L 2.984375 -3.125 L 4.671875 -3.125 C 6.078125 -3.125 7.453125 -4.140625 7.453125 -5.25 Z M 6.53125 -5.484375 C 6.53125 -5.109375 6.328125 -4.25 5.9375 -3.90625 C 5.453125 -3.453125 4.859375 -3.375 4.421875 -3.375 L 3.03125 -3.375 L 3.703125 -6.0625 C 3.796875 -6.40625 3.8125 -6.4375 4.234375 -6.4375 L 5.1875 -6.4375 C 6 -6.4375 6.53125 -6.171875 6.53125 -5.484375 Z M 6.53125 -5.484375 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-2"> <symbol overflow="visible" id="glyph0-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 "/> <path style="stroke:none;" d="M 3.90625 -1.53125 C 3.90625 -1.890625 3.71875 -2.140625 3.609375 -2.25 C 3.34375 -2.53125 3.046875 -2.578125 2.609375 -2.671875 C 2.265625 -2.75 1.859375 -2.8125 1.859375 -3.265625 C 1.859375 -3.546875 2.109375 -4.140625 2.96875 -4.140625 C 3.21875 -4.140625 3.71875 -4.078125 3.859375 -3.6875 C 3.578125 -3.6875 3.390625 -3.46875 3.390625 -3.25 C 3.390625 -3.109375 3.46875 -2.96875 3.6875 -2.96875 C 3.90625 -2.96875 4.140625 -3.125 4.140625 -3.515625 C 4.140625 -3.953125 3.71875 -4.359375 2.96875 -4.359375 C 1.671875 -4.359375 1.296875 -3.359375 1.296875 -2.921875 C 1.296875 -2.15625 2.03125 -2 2.328125 -1.953125 C 2.828125 -1.84375 3.34375 -1.734375 3.34375 -1.1875 C 3.34375 -0.9375 3.125 -0.109375 1.9375 -0.109375 C 1.796875 -0.109375 1.03125 -0.109375 0.8125 -0.625 C 1.1875 -0.578125 1.4375 -0.875 1.4375 -1.15625 C 1.4375 -1.375 1.28125 -1.5 1.0625 -1.5 C 0.8125 -1.5 0.515625 -1.296875 0.515625 -0.84375 C 0.515625 -0.28125 1.078125 0.109375 1.921875 0.109375 C 3.53125 0.109375 3.90625 -1.09375 3.90625 -1.53125 Z M 3.90625 -1.53125 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-3"> <symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 10.375 -6.65625 C 10.375 -6.703125 10.34375 -6.765625 10.265625 -6.765625 C 10.03125 -6.765625 9.75 -6.734375 9.5 -6.734375 C 9.15625 -6.734375 8.796875 -6.765625 8.46875 -6.765625 C 8.40625 -6.765625 8.28125 -6.765625 8.28125 -6.578125 C 8.28125 -6.46875 8.375 -6.453125 8.4375 -6.453125 C 8.671875 -6.453125 9.015625 -6.375 9.015625 -6.078125 C 9.015625 -5.96875 8.96875 -5.890625 8.890625 -5.75 L 6.21875 -1.078125 L 5.84375 -6 C 5.828125 -6.1875 5.8125 -6.453125 6.53125 -6.453125 C 6.703125 -6.453125 6.8125 -6.453125 6.8125 -6.65625 C 6.8125 -6.75 6.703125 -6.765625 6.65625 -6.765625 C 6.265625 -6.765625 5.84375 -6.734375 5.453125 -6.734375 C 5.21875 -6.734375 4.640625 -6.765625 4.40625 -6.765625 C 4.34375 -6.765625 4.21875 -6.765625 4.21875 -6.5625 C 4.21875 -6.453125 4.3125 -6.453125 4.453125 -6.453125 C 4.890625 -6.453125 4.96875 -6.40625 4.984375 -6.21875 L 5.046875 -5.453125 L 2.53125 -1.078125 L 2.15625 -6.109375 C 2.15625 -6.21875 2.15625 -6.453125 2.90625 -6.453125 C 3.015625 -6.453125 3.125 -6.453125 3.125 -6.65625 C 3.125 -6.765625 2.984375 -6.765625 2.984375 -6.765625 C 2.578125 -6.765625 2.171875 -6.734375 1.765625 -6.734375 C 1.421875 -6.734375 1.0625 -6.765625 0.71875 -6.765625 C 0.671875 -6.765625 0.546875 -6.765625 0.546875 -6.578125 C 0.546875 -6.453125 0.640625 -6.453125 0.796875 -6.453125 C 1.28125 -6.453125 1.296875 -6.375 1.3125 -6.09375 L 1.765625 -0.046875 C 1.765625 0.140625 1.78125 0.21875 1.921875 0.21875 C 2.046875 0.21875 2.078125 0.15625 2.15625 0.015625 L 5.078125 -5.046875 L 5.4375 -0.046875 C 5.453125 0.171875 5.484375 0.21875 5.59375 0.21875 C 5.71875 0.21875 5.78125 0.125 5.828125 0.03125 L 9.078125 -5.609375 C 9.328125 -6.046875 9.5625 -6.40625 10.1875 -6.453125 C 10.28125 -6.46875 10.375 -6.46875 10.375 -6.65625 Z M 10.375 -6.65625 "/> <path style="stroke:none;" d="M 10.34375 -6.640625 C 10.34375 -6.671875 10.3125 -6.75 10.234375 -6.75 C 10 -6.75 9.71875 -6.71875 9.46875 -6.71875 C 9.140625 -6.71875 8.765625 -6.75 8.4375 -6.75 C 8.390625 -6.75 8.25 -6.75 8.25 -6.5625 C 8.25 -6.453125 8.34375 -6.4375 8.40625 -6.4375 C 8.640625 -6.421875 8.984375 -6.34375 8.984375 -6.046875 C 8.984375 -5.9375 8.9375 -5.859375 8.859375 -5.734375 L 6.1875 -1.078125 L 5.828125 -5.96875 C 5.8125 -6.171875 5.796875 -6.421875 6.515625 -6.4375 C 6.6875 -6.4375 6.78125 -6.4375 6.78125 -6.640625 C 6.78125 -6.734375 6.671875 -6.75 6.640625 -6.75 C 6.234375 -6.75 5.828125 -6.71875 5.4375 -6.71875 C 5.203125 -6.71875 4.625 -6.75 4.390625 -6.75 C 4.328125 -6.75 4.203125 -6.75 4.203125 -6.546875 C 4.203125 -6.4375 4.3125 -6.4375 4.4375 -6.4375 C 4.875 -6.4375 4.953125 -6.375 4.96875 -6.1875 L 5.03125 -5.4375 L 2.53125 -1.078125 L 2.15625 -6.078125 C 2.15625 -6.203125 2.15625 -6.421875 2.90625 -6.4375 C 3 -6.4375 3.109375 -6.4375 3.109375 -6.640625 C 3.109375 -6.75 2.96875 -6.75 2.96875 -6.75 C 2.578125 -6.75 2.15625 -6.71875 1.75 -6.71875 C 1.40625 -6.71875 1.0625 -6.75 0.71875 -6.75 C 0.671875 -6.75 0.546875 -6.75 0.546875 -6.5625 C 0.546875 -6.4375 0.625 -6.4375 0.796875 -6.4375 C 1.28125 -6.4375 1.296875 -6.34375 1.3125 -6.078125 L 1.75 -0.046875 C 1.765625 0.140625 1.78125 0.21875 1.921875 0.21875 C 2.03125 0.21875 2.0625 0.15625 2.15625 0.015625 L 5.0625 -5.03125 L 5.421875 -0.046875 C 5.4375 0.171875 5.453125 0.21875 5.578125 0.21875 C 5.703125 0.21875 5.765625 0.125 5.8125 0.03125 L 9.0625 -5.59375 C 9.296875 -6.03125 9.546875 -6.390625 10.15625 -6.4375 C 10.25 -6.453125 10.34375 -6.453125 10.34375 -6.640625 Z M 10.34375 -6.640625 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-4"> <symbol overflow="visible" id="glyph0-4">
<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 "/> <path style="stroke:none;" d="M 6.828125 -3.671875 C 6.828125 -4.21875 6.5625 -4.359375 6.390625 -4.359375 C 6.140625 -4.359375 5.890625 -4.109375 5.890625 -3.890625 C 5.890625 -3.765625 5.953125 -3.703125 6.046875 -3.625 C 6.15625 -3.515625 6.40625 -3.265625 6.40625 -2.78125 C 6.40625 -2.453125 6.109375 -1.484375 5.859375 -0.984375 C 5.59375 -0.453125 5.25 -0.109375 4.765625 -0.109375 C 4.3125 -0.109375 4.03125 -0.40625 4.03125 -0.96875 C 4.03125 -1.25 4.109375 -1.546875 4.140625 -1.6875 L 4.5625 -3.34375 C 4.609375 -3.5625 4.703125 -3.9375 4.703125 -3.984375 C 4.703125 -4.171875 4.578125 -4.25 4.421875 -4.25 C 4.3125 -4.25 4.125 -4.171875 4.0625 -3.984375 C 4.03125 -3.90625 3.5625 -2.03125 3.5 -1.765625 C 3.421875 -1.46875 3.40625 -1.296875 3.40625 -1.109375 C 3.40625 -1 3.40625 -0.984375 3.421875 -0.9375 C 3.1875 -0.421875 2.890625 -0.109375 2.515625 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1 C 1.71875 -1.328125 1.765625 -1.703125 2.234375 -2.921875 C 2.34375 -3.21875 2.40625 -3.359375 2.40625 -3.5625 C 2.40625 -4 2.078125 -4.359375 1.59375 -4.359375 C 0.65625 -4.359375 0.28125 -2.9375 0.28125 -2.84375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.5625 -2.921875 C 0.828125 -3.84375 1.21875 -4.140625 1.5625 -4.140625 C 1.65625 -4.140625 1.8125 -4.140625 1.8125 -3.828125 C 1.8125 -3.578125 1.703125 -3.296875 1.625 -3.125 C 1.1875 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.734375 0.109375 2.484375 0.109375 C 2.640625 0.109375 3.109375 0.109375 3.5 -0.578125 C 3.765625 0.046875 4.4375 0.109375 4.734375 0.109375 C 5.484375 0.109375 5.921875 -0.515625 6.171875 -1.109375 C 6.5 -1.875 6.828125 -3.203125 6.828125 -3.671875 Z M 6.828125 -3.671875 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-5"> <symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.84375 -3.6875 C 6.84375 -4.234375 6.578125 -4.375 6.40625 -4.375 C 6.15625 -4.375 5.90625 -4.125 5.90625 -3.90625 C 5.90625 -3.78125 5.96875 -3.71875 6.0625 -3.640625 C 6.171875 -3.53125 6.421875 -3.265625 6.421875 -2.796875 C 6.421875 -2.453125 6.125 -1.484375 5.875 -0.984375 C 5.609375 -0.453125 5.265625 -0.109375 4.78125 -0.109375 C 4.3125 -0.109375 4.046875 -0.40625 4.046875 -0.96875 C 4.046875 -1.25 4.125 -1.5625 4.15625 -1.6875 L 4.578125 -3.359375 C 4.625 -3.578125 4.71875 -3.9375 4.71875 -4 C 4.71875 -4.1875 4.59375 -4.265625 4.4375 -4.265625 C 4.3125 -4.265625 4.140625 -4.1875 4.078125 -4 C 4.046875 -3.921875 3.578125 -2.03125 3.5 -1.765625 C 3.4375 -1.46875 3.421875 -1.296875 3.421875 -1.125 C 3.421875 -1.015625 3.421875 -0.984375 3.421875 -0.9375 C 3.203125 -0.421875 2.90625 -0.109375 2.515625 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1.015625 C 1.71875 -1.328125 1.765625 -1.71875 2.234375 -2.9375 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.078125 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.21875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.140625 C 1.203125 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.75 0.109375 2.484375 0.109375 C 2.65625 0.109375 3.125 0.109375 3.515625 -0.578125 C 3.78125 0.046875 4.453125 0.109375 4.75 0.109375 C 5.5 0.109375 5.9375 -0.515625 6.1875 -1.109375 C 6.53125 -1.875 6.84375 -3.203125 6.84375 -3.6875 Z M 6.84375 -3.6875 "/> <path style="stroke:none;" d="M 5.359375 -1.40625 C 5.359375 -1.515625 5.265625 -1.515625 5.25 -1.515625 C 5.140625 -1.515625 5.140625 -1.46875 5.109375 -1.328125 C 4.96875 -0.78125 4.78125 -0.109375 4.359375 -0.109375 C 4.15625 -0.109375 4.0625 -0.234375 4.0625 -0.5625 C 4.0625 -0.78125 4.171875 -1.25 4.25 -1.59375 L 4.53125 -2.65625 C 4.5625 -2.796875 4.65625 -3.1875 4.703125 -3.328125 C 4.75 -3.5625 4.84375 -3.9375 4.84375 -3.984375 C 4.84375 -4.171875 4.703125 -4.25 4.5625 -4.25 C 4.515625 -4.25 4.25 -4.25 4.171875 -3.90625 L 3.4375 -0.9375 C 3.421875 -0.90625 3.03125 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.546875 1.703125 -0.921875 C 1.703125 -1.46875 1.96875 -2.25 2.234375 -2.9375 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4 2.078125 -4.359375 1.59375 -4.359375 C 0.65625 -4.359375 0.28125 -2.9375 0.28125 -2.84375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.5625 -2.921875 C 0.8125 -3.78125 1.1875 -4.140625 1.5625 -4.140625 C 1.65625 -4.140625 1.8125 -4.140625 1.8125 -3.828125 C 1.8125 -3.578125 1.703125 -3.296875 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.28125 -0.328125 3.453125 -0.546875 C 3.5625 -0.140625 3.90625 0.109375 4.328125 0.109375 C 4.6875 0.109375 4.90625 -0.125 5.0625 -0.4375 C 5.234375 -0.796875 5.359375 -1.40625 5.359375 -1.40625 Z M 5.359375 -1.40625 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-6"> <symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 5.375 -1.421875 C 5.375 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.15625 -1.515625 5.15625 -1.46875 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.375 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.1875 -1.25 4.265625 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.671875 -3.1875 4.71875 -3.34375 C 4.765625 -3.5625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.578125 -4.265625 C 4.53125 -4.265625 4.265625 -4.265625 4.1875 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.46875 1.984375 -2.265625 2.234375 -2.9375 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.34375 0.109375 C 4.703125 0.109375 4.921875 -0.125 5.078125 -0.4375 C 5.25 -0.796875 5.375 -1.421875 5.375 -1.421875 Z M 5.375 -1.421875 "/> <path style="stroke:none;" d="M 4.625 -3.671875 C 4.625 -4.203125 4.359375 -4.359375 4.1875 -4.359375 C 3.9375 -4.359375 3.703125 -4.109375 3.703125 -3.890625 C 3.703125 -3.765625 3.75 -3.703125 3.859375 -3.59375 C 4.0625 -3.390625 4.203125 -3.140625 4.203125 -2.78125 C 4.203125 -2.375 3.59375 -0.109375 2.4375 -0.109375 C 1.9375 -0.109375 1.703125 -0.453125 1.703125 -0.96875 C 1.703125 -1.515625 1.96875 -2.234375 2.28125 -3.0625 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4 2.078125 -4.359375 1.59375 -4.359375 C 0.65625 -4.359375 0.28125 -2.9375 0.28125 -2.84375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.5625 -2.921875 C 0.84375 -3.921875 1.28125 -4.140625 1.5625 -4.140625 C 1.640625 -4.140625 1.8125 -4.140625 1.8125 -3.828125 C 1.8125 -3.578125 1.703125 -3.3125 1.640625 -3.140625 C 1.203125 -2 1.078125 -1.546875 1.078125 -1.109375 C 1.078125 -0.046875 1.953125 0.109375 2.40625 0.109375 C 4.0625 0.109375 4.625 -3.15625 4.625 -3.671875 Z M 4.625 -3.671875 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph0-7"> <symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 4.640625 -3.6875 C 4.640625 -4.21875 4.375 -4.375 4.203125 -4.375 C 3.953125 -4.375 3.71875 -4.125 3.71875 -3.90625 C 3.71875 -3.78125 3.765625 -3.71875 3.875 -3.609375 C 4.078125 -3.40625 4.203125 -3.15625 4.203125 -2.796875 C 4.203125 -2.375 3.609375 -0.109375 2.453125 -0.109375 C 1.9375 -0.109375 1.71875 -0.453125 1.71875 -0.96875 C 1.71875 -1.53125 1.984375 -2.25 2.28125 -3.078125 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.859375 -3.9375 1.28125 -4.15625 1.5625 -4.15625 C 1.640625 -4.15625 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -2 1.078125 -1.546875 1.078125 -1.125 C 1.078125 -0.046875 1.953125 0.109375 2.40625 0.109375 C 4.078125 0.109375 4.640625 -3.171875 4.640625 -3.6875 Z M 4.640625 -3.6875 "/> <path style="stroke:none;" d="M 4.296875 -1.40625 C 4.296875 -1.46875 4.25 -1.515625 4.171875 -1.515625 C 4.09375 -1.515625 4.0625 -1.453125 4.03125 -1.375 C 3.8125 -0.734375 3.1875 -0.546875 2.859375 -0.546875 C 2.65625 -0.546875 2.484375 -0.609375 2.265625 -0.6875 C 1.9375 -0.8125 1.78125 -0.84375 1.578125 -0.84375 C 1.578125 -0.84375 1.40625 -0.84375 1.3125 -0.8125 C 1.84375 -1.390625 2.140625 -1.640625 2.484375 -1.953125 C 2.484375 -1.953125 3.09375 -2.484375 3.453125 -2.828125 C 4.390625 -3.75 4.609375 -4.21875 4.609375 -4.265625 C 4.609375 -4.359375 4.5 -4.359375 4.5 -4.359375 C 4.4375 -4.359375 4.40625 -4.34375 4.359375 -4.25 C 4.0625 -3.78125 3.84375 -3.625 3.609375 -3.625 C 3.375 -3.625 3.265625 -3.765625 3.109375 -3.9375 C 2.921875 -4.171875 2.75 -4.359375 2.421875 -4.359375 C 1.6875 -4.359375 1.234375 -3.453125 1.234375 -3.234375 C 1.234375 -3.1875 1.265625 -3.125 1.359375 -3.125 C 1.4375 -3.125 1.46875 -3.1875 1.484375 -3.234375 C 1.671875 -3.6875 2.234375 -3.703125 2.328125 -3.703125 C 2.53125 -3.703125 2.71875 -3.640625 2.9375 -3.5625 C 3.34375 -3.40625 3.453125 -3.40625 3.703125 -3.40625 C 3.34375 -2.984375 2.515625 -2.265625 2.328125 -2.109375 L 1.4375 -1.28125 C 0.765625 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.921875 -0.359375 1.21875 -0.625 1.546875 -0.625 C 1.765625 -0.625 1.859375 -0.546875 2.109375 -0.25 C 2.28125 -0.046875 2.453125 0.109375 2.75 0.109375 C 3.71875 0.109375 4.296875 -1.140625 4.296875 -1.40625 Z M 4.296875 -1.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.3125 -1.421875 C 4.3125 -1.46875 4.265625 -1.515625 4.1875 -1.515625 C 4.09375 -1.515625 4.078125 -1.453125 4.046875 -1.390625 C 3.828125 -0.75 3.1875 -0.5625 2.859375 -0.5625 C 2.671875 -0.5625 2.484375 -0.609375 2.28125 -0.6875 C 1.9375 -0.8125 1.796875 -0.859375 1.578125 -0.859375 C 1.578125 -0.859375 1.40625 -0.859375 1.3125 -0.828125 C 1.859375 -1.390625 2.140625 -1.640625 2.5 -1.953125 C 2.5 -1.953125 3.109375 -2.484375 3.46875 -2.84375 C 4.40625 -3.765625 4.625 -4.234375 4.625 -4.28125 C 4.625 -4.375 4.515625 -4.375 4.515625 -4.375 C 4.453125 -4.375 4.421875 -4.359375 4.375 -4.265625 C 4.078125 -3.796875 3.859375 -3.640625 3.625 -3.640625 C 3.390625 -3.640625 3.265625 -3.78125 3.125 -3.953125 C 2.9375 -4.1875 2.765625 -4.375 2.4375 -4.375 C 1.6875 -4.375 1.234375 -3.453125 1.234375 -3.25 C 1.234375 -3.203125 1.265625 -3.140625 1.359375 -3.140625 C 1.453125 -3.140625 1.46875 -3.1875 1.484375 -3.25 C 1.671875 -3.703125 2.25 -3.71875 2.328125 -3.71875 C 2.53125 -3.71875 2.71875 -3.640625 2.953125 -3.5625 C 3.34375 -3.421875 3.453125 -3.421875 3.71875 -3.421875 C 3.359375 -2.984375 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.28125 C 0.765625 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.359375 1.234375 -0.640625 1.546875 -0.640625 C 1.765625 -0.640625 1.875 -0.546875 2.125 -0.25 C 2.28125 -0.046875 2.46875 0.109375 2.75 0.109375 C 3.734375 0.109375 4.3125 -1.15625 4.3125 -1.421875 Z M 4.3125 -1.421875 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph1-0"> <symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/> <path style="stroke:none;" d=""/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph1-1"> <symbol overflow="visible" id="glyph1-1">
<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 "/> <path style="stroke:none;" d="M 3.265625 2.375 C 3.265625 2.34375 3.265625 2.328125 3.09375 2.15625 C 1.859375 0.90625 1.546875 -0.953125 1.546875 -2.46875 C 1.546875 -4.1875 1.921875 -5.90625 3.140625 -7.140625 C 3.265625 -7.265625 3.265625 -7.28125 3.265625 -7.3125 C 3.265625 -7.375 3.234375 -7.40625 3.171875 -7.40625 C 3.078125 -7.40625 2.1875 -6.734375 1.59375 -5.484375 C 1.09375 -4.390625 0.984375 -3.296875 0.984375 -2.46875 C 0.984375 -1.703125 1.09375 -0.5 1.625 0.609375 C 2.21875 1.828125 3.078125 2.46875 3.171875 2.46875 C 3.234375 2.46875 3.265625 2.4375 3.265625 2.375 Z M 3.265625 2.375 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph1-2"> <symbol overflow="visible" id="glyph1-2">
<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 "/> <path style="stroke:none;" d="M 2.859375 -2.46875 C 2.859375 -3.234375 2.75 -4.4375 2.203125 -5.546875 C 1.609375 -6.765625 0.765625 -7.40625 0.65625 -7.40625 C 0.609375 -7.40625 0.5625 -7.359375 0.5625 -7.3125 C 0.5625 -7.28125 0.5625 -7.265625 0.75 -7.078125 C 1.71875 -6.109375 2.28125 -4.53125 2.28125 -2.46875 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.421875 0.609375 2.46875 0.65625 2.46875 C 0.765625 2.46875 1.65625 1.796875 2.234375 0.546875 C 2.734375 -0.546875 2.859375 -1.640625 2.859375 -2.46875 Z M 2.859375 -2.46875 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph2-0"> <symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/> <path style="stroke:none;" d=""/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph2-1"> <symbol overflow="visible" id="glyph2-1">
<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 "/> <path style="stroke:none;" d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.3125 -0.25 2.3125 -0.34375 2.3125 -0.5625 L 2.3125 -4.40625 C 2.3125 -4.59375 2.3125 -4.59375 2.109375 -4.59375 C 1.671875 -4.15625 1.03125 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.09375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.796875 -0.25 L 0.796875 0 L 2.03125 -0.03125 Z M 3.28125 0 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph2-2"> <symbol overflow="visible" id="glyph2-2">
<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 "/> <path style="stroke:none;" d="M 3.5 -1.265625 L 3.265625 -1.265625 C 3.234375 -1.109375 3.171875 -0.703125 3.078125 -0.625 C 3.03125 -0.59375 2.484375 -0.59375 2.390625 -0.59375 L 1.125 -0.59375 C 1.84375 -1.234375 2.09375 -1.421875 2.5 -1.75 C 3.015625 -2.15625 3.5 -2.59375 3.5 -3.25 C 3.5 -4.078125 2.765625 -4.59375 1.875 -4.59375 C 1.015625 -4.59375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3 0.734375 -2.96875 0.796875 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.453125 1.125 -3.703125 0.765625 -3.703125 C 0.96875 -4.1875 1.453125 -4.34375 1.765625 -4.34375 C 2.46875 -4.34375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.640625 2.390625 -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.28125 0 Z M 3.5 -1.265625 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph3-0"> <symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/> <path style="stroke:none;" d=""/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph3-1"> <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 "/> <path style="stroke:none;" d="M 8.046875 -2.96875 C 8.046875 -3.1875 7.859375 -3.1875 7.671875 -3.1875 L 4.5 -3.1875 L 4.5 -6.359375 C 4.5 -6.53125 4.5 -6.734375 4.296875 -6.734375 C 4.09375 -6.734375 4.09375 -6.53125 4.09375 -6.359375 L 4.09375 -3.1875 L 0.921875 -3.1875 C 0.75 -3.1875 0.546875 -3.1875 0.546875 -2.984375 C 0.546875 -2.765625 0.734375 -2.765625 0.921875 -2.765625 L 4.09375 -2.765625 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.5 0.765625 4.5 0.578125 4.5 0.390625 L 4.5 -2.765625 L 7.671875 -2.765625 C 7.84375 -2.765625 8.046875 -2.765625 8.046875 -2.96875 Z M 8.046875 -2.96875 "/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph4-0"> <symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/> <path style="stroke:none;" d=""/>
</symbol> </symbol>
<symbol overflow="visible" id="glyph4-1"> <symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 6.875 -2.484375 C 6.875 -2.671875 6.6875 -2.671875 6.546875 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.546875 -2.28125 C 6.6875 -2.28125 6.875 -2.28125 6.875 -2.484375 Z M 6.875 -2.484375 "/> <path style="stroke:none;" d="M 6.859375 -2.46875 C 6.859375 -2.671875 6.671875 -2.671875 6.53125 -2.671875 L 1.140625 -2.671875 C 1 -2.671875 0.8125 -2.671875 0.8125 -2.46875 C 0.8125 -2.265625 1 -2.265625 1.140625 -2.265625 L 6.53125 -2.265625 C 6.671875 -2.265625 6.859375 -2.265625 6.859375 -2.46875 Z M 6.859375 -2.46875 "/>
</symbol> </symbol>
</g> </g>
<clipPath id="clip1"> <clipPath id="clip1">
<path d="M 61 111 L 94 111 L 94 135.566406 L 61 135.566406 Z M 61 111 "/> <path d="M 0.175781 38 L 47 38 L 47 40 L 0.175781 40 Z M 0.175781 38 "/>
</clipPath> </clipPath>
<clipPath id="clip2"> <clipPath id="clip2">
<path d="M 81 107 L 114 107 L 114 135.566406 L 81 135.566406 Z M 81 107 "/> <path d="M 0.175781 72 L 77 72 L 77 74 L 0.175781 74 Z M 0.175781 72 "/>
</clipPath> </clipPath>
<clipPath id="clip3"> <clipPath id="clip3">
<path d="M 134 23 L 155.132812 23 L 155.132812 55 L 134 55 Z M 134 23 "/> <path d="M 134 78 L 154.957031 78 L 154.957031 103.28125 L 134 103.28125 Z M 134 78 "/>
</clipPath> </clipPath>
<clipPath id="clip4"> <clipPath id="clip4">
<path d="M 134 57 L 155.132812 57 L 155.132812 89 L 134 89 Z M 134 57 "/> <path d="M 134 23 L 154.957031 23 L 154.957031 55 L 134 55 Z M 134 23 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 134 57 L 154.957031 57 L 154.957031 89 L 134 89 Z M 134 57 "/>
</clipPath> </clipPath>
</defs> </defs>
<g id="surface1"> <g id="surface1">
<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 -56.693712 -42.519075 L 56.69394 -42.519075 L 56.69394 42.519699 L -56.693712 42.519699 Z M -56.693712 -42.519075 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 -56.693469 -42.521687 L 56.695512 -42.521687 L 56.695512 42.521033 L -56.693469 42.521033 Z M -56.693469 -42.521687 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="67.526571" y="11.29192"/> <use xlink:href="#glyph0-1" x="67.550359" y="11.199191"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="75.260139" y="11.29192"/> <use xlink:href="#glyph1-1" x="75.266415" y="11.199191"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="79.111019" y="11.29192"/> <use xlink:href="#glyph0-2" x="79.108574" y="11.199191"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="83.753147" y="11.29192"/> <use xlink:href="#glyph1-2" x="83.740191" y="11.199191"/>
</g> </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 3.910168 10.170384 L 36.84894 10.170384 L 36.84894 32.8487 L 3.910168 32.8487 Z M 3.910168 10.170384 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 3.914042 10.169194 L 36.852735 10.169194 L 36.852735 32.847778 L 3.914042 32.847778 Z M 3.914042 10.169194 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="84.755131" y="41.419037"/> <use xlink:href="#glyph0-3" x="84.739906" y="41.259079"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="94.107977" y="42.905115"/> <use xlink:href="#glyph2-1" x="94.071573" y="42.7408"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="98.551299" y="41.419037"/> <use xlink:href="#glyph1-1" x="98.504834" y="41.259079"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="102.402179" y="41.419037"/> <use xlink:href="#glyph0-2" x="102.346994" y="41.259079"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="107.044308" y="41.419037"/> <use xlink:href="#glyph1-2" x="106.978611" y="41.259079"/>
</g> </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 3.910168 -24.242026 L 36.84894 -24.242026 L 36.84894 -1.567639 L 3.910168 -1.567639 Z M 3.910168 -24.242026 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 3.914042 -24.242544 L 36.852735 -24.242544 L 36.852735 -1.567898 L 3.914042 -1.567898 Z M 3.914042 -24.242544 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="84.755131" y="75.627649"/> <use xlink:href="#glyph0-3" x="84.739906" y="75.390229"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="94.107977" y="77.113727"/> <use xlink:href="#glyph2-2" x="94.071573" y="76.87195"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="98.551299" y="75.627649"/> <use xlink:href="#glyph1-1" x="98.504834" y="75.390229"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="102.402179" y="75.627649"/> <use xlink:href="#glyph0-2" x="102.346994" y="75.390229"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="107.044308" y="75.627649"/> <use xlink:href="#glyph1-2" x="106.978611" y="75.390229"/>
</g> </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 -13.592729 21.507577 C -13.592729 25.362616 -16.716843 28.4828 -20.567952 28.4828 C -24.419061 28.4828 -27.543175 25.362616 -27.543175 21.507577 C -27.543175 17.656468 -24.419061 14.536284 -20.567952 14.536284 C -16.716843 14.536284 -13.592729 17.656468 -13.592729 21.507577 Z M -13.592729 21.507577 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 -13.593132 21.508486 C -13.593132 25.360458 -16.716459 28.483785 -20.568431 28.483785 C -24.420403 28.483785 -27.54373 25.360458 -27.54373 21.508486 C -27.54373 17.656514 -24.420403 14.537126 -20.568431 14.537126 C -16.716459 14.537126 -13.593132 17.656514 -13.593132 21.508486 Z M -13.593132 21.508486 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="52.808936" y="41.842495"/> <use xlink:href="#glyph3-1" x="52.86605" y="41.681578"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="47.437188" y="53.633701"/> <use xlink:href="#glyph4-1" x="47.506466" y="53.445092"/>
</g> </g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 61.753906 134.578125 L 93.375 134.578125 L 93.375 112.035156 L 61.753906 112.035156 Z M 61.753906 134.578125 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero"> <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 -15.907324 -74.699413 L 15.903622 -74.699413 L 15.903622 -52.021097 L -15.907324 -52.021097 Z M -15.907324 -74.699413 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 -77.032512 21.508486 L -32.175549 21.508486 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
</g> </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.052476 -0.000703674 L 1.609711 1.681088 L 3.086694 -0.000703674 L 1.609711 -1.682495 Z M 6.052476 -0.000703674 " transform="matrix(0.991781,0,0,-0.991781,42.841019,38.788365)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="65.056402" y="125.780532"/> <use xlink:href="#glyph0-4" x="4.954104" y="35.001933"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="73.28798" y="127.265616"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="77.730308" y="125.780532"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="81.582182" y="125.780532"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="86.22431" y="125.780532"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -77.033855 21.507577 L -32.176295 21.507577 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<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.052312 -0.00161295 L 1.607818 1.68423 L 3.089316 -0.00161295 L 1.607818 -1.683526 Z M 6.052312 -0.00161295 " transform="matrix(0.994032,0,0,-0.994032,42.761153,38.943709)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="4.788251" y="35.14769"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -16.402467 -63.35829 L -67.111355 -63.35829 L -67.111355 -12.904833 L -1.218094 -12.904833 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<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.054473 0.00014728 L 1.609979 1.68206 L 3.087547 0.00014728 L 1.609979 -1.681766 Z M 6.054473 0.00014728 " transform="matrix(0.994032,0,0,-0.994032,73.532442,73.15249)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="8.019849" y="69.356302"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -20.567952 -12.904833 L -20.567952 9.903164 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<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.054441 -0.000197973 L 1.609947 1.681715 L 3.087515 -0.000197973 L 1.609947 -1.682111 Z M 6.054441 -0.000197973 " transform="matrix(0,-0.994032,-0.994032,0,57.120897,53.303463)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 59.101562 73.152344 C 59.101562 72.058594 58.214844 71.171875 57.121094 71.171875 C 56.027344 71.171875 55.140625 72.058594 55.140625 73.152344 C 55.140625 74.246094 56.027344 75.132812 57.121094 75.132812 C 58.214844 75.132812 59.101562 74.246094 59.101562 73.152344 Z M 59.101562 73.152344 "/>
<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 -13.592729 21.507577 L -1.218094 21.507577 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<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.054473 -0.00161295 L 1.609979 1.68423 L 3.087547 -0.00161295 L 1.609979 -1.683526 Z M 6.054473 -0.00161295 " transform="matrix(0.994032,0,0,-0.994032,73.532442,38.943709)"/>
<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 -44.55093 21.507577 L -44.55093 -34.416027 L 67.111583 -34.416027 L 67.111583 -63.35829 L 21.035814 -63.35829 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 95.28125 123.304688 L 99.699219 124.980469 L 98.230469 123.304688 L 99.699219 121.632812 Z M 95.28125 123.304688 "/>
<g clip-path="url(#clip2)" clip-rule="nonzero"> <g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054433 -0.00108958 L 1.609939 1.684753 L 3.087507 -0.00108958 L 1.609939 -1.683002 Z M 6.054433 -0.00108958 " transform="matrix(-0.994032,0,0,0.994032,101.299549,123.305771)"/> <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 -77.032512 -12.903252 L -1.217982 -12.903252 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
</g> </g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 35.261719 38.945312 C 35.261719 37.851562 34.375 36.964844 33.28125 36.964844 C 32.1875 36.964844 31.300781 37.851562 31.300781 38.945312 C 31.300781 40.039062 32.1875 40.925781 33.28125 40.925781 C 34.375 40.925781 35.261719 40.039062 35.261719 38.945312 Z M 35.261719 38.945312 "/> <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.054003 0.00172836 L 1.607299 1.68352 L 3.088221 0.00172836 L 1.607299 -1.684002 Z M 6.054003 0.00172836 " transform="matrix(0.991781,0,0,-0.991781,73.54263,72.919683)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="141.69924" y="90.736933"/> <use xlink:href="#glyph0-5" x="4.954104" y="69.132091"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.348012 21.507577 L 72.400963 21.507577 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/> <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 -20.568431 -12.903252 L -20.568431 9.901368 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 152.730469 38.945312 L 148.3125 37.269531 L 149.78125 38.945312 L 148.3125 40.617188 Z M 152.730469 38.945312 "/> <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.052063 0.000280675 L 1.609298 1.682072 L 3.086281 0.000280675 L 1.609298 -1.681511 Z M 6.052063 0.000280675 " transform="matrix(0,-0.991781,-0.991781,0,57.168247,53.115602)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 59.144531 72.917969 C 59.144531 71.828125 58.257812 70.945312 57.167969 70.945312 C 56.078125 70.945312 55.191406 71.828125 55.191406 72.917969 C 55.191406 74.011719 56.078125 74.894531 57.167969 74.894531 C 58.257812 74.894531 59.144531 74.011719 59.144531 72.917969 Z M 59.144531 72.917969 "/>
<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 -13.593132 21.508486 L -1.217982 21.508486 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<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.054003 -0.000703674 L 1.607299 1.681088 L 3.088221 -0.000703674 L 1.607299 -1.682495 Z M 6.054003 -0.000703674 " transform="matrix(0.991781,0,0,-0.991781,73.54263,38.788365)"/>
<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 -44.550698 21.508486 L -44.550698 -34.416003 L 72.402735 -34.416003 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 152.5625 94.253906 L 148.152344 92.582031 L 149.621094 94.253906 L 148.152344 95.921875 Z M 152.5625 94.253906 "/>
<g clip-path="url(#clip3)" clip-rule="nonzero"> <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.05311 -0.00161295 L 1.608616 1.68423 L 3.086184 -0.00161295 L 1.608616 -1.683526 Z M 6.05311 -0.00161295 " transform="matrix(0.994032,0,0,-0.994032,146.713484,38.943709)"/> <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.0543 -0.00183347 L 1.607596 1.683897 L 3.088518 -0.00183347 L 1.607596 -1.683625 Z M 6.0543 -0.00183347 " transform="matrix(0.991781,0,0,-0.991781,146.55796,94.252088)"/>
</g> </g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 35.359375 38.789062 C 35.359375 37.695312 34.476562 36.8125 33.382812 36.8125 C 32.292969 36.8125 31.40625 37.695312 31.40625 38.789062 C 31.40625 39.878906 32.292969 40.765625 33.382812 40.765625 C 34.476562 40.765625 35.359375 39.878906 35.359375 38.789062 Z M 35.359375 38.789062 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="141.295663" y="33.662607"/> <use xlink:href="#glyph0-6" x="145.036221" y="90.464308"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <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 37.349002 21.508486 L 72.402735 21.508486 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<use xlink:href="#glyph2-1" x="145.901012" y="35.14769"/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 152.5625 38.789062 L 148.152344 37.121094 L 149.621094 38.789062 L 148.152344 40.457031 Z M 152.5625 38.789062 "/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.348012 -12.904833 L 72.400963 -12.904833 " transform="matrix(0.994032,0,0,-0.994032,77.566293,60.324529)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 152.730469 73.152344 L 148.3125 71.480469 L 149.78125 73.152344 L 148.3125 74.824219 Z M 152.730469 73.152344 "/>
<g clip-path="url(#clip4)" clip-rule="nonzero"> <g clip-path="url(#clip4)" 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.05311 0.00014728 L 1.608616 1.68206 L 3.086184 0.00014728 L 1.608616 -1.681766 Z M 6.05311 0.00014728 " transform="matrix(0.994032,0,0,-0.994032,146.713484,73.15249)"/> <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.0543 -0.000703674 L 1.607596 1.681088 L 3.088518 -0.000703674 L 1.607596 -1.682495 Z M 6.0543 -0.000703674 " transform="matrix(0.991781,0,0,-0.991781,146.55796,38.788365)"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="141.295663" y="67.871219"/> <use xlink:href="#glyph0-7" x="141.152407" y="33.519221"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="145.901012" y="69.356302"/> <use xlink:href="#glyph2-1" x="145.747328" y="35.001933"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.349002 -12.903252 L 72.402735 -12.903252 " transform="matrix(0.991781,0,0,-0.991781,77.567347,60.12077)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 152.5625 72.917969 L 148.152344 71.25 L 149.621094 72.917969 L 148.152344 74.589844 Z M 152.5625 72.917969 "/>
<g clip-path="url(#clip5)" 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.0543 0.00172836 L 1.607596 1.68352 L 3.088518 0.00172836 L 1.607596 -1.684002 Z M 6.0543 0.00172836 " transform="matrix(0.991781,0,0,-0.991781,146.55796,72.919683)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="141.152407" y="67.650371"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="145.747328" y="69.132091"/>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -84,7 +84,7 @@ Sensor fusion \sep{} Optimal filters \sep{} $\mathcal{H}_\infty$ synthesis \sep{
** New introduction :ignore: ** New introduction :ignore:
*** Introduction to Sensor Fusion :ignore: *** Introduction to Sensor Fusion :ignore:
# Basic explainations of sensor fusion # Basic explanations of sensor fusion
- cite:bendat57_optim_filter_indep_measur_two roots of sensor fusion - cite:bendat57_optim_filter_indep_measur_two roots of sensor fusion
@ -432,16 +432,20 @@ For instance, the phase uncertainty $\Delta\phi(\omega)$ added by the super sens
As it is generally desired to limit the maximum phase added by the super sensor, $H_1(s)$ and $H_2(s)$ should be designed such that $\Delta \phi$ is bounded to acceptable values. As it is generally desired to limit the maximum phase added by the super sensor, $H_1(s)$ and $H_2(s)$ should be designed such that $\Delta \phi$ is bounded to acceptable values.
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.
* Complementary Filters Shaping using $\mathcal{H}_\infty$ Synthesis * Complementary Filters Shaping
<<sec:hinf_method>> <<sec:hinf_method>>
** Introduction :ignore: ** Introduction :ignore:
As shown in Sec. ref:sec:requirements, the performance and robustness of the sensor fusion architecture depends on 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, the development of a synthesis method of complementary filters that allows the shaping of their norm is necessary. 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.
** Synthesis Objective ** Synthesis Objective
<<sec:synthesis_objective>> <<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.
This is equivalent as to finding stable transfer functions $H_1(s)$ and $H_2(s)$ such that conditions eqref:eq:comp_filter_problem_form are satisfied. This is equivalent as to finding proper and stable transfer functions $H_1(s)$ and $H_2(s)$ such that conditions eqref:eq:comp_filter_problem_form are satisfied.
#+name: eq:comp_filter_problem_form #+name: eq:comp_filter_problem_form
\begin{subequations} \begin{subequations}
\begin{align} \begin{align}
@ -450,67 +454,76 @@ This is equivalent as to finding stable transfer functions $H_1(s)$ and $H_2(s)$
& |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:hinf_cond_h2} & |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:hinf_cond_h2}
\end{align} \end{align}
\end{subequations} \end{subequations}
where $W_1(s)$ and $W_2(s)$ are two weighting transfer functions that are chosen to shape the norms of the corresponding filters. 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.
** Shaping of Complementary Filters using $\mathcal{H}_\infty$ synthesis ** Shaping of Complementary Filters using $\mathcal{H}_\infty$ synthesis
<<sec:hinf_synthesis>> <<sec:hinf_synthesis>>
In order to express this optimization problem as a standard $\mathcal{H}_\infty$ problem, the architecture shown in Fig. ref:fig:h_infinity_robust_fusion is used where the generalized plant $P$ is described by eqref:eq:generalized_plant.
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.
Consider the generalized plant $P(s)$ shown in Figure ref:fig:h_infinity_robust_fusion and mathematically described by eqref:eq:generalized_plant.
#+name: eq:generalized_plant #+name: eq:generalized_plant
\begin{equation} \begin{equation}
\begin{bmatrix} z_1 \\ z_2 \\ v \end{bmatrix} = P(s) \begin{bmatrix} w\\u \end{bmatrix}; \quad P(s) = \begin{bmatrix}W_1(s) & -W_1(s) \\ 0 & W_2(s) \\ 1 & 0 \end{bmatrix} \begin{bmatrix} z_1 \\ z_2 \\ v \end{bmatrix} = P(s) \begin{bmatrix} w\\u \end{bmatrix}; \quad P(s) = \begin{bmatrix}W_1(s) & -W_1(s) \\ 0 & \phantom{+}W_2(s) \\ 1 & 0 \end{bmatrix}
\end{equation} \end{equation}
#+name: fig:h_infinity_robust_fusion #+name: fig:h_infinity_robust_fusion
#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters #+caption: Generalized plant used for $\mathcal{H}_\infty$ synthesis of complementary filters
#+attr_latex: :scale 1 #+attr_latex: :scale 1
[[file:figs/h_infinity_robust_fusion.pdf]] [[file:figs/h_infinity_robust_fusion.pdf]]
The $\mathcal{H}_\infty$ filter design problem is then to find a stable filter $H_2(s)$ which based on $v$, generates a signal $u$ such that the $\mathcal{H}_\infty$ norm from $w$ to $[z_1, \ z_2]$ is less than one eqref:eq:hinf_syn_obj. Applying the standard $\mathcal{H}_\infty$ synthesis on the generalized plant $P(s)$ is then equivalent as finding a stable filter $H_2(s)$ which based on $v$, generates a signal $u$ such that the $\mathcal{H}_\infty$ norm from $w$ to $[z_1, \ z_2]$ is less than one eqref:eq:hinf_syn_obj.
#+name: eq:hinf_syn_obj #+name: eq:hinf_syn_obj
\begin{equation} \begin{equation}
\left\|\begin{matrix} \left[1 - H_2(s)\right] W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1 \left\|\begin{matrix} \left(1 - H_2(s)\right) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation} \end{equation}
This is equivalent to having eqref:eq:hinf_problem by defining $H_1(s)$ as the complementary filter of $H_2(s)$ eqref:eq:definition_H1. By then defining $H_1(s)$ to be the complementary of $H_2(s)$ eqref:eq:definition_H1, the $\mathcal{H}_\infty$ synthesis objective becomes equivalent to eqref:eq:hinf_problem which ensure that eqref:eq:hinf_cond_h1 and eqref:eq:hinf_cond_h2 are satisfied.
#+name: eq:hinf_problem
\begin{equation}
\left\|\begin{matrix} H_1(s) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation}
#+name: eq:definition_H1 #+name: eq:definition_H1
\begin{equation} \begin{equation}
H_1(s) \triangleq 1 - H_2(s) H_1(s) \triangleq 1 - H_2(s)
\end{equation} \end{equation}
The complementary condition eqref:eq:hinf_cond_complementarity is ensured by eqref:eq:definition_H1. #+name: eq:hinf_problem
The conditions eqref:eq:hinf_cond_h1 and eqref:eq:hinf_cond_h2 on the filters shapes are satisfied by eqref:eq:hinf_problem. \begin{equation}
Therefore, all the conditions eqref:eq:comp_filter_problem_form are satisfied using this synthesis method based on $\mathcal{H}_\infty$ synthesis, and thus it permits to shape complementary filters as desired. \left\|\begin{matrix} H_1(s) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation}
Therefore, applying the $\mathcal{H}_\infty$ synthesis on the standard plant $P(s)$ eqref:eq:generalized_plant will generate two filters $H_2(s)$ and $H_1(s) \triangleq 1 - H_2(s)$ that are complementary eqref:eq:comp_filter_problem_form and such that there norms are bellow specified bounds [[eqref:eq:hinf_cond_h1]],eqref:eq:hinf_cond_h2.
The above optimization problem can be efficiently solved in Matlab cite:matlab20 using the Robust Control Toolbox.
** Weighting Functions Design ** Weighting Functions Design
<<sec:hinf_weighting_func>> <<sec:hinf_weighting_func>>
The proper design of the weighting functions is of primary importance for the success of the presented complementary filters $\mathcal{H}_\infty$ synthesis.
First, only proper, stable and minimum phase transfer functions should be used. Weighting functions are used during the synthesis to specify what is the maximum allowed norms of the complementary filters.
Second, the order of the weights should stay reasonably small in order to reduce the computational costs associated with the solving of the optimization problem and for the physical implementation of the filters (the order of the synthesized filters being equal to the sum of the weighting functions order). The proper design of these weighting functions is of primary importance for the success of the presented complementary filters $\mathcal{H}_\infty$ synthesis.
First, only proper and stable transfer functions should be used.
Second, the order of the weighting functions should stay reasonably small in order to reduce the computational costs associated with the solving of the optimization problem and for the physical implementation of the filters (the order of the synthesized filters being equal to the sum of the weighting functions order).
Third, one should not forget the fundamental limitations imposed by the complementary property eqref:eq:comp_filter. Third, one should not forget the fundamental limitations imposed by the complementary property eqref:eq:comp_filter.
This implies for instance that $|H_1(j\omega)|$ and $|H_2(j\omega)|$ cannot be made small at the same time. This implies for instance that $|H_1(j\omega)|$ and $|H_2(j\omega)|$ cannot be made small at the same frequency.
When designing complementary filters, it is usually desired to specify its slope, its crossover frequency and its maximum gain at low and high frequency.
To help with the design of the weighting functions such that the above specification can be easily expressed, the formula eqref:eq:weight_formula is proposed.
# Explain why we propose such weighting function
When designing complementary filters, it is usually desired to specify the slope of the filter, its crossover frequency and its gain at low and high frequency.
To help with the design of the weighting functions such that the above specification can be easily expressed, the following formula is proposed.
#+name: eq:weight_formula #+name: eq:weight_formula
\begin{equation} \begin{equation}
W(s) = \left( \frac{ W(s) = \left( \frac{
\hfill{} \frac{1}{\omega_0} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{G_0}{G_c}\right)^{\frac{1}{n}} \hfill{} \frac{1}{\omega_c} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{G_0}{G_c}\right)^{\frac{1}{n}}
}{ }{
\left(\frac{1}{G_\infty}\right)^{\frac{1}{n}} \frac{1}{\omega_0} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{1}{G_c}\right)^{\frac{1}{n}} \left(\frac{1}{G_\infty}\right)^{\frac{1}{n}} \frac{1}{\omega_c} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{1}{G_c}\right)^{\frac{1}{n}}
}\right)^n }\right)^n
\end{equation} \end{equation}
The parameters permit to specify:
- the low frequency gain: $G_0 = lim_{\omega \to 0} |W(j\omega)|$ The parameters in formula eqref:eq:weight_formula are:
- the high frequency gain: $G_\infty = lim_{\omega \to \infty} |W(j\omega)|$ - $G_0 = lim_{\omega \to 0} |W(j\omega)|$: the low frequency gain
- the absolute gain at $\omega_0$: $G_c = |W(j\omega_0)|$ - $G_\infty = lim_{\omega \to \infty} |W(j\omega)|$: the high frequency gain
- the absolute slope between high and low frequency: $n$ - $G_c = |W(j\omega_c)|$: the gain at $\omega_c$
- $n$: the slope between high and low frequency. It is also the order of the weighting function.
The parameters $G_0$, $G_c$ and $G_\infty$ should either satisfy condition eqref:eq:cond_formula_1 or eqref:eq:cond_formula_2. The parameters $G_0$, $G_c$ and $G_\infty$ should either satisfy condition eqref:eq:cond_formula_1 or eqref:eq:cond_formula_2.
#+name: eq:condition_params_formula #+name: eq:condition_params_formula
@ -521,7 +534,7 @@ The parameters $G_0$, $G_c$ and $G_\infty$ should either satisfy condition eqref
\end{align} \end{align}
\end{subequations} \end{subequations}
The general shape of a weighting function generated using eqref:eq:weight_formula is shown in Fig. ref:fig:weight_formula. The typical shape of a weighting function generated using eqref:eq:weight_formula is shown in Figure ref:fig:weight_formula.
#+name: fig:weight_formula #+name: fig:weight_formula
#+caption: Magnitude of a weighting function generated using the proposed formula eqref:eq:weight_formula, $G_0 = 1e^{-3}$, $G_\infty = 10$, $\omega_c = \SI{10}{Hz}$, $G_c = 2$, $n = 3$ #+caption: Magnitude of a weighting function generated using the proposed formula eqref:eq:weight_formula, $G_0 = 1e^{-3}$, $G_\infty = 10$, $\omega_c = \SI{10}{Hz}$, $G_c = 2$, $n = 3$
@ -530,37 +543,56 @@ The general shape of a weighting function generated using eqref:eq:weight_formul
** Validation of the proposed synthesis method ** Validation of the proposed synthesis method
<<sec:hinf_example>> <<sec:hinf_example>>
Let's validate the proposed design method of complementary filters with 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:
- the merging frequency is around $\SI{10}{Hz}$ - the merging frequency is around $\SI{10}{Hz}$
- the slope of $|H_1(j\omega)|$ is $-2$ above $\SI{10}{Hz}$ - the slope of $|H_1(j\omega)|$ is $-2$ above $\SI{10}{Hz}$
- the slope of $|H_2(j\omega)|$ is $+3$ below $\SI{10}{Hz}$ - the slope of $|H_2(j\omega)|$ is $+3$ below $\SI{10}{Hz}$
- the gain of both filters is equal to $10^{-3}$ away from the merging frequency - the maximum gain of both filters is $10^{-3}$ away from the merging frequency
The weighting functions $W_1(s)$ and $W_2(s)$ are designed using eqref:eq:weight_formula. The first step is to design weighting functions that translate the above requirements.
The parameters used are summarized in table ref:tab:weights_params and the magnitude of the weighting functions is shown in Fig. ref:fig:hinf_filters_results. They are here designed using eqref:eq:weight_formula with parameters summarized in table ref:tab:weights_params.
The magnitudes of the weighting functions are shown by dashed lines in Figure ref:fig:hinf_filters_results.
#+name: tab:weights_params #+name: tab:weights_params
#+caption: Parameters used for $W_1(s)$ and $W_2(s)$ #+caption: Parameters used for weighting functions $W_1(s)$ and $W_2(s)$ using eqref:eq:weight_formula
#+ATTR_LATEX: :environment tabularx :width 0.5\linewidth :align Xcc #+ATTR_LATEX: :environment tabularx :width 0.29\linewidth :align ccc
#+ATTR_LATEX: :center t :booktabs t :float t #+ATTR_LATEX: :center t :booktabs t :float t
| Parameter | $W_1(s)$ | $W_2(s)$ | | Parameters | $W_1(s)$ | $W_2(s)$ |
|------------------------+----------+----------| |------------+---------------+---------------|
| $G_0$ | $0.1$ | $1000$ | | $G_0$ | $0.1$ | $1000$ |
| $G_\infty$ | $1000$ | $0.1$ | | $G_\infty$ | $1000$ | $0.1$ |
| $\omega_c$ [$\si{Hz}$] | $11$ | $10$ | | $\omega_c$ | $2\pi\cdot10$ | $2\pi\cdot10$ |
| $G_c$ | $0.5$ | $0.5$ | | $G_c$ | $0.45$ | $0.45$ |
| $n$ | $2$ | $3$ | | $n$ | $2$ | $3$ |
The bode plots of the obtained complementary filters are shown in Fig. ref:fig:hinf_filters_results and their transfer functions in the Laplace domain are given below. The $\mathcal{H}_\infty$ synthesis is applied on the generalized plant of Figure ref:fig:h_infinity_robust_fusion using the Matlab =hinfsyn= command.
\begin{align*} The synthesized filter $H_2(s)$ is such that $\mathcal{H}_\infty$ norm between $w$ and $[z_1,\ z_2]^T$ is minimized and here found close to one eqref:eq:hinf_synthesis_result.
H_1(s) &= \frac{10^{-8} (s+6.6e^9) (s+3450)^2 (s^2 + 49s + 895)}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)}\\
H_2(s) &= \frac{(s+6.6e^4) (s+160) (s+4)^3}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)} #+name: eq:hinf_synthesis_result
\end{align*} \begin{equation}
\left\|\begin{matrix} \left(1 - H_2(s)\right) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \approx 1
\end{equation}
The bode plots of the obtained complementary filters are shown by solid lines in Figure ref:fig:hinf_filters_results and their transfer functions in the Laplace domain are given in eqref:eq:hinf_synthesis_result_tf.
#+name: eq:hinf_synthesis_result_tf
\begin{subequations}
\begin{align}
H_2(s) &= \frac{(s+6.6e^4) (s+160) (s+4)^3}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)} \\
H_1(s) &\triangleq H_2(s) - 1 = \frac{10^{-8} (s+6.6e^9) (s+3450)^2 (s^2 + 49s + 895)}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)}
\end{align}
\end{subequations}
The obtained transfer functions are of order $5$ as expected (sum of the weighting functions orders), and their magnitudes are bellow the maximum specified ones as ensured by eqref:eq:hinf_synthesis_result.
#+name: fig:hinf_filters_results #+name: fig:hinf_filters_results
#+caption: Frequency response of the weighting functions and complementary filters obtained using $\mathcal{H}_\infty$ synthesis #+caption: Frequency response of the weighting functions and complementary filters obtained using $\mathcal{H}_\infty$ synthesis
[[file:figs/hinf_filters_results.pdf]] [[file:figs/hinf_filters_results.pdf]]
This simple example illustrates the fact that the proposed methodology for complementary filters shaping is quite easy to use and effective.
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:
@ -607,7 +639,7 @@ They are found to be very close to each other and this shows the effectiveness o
* Discussion * Discussion
** Alternative configuration ** Alternative configuration
- Feedback architecture : Similar to mixed sensitivity - Feedback architecture : Similar to mixed sensitivity (add schematic of feedback loop with weights)
- 2 inputs / 1 output - 2 inputs / 1 output
Explain differences Explain differences

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2021-05-19 mer. 11:46 % Created 2021-05-20 jeu. 11:13
% 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:org188c07e} \label{sec:org810a8ae}
\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:org99f43ee} \label{sec:orge97289b}
\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:orgec9e73a} \label{sec:org0a17c4e}
\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:org9538be3} \label{sec:org52d9122}
\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:orgb03f925} \label{sec:orgf08876b}
\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:orgfb0ea88} \label{sec:org3269d9e}
\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.
@ -288,16 +288,20 @@ For instance, the phase uncertainty \(\Delta\phi(\omega)\) added by the super se
As it is generally desired to limit the maximum phase added by the super sensor, \(H_1(s)\) and \(H_2(s)\) should be designed such that \(\Delta \phi\) is bounded to acceptable values. As it is generally desired to limit the maximum phase added by the super sensor, \(H_1(s)\) and \(H_2(s)\) should be designed such that \(\Delta \phi\) is bounded to acceptable values.
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 using \(\mathcal{H}_\infty\) Synthesis} \section{Complementary Filters Shaping}
\label{sec:orgfccc360} \label{sec:orga11797e}
\label{sec:hinf_method} \label{sec:hinf_method}
As shown in Sec. \ref{sec:requirements}, the performance and robustness of the sensor fusion architecture depends on 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, the development of a synthesis method of complementary filters that allows the shaping of their norm is necessary. 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} \subsection{Synthesis Objective}
\label{sec:orga79128d} \label{sec:orgc196ed6}
\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}.
This is equivalent as to finding stable transfer functions \(H_1(s)\) and \(H_2(s)\) such that conditions \eqref{eq:comp_filter_problem_form} are satisfied. This is equivalent as to finding proper and stable transfer functions \(H_1(s)\) and \(H_2(s)\) such that conditions \eqref{eq:comp_filter_problem_form} are satisfied.
\begin{subequations} \begin{subequations}
\label{eq:comp_filter_problem_form} \label{eq:comp_filter_problem_form}
\begin{align} \begin{align}
@ -306,70 +310,80 @@ This is equivalent as to finding stable transfer functions \(H_1(s)\) and \(H_2(
& |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:hinf_cond_h2} & |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:hinf_cond_h2}
\end{align} \end{align}
\end{subequations} \end{subequations}
where \(W_1(s)\) and \(W_2(s)\) are two weighting transfer functions that are chosen to shape the norms of the corresponding filters. 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:org91451ed} \label{sec:orgf037f4b}
\label{sec:hinf_synthesis} \label{sec:hinf_synthesis}
In order to express this optimization problem as a standard \(\mathcal{H}_\infty\) problem, the architecture shown in Fig. \ref{fig:h_infinity_robust_fusion} is used where the generalized plant \(P\) is described by \eqref{eq:generalized_plant}.
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.
Consider the generalized plant \(P(s)\) shown in Figure \ref{fig:h_infinity_robust_fusion} and mathematically described by \eqref{eq:generalized_plant}.
\begin{equation} \begin{equation}
\label{eq:generalized_plant} \label{eq:generalized_plant}
\begin{bmatrix} z_1 \\ z_2 \\ v \end{bmatrix} = P(s) \begin{bmatrix} w\\u \end{bmatrix}; \quad P(s) = \begin{bmatrix}W_1(s) & -W_1(s) \\ 0 & W_2(s) \\ 1 & 0 \end{bmatrix} \begin{bmatrix} z_1 \\ z_2 \\ v \end{bmatrix} = P(s) \begin{bmatrix} w\\u \end{bmatrix}; \quad P(s) = \begin{bmatrix}W_1(s) & -W_1(s) \\ 0 & \phantom{+}W_2(s) \\ 1 & 0 \end{bmatrix}
\end{equation} \end{equation}
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\includegraphics[scale=1,scale=1]{figs/h_infinity_robust_fusion.pdf} \includegraphics[scale=1,scale=1]{figs/h_infinity_robust_fusion.pdf}
\caption{\label{fig:h_infinity_robust_fusion}Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters} \caption{\label{fig:h_infinity_robust_fusion}Generalized plant used for \(\mathcal{H}_\infty\) synthesis of complementary filters}
\end{figure} \end{figure}
The \(\mathcal{H}_\infty\) filter design problem is then to find a stable filter \(H_2(s)\) which based on \(v\), generates a signal \(u\) such that the \(\mathcal{H}_\infty\) norm from \(w\) to \([z_1, \ z_2]\) is less than one \eqref{eq:hinf_syn_obj}. Applying the standard \(\mathcal{H}_\infty\) synthesis on the generalized plant \(P(s)\) is then equivalent as finding a stable filter \(H_2(s)\) which based on \(v\), generates a signal \(u\) such that the \(\mathcal{H}_\infty\) norm from \(w\) to \([z_1, \ z_2]\) is less than one \eqref{eq:hinf_syn_obj}.
\begin{equation} \begin{equation}
\label{eq:hinf_syn_obj} \label{eq:hinf_syn_obj}
\left\|\begin{matrix} \left[1 - H_2(s)\right] W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1 \left\|\begin{matrix} \left(1 - H_2(s)\right) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation} \end{equation}
This is equivalent to having \eqref{eq:hinf_problem} by defining \(H_1(s)\) as the complementary filter of \(H_2(s)\) \eqref{eq:definition_H1}. By then defining \(H_1(s)\) to be the complementary of \(H_2(s)\) \eqref{eq:definition_H1}, the \(\mathcal{H}_\infty\) synthesis objective becomes equivalent to \eqref{eq:hinf_problem} which ensure that \eqref{eq:hinf_cond_h1} and \eqref{eq:hinf_cond_h2} are satisfied.
\begin{equation}
\label{eq:hinf_problem}
\left\|\begin{matrix} H_1(s) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation}
\begin{equation} \begin{equation}
\label{eq:definition_H1} \label{eq:definition_H1}
H_1(s) \triangleq 1 - H_2(s) H_1(s) \triangleq 1 - H_2(s)
\end{equation} \end{equation}
The complementary condition \eqref{eq:hinf_cond_complementarity} is ensured by \eqref{eq:definition_H1}. \begin{equation}
The conditions \eqref{eq:hinf_cond_h1} and \eqref{eq:hinf_cond_h2} on the filters shapes are satisfied by \eqref{eq:hinf_problem}. \label{eq:hinf_problem}
Therefore, all the conditions \eqref{eq:comp_filter_problem_form} are satisfied using this synthesis method based on \(\mathcal{H}_\infty\) synthesis, and thus it permits to shape complementary filters as desired. \left\|\begin{matrix} H_1(s) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \le 1
\end{equation}
Therefore, applying the \(\mathcal{H}_\infty\) synthesis on the standard plant \(P(s)\) \eqref{eq:generalized_plant} will generate two filters \(H_2(s)\) and \(H_1(s) \triangleq 1 - H_2(s)\) that are complementary \eqref{eq:comp_filter_problem_form} and such that there norms are bellow specified bounds \eqref{eq:hinf_cond_h1},\eqref{eq:hinf_cond_h2}.
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:orge5f38aa} \label{sec:org80ebc41}
\label{sec:hinf_weighting_func} \label{sec:hinf_weighting_func}
The proper design of the weighting functions is of primary importance for the success of the presented complementary filters \(\mathcal{H}_\infty\) synthesis.
First, only proper, stable and minimum phase transfer functions should be used. Weighting functions are used during the synthesis to specify what is the maximum allowed norms of the complementary filters.
Second, the order of the weights should stay reasonably small in order to reduce the computational costs associated with the solving of the optimization problem and for the physical implementation of the filters (the order of the synthesized filters being equal to the sum of the weighting functions order). The proper design of these weighting functions is of primary importance for the success of the presented complementary filters \(\mathcal{H}_\infty\) synthesis.
First, only proper and stable transfer functions should be used.
Second, the order of the weighting functions should stay reasonably small in order to reduce the computational costs associated with the solving of the optimization problem and for the physical implementation of the filters (the order of the synthesized filters being equal to the sum of the weighting functions order).
Third, one should not forget the fundamental limitations imposed by the complementary property \eqref{eq:comp_filter}. Third, one should not forget the fundamental limitations imposed by the complementary property \eqref{eq:comp_filter}.
This implies for instance that \(|H_1(j\omega)|\) and \(|H_2(j\omega)|\) cannot be made small at the same time. This implies for instance that \(|H_1(j\omega)|\) and \(|H_2(j\omega)|\) cannot be made small at the same frequency.
When designing complementary filters, it is usually desired to specify its slope, its crossover frequency and its maximum gain at low and high frequency.
To help with the design of the weighting functions such that the above specification can be easily expressed, the formula \eqref{eq:weight_formula} is proposed.
When designing complementary filters, it is usually desired to specify the slope of the filter, its crossover frequency and its gain at low and high frequency.
To help with the design of the weighting functions such that the above specification can be easily expressed, the following formula is proposed.
\begin{equation} \begin{equation}
\label{eq:weight_formula} \label{eq:weight_formula}
W(s) = \left( \frac{ W(s) = \left( \frac{
\hfill{} \frac{1}{\omega_0} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{G_0}{G_c}\right)^{\frac{1}{n}} \hfill{} \frac{1}{\omega_c} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{G_0}{G_c}\right)^{\frac{1}{n}}
}{ }{
\left(\frac{1}{G_\infty}\right)^{\frac{1}{n}} \frac{1}{\omega_0} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{1}{G_c}\right)^{\frac{1}{n}} \left(\frac{1}{G_\infty}\right)^{\frac{1}{n}} \frac{1}{\omega_c} \sqrt{\frac{1 - \left(\frac{G_0}{G_c}\right)^{\frac{2}{n}}}{1 - \left(\frac{G_c}{G_\infty}\right)^{\frac{2}{n}}}} s + \left(\frac{1}{G_c}\right)^{\frac{1}{n}}
}\right)^n }\right)^n
\end{equation} \end{equation}
The parameters permit to specify:
The parameters in formula \eqref{eq:weight_formula} are:
\begin{itemize} \begin{itemize}
\item the low frequency gain: \(G_0 = lim_{\omega \to 0} |W(j\omega)|\) \item \(G_0 = lim_{\omega \to 0} |W(j\omega)|\): the low frequency gain
\item the high frequency gain: \(G_\infty = lim_{\omega \to \infty} |W(j\omega)|\) \item \(G_\infty = lim_{\omega \to \infty} |W(j\omega)|\): the high frequency gain
\item the absolute gain at \(\omega_0\): \(G_c = |W(j\omega_0)|\) \item \(G_c = |W(j\omega_c)|\): the gain at \(\omega_c\)
\item the absolute slope between high and low frequency: \(n\) \item \(n\): the slope between high and low frequency. It is also the order of the weighting function.
\end{itemize} \end{itemize}
The parameters \(G_0\), \(G_c\) and \(G_\infty\) should either satisfy condition \eqref{eq:cond_formula_1} or \eqref{eq:cond_formula_2}. The parameters \(G_0\), \(G_c\) and \(G_\infty\) should either satisfy condition \eqref{eq:cond_formula_1} or \eqref{eq:cond_formula_2}.
@ -381,7 +395,7 @@ The parameters \(G_0\), \(G_c\) and \(G_\infty\) should either satisfy condition
\end{align} \end{align}
\end{subequations} \end{subequations}
The general shape of a weighting function generated using \eqref{eq:weight_formula} is shown in Fig. \ref{fig:weight_formula}. The typical shape of a weighting function generated using \eqref{eq:weight_formula} is shown in Figure \ref{fig:weight_formula}.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
@ -390,40 +404,56 @@ The general 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:org0477d6e} \label{sec:orge831635}
\label{sec:hinf_example} \label{sec:hinf_example}
Let's validate the proposed design method of complementary filters with 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:
\begin{itemize} \begin{itemize}
\item the merging frequency is around \(\SI{10}{Hz}\) \item the merging frequency is around \(\SI{10}{Hz}\)
\item the slope of \(|H_1(j\omega)|\) is \(-2\) above \(\SI{10}{Hz}\) \item the slope of \(|H_1(j\omega)|\) is \(-2\) above \(\SI{10}{Hz}\)
\item the slope of \(|H_2(j\omega)|\) is \(+3\) below \(\SI{10}{Hz}\) \item the slope of \(|H_2(j\omega)|\) is \(+3\) below \(\SI{10}{Hz}\)
\item the gain of both filters is equal to \(10^{-3}\) away from the merging frequency \item the maximum gain of both filters is \(10^{-3}\) away from the merging frequency
\end{itemize} \end{itemize}
The weighting functions \(W_1(s)\) and \(W_2(s)\) are designed using \eqref{eq:weight_formula}. The first step is to design weighting functions that translate the above requirements.
The parameters used are summarized in table \ref{tab:weights_params} and the magnitude of the weighting functions is shown in Fig. \ref{fig:hinf_filters_results}. They are here designed using \eqref{eq:weight_formula} with parameters summarized in table \ref{tab:weights_params}.
The magnitudes of the weighting functions are shown by dashed lines in Figure \ref{fig:hinf_filters_results}.
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:weights_params}Parameters used for \(W_1(s)\) and \(W_2(s)\)} \caption{\label{tab:weights_params}Parameters used for weighting functions \(W_1(s)\) and \(W_2(s)\) using \eqref{eq:weight_formula}}
\centering \centering
\begin{tabularx}{0.5\linewidth}{Xcc} \begin{tabularx}{0.29\linewidth}{ccc}
\toprule \toprule
Parameter & \(W_1(s)\) & \(W_2(s)\)\\ Parameters & \(W_1(s)\) & \(W_2(s)\)\\
\midrule \midrule
\(G_0\) & \(0.1\) & \(1000\)\\ \(G_0\) & \(0.1\) & \(1000\)\\
\(G_\infty\) & \(1000\) & \(0.1\)\\ \(G_\infty\) & \(1000\) & \(0.1\)\\
\(\omega_c\) [\(\si{Hz}\)] & \(11\) & \(10\)\\ \(\omega_c\) & \(2\pi\cdot10\) & \(2\pi\cdot10\)\\
\(G_c\) & \(0.5\) & \(0.5\)\\ \(G_c\) & \(0.45\) & \(0.45\)\\
\(n\) & \(2\) & \(3\)\\ \(n\) & \(2\) & \(3\)\\
\bottomrule \bottomrule
\end{tabularx} \end{tabularx}
\end{table} \end{table}
The bode plots of the obtained complementary filters are shown in Fig. \ref{fig:hinf_filters_results} and their transfer functions in the Laplace domain are given below. The \(\mathcal{H}_\infty\) synthesis is applied on the generalized plant of Figure \ref{fig:h_infinity_robust_fusion} using the Matlab \texttt{hinfsyn} command.
\begin{align*} The synthesized filter \(H_2(s)\) is such that \(\mathcal{H}_\infty\) norm between \(w\) and \([z_1,\ z_2]^T\) is minimized and here found close to one \eqref{eq:hinf_synthesis_result}.
H_1(s) &= \frac{10^{-8} (s+6.6e^9) (s+3450)^2 (s^2 + 49s + 895)}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)}\\
H_2(s) &= \frac{(s+6.6e^4) (s+160) (s+4)^3}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)} \begin{equation}
\end{align*} \label{eq:hinf_synthesis_result}
\left\|\begin{matrix} \left(1 - H_2(s)\right) W_1(s) \\ H_2(s) W_2(s) \end{matrix}\right\|_\infty \approx 1
\end{equation}
The bode plots of the obtained complementary filters are shown by solid lines in Figure \ref{fig:hinf_filters_results} and their transfer functions in the Laplace domain are given in \eqref{eq:hinf_synthesis_result_tf}.
\begin{subequations}
\label{eq:hinf_synthesis_result_tf}
\begin{align}
H_2(s) &= \frac{(s+6.6e^4) (s+160) (s+4)^3}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)} \\
H_1(s) &\triangleq H_2(s) - 1 = \frac{10^{-8} (s+6.6e^9) (s+3450)^2 (s^2 + 49s + 895)}{(s+6.6e^4) (s^2 + 106 s + 3e^3) (s^2 + 72s + 3580)}
\end{align}
\end{subequations}
The obtained transfer functions are of order \(5\) as expected (sum of the weighting functions orders), and their magnitudes are bellow the maximum specified ones as ensured by \eqref{eq:hinf_synthesis_result}.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
@ -431,8 +461,11 @@ The bode plots of the obtained complementary filters are shown in Fig. \ref{fig:
\caption{\label{fig:hinf_filters_results}Frequency response of the weighting functions and complementary filters obtained using \(\mathcal{H}_\infty\) synthesis} \caption{\label{fig:hinf_filters_results}Frequency response of the weighting functions and complementary filters obtained using \(\mathcal{H}_\infty\) synthesis}
\end{figure} \end{figure}
This simple example illustrates the fact that the proposed methodology for complementary filters shaping is quite easy to use and effective.
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:org70c1567} \label{sec:org5405518}
\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}. 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 requirements on those filters are very tight and thus their design is complex.
@ -441,7 +474,7 @@ The obtained FIR filters are compliant with the requirements. However they are o
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}. 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}.
\subsection{Complementary Filters Specifications} \subsection{Complementary Filters Specifications}
\label{sec:orgdfbd1f2} \label{sec:orgd3d9b91}
\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 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}:
\begin{itemize} \begin{itemize}
@ -452,7 +485,7 @@ The specifications for one pair of complementary filters used at the LIGO are su
\end{itemize} \end{itemize}
\subsection{Weighting Functions Design} \subsection{Weighting Functions Design}
\label{sec:orgf9892b6} \label{sec:orgcda22a3}
\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.
@ -468,7 +501,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:orge086b06} \label{sec:org5fc1ebf}
\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\).
@ -482,24 +515,24 @@ 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:org7b7d598} \label{sec:org2363233}
\subsection{Alternative configuration} \subsection{Alternative configuration}
\label{sec:org56a1607} \label{sec:org164637d}
\begin{itemize} \begin{itemize}
\item Feedback architecture : Similar to mixed sensitivity \item Feedback architecture : Similar to mixed sensitivity (add schematic of feedback loop with weights)
\item 2 inputs / 1 output \item 2 inputs / 1 output
\end{itemize} \end{itemize}
Explain differences Explain differences
\subsection{Imposing zero at origin / roll-off} \subsection{Imposing zero at origin / roll-off}
\label{sec:org8da9d79} \label{sec:orgf116368}
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:orgefead29} \label{sec:orgbdd0317}
\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.
@ -537,7 +570,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:org2e6ce14} \label{sec:org150800b}
\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.
@ -545,7 +578,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:orgde5a128} \label{sec:org6c6a099}
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}

View File

@ -167,10 +167,10 @@ exportFig('figs/weight_formula.pdf', 'width', 'wide', 'height', 'normal');
[[file:figs/weight_formula.png]] [[file:figs/weight_formula.png]]
#+begin_src matlab #+begin_src matlab
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;
#+end_src #+end_src
@ -216,35 +216,28 @@ And we do the $\mathcal{H}_\infty$ synthesis using the =hinfsyn= command.
#+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]].

View File

@ -196,9 +196,11 @@ is given by $$\label{eq:noise_filtering_psd}
\Phi_{\delta x} = \left|H_1\right|^2 \Phi_{n_1} + \left|H_2\right|^2 \Phi_{n_2}$$ \Phi_{\delta x} = \left|H_1\right|^2 \Phi_{n_1} + \left|H_2\right|^2 \Phi_{n_2}$$
where, $\Phi_{\delta x}$ is the PSD of estimation error, $\Phi_{n_1}$ where, $\Phi_{\delta x}$ is the PSD of estimation error, $\Phi_{n_1}$
and $\Phi_{n_2}$ are the PSDs of the noise associated with the and $\Phi_{n_2}$ are the PSDs of the noise associated with the
individual sensor. It can be seen that the estimation error's PSD individual sensor.
It can be seen that the estimation error's PSD
depends on the PSD of the noise in individual sensor as well as the norm depends on the PSD of the noise in individual sensor as well as the norm
of the complementary filters. Therefore, by properly shaping the norm of of the complementary filters.
Therefore, by properly shaping the norm of
the complementary filters, it is possible to minimize the noise of the the complementary filters, it is possible to minimize the noise of the
super sensor noise. super sensor noise.
@ -236,19 +238,8 @@ The dynamics of the super sensor now depends on the weighting functions
($w_1(s),w_2(s)$) and the complementary filters ($H_1(s),H_2(s)$). ($w_1(s),w_2(s)$) and the complementary filters ($H_1(s),H_2(s)$).
The robust stability of the fusion can be studied graphically (refer The robust stability of the fusion can be studied graphically (refer
Figure [[#fig:uncertainty_set_super_sensor][3]]). The frequency response Figure [[#fig:uncertainty_set_super_sensor][3]]). The frequency response of the fusion output is plotted in a complex plane. The unity transfer function leads to a point $(1,0)$ located on the real axis. The uncertainty associated with first sensor at a particular frequency is represented by a circle with the center at (1,0) and radius $|w_1H_1|$. The uncertainty associated with the second is also represented using a circle centered at any point on the circle representing uncertainty associated with the first sensor and radius equal to $|w_2H_2|$. Therefore, the overall uncertainty of the fusion is represented with a circle centered at (1,0) and radius equal to $|w_1H_1|+|w_2H_2|$.
of the fusion output is plotted in a complex plane. The unity transfer Mathematically, the maximum phase difference at frequency
function leads to a point $(1,0)$ located on the real axis. The
uncertainty associated with first sensor at a particular frequency is
represented by a circle with the center at (1,0) and radius $|w_1H_1|$.
The uncertainty associated with the second is also represented using a
circle centered at any point on the circle representing uncertainty
associated with the first sensor and radius equal to $|w_2H_2|$.
Therefore, the overall uncertainty of the fusion is represented with a
circle centered at (1,0) and radius equal to $|w_1H_1|+|w_2H_2|$. The
maximum phase difference that can result from the fusion is found by
drawing a tangent from the origin to the uncertainty circle of super
sensor. Mathematically, the maximum phase difference at frequency
$\omega$ that can result from fusion is given by $\omega$ that can result from fusion is given by
$$\label{eq:max_phase_uncertainty} $$\label{eq:max_phase_uncertainty}
\Delta\phi(\omega) = \arcsin\left( |w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)| \right)$$ \Delta\phi(\omega) = \arcsin\left( |w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)| \right)$$
@ -271,10 +262,8 @@ transfer functions ($|w_i|$) representing sensor uncertainty is large.
* Design formulation using $\mathcal{H}_\infty$ synthesis * Design formulation using $\mathcal{H}_\infty$ synthesis
** Introduction :ignore: ** Introduction :ignore:
In this section, the shaping of complementary filters is expressed as an In this section, the shaping of complementary filters is expressed as an optimal $\mathcal{H}_{\infty}$ synthesis problem.
optimal $\mathcal{H}_{\infty}$ synthesis problem. The synthesis goal is The synthesis goal is to shape the frequency response of the filters such that they satisfy the design requirements presented in Section [[*Complementary filters
to shape the frequency response of the filters such that they satisfy
the design requirements presented in Section [[*Complementary filters
requirements][2]]. requirements][2]].
** Synthesis problem formulation ** Synthesis problem formulation

View File

@ -357,13 +357,13 @@ Configuration file is accessible [[file:config.org][here]].
\node[block, left=1.4 of output2] (W2){$W_2(s)$}; \node[block, left=1.4 of output2] (W2){$W_2(s)$};
\node[addb={+}{}{}{}{-}, left=of W1] (sub) {}; \node[addb={+}{}{}{}{-}, left=of W1] (sub) {};
\node[block, below=0.3 of P] (H2) {$H_2(s)$}; % \node[block, below=0.3 of P] (H2) {$H_2(s)$};
\draw[->] (inputw) node[above right]{$w$} -- (sub.west); \draw[->] (inputw) node[above right]{$w$} -- (sub.west);
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west); \draw[->] (inputu) node[above right]{$u$} -- (W2.west);
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south); \draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
\draw[->] (sub.east) -- (W1.west); \draw[->] (sub.east) -- (W1.west);
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- (outputv) node[above left]{$v$};
\draw[->] (W1.east) -- (output1)node[above left]{$z_1$}; \draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
\draw[->] (W2.east) -- (output2)node[above left]{$z_2$}; \draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
\end{tikzpicture} \end{tikzpicture}